Orientação a Objetos 1. Paradigma de Orientação a Objetos usado para representar o mundo real ...

Preview:

Citation preview

Orientação a Objetos

1

Paradigma de Orientação a Objetos usado para representar o mundo real

Mundo Real : entidades que se interagem

Conceitos AnterioresConceitos Anteriores

2

Entidade = Objeto Alguma coisa que tenha sua própria existência,

características e que apresente alguma função dentro do mundo real

São abstrações dos objetos existentes no mundo real;◦ Possuem os mesmos comportamentos;◦ Possuem os mesmos estados;

Podem representar os objetos no mundo real em vários níveis de abstração:

Depende de decisões do observador do mundo.

EntidadesEntidades

3

Objetos possuem estados (atributos) e comportamento (métodos):

Uma porta tem:◦ Estados: aberta, fechada;◦ Comportamento: abrir, fechar;

E um carro:◦ Que atributos e comportamentos ele tem?

ObjetosObjetos

4

ObjetosObjetos

5

Objetos◦ São instâncias de classes, com valores diferentes◦ Representa uma entidade do mundo real◦ Cada objeto tem:

Identidade Estado Comportamento

Características que compõem um objeto◦ Podem ser um simples valor ou outro Objeto

Objeto:Funcionário◦ Atributos:nome,cpf

Objeto:Departamento◦ Atributos:funcionário,localização

AtributosAtributos

6

Os atributos vêm do conceito de abstração:◦ Propriedades essenciais para representar um objeto

real;

Os métodos vêm da descrição das funções do objeto:

Métodos x AtributosMétodos x Atributos

7

Objeto:Funcionário◦ Atributos:nome,cpf◦ Método: baterPonto()

◦ Quais os métodos de um objeto que representa a entidade Professor?

MétodosMétodos

8

Método◦ É uma operação que realiza ações e *modifica os

valores dos atributos do objeto responsável pela sua execução

◦ *Nem sempre um método modifica o valor dos atributos ou altera o comportamento, pois pode ser apenas um método de consulta.

Atributos auxiliares podem ser necessários para auxiliar a implementação dos métodos...◦ Mas isso deve ser evitado, pois pode comprometer a

relação do objeto real com a sua representação abstrata

MétodosMétodos

9

ClassesClasses

10

Conjunto de seres, objetos ou fatos que apresentam um ou mais aspectos distintivos em comum [Houaiss];

Grupo ou coleção de coisas que se distinguem das outras pela natureza, uso etc.

Define o grupo de características (atributos) dos objetos pertencentes a ela, específica quais ações (métodos) podem ser executadas, qual o seu relacionamento com outras classes.

UML (do inglês, Unified Modeling Language)◦ Representação bastante difundida para

representar graficamente classes em um modelo orientado a objetos

◦ Utilizada para representação de muitas etapas durante a análise de um sistema

◦ Formada por vários diagramas

◦ Um deles é o diagrama de classes, em que classes são representadas graficamente

Classe::RepresentaçãoClasse::Representação

11

Classe::RepresentaçãoClasse::Representação

12

São estruturas relacionadas, mas bem distintas:◦ Objeto é uma instância de uma classe;

◦ Objeto pertence a uma classe;

◦ Os objetos de uma mesma classe se diferenciam pelo conteúdo dos seus atributos;

◦ Objetos existem apenas na memória, quando o programa está em execução.

Objetos x ClassesObjetos x Classes

13

AbstraçãoAbstração

14

Abstração◦ Habilidade de modelar características do mundo

real Ignorando detalhes não relevantes Visando representar uma realidade complexa num

modelo mais simplificado

◦ “Uma abstração depende mais do observador do que do objeto observado”

◦ Só representamos características que nos interessem para determinado contexto

Classificação/Instanciação

Generalização/Especialização

Associação

Agregação

Composição

AbstraçãoAbstração

15

Análise das características de um objeto, definindo sua classe pertencente

Característica de cada entidade

Sala de aula: bancas, alunos, professor, quadro, Salas vizinhas, categoria

É a criação da classe em si! Definição de atributos (propriedades) e métodos

(comportamentos)

Abstração::ClassificaçãoAbstração::Classificação

16

Criar uma Classe “Televisão”

class  Televisao{

int tamanho;int canal;boolean ligada;

boolean ligar(){} boolean desligar(){}}

Abstração::ClassificaçãoAbstração::Classificação

17

Atributos

Métodos

Construir um objeto com todas as características de uma mesma classe significa que está fazendo uma Operação de Instanciação.

Classe:◦ Pessoa com atributos nome, cpf e idade

Objeto:◦ pessoaObjeto( “Fred”, 4565456, 31)

◦ Como pessoaObjeto é do tipo Pessoa ela pode ter valor os atributos como:nome = “Fred”, cpf = 4565456 e idade = 31

Abstração::InstanciaçãoAbstração::Instanciação

18

MédicoClasse mãe

Dermatologista, infectologista, pneumologista, etc.◦ Classes filhas ou especializadas

Classe mais especializada herda características da geral/mãe

Se a Classe Médico tem CRM como atributo, então a classe Dermatologista herda automaticamente o CRM como atributo

Abstração::EspecializaçãoAbstração::Especialização

19

De maneira inversa: A partir de um grupo de classes

◦ Identificar características que são comum a todas

◦ Engenheiro de Software -> Engenharia de Software

◦ IPhone 4S -> IPhone4

◦ Morcego -> Mamífero

Abstração::GeneralizaçãoAbstração::Generalização

20

HerançaHerança

21

Herança◦ É o mecanismo pelo qual pode-se definir uma

nova classe de objetos a partir de uma classe já existente

◦ Esta nova classe poderá aproveitar o comportamento e possíveis atributos da classe estendida

◦ A classe sendo refinada é chamada de superclasse ou classe base, enquanto que a versão refinada da classe é chamada uma subclasse ou classe derivada

Abstração::HerançaAbstração::Herança

22

Herança é, na verdade, uma classe derivada de outra classe.

Abstração::HerançaAbstração::Herança

23

Abstração::HerançaAbstração::Herança

24

Herança múltipla

Java não tem herança múltipla

Herança múltipla, em orientação a objetos, é o conceito de herança de duas ou mais classes. Ela é implementada nas linguagens de programação C++ e em Python, por exemplo. A linguagem Java possui apenas herança simples (uma classe possui no máximo uma classe pai), mas permite que uma classe implemente várias interfaces.

Abstração::AssociaçãoAbstração::Associação

25

Associação Simples

◦ As entidades envolvidas apresentam existências independentes, mas existe uma ligação entre elas

◦ Consiste na descrição genérica de uma ou mais ligações entre as classes, permitindo que objetos de uma classe utilizem recursos de outro objetos

Lê-se:Um Cliente tem um Produto

Abstração::Composição/AgregaçãoAbstração::Composição/Agregação

26

Agregação / Composição◦ A idéia de agregação ou composição estabelece a

criação de novas classes de objetos a partir da junção de classes já existente

Relação todo-parte

Em UML:Agregação é representada por um losango

vazado

Composição representado por um losango fechado

Abstração::Composição/AgregaçãoAbstração::Composição/Agregação

27

Agregação compartilhada Composição ?

Agregação: estabelece uma relação todo-parte entre classes, sendo que a parte possa existir sem o todo. ◦ Ex: Carro e Roda. Uma Roda é parte de um Carro,

porém pode a Roda existe por si só fora do Carro.

◦ Você pode por exemplo remover a roda de um carro para colocar em outro.

Abstração::Composição/AgregaçãoAbstração::Composição/Agregação

28

Composição: estabelece uma relação todo-parte entre classes, sendo que a parte NÃO existe sem o todo. ◦ Ex: Pedido e Itens de Pedido.

◦ Se você destruir o Pedido, os Itens são destruídos junto, eles não tem sentido se não houver um Pedido.

Abstração::Composição/AgregaçãoAbstração::Composição/Agregação

29

1 - Se eu "deletar" o A, terei que "deletar" também o B ? ◦ Sim = composição ◦ Não = pode ser agregação ou nada... goto pergunta 2

2 - O objeto B tem alguma utilidade sozinho ? ◦ Sim = associação comum ◦ Não = agregação

Abstração::Composição x AgregaçãoAbstração::Composição x Agregação

30

Abstração::Composição/AgregaçãoAbstração::Composição/Agregação

31

Agregação / Composição◦ O objetos contidos podem existir sem serem parte

do objeto que os contém◦ Exemplo:

Um Professor continuará a existir, mesmo que não haja o conceito Disciplina

Lê-se

Uma Disciplina tem ProfessorUma Disciplina tem Sala

Abstração::Composição/AgregaçãoAbstração::Composição/Agregação

32

Agregação / Composição◦ O objetos contidos não fazem sentido fora do

contexto do objeto que os contém◦ Exemplo:

Um pedido contem itens e um Cliente vinculado. Se você destruir o pedido, os itens são destruídos junto, pois eles não tem sentido fora do pedido

? Lê-se

Um Pedido tem ItensUm Pedido tem Clientes

Abstração::Composição/AgregaçãoAbstração::Composição/AgregaçãoLink: vale a pena lerLink: vale a pena ler

33

http://imasters.com.br/artigo/18901/uml/uml-composicao-x-agregacao/

EncapsulamentoEncapsulamento

34

Consiste em separar os aspectos externos de um objeto dos detalhes internos de implementação do objeto

Evita que objetos possuam grandes dependências entre si, de modo que uma simples mudança em um objeto possa trazer grandes efeitos colaterais e problemas para outros objetos

Em POO, o acesso a componentes de um objeto é controlado e, especialmente, os atributos de um objeto só devem ser modificados pelos métodos do próprio objeto

EncapsulamentoEncapsulamento

35

Aplicando políticas de visibilidade sobre atributos e métodos garante-se o encapsulamento.

Atributos e métodos podem ser públicos, privados ou protegidos

Abstração::PolimorfismoAbstração::Polimorfismo

36

Polimorfismo

◦ É originário do grego, e quer dizer “muitas formas”

◦ Significa que um mesmo tipo de objeto, sob certas condições, pode realizar ações diferentes ao receber uma mesma mensagem

Abstração::PolimorfismoAbstração::Polimorfismo

37

Polimorfismo◦ Permite o envio de uma mesma mensagem a

objetos distintos, onde cada objeto responde da maneira mais apropriada

Tipos de polimorfismo

Abstração::PolimorfismoAbstração::Polimorfismo

38

Sobrecarga* parâmetros distintos passados ao mesmo método

SobreposiçãoMesmo métodos, implementações diferentes em classes distintas