Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor...

68
Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara

Transcript of Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor...

Page 1: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 1

Orientação a Objetos & UML

Professor Marcelo Bezerra de Alcântara

Page 2: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 2

Agenda

Parte I: Orientação a Objetos• Módulo 1 - Introdução• Módulo 2 - Classes x Objetos• Módulo 3 - Relacionamentos• Módulo 4 - Herança e Polimorfismo

Page 3: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 3

Parte I: Orientação a Objetos

Módulo 1Introdução

Page 4: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 4

Agenda

Módulo 1 – Introdução• Análise Estruturada• Motivação• Análise Estruturada x Orientação à Objetos• Abstração• Definição• Características

Parte I: OO / Módulo 1: Introdução

Page 5: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 5

Análise estruturada

Criada nos anos 60/70• Guerra Fria• Grandes Projetos• Ambientes de Grande Porte• Pouca maturidade em Programação

Parte I: OO / Módulo 1: Introdução

Page 6: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 6

Análise estruturada

O objetivo principal era fazer com que o pessoal de sistemas pensasse antes de agir;

Tentativa de impor alguma ordem à natureza acidental da construção de programas;

Produziu um modelo rigorosamente seqüencial;• análise;

• O que ?

• projeto;• Como

• implementação.

Parte I: OO / Módulo 1: Introdução

Page 7: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 7

Análise estruturada

Tradicionalmente, a literatura tratava análise, projeto e implementação como atividades diferentes e, até certo ponto, desconexas pois tinham:• diferentes métodos;• diferentes notações e• diferentes objetivos.

Na necessidade de especificar o que está prestes a ser implementado tratavam a análise e o projeto como as únicas coisas que realmente interessam. A implementação seria apenas algo inevitável.

Parte I: OO / Módulo 1: Introdução

Page 8: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 8

Motivação - Orientação a objetos

Crise do software e necessidade de mudar Surgiu a idéia da orientação a objetos que

representa melhor o mundo real, uma vez que a percepção e o raciocínio do ser humano estão relacionados diretamente com o conceito de objetos.

Objetivo principal da utilização do paradigma da Orientação a Objetos, na construção de software:• Rápido

• não perder muito tempo no desenvolvimento

• Barato• linhas de montagem e reutilização de código

• Flexível• fácil modificar ou estender

Parte I: OO / Módulo 1: Introdução

Page 9: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 9

Estruturada x OO

Com a orientação a objetos procura-se eliminar as diferenças entre as etapas de análise, projeto e implementação, reabilitando a difamada tarefa de implementação

O segredo é fazer com que os conceitos de programação, e as notações para programação, sejam suficientemente de alto-nível para que possam servir apropriadamente como ferramentas de modelagem.

Parte I: OO / Módulo 1: Introdução

Page 10: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 10

Estruturada x OO

Catálogo Bibliotecário

Livro Biblioteca

Sistema

Registrar empréstim

os

Adicionar recursos

Relatar multas

A/P orientados a objetos

Decompor por objetos ou conceitos

A/P estruturados

Decompor por funções ou processo

Sistema de informação de bibliotecas

Parte I: OO / Módulo 1: Introdução

Page 11: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 11

Definição

Uma nova maneira de pensar os problemas utilizando modelos organizados a partir de conceitos do mundo

real. O componente fundamental é o objeto que combina estrutura e comportamento em uma única

entidade.

(Rumbaugh)

Parte I: OO / Módulo 1: Introdução

Page 12: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 12

Características

Software desenvolvido como hardware

Facilita o reuso

Permite um nível mais elevado de abstração

Linguagem padrão de representação: UML

Parte I: OO / Módulo 1: Introdução

Page 13: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 13

Motivação - Orientação a Objetos

Conceitos Chaves• Abstração• Encapsulamento• Polimorfismo• Identidade

Mecanismos Básicos• Objetos• Atributos• Métodos ou Serviços• Relacionamentos• Herança

Parte I: OO / Módulo 1: Introdução

Page 14: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 14

Abstração

Parte I: OO / Módulo 1: Introdução

Page 15: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 15

Abstração

Processo de identificar as qualidades ou propriedades importantes do fenômeno sendo modelado.

(Carlo Gezzi/ Mehdi Jazayeri)

Parte I: OO / Módulo 1: Introdução

Uma abstração descreve as características essenciais de um objeto; aquelas que o distinguem de todos os

outros tipos de objeto e fornece assim, para aquele que analisa um sistema, fronteiras conceituais bem

definidas.(Booch)

Page 16: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 16

Abstração

Nesta fase tenta-se retirar elementos e requisitos que irão ajudar na resolução de um problema;

É o processo de retirar do domínio do problema os detalhes relevantes e representá-los não mais em uma linguagem do domínio e sim na linguagem da solução.

O sucesso de um Programa Orientado a Objeto está condicionado a uma boa abstração do problema.

Parte I: OO / Módulo 1: Introdução

Page 17: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 17

Abstração

Parte I: OO / Módulo 1: Introdução

No paradigma da Programação Estruturada identifica-se as funções como sendo "operações abstratas que resolvem um problema de programação", ou seja, ocorre a abstração de procedimentos.

No paradigma da Orientação a Objetos, tem-se a Abstração de Dados, onde uma estrutura de dados deve incluir as operações que ocorrem com ela.

Page 18: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 18

Encapsulamento

Parte I: OO / Módulo 1: Introdução

É a propriedade de se implementar dados e procedimentos correlacionados em uma mesma entidade (objeto).

Trata-se de uma das principais vantagens da Programação Orientada a Objetos sobre a Programação Estruturada, principalmente na reutilização de códigos.

Page 19: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 19

Encapsulamento

Código. . .. . .

Código. . .. . .

Código. . .. . .

Dado Dado DadoDadoProgramação estruturada

Código. . .. . .

Dado

Código. . .. . .

Dado

Código. . .. . .

Dado

Orientação a Objetos

Parte I: OO / Módulo 1: Introdução

Page 20: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 20

Encapsulamento

Parte I: OO / Módulo 1: Introdução

Pode-se entender intuitivamente o significado de encapsulamento quando se observa o mundo real. Nos objetos do mundo real, atributos e ações são inerentes ao próprio objeto.

Exemplo :• A um automóvel estão associados tanto atributos (modelo,

kilometragem, cilindradas, capacidade do tanque de combustível, etc), quanto suas potencialidades (velocidade média, consumo de combustível, etc).

Page 21: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 21

Polimorfismo

Parte I: OO / Módulo 1: Introdução

O significado da palavra, originada do grego, é o de "possuir várias formas".

Na A.O.O. é usado para indicar a propriedade de se utilizar o mesmo nome para métodos diferentes.

Uma vantagem do polimorfismo é a relativa facilidade de manutenção e extensão dos programas.

A idéia de polimorfismo está ligada com a indicação de que os atributos só devem ter seus valores alterados por métodos da sua classe.

Page 22: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 22

Polimorfismo

objGeral.getNI();

P essoa

NI

getNI()

P essoaFis ica

getNI()

P essoaJuridica

getNI()

Parte I: OO / Módulo 1: Introdução

Page 23: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 23

Polimorfismo

objGeral.getNI();

P essoa

NI

getNI()

P essoaFis ica

getNI()

P essoaJuridica

getNI()

Parte I: OO / Módulo 1: Introdução

Page 24: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 24

Polimorfismo

objGeral.getNI();

P essoa

NI

getNI()

P essoaFis ica

getNI()

P essoaJuridica

getNI()

Parte I: OO / Módulo 1: Introdução

Page 25: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 25

Identidade

Característica peculiar de um objeto que denota a existência em separado do objeto, mesmo que ele tenha os mesmos valores de atributos de outro objeto

Uma identificação única de cada objeto

Nome: RicardoSérie: 2ªTurma: A

Nome: RicardoSérie: 2ªTurma: A

Parte I: OO / Módulo 1: Introdução

Page 26: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 26

Parte I: Orientação a Objetos

Módulo 2Classes x Objetos

Page 27: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 27

Agenda

Módulo 2 – Classes x Objetos• Objetos• Classes• Classes x Objetos• Mensagens• Atributos• Operações• Encapsulamento

Parte I: OO / Módulo 2: Classes x Objetos

Page 28: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 28

Classes e Objetos

• Objeto:

Conjunto de dados e procedimentos relacionados utilizados para modelar coisas ou conceitos

• Classe:

Arcabouço que serve de molde para a criação de objetos. Define os dados e procedimentos comuns a todos objetos da classe

Parte I: OO / Módulo 2: Classes x Objetos

Page 29: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 29

Objetos

• Nosso mundo é um mundo de objetos, para se convencer disso basta tropeçar neles (Castanheda)

Parte I: OO / Módulo 2: Classes x Objetos

Page 30: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 30

• Tem atributos, estado, comportamento e identidade

Objetos ...

Parte I: OO / Módulo 2: Classes x Objetos

Page 31: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 31

Objetos ...

• Os atributos de um objeto definem as qualidades e características da entidade que ele representa

• O estado de um objeto é o particular conjunto de valores de seus atributos em um dado momento

• O comportamento de um objeto é definido pelas alterações do seu estado em resposta a mensagens que ele recebe (interação com outros objetos)

Parte I: OO / Módulo 2: Classes x Objetos

Page 32: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 32

Objetos ...

• Ex: – uma árvore pode ser grande ou pequena, nova ou velha,

frutífera ou não, etc.

– produz clorofila, gás carbônico, sombra, faz fotosíntese

– pode estar doente ou não, com ou sem folhas

Parte I: OO / Módulo 2: Classes x Objetos

Page 33: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 33

Classes

• Classes definem elementos de mesma natureza

• Modelam características comuns a estes

• Ex: árvores

classe árvore

objeto árvore

objeto árvore

objeto árvore

Parte I: OO / Módulo 2: Classes x Objetos

Page 34: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 34

Classes x Objetos

Parte I: OO / Módulo 2: Classes x Objetos

Nome: MafaldaSérie: 1ªTurma: B

Nome: RicardoSérie: 2ªTurma: A

Nome: AndréSérie: 1ªTurma: B

Nome: RicardoSérie: 2ªTurma: A

Classe

Objeto

ObjetoObjeto

Objeto

Page 35: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 35

Classes x Objetos

public class Aluno

{

private String nome;

private String serie;

private String turma;

public String getNome()

{

return nome;

}

public void setNome(String nome)

{

this.nome = nome;

}

...

}

Parte I: OO / Módulo 2: Classes x Objetos

public void teste()

{

Aluno mafalda = new Aluno();

Aluno ricardo1 = new Aluno();

Aluno ricardo2 = new Aluno();

mafalda.setNome("Mafalda");

mafalda.setSerie("1ª");

mafalda.setTurma("B");

ricardo1.setNome("Ricardo");

ricardo1.setSerie("2ª");

ricardo1.setTurma("A");

ricardo2.setNome("Ricardo");

ricardo2.setSerie("2ª");

ricardo2.setTurma("A");

...

}

Classe

Objetos

Page 36: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 36

Instâncias

• Objetos são instâncias de classes

• Os atributos e métodos de uma classe tornam-se disponíveis em cada objeto instanciado

Classe FuncionárioClasse FuncionárioNomeCargo

ObjetosObjetosNome1Cargo1

Nome2Cargo2

Nome3Cargo3

Parte I: OO / Módulo 2: Classes x Objetos

Page 37: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 37

Instâncias ...

• Uma classe declara os elementos que compõe um objeto

• A declaração não aloca memória: a classe é usada apenas para modelar as características de um conjunto de objetos

• A instanciação de um objeto de uma classe provoca a alocação de memória para conter os seus atributos

Parte I: OO / Módulo 2: Classes x Objetos

Page 38: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 38

Atributos

Representam os dados do objeto

Parte I: OO / Módulo 2: Classes x Objetos

Visibilidade• Pública

• Todos os objetos têm acesso

• Faz parte da interface da classe

• Protegida• Acessado por operações da classe e de suas

filhas

• Privada• Só acessado de dentro da própria classe

Page 39: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 39

Variáveis de Instância

• Os atributos dos objetos são definidos por variáveis.

• As variáveis de instância definem atributos que podem receber diferentes valores em objetos distintos.

• Cada objeto tem sua própria variável de instância

Parte I: OO / Módulo 2: Classes x Objetos

Page 40: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 40

Variáveis de Instância

• Ex: – na classe funcionário, cada objeto instanciado modela

uma pessoa que tem seu próprio nome

– nome é, portanto, uma variável de instância

JoãoCargo1

CarlosCargo2

SilviaCargo3

Parte I: OO / Módulo 2: Classes x Objetos

Page 41: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 41

Variáveis de Classe

• Atributos comuns a todos os elementos da classe são armazenados em variáveis de classe

• Uma variável de classe armazena informações sobre a classe inteira, não apenas sobre um determinado objeto

• Ex: – na classe funcionário, o número de funcionários de uma

empresa seria uma variável de classe, pois não se refere a nenhum funcionário em particular

Parte I: OO / Módulo 2: Classes x Objetos

Page 42: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 42

Classes x Instâncias

• Ex: uma empresa com 3 funcionários :

Variável de ClasseVariável de Classe

NomeCargo

Variáveis de InstânciaVariáveis de Instância

JoãoCargo1

CarlosCargo2

SilviaCargo3

Total: 3

Parte I: OO / Módulo 2: Classes x Objetos

Page 43: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 43

Classes x Instâncias

• Ex: membros de uma família

Sobrenome: SilvaIdade

Aldo23

Sexo

Masc

Bea10

Fem

Ido88

Masc

Aldo Silva Bea Silva Ido Silva

Variável de Classe:nome de família

Variável de Classe:nome de família

Nome

Parte I: OO / Módulo 2: Classes x Objetos

Page 44: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 44

Métodos

• O comportamento de um objeto é definido a partir de procedimentos que alteram seu estado

• Em OO estes procedimentos são chamados de métodos

• Métodos são equivalentes a funções em C ou C++, com a diferença que são definidos no escopo de uma classe

Parte I: OO / Módulo 2: Classes x Objetos

Page 45: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 45

Métodos ...

• Objetos comunicam-se entre si através de métodos

• Através dos métodos é possível:– consultar os valores de atributos (variáveis) de um

objeto

– alterar o valor de atributos do objeto

– solicitar um serviço ao objeto

– fornecer informações ao objeto

Parte I: OO / Módulo 2: Classes x Objetos

Page 46: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 46

Métodos ...

• Ex:– comportamento de um funcionário :

• informa seu nome

• informa seu cargo

• toma cafezinho

• executa um trabalho

• dorme

• reclama

• etc.

Parte I: OO / Módulo 2: Classes x Objetos

Page 47: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 47

Métodos

Tipos• Construtora

• Operação que cria e/ou inicializa um objeto• Primeira operação executada• Executada no momento em que o objeto é instanciado

• Seletora• Pode ler, mas não alterar o estado do objeto

• Modificadora• Pode alterar o estado do objeto

• Destrutora• Operação que finaliza um objeto• Última operação executada• Executada no momento em que o objeto é destruído

Parte I: OO / Módulo 2: Classes x Objetos

Page 48: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 48

Métodos

Visibilidade• Pública• Protegida• Privada

Parâmetros• Recebidos através da mensagem• Exemplo: parâmetros Altura e Largura na

operação CalcularAreaRetangulo

Tipo de Retorno• Tipo do valor retornado opcionalmente para o

objeto invocador• Exemplo: tipo de retorno float da operação

CalcularAreaRetangulo

Parte I: OO / Módulo 2: Classes x Objetos

Page 49: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 49

Parte I: Orientação a Objetos

Módulo 3Relacionamentos

Page 50: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 50

Agenda

Módulo 3 – Relacionamentos• Associação• Agregação• Composição• Dependência

Parte I: OO / Módulo 3: Relacionamentos

Page 51: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 51

Associação

Relacionamento entre objetos de classes independentes

Dependência estrutural

Associação Unária

Parte I: OO / Módulo 3: Relacionamentos

Page 52: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 52

Associação

Associação Binária

Associação Ternária

Parte I: OO / Módulo 3: Relacionamentos

Page 53: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 53

Associação

Classe de Associação• Existência de atributos ou operações próprios da associação

Parte I: OO / Módulo 3: Relacionamentos

Page 54: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 54

Agregação

Caso particular da Associação

Relacionamento do tipo todo-parte

Agregação por referência• Um atributo na classe “todo” é uma referência para um

objeto da classe “parte”

Parte I: OO / Módulo 3: Relacionamentos

Page 55: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 55

Composição

Caso particular da Agregação

Não faz sentido a existência do objeto “parte” sem a existência do objeto “todo”

Agregação por valor• O objeto “parte” é um atributo contido no objeto “todo”

Parte I: OO / Módulo 3: Relacionamentos

Page 56: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 56

Dependência

Dependência comportamental

Uma classe depende de algum serviço oferecido pela outra

Uma alteração na classe independente pode afetar a classe dependente

Parte I: OO / Módulo 3: Relacionamentos

Page 57: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 57

Parte I: Orientação a Objetos

Módulo 4Herança e Polimorfismo

Page 58: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 58

Agenda

Módulo 4 – Herança e Polimorfismo• Herança• Classes Abstratas• Redefinição• Polimorfismo

Parte I: OO / Módulo 4: Herança e Polimorfismo

Page 59: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 59

Herança de Classes

• Classes podem ser organizadas na forma de uma árvore genealógica

• Assim como seres vivos herdam características de seus projenitores, classes herdam o comportamento e atributos de outras classes

• A classe filho é chamada de subclasse e a classe pai de superclasse

Parte I: OO / Módulo 4: Herança e Polimorfismo

Page 60: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 60

Herança ...

• A herança permite estruturar o programa, fatorando características comuns

• As subclasses podem ser especializadas de forma a incorporar outros atributos e comportamentos (diferentes da superclasse)

• Uma subclasse contém todas as características de uma superclasse, mas o inverso não é verdadeiro– todos os homes são animais, nem todos os animais são

homens

Parte I: OO / Módulo 4: Herança e Polimorfismo

Page 61: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 61

Herança

As subclasses herdam atributos, operações e relacionamentos da superclasse

É possível redefinir o que foi herdado

Parte I: OO / Módulo 4: Herança e Polimorfismo

Superclasse

Subclasse

Page 62: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 62

Classes Abstratas

Não podem ser instanciadas Servem para modelar os atributos, operações e

relacionamentos comuns de uma hierarquia de classes

Os objetos da hierarquia são instanciados a partir das subclasses

Parte I: OO / Módulo 4: Herança e Polimorfismo

Page 63: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 63

Redefinição

Redefinição de métodos da classe pai

Parte I: OO / Módulo 4: Herança e Polimorfismo

Page 64: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 64

Herança ...

Classe

Classe Classe

Classe Classe

ObjetoObjeto ObjetoObjeto

mensagem

métodoresolução de chamada de métodoresolução de chamada de método

Parte I: OO / Módulo 4: Herança e Polimorfismo

Page 65: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 65

Herança ...

Classe

Classe Classe

Classe Classe

ObjetoObjeto ObjetoObjeto

mensagem

métodoMascarando métodosMascarando métodos

método

este método respondeeste método responde

Parte I: OO / Módulo 4: Herança e Polimorfismo

Page 66: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 66

Polimorfismo

Muitas “formas” Mesma operação se comporta de forma diferente

dependendo do tipo do objeto Ligação tardia (late binding)

Parte I: OO / Módulo 4: Herança e Polimorfismo

Figura

Circulo

Triangulo

Retangulo

RetanguloColorido

desenhar()

Page 67: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 67

Exercício

Exercícios

Parte I: OO / Módulo 4: Herança e Polimorfismo

Page 68: Orientação a Objetos (Marcelo Bezerra de Alcantara) 1 Orientação a Objetos & UML Professor Marcelo Bezerra de Alcântara.

Orientação a Objetos (Marcelo Bezerra de Alcantara) 68

Exercício

Parte I: OO / Módulo 4: Herança e Polimorfismo

Qual a diferença entre Análise Estruturada e Análise Orientada a Objetos;

Cite exemplos de operações polimórficas; O que é encapsulamento? Qual a relação entre Objetos e Classe? Quais os tipos de visibilidade existentes para atributos

e métodos? Qual a diferença entre atributo de instância e atributo

de classe? Cite um exemplo de associações de agregação e

composição; O que são classes abstratas? Cite um exemplo do uso de herança;