1 1
SISTEMAS DEINFORMAÇÃO
ACH2002
Orientação a ObjetosProfessores:Delano Medeiros BederFátima L. S. Nunes
EACH – USP
2 2
SISTEMAS DEINFORMAÇÃO
O que é abstração ?
3 3
SISTEMAS DEINFORMAÇÃO
Abstraçãos.f. Operação do espírito, que isola de uma noção um elemento, negligenciando os outros.Resultado desta operação: a brancura considerada em geral, sem ser aplicada a um objeto, é uma abstração.Fazer abstração de uma coisa, não levá-la em consideração.S.f.pl. Idéias quiméricas, desvinculadas da realidade: perder-se em abstrações.
2o semestre 2008 3
4 4
SISTEMAS DEINFORMAÇÃO
AbstraçãoFocar em aspectos inerentes e
essenciais de uma entidadeem desenvolvimento de software:
O QUE É e o QUE FAZ um objeto, e não como faz
evita comprometimento prematuro com detalhes
2o semestre 2008 4
5 5
SISTEMAS DEINFORMAÇÃO
AbstraçãoDepende do ponto de vista
2o semestre 2008 5
6 6
SISTEMAS DEINFORMAÇÃO
Objeto é definido a partir de um tipo abstrato de dados
Combinação de dados e operações (sobre eles) em um elemento único
Ocultamento da informação e implementação
Representação de objetos de um determinado tipo não é visível pelos clientes que usam o usam
Únicas operações diretas sobre objetos são aquelas oferecidas na definição do tipo.
2o semestre 2008 6
Tipos Abstratos de Dados
7 7
SISTEMAS DEINFORMAÇÃO
Ocultamento da informação e implementaçãoRepresentação de objetos de um determinado tipo
não é visível pelos clientes que usam
Únicas operações diretas sobre objetos são aquelas oferecidas na definição do tipo.
Qual a vantagem do ocultamento?
2o semestre 2008 7
Tipos Abstratos de Dados
8 8
SISTEMAS DEINFORMAÇÃO
Ocultamento da informação e implementação
implementação do tipo pode ser alterada sem afetar as unidades de programa que fazem uso dele (contanto que mantenha as mesmas operações)
Aumenta a confiabilidade, pois nenhuma outra unidade de programa pode mudar, acidentalmente ou intencionalmente, as representações do tipo, aumentando a integridade de tais objetos
2o semestre 2008 8
Tipos Abstratos de Dados
9 9
SISTEMAS DEINFORMAÇÃO
Paradigma OOObjeto:
abstração de uma entidade real, cujas características e comportamento são conhecidos
se apresenta a outras entidades por meio de uma interface bem definida
Exemplo:carro é um objeto
características: modelo, marca, ano, corcomportamento: acelera, estaciona, liga
2o semestre 2008 9
10 10
SISTEMAS DEINFORMAÇÃO
Paradigma OOVisão Interna: define a estrutura e o comportamento
do objeto, ou seja, define características e comportamentos
Visão Externa: interface que define como o objeto é visto por outros objetos
Mensagem: comunicação entre objetos
2o semestre 2008 10
11 11
SISTEMAS DEINFORMAÇÃO
Paradigma OO
• POO é um paradigma de programação
• A “unidade” de programação é a classe de objetos
• Quais os componentes de uma classe?
2o semestre 2008 11
12 12
SISTEMAS DEINFORMAÇÃO
Paradigma OO
• POO é um paradigma de programação
• A “unidade” de programação é a classe de objetos
• Quais os componentes de uma classe?
• atributos (características dos objetos)
• métodos (comportamento dos objetos)
2o semestre 2008 12
13 13
SISTEMAS DEINFORMAÇÃO
Extensão do conceito de Tipos Abstratos de DadosCombinação de dados e operações (sobre eles) em um
elemento único
Classe: definição do Tipo Abstrato de DadosObjeto: cada instância derivada da classe
Representa em software entidades que encontramos no mundo real
2o semestre 2008 13
Orientação a Objetos
14 14
SISTEMAS DEINFORMAÇÃO
Classe: definição do Tipo Abstrato de DadosObjeto: cada instância derivada da classe
Exemplo:Classe Carro (define um Tipo Abstrato de
Dados denominado Carro)Objetos instanciados a partir da classe Carro:
bmw, mercedes, corsa, fiesta
2o semestre 2008 14
Orientação a Objetos
15 15
SISTEMAS DEINFORMAÇÃO
Classes/ObjetosEncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 15
Orientação a objetos
16 16
SISTEMAS DEINFORMAÇÃO
Classes/ObjetosEncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 16
Orientação a objetos
17 17
SISTEMAS DEINFORMAÇÃO
Classe: define um conjunto de objetos com a mesma estrutura e o mesmo comportamentoCarro, Pessoa, Aluno são exemplos de classesBMW e Ferrari são dois objetos da classe
CarroJoão e Maria são dois objetos da classe Pessoa
A classe é o que você projeta e programaO objeto é o que você cria (a partir de uma
classe) em tempo de execução
2o semestre 2008 17
Classes / Objetos
18 18
SISTEMAS DEINFORMAÇÃO
Todo objeto é criado a partir (é uma instância) de uma classe
Dados (atributos) são associados a cada objeto
Classes podem conter atributos gerais (e operações) independentes das diversas instânciasMétodos e atributos estáticos (C++ e Java)
2o semestre 2008 18
Classes / Objetos
19 19
SISTEMAS DEINFORMAÇÃO
Exemplo: um Estudante e uma Disciplina podem ser considerados objetos, pois qualquer um deles pode ser definido em termos de um conjunto de atributos e operações
Objetos podem se relacionar um com o outroum Estudante pode Cursar uma Disciplinao relacionamento Cursar define uma conexão
específica entre Estudante e Disciplina
2o semestre 2008 19
Objetos
20 20
SISTEMAS DEINFORMAÇÃO
Outros exemplos de objetos: um computador uma tela de um aplicativo do computador uma reserva de livro um livro um processo de identificação de acessos ilegais numa rede de
computadores um acesso ilegal
2o semestre 2008 20
Objeto = Atributos + Métodos + Encapsulamento
dados funcionalidade(comportamento)
Objetos
21 21
SISTEMAS DEINFORMAÇÃO
Representam um conjunto de informações, ou seja, elementos de dados que caracterizam um objeto
Exemplos: objeto Estudante
atributos: nome, nro USP, ano de ingresso, data de nascimento, …objeto Disciplina
atributos: nome, código, nro de créditos, pré-requisitos, equivalências, ….
objeto Reserva de Vôoatributos: número da reserva, número do vôo, nome passageiro,
data validade da reserva, prioridade, ….
2o semestre 2008 21
Atributos
22 22
SISTEMAS DEINFORMAÇÃO
Quando um objeto é mapeado dentro do domínio do software, os processos que podem alterar seus atributos (dados) são denominados Operações ou Métodos
Métodos são invocados por MensagensCada objeto possui seu próprio conjunto de métodosDefinições:
procedimentos definidos e declarados que atuam sobre o objetodescrição de uma sequência de ações a serem executadas pelo
objetoespecificação de COMO o objeto deve FAZER alguma coisasão intrínsecos ao objeto e não podem ser separados dele
2o semestre 2008 22
Métodos
23 23
SISTEMAS DEINFORMAÇÃO
Podem estar presentes tanto para atributos como para métodos
Em princípio, três categorias de visibilidade podem ser definidas:público: o atributo ou método de um objeto dessa classe pode ser
acessado por qualquer outro objeto (visibilidade externa total)privativo: o atributo ou método de um objeto dessa classe não pode
ser acessado por nenhum outro objeto (nenhuma visibilidade externa)
protegido: o atributo ou método de um objeto dessa classe pode ser acessado apenas por objetos de classes que sejam derivadas dessa por meio do mecanismo de herança
2o semestre 2008 23
Modificadores de Visibilidade
24 24
SISTEMAS DEINFORMAÇÃO
Classes/ObjetosEncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 24
Orientação a objetos
25 25
SISTEMAS DEINFORMAÇÃO
Outros paradigmas convencionais (estrutural, por exemplo) separam dados e operações sobre eles
O objeto contém tantos os dados quanto as operações:Dados: atributosImplementação das operações:
métodos
2o semestre 2008 25
Dados Procedimentos
Dados
Operações
Encapsulamento
26 26
SISTEMAS DEINFORMAÇÃO2o semestre 2008 26
Dados(atributos)
Operações(métodos)
Diagrama de Classes UML
Carrocormodelomarcaano
aceleraestacionaliga
27 27
SISTEMAS DEINFORMAÇÃO
Utilização de encapsulamento para restringir a visibilidade externa de detalhes de informações (dados) ou implementações (operações), os quais são internos à estrutura de encapsulamento
2o semestre 2008 27
Dados
Operações
Não é possível chegar aos dados diretamente
Cliente não tem conhecimento acerca de como as operações são implementadas
Encapsulamento e Ocultamento de Informações
28 28
SISTEMAS DEINFORMAÇÃO
Exemplo:
2o semestre 2008 28
Encapsulamento e Ocultamento de Informações
Carro
cormodelomarcaano
aceleraestacionaligadefineAnodefineModelo
• Classe Carro encapsula atributos e métodos referentes a um tipo abstrato
• Cada cliente (programa) que usar esta classe para definir objetos não saberá como os métodos foram implementados e não poderá alterar os atributos diretamente.
• Cliente pode usar somente os métodos que lhe serão permitidos.
29 29
SISTEMAS DEINFORMAÇÃO
Classes/ObjetosEncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 29
Orientação a objetos
30 30
SISTEMAS DEINFORMAÇÃO
Habilidade de um objeto reter seu estadoestado ≅ conjunto de valores de seus atributos
Um objeto é ciente de seu passado (operações que foram executadas previamente)
O estado influencia o comportamento do objeto
2o semestre 2008 30
Retenção de Estado
31 31
SISTEMAS DEINFORMAÇÃO2o semestre 2008 31
Retenção de EstadoExemplo:
Carro
cormodelomarcaano
aceleraestacionaligadefineAnoexibeAno
• Suponha que foram definidos dois objetos: bmw e corsa
Carro bmw = new Carro()
Carro corsa = new Carro()
• se eu usar o método defineAno para bmw e também usá-lo para corsa, cada um dos objetos guardará o seu próprio ano.
• bmw.defineAno(2008)
• corsa.defineAno(2001)
• bmw.exibeAno() mostrará 2008
• corsa.exibeAno() mostrará 2001
32 32
SISTEMAS DEINFORMAÇÃO
Classes/ObjetosEncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 32
Orientação a objetos
33 33
SISTEMAS DEINFORMAÇÃO
Propriedade pela qual cada objeto (independentemente de sua classe ou seu estado) pode ser identificado e tratado como uma entidade distinta de softwareO mesmo identificador permanece com o objeto
por toda sua vidaDois objetos nunca podem ter o mesmo
identificadorDois objetos podem ter o mesmo “estado”, porém
suas identidades são distintas
2o semestre 2008 33
Identidade de Objeto
34 34
SISTEMAS DEINFORMAÇÃO2o semestre 2008 34
Identidade de ObjetoExemplo:
Carro
cormodelomarcaano
aceleraestacionaligadefineAnoexibeAno
• Suponha que foram definidos dois objetos distintos: bmw e corsa
• bmw será identificador do primeiro objeto durante sua existência
• corsa será identificador do segundo objeto durante sua existência
• mesmo que aos atributos dos dois objetos sejam atribuídos os mesmos valores, eles serão objetos distintos
35 35
SISTEMAS DEINFORMAÇÃO
Classes/ObjetosEncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 35
Orientação a objetos
36 36
SISTEMAS DEINFORMAÇÃO
Um objeto pode se comunicar com outros através da troca de mensagens
Uma mensagem é o veículo pelo qual um objeto remetente obj1 transmite a um objeto destinatário obj2 um pedido para o obj2 aplicar um de seus métodos
Mensagens ocorrem quando ocorre invocações (chamadas a métodos)
2o semestre 2008 36
Mensagens
37 37
SISTEMAS DEINFORMAÇÃO2o semestre 2008 37
MensagensExemplo:
Estacionamento
quantidadeCarros
adicionaCarro()
• Suponha que o método adicionaCarro faça as seguintes ações:
• instancia um carro
Carro carro1 = new Carro()
• define ano e modelo do carro instanciado
carro1.defineAno(2001)
carro1.defineModelo(“ferrari”)
• Ao invocar os métodos defineAno e defineModelo, está ocorrendo uma troca de mensagens entre um objeto da Classe Estacionamento e um objeto da Classe Carro
38 38
SISTEMAS DEINFORMAÇÃO
Classes/ObjetosEncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 38
Orientação a objetos
39 39
SISTEMAS DEINFORMAÇÃO
Qual é o conceito de herança no nosso dia-a-dia ???
2o semestre 2008 39
Herança
40 40
SISTEMAS DEINFORMAÇÃO
O que torna a computação orientada a objetos única é o conceito de herança
Mecanismo que permite definir uma nova classe (subclasse) a partir de uma classe já existente (superclasse)
2o semestre 2008 40
Herança
41 41
SISTEMAS DEINFORMAÇÃO
A subclasse herda as características da superclasse: os atributos e os métodos da superclasse passam a
ser também atributos e métodos da subclassea subclasse pode adicionar novos atributos e
métodos, e reescrever métodos herdados
Portanto: herança é a habilidade de um objeto derivar seus atributos (dados) e métodos (funcionalidade) automaticamente de outro objeto
2o semestre 2008 41
Herança
42 42
SISTEMAS DEINFORMAÇÃO
Permite modelar uma hierarquia entre classes: classes mais especializadas (subclasses) herdam propriedades da classe mais geral (superclasse)
Cria uma nova classe inserindo somente as diferenças desta para sua superclasse
Identifica-se a possibilidade de herança por meio da seguinte expressão típica: “é um tipo de”
2o semestre 2008 42
Herança
43 43
SISTEMAS DEINFORMAÇÃO
Herança: mecanismo para derivar novas classes a partir das classes já existentesExemplo: Classe Caminhão é derivada da Classe CarroCaminhão tem os atributos tamanho e capacidade, além
dos atributos herdados da Classe Carro
Uma classe derivada herda a representação dos atributos e operações públicas da classe base, podendo:adicionar novas operaçõesestender a representação dos atributos sobrepor a implementação de operações já herdadas
2o semestre 2008 43
Herança
44 44
SISTEMAS DEINFORMAÇÃO2o semestre 2008 44
Diagrama de Classes UML(Herança)
Herança
CarrocormodelomarcaanoaceleraestacionaligadefineAnoexibeAno
CaminhãocormodelomarcaanotamanhocapacidadeaceleraestacionaligadefineAnoexibeAno
CarroImportadocormodelomarcaanopaísaceleraestacionaligadefineAnoexibeAno
superclasse
subclasse
subclasse
45 45
SISTEMAS DEINFORMAÇÃO
Construção de forma incrementada de software: (Reutilização de Software)
Boa prática:Primeiro, construir classes para lidar com
o caso mais geralEm seguida, a fim de tratar os casos
especiais, definir classes especializadas - herdadas da primeira classe
2o semestre 2008 45
Herança
46 46
SISTEMAS DEINFORMAÇÃO
Capacidade de SubstituiçãoDeve ser capaz de substituir uma classe
Derivada dentro de qualquer programa que exija uma classe Base e tudo deve funcionar bem
Basicamente, isso significa que, se você escrever um programa supondo que tem um Carro, então pode usar livremente qualquer classe herdada de Carro (Caminhão, CarroImportado).
2o semestre 2008 46
Herança
47 47
SISTEMAS DEINFORMAÇÃO
Sobrecarga : dar um mesmo nome a mais de um métodoDesde que a assinatura seja diferenteassinatura ↔ parâmetros + retorno
A redefinição de um método em classes diferentes, dentro de uma estrutura de herança é conhecida como overridingNecessita ter a mesma assinatura
2o semestre 2008 47
Sobrecarga (overloading) Redefinição (overriding)
48 48
SISTEMAS DEINFORMAÇÃO2o semestre 2008 48
OverridingOverloading Novo método
Overloading & Overriding
49 49
SISTEMAS DEINFORMAÇÃO
A a; // define objeto do tipo A...if usuário diz OKthen a = new B(); // Capacidade de Substituiçãoelse a = new C(); // Capacidade de Substituição...a.x(10); // OK. a.x(“Aula”); // Erro de compilação: x(String) não está // definida na classe A
2o semestre 2008 49
Overloading
50 50
SISTEMAS DEINFORMAÇÃO
Classes/ObjetosEncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 50
Orientação a objetos
51 51
SISTEMAS DEINFORMAÇÃO
“O que possui várias formas”
Propriedade de se usar o mesmo nome para métodos diferentes, implementados em diferentes níveis de uma hierarquia de classes
Para cada classe, tem-se um comportamento específico para o método
2o semestre 2008 51
Polimorfismo
52 52
SISTEMAS DEINFORMAÇÃO
Habilidade pela qual uma única operação pode ser definida em mais de uma classe e assumir implementações diferentes em cada uma dessas classesOverriding de operações
Vinculação tardia (late binding) é a técnica pela qual a operação a ser executada é determinada somente em tempo de execução Java (implementado diretamente)Palavra chave virtual (Linguagem C++)
2o semestre 2008 52
Polimorfismo / Vinculação Tardia
53 53
SISTEMAS DEINFORMAÇÃO
Polígono p;...if usuário diz OKthen p = new Triângulo();else p = new Retângulo();...p.calcularArea(); // aqui p pode referir-se a um objeto // Triângulo ou a um objeto Retângulo // Capacidade de Substituição
2o semestre 2008 53
Dados
Triângulo
calcularArea
Dados
Retângulo
calcularArea
p
Polimorfismo / Vinculação Tardia
54 54
SISTEMAS DEINFORMAÇÃO
Permite a cada objeto responder a um formato de mensagem da maneira apropriada à classe (ou subclasse) da qual foi instanciado
Uma mesma operação pode apresentar comportamentos diferentes em classes (ou subclasses) distintas
Uma operação pode ter diferentes implementações, isto é, mais de um método pode implementá-la
2o semestre 2008 54
Polimorfismo
55 55
SISTEMAS DEINFORMAÇÃO
Uma classe pode herdar características de mais de uma classe, ou seja, pode ter mais de uma superclassea subclasse herda todos os atributos e métodos de todas as
suas superclassesatributos/métodos de um mesmo ancestral que “alcancem” a
subclasse por mais de um caminho na hierarquia são herdados apenas uma vez (são o mesmo atributo/método). Ex. a seguir: atributo cor na hierarquia de Veículo
conflitos em definições paralelas na hierarquia podem gerar ambiguidades (ex. a seguir: método operar na hierarquia de Veículo)
2o semestre 2008 55
Herança Múltipla
56 56
SISTEMAS DEINFORMAÇÃO2o semestre 2008 56
Atributo:- cor
Método:-operar
Veículo
Veículo Terrestre Veículo Aquático
Atributo:- cor
Método:- operar
Atributo:- cor
Método:- operar
Atributo:- cor
Método:- operar ????
Atributo:- cor
Método:- operar
Atributo:- cor
Método:- operar
Veículo AnfíbioCarro Barco
Herança Múltipla
57 57
SISTEMAS DEINFORMAÇÃO
EncapsulamentoOcultamento da informação e implementação
(Abstração)Retenção de estadoIdentidade de objetoMensagensClasses/ObjetosHerançaPolimorfismo/Vinculação tardia (late binding)Relacionamento entre classes/objetos
2o semestre 2008 57
Orientação a objetos
58 58
SISTEMAS DEINFORMAÇÃO
Uma classe pode ser composta por outras classes, consideradas partes ou componentes
2o semestre 2008 58
Composição
Decomposição
Monitor Mouse Teclado
CPU RAM
Computador
“Gabinete”
…
…
Agregação e Composição
59 59
SISTEMAS DEINFORMAÇÃO
A composição é frequentemente referida por relacionamento “todo-parte”, no qual o agregado (“todo”) é composto de partes
2o semestre 2008 59
Composição
Decomposição
Monitor Mouse Teclado
CPU RAM
Computador
“Gabinete”
…
…
Agregação e Composição
60 60
SISTEMAS DEINFORMAÇÃO
Capturam relacionamentos do tipo “todo-parte” entre objetos
Não existe herança entre objetos participando de uma agregação
Agregações reduzem a complexidade ao permitir tratar vários objetos como um único
2o semestre 2008 60
Relacionamento: Agregação
61 61
SISTEMAS DEINFORMAÇÃO
Nesse tipo de agregação, os objetos da classe “parte” não podem viver quando o objeto “todo” é destruído
Não compartilhamento: os objetos da classe “parte” são componentes de apenas um objeto “todo”
2o semestre 2008 61
Relacionamento: Composição
62 62
SISTEMAS DEINFORMAÇÃO2o semestre 2008 62
Diagramas de Classes UML (Agregação e Composição)
Agregação X Composição
63 63
SISTEMAS DEINFORMAÇÃO
Herança é uma relação “é um” Carro é um Veículo
Agregação/Composição é uma relação “é parte de um”Pneu é parte de um CarroMotor é parte de um Carro
2o semestre 2008 63
Herança e Agregação/Composição
64 64
SISTEMAS DEINFORMAÇÃO
Uma associação nos permite capturar relacionamentos básicos que existem entre conjuntos de objetos
2o semestre 2008 64
Diagramas de Classes UML (Associação)
Associação
65 65
SISTEMAS DEINFORMAÇÃO
ACH2002
Orientação a ObjetosProfessores:Delano Medeiros BederFátima L. S. Nunes
EACH – USP
Top Related