Sie sind auf Seite 1von 58

PROGRAMAÇÃO

ORIENTADA POR
OBJETOS
RELACIONAMENTOS ENTRE CLASSES

Prof. João Caram


PUC MINAS SISTEMAS DE INFORMAÇÃO
Objetos complexos
2

 Um computador é composto por diversos


componentes: processador, memória principal, disco
rígido, tela/monitor, portas de saída, dispositivos
de entrada.
 Existem “famílias” de computadores.
 E também existem “famílias” de componentes.

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Objetos e objetos
3

 Em geral, objetos não funcionam sozinhos


 Usam/se comunicam com outros
 Contêm ou são formados por outros

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Relacionamentos
4

 Objetos de classes diferentes podem se relacionar


de diversas formas. A mais simples é troca de
mensagens
 Processador pede dados para a memória

 Em algumas situações, os relacionamentos são mais


fortes
Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Associação
5

 Relacionamento denotado por “usa um”.


 Objetos são associados, mas não há relação de
pertinência
 Ex: Um trem usa uma estrada
Pessoas jantam em restaurantes
Alunos assistem aulas com professores

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Associação
6

 Representação da associação

Pessoa Restaurante

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Agregação
7

 Indica um relacionamento do tipo todo/parte, ou


“tem/contém um”
 Ex:
◼ Um automóvel contém um motor e portas
◼ Uma turma contém alunos
◼ Um inventário contém armas

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Agregação
8

 Agregação: a existência da “parte” faz sentido,


mesmo não existindo “todo”
 Ex: alunos → turma
carro → motor e portas

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Agregação
9

 Representação gráfica - agregação

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Composição
10

 Relacionamento mais forte. Um objeto “é formado


por” outros objetos. A existência da parte NÃO faz
sentido se o todo não existir.

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Composição
11

 Um objeto “é formado por” outros objetos


 Ex: Um livro é formado por vários capítulos
Uma agenda é formada por vários contatos
Um banco controla várias contas
Um pedido é formado por vários itens

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Composição
12

 Um não existe sem o outro. A “parte” perde sentido


se não houver o “todo”

 Ex: livro sem capítulos?


contatos fora da agenda?
contas sem agência bancária?
Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Composição
13

 Representação gráfica - composição

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Agregação x composição
14

 Implicação da diferença agregação x composição


 Relacionamentos do tipo “composição” indicam que se
apaguem os objetos associados quando do fim da vida
do objeto-todo.

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Agregação x composição
15

 Divisão sutil:
O mesmo relacionamento pode acontecer como
agregação ou composição, dependendo do contexto
(regras de negócio)
 Ex: Motor → Carro

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Cardinalidades de relacionamentos
16

 um-para-um
 Ex: um curso tem um coordenador

Curso Coordenador
1 1

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Cardinalidades de relacionamentos
17

 um-para-muitos
 Ex:um departamento tem muitos professores, mas um
professor está alocado a um departamento apenas

Departamento Professor
1 *

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Cardinalidades de relacionamentos
18

 muitos-para-muitos
 Ex:um professor tem muitos alunos e um aluno tem
aulas com vários professores

Aluno Professor
* *

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Cardinalidades de relacionamentos
19
 um-para-um
 Ex: um curso tem um coordenador
 um-para-muitos
 Ex: um departamento tem muitos professores, mas um
professor está alocado a um departamento apenas
 muitos-para-muitos
 Ex: um professor tem muitos alunos e um aluno tem aulas
com vários professores
Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Composição, agregação, associação
20

 Conceitos similares: relacionamentos “tem um”


 Mas não iguais: comportamentos diferentes
 Forma de implementar: muito parecida. Em geral,
referências de objetos

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Composição, agregação, associação
21

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Composição, agregação, associação
22

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Composição, agregação, associação
23

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
24 Especialização e Herança

Programação Orientada Por Objetos - Prof. João Caram - Curso de


Sistemas de Informação – PUC Minas
Herança
25

 Também chamada especialização


 Indicaum relacionamento do tipo “é um”
 Foi apresentada como uma das características
fundamentais da POO
◼ Reaproveitamento de código
◼ Níveis mais altos de abstração

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Herança
26

 Exemplos
 Um professor é uma pessoa
 Um aluno é uma pessoa

 Um sanduíche é uma comida

 Um ônibus é um veículo

 Um automóvel é um veículo

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Herança
27

 Exemplos
 Um professor é uma pessoa
 Um aluno é uma pessoa

 Um sanduíche é uma comida

 Um ônibus é um veículo

 Um automóvel é um veículo

 Um professor é uma pessoa e é um funcionário


Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Herança
28

 Representação gráfica

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
Herança
29

 As classes filhas herdam métodos e atributos da


classe mãe
 As classes filhas podem sobrescrever métodos da
classe mãe → especialização
 Superclasses e subclasses

Programação Orientada Por Objetos - Prof. João Caram - Curso de Sistemas de Informação – PUC Minas
32 Herança e polimorfismo

Programação Orientada Por Objetos - Prof. João Caram - Curso de


Sistemas de Informação – PUC Minas
Herança
33

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo
34

 Polimorfismo → muitas formas


 POO: princípio que permite que classes filhas
tenham métodos iguais, mas comportamentos
diferentes
 Métodosiguais → mesma assinatura
 Comportamentos diferentes → ações diferentes

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo
35

 Polimorfismo universal
 de Inclusão
 Paramétrico

 Polimorfismo ad hoc1 1 - ad hoc |àdóque| (locução latina que significa "para isso"): Que
se destina a um fim específico

 Coerção "ad hoc", in Dicionário Priberam da Língua Portuguesa [online],


2008-2013, http://priberam.pt/dlpo/ad-hoc [consultado em 12-
 Sobrecarga 09-2014].

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo
36

 Área de figuras
geométricas

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo
37

+ O programador não precisa determinar qual


implementação será efetivamente executado
 Tarefado objeto
 Amarração tardia (late binding)

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo
38

- Resultados inesperados
 Programação sem cuidado
 Perda de desempenho (por causa da late binding)

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo universal de inclusão
39

 Um ponteiro/referência para a classe mãe pode


apontar para a classe filha

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo universal de inclusão
40

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo universal de inclusão
41

 Sobrescrita (ou redefinição) – Override


 Reescrever o método para atingir o polimorfismo

 Funções (ou métodos) virtuais


 Funções (ou métodos) que podem ser reescritos na
classe filha

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo universal de inclusão
42

 Funções (ou métodos) virtuais puras


 Não têm implementação na classe base
 Funções (ou métodos) que NECESSITAM ser
sobrescritas/implementadas na(s) classes filhas.

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo universal de inclusão
43

 Classe abstrata
 Classe que contém métodos virtuais puros e, portanto,
não pode ser instanciada diretamente

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo
44

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo e métodos virtuais
45

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo e métodos virtuais
46

Método virtual

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo e métodos virtuais
47

Método virtual

Implementações polimórficas
PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Polimorfismo e métodos abstratos
48

Método virtual puro


(abstrato)

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
49

Classe abstrata

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Implementação
50

 Herança, construtor da classe base, sobrescrita,


métodos virtuais e virtuais puros podem ter
implementações ligeiramente diferentes em cada
linguagem

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Sintaxe
51

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
52 Modificadores de classe

PUC Minas – Curso de Sistemas de Informação – Programação


Orientada por Objetos – Prof. João Caram
Modificadores de classes
53

 Assim como propriedades e métodos, classes podem


ter sua visibilidade alterada por modificadores

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Modificadores de classes (C#)
54

 Public
 Visibilidade total. Pode ser acessada por qualquer
assembly.

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Modificadores de classes
55

 Static
 Especifica que a classe somente tem membros estáticos. Não
pode ser instanciada.

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Modificadores de classes
56

 Abstract
 Classes abstratas: definem modelos para classes filhas. Não
podem ser instanciadas.

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Modificadores de classes
57

 Partial
 Permite que a classe tenha seu escopo dividido em dois ou
mais arquivos.
 Uso mais comum: interface gráfica x lógica

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Modificadores de classes
58

 Sealed
 Não permite que a classe seja herdada.
 Pode ser também utilizado com métodos que não devem ser
sobrescritos.

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
Modificadores de classes (Java)
59

 Em Java, os modificadores são semelhantes:


 abstract

 static

 final → equivalente ao sealed do C#


 strictfp → usado para forçar compatibilidade de float

PUC Minas – Curso de Sistemas de Informação – Programação Orientada por Objetos – Prof. João Caram
OBRIGADO.

Dúvidas?

Das könnte Ihnen auch gefallen