orientação a objetos 1. paradigma de orientação a objetos usado para representar o mundo real ...

38
Orientação a Objetos 1

Upload: luna-santana-carlos

Post on 07-Apr-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

Orientação a Objetos

1

Page 2: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Mundo Real : entidades que se interagem

Conceitos AnterioresConceitos Anteriores

2

Page 3: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 4: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 5: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

ObjetosObjetos

5

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

Identidade Estado Comportamento

Page 6: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 7: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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?

Page 8: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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.

Page 9: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 10: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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.

Page 11: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 12: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

12

Page 13: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 14: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 15: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

Classificação/Instanciação

Generalização/Especialização

Associação

Agregação

Composição

AbstraçãoAbstração

15

Page 16: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 17: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 18: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 19: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 20: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 21: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 22: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

22

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

Page 23: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

23

Page 24: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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.

Page 25: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 26: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 27: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

27

Agregação compartilhada Composição ?

Page 28: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 29: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 30: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 31: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 32: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 33: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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/

Page 34: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 35: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 36: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 37: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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

Page 38: Orientação a Objetos 1.  Paradigma de Orientação a Objetos usado para representar o mundo real  Mundo Real : entidades que se interagem Conceitos Anteriores

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