Buscar

Unidade 3P

Prévia do material em texto

Programação em Computadores
Unidade 3 – Conceitos avançados de OO
Prof. Miriam Z. Parra Sejas
miriam.zareth.parra.sejas@ufsc.br
UNIVERSIDADE FEDERAL DE SANTA CATARINA
2/69
UNIDADE 3: Conceitos avançados de Orientação a
Objetos
 Encapsulamento.
 Herança.
 Polimorfismo.
 Mensagens
CONTEUDO
3/69
 Encapsulamento
 Se encarrega de esconder atributos ou métodos
 Restringir o acesso a membros de uma classe via
private é chamado de encapsulamento
(posteriormente veremos também o modificador
de acesso adicional protected).
 Atributos e métodos privados só podem ser acessados
desde a mesma classe
 Para acessar a métodos ou atributos privados desde
outras classes se empregam os métodos Setters e
Getters
CONCEITOS AVANÇADOS DE OO
4/69
 Encapsulamento
 Evitar o acesso direto permite esconder a maneira como
a classe realiza suas tarefas, assim como também garantir
que o preenchimento de determinadas informações seja
realizada de maneira consistente
 O encapsulamento faz com que a implementação
de uma classe seja ocultada de seu cliente
 Isso permite, por exemplo, futuras alterações na
forma como a classe funciona internamente sem a
necessidade de alterar o cliente.
CONCEITOS AVANÇADOS DE OO
5/69
 Encapsulamento
 Por quê encapsular?
Classe Pessoa
int idade;
 É importante garantir que ao inicializar ou alterar os
valores de uma determinada instância, esses valores
sejam consistentes com a realidade representada pelo
objeto.
 Se a modificação dos atributos de um objeto é realizada
apenas por meio de métodos, é possível garantir que
essas condições sejam respeitadas.
CONCEITOS AVANÇADOS DE OO
idade=-5 
idade=5.75 
idade=89756 
6/69
Agregação e Composição
 São tipos de associações.
 Uma associação representa uma referência entre objetos.
 Em termos de programação não são muito diferentes.
 Agregação é um tipo de Associação que consiste em uma
relação entre duas classes (possui-uma, "has-a")
 A classe agregada contém uma referência para outra classe e
possui a propriedade daquela classe.
 Cada classe referenciada é considerada como parte da classe
agregada.
CONCEITOS AVANÇADOS DE OO
7/69
Agregação
 A classe agregada é dita como dona da classe
referenciada
 Não pode haver referências cíclicas em uma relação
de agregação.
CONCEITOS AVANÇADOS DE OO
8/69
Agregação
Quando acontece este tipo de associação?
 acontece quando um objeto precisa de outro objeto
para completar a sua ação (Todo/Parte), ou seja, faz a
agregação de um objeto externo e o utiliza como
parte de si própria.
CONCEITOS AVANÇADOS DE OO
9/69
Agregação
Quando acontece este tipo de associação?
 A agregação indica que uma das classes do
relacionamento é uma parte, ou está contida em
outra classe.
 As palavras chaves usadas para identificar uma
agregação são:“tem um", "contém", "é parte de".
CONCEITOS AVANÇADOS DE OO
10/69
Agregação
 Na agregação o objeto existe fora do outro, é criado
fora e então é passado como um argumento (por exemplo) ao
construtor.
 Por exemplo: Pessoa e Carro.
O carro é criado em um contexto diferente e então torna-se
propriedade de uma pessoa.
CONCEITOS AVANÇADOS DE OO
11/69
Agregação
Exemplo
 classe Estudante faz uma referência para a classe
Endereço.
CONCEITOS AVANÇADOS DE OO
Possui-um
12/69
Agregação
Exemplo
CONCEITOS AVANÇADOS DE OO
13/69
Agregação
Exemplo
 No momento de criar uma classe Estudante é necessário passar
como parâmetro ao construtor o objeto Endereço.
 A criação do objeto do tipo Endereco é realizada antes, e então o
mesmo é enviado para o construtor de Estudante.
CONCEITOS AVANÇADOS DE OO
14/69
Agregação
Vantagens
 A agregação (e também a composição) permite a
reusabilidade de código
CONCEITOS AVANÇADOS DE OO
15/69
Exercício 1
a) Implemente as classes Estudante, Professor, Facultade e
Endereço.
b) Desenvolva uma classe de Teste que instancie objetos dessas
classes e que imprima os valores na tela.
CONCEITOS AVANÇADOS DE OO
16/69
Exercício 2
 O teatro possui um nome e um endereço. No teatro são
realizadas quatro apresentações ao dia. Cada apresentação
tem um nome e um preço.
a) Faça o diagrama UML
b) Implemente as classes
 No exercício anterior incremente metodos que permitam
trocar o nome do teatro e o nome e preço das
apresentações
CONCEITOS AVANÇADOS DE OO
17/69
Composição
 A Composição é uma forma restrita de Agregação em
que duas entidades são altamente dependentes uma da outra.
 A composição implica propriedade de um objeto sobre outro
 Na Composição, uma classe normalmente cria a
instância de outra classe dentro de si própria, sendo assim,
quando ela for destruída, a outra classe também será.
 Também é uma relação Todo/Parte, ou seja, a classe principal é
o todo, e as outras classes nela instanciadas, suas partes.
CONCEITOS AVANÇADOS DE OO
18/69
Composição
 A Composição implica que os objetos referenciados
compartilham do mesmo "tempo de vida" do objeto que as
referencia.
 Em termos práticos, a composição não implica em grandes
alterações na programação. A mudança principal é que os
objetos referenciados são normalmente criados (e destruídos)
ao mesmo tempo que o objeto que os referencia.
 A composição acontece quando um objeto não existe (ou faz
sentido em existir) sem que o outro exista.
CONCEITOS AVANÇADOS DE OO
19/69
Composição
 Exemplo
 Tabuleiro de xadrez é composto por quadrados de xadrez.
 Esses quadrados não existem sem que o tabuleiro exista.
CONCEITOS AVANÇADOS DE OO
20/69
Composição
 Por outro lado, em uma agregação os objetos
podem existir de maneira independente.
 Por exemplo, um carro é uma agregação de diversas
partes - um escapamento de carro, ou uma porta de
carro continuam existindo (ainda que não seja uma
parte do carro).
 A decisão de usar uma agregação ou composição está
sempre muito relacionada com o contexto específico
em que uma classe será utilizada
CONCEITOS AVANÇADOS DE OO
21/69
Composição
 Exemplo
 Pessoa - coração.
 Não faz muito sentido criar um coração e então passar o mesmo
para a pessoa.
 Isso sugere a utilização da composição
CONCEITOS AVANÇADOS DE OO
22/69
Composição
CONCEITOS AVANÇADOS DE OO
23/69
Herança
 Exemplo
CONCEITOS AVANÇADOS DE OO
EMPREGADO
24/69
Herança
 Exemplo
CONCEITOS AVANÇADOS DE OO
A guitarra é um instrumento de
cordas dedilhada, que possuem
geralmente de 6 a 12
cordas tensionadas ao longo do
instrumento e possuem um
corpo (pode ter caixa de
ressonância) com formato de um
8, além de um braço, sobre o
qual as cordas passam. O nome
mais comum usado é violão. É um
instrumento introduzido na
Espanha no Século IX.
Alaúde
Balalaica
Bandolim
Banjo
25/69
Herança
 Exemplo
CONCEITOS AVANÇADOS DE OO
A flauta é instrumento musical
de sopro feito de diversos tipos
de madeiras com formato de um
tubo oco com orifícios. É um
aerofone que, a partir do fluxo
de ar dirigido a uma aresta que
vibra com a passagem do ar,
emite som. A mais antiga foi
descoberta na caverna Hohle
Fels perto de Ulm, Alemanha.
Flauta 
doce
Flauta 
transversal
Flauta 
pã
Ocarina
Pifano
Diaulo
26/69
Herança
 Exemplo
CONCEITOS AVANÇADOS DE OO
27/69
Herança
 Exemplo
CONCEITOS AVANÇADOS DE OO
É um
28/69
Herança
 Característica importante da orientação a objetos
que permite organizar as classes em hierarquias demaneira que herdem os atributos e métodos das
outras classes (PINHEIRO, 2006)
 Forma de reutilização de software em que uma nova
classe é criada absorvendo membros de uma classe
existente de modo que esta possa ser aprimorada ou
ter novas capacidades (DEITEL; DEITEL, 2010).
CONCEITOS AVANÇADOS DE OO
29/69
Herança
 Permite a criação de duas, ou mais, classes muito
semelhantes, evitando a necessidade de escrever a
parte comum, entre elas, duas vezes
 Um relacionamento de herança forma uma estrutura
hierárquica em árvore;
 A superclasse existe em um relacionamento hierárquico
com suas subclasses
CONCEITOS AVANÇADOS DE OO
30/69
Herança
 Se uma classe B herda os atributos e métodos de
uma classe A, dizemos que B é subclasse de A, e que
A é superclasse de B
 Também é comum a referência a B como classe filha
ou descendente e a referência a A como pai ou
ancestral
 Na herança temos um relacionamento do tipo "é
um".
CONCEITOS AVANÇADOS DE OO
31/69
Herança
 Em um relacionamento do tipo "é um" o objeto de
um tipo de subclasse também pode ser tratado como
objeto de seu tipo de superclasse.
 Também é comum a referência a B como classe filha
ou descendente e a referência a A como pai ou
ancestral
CONCEITOS AVANÇADOS DE OO
32/69
Herança
 Exemplo
CONCEITOS AVANÇADOS DE OO
É um
Classe pai / 
Superclasse
Classe filha / 
Subclasse
33/69
Herança
CONCEITOS AVANÇADOS DE OO
É um
A classe estudante é também uma pessoa pelo que herda os
atributos e métodos da classe Pessoa mais também possui métodos
e atributos próprios
Classe pai / Superclasse
Classe filha / Subclasse
Um estudante é uma pessoa mas nem toda pessoa é um estudante.
Pelo que sabemos que estudantes herda de pessoa
34/69
Herança
CONCEITOS AVANÇADOS DE OO
superclasse
superclasse
subclassesubclasse
superclasse
subclasse
subclasse
35/69
Herança
Em Java
 Em Java para que uma classe herde atributos e métodos de
outra classe utiliza-se a palavra-chave extends na definição da
classe.
 A classe Estudante herda todos os membros não privados da
classe Pessoa (exceto os construtores).
 O acesso a atributos privados, o acesso que deve ser feito via
métodos setters e getters.
CONCEITOS AVANÇADOS DE OO
36/69
Herança em Java
CONCEITOS AVANÇADOS DE OO
37/69
Herança em java
CONCEITOS AVANÇADOS DE OO
Chamada
super
deve ser
sempre a
primeira
Instrução.
38/69
Herança em java
 Um método da classe filha pode redefinir um atributo
ou método da classe pai antepondo a palavra super.
 Uma classe pai pode derivar-se em classes filhas e
essas classes filhas em classes netas.
 Os atributos e métodos da classe pai passam para as
filhas e das filhas as classes netas.
 No Java, uma classe não pode ter mais de uma classe
pai (não existem heranças múltiplas)
CONCEITOS AVANÇADOS DE OO
39/69
Sobrescrita
 Quando uma classe possui descendentes, e possuiu
métodos que ficam visíveis a seus descendentes. Estes
métodos podem sofrer uma sobrescrita feita pelos
descendentes.
CONCEITOS AVANÇADOS DE OO
40/69
Sobrescrita
 Acontece a sobrescrita, quando o método definido na
classe filho possui o mesmo nome, tipo de retorno e
parâmetros que o método definido na classe pai.
CONCEITOS AVANÇADOS DE OO
//classe pai
public void soma(int a, int b) {
int c = a+b;
}
// classe filha
public void soma(int a, int b) {
System.out.println("a"+a + "b"+b));
}
41/69
Membros Protected
 Os membros public de uma superclasse são
acessados de qualquer lugar em que o programa
tenha uma referência para o tipo dessa superclasse
ou para o tipo de suas subclasses
 Os membros private de uma superclasse são
acessados apenas em métodos dessa superclasse
 Os membros de acesso protected de uma
superclasse servem como nível intermediário de
proteção entre o acesso public e o private
CONCEITOS AVANÇADOS DE OO
42/69
Membros Protected
 Os membros protected de uma superclasse
podem ser acessados apenas por métodos da
superclasse, por métodos de subclasses e por
métodos de outras classes no mesmo pacote (os
membros protected tem acesso de pacote)
 Os métodos de subclasse normalmente podem fazer
referência aos membros public e protected sa
superclasse simplesmente com os nomes dos
membros.
CONCEITOS AVANÇADOS DE OO
43/69
Membros Protected
 Quando um método de subclasse sobrescreve o
método de superclasse, o método de superclasse
pode ser acessado a partir da subclasse que precede
o nome do método de superclasse com a palavra-
chave super seguida pelo operador ponto (.)
CONCEITOS AVANÇADOS DE OO
44/69
Exercício 3
 Implemente a seguinte hierarquia
CONCEITOS AVANÇADOS DE OO
45/69
Exercício 4
 Implementar uma classe Conta que deve possuir :
 nomeTitular: String; numeroConta: String; numeroAgencia:
String;
 saldo: float; estado: String (positivo ou negativo);
 Métodos: Construtor, Saque, AlteraEstados (altera para positivo
ou negativo dependendo do saldo), Deposito, Mostrar.
 Criar um outro método atualizar na classe Conta. Esse método
deve incrementar percentualmente o saldo da conta.(this.saldo
= this.saldo * percentual);
 Desenvolva também um método para transferir valores de
uma conta para outra. Ex.: transferePara (Conta destino, float
valor)
 Crie três classes que serão subclasses de conta:
ContaCorrente, ContaPoupanca e ContaInvestimento.
CONCEITOS AVANÇADOS DE OO
46/69
Exercício 4
 Essas classes não terão nenhum atributo e deverão ter um
método construtor que receba todas as informações dos
atributos de conta e deverá invocar o método construtor da
superclasse.
 As classes ContaPoupanca e ContaInvestimento deverão
sobreescrever o método atualizar que deve aplicar um
rendimento diferencial, como segue:
 this.saldo += this.saldo * 1,005; //Conta Poupança
 this.saldo += this.saldo * 1,01; //Conta Investimento
 Elabore uma classe TestaConta com um método main() que
permita criar instâncias das classes Conta, ContaCorrente,
ContaPoupanca e ContaInvestimento.
 Após isso invoque o método atualizar() para cada instância.
 Por fim, apresente (imprima) o saldo.
CONCEITOS AVANÇADOS DE OO
47/69
CONCEITOS AVANÇADOS DE OO
Polimorfismo
 O polimorfismo (poli = múltiplas; morfo = forma) é a
propriedade na qual um mesmo estímulo pode causar
respostas de comportamento diferentes para duas ou
mais classes.
 Se uma classe passa em mais de um teste da regra “é
um”, os objetos (instâncias) desta classe podem ser
considerados polimórficos
48/69
CONCEITOS AVANÇADOS DE OO
Polimorfismo
 No polimorfismo, o tipo da referência pode ser uma
superclasse com o tipo do objeto real.
 Quando você declarar uma variável de referência,
qualquer objeto que passar no teste É-UM quanto ao
tipo declarado para ela poderá ser atribuído a essa
referência.
 Em outras palavras, qualquer coisa que estender o
tipo declarado para a variável de referência poderá
ser atribuído a ela. Isso permitirá que você faça coisas
como criar vetores polimórficos,
49/69
CONCEITOS AVANÇADOS DE OO
Polimorfismo
Veículo ve = new Veículo("Toyota", "Corolla", "OXO1234")
No polimorfismo, o tipo da
referência pode ser uma
superclasse com o tipo do
objeto real.
Um objeto da classe pai
pode armazenar um objeto
de qualquer da suas classes
filhas
Veículo ve1 = new Onibus("Toyota", "Corolla", "OXO1234“, 6)
Veículo ve1 = new VeículoEsportivo("Toyota", "Corolla", "OXO1234“, 200)
Veículo ve1 = new Camionete("Toyota", "Corolla", "OXO1234“, 5000)
50/69
CONCEITOS AVANÇADOSDE OO
Superclasses Abstratas
Método a ser sobrescrito
51/69
CONCEITOS AVANÇADOS DE OO
Superclasses Abstratas
Chamada ao método toString da classe pai
Método a ser sobrescrito
52/69
CONCEITOS AVANÇADOS DE OO
Superclasses Abstratas
Chamada ao método
toString da classe pai
Método a ser sobrescrito
53/69
CONCEITOS AVANÇADOS DE OO
Superclasses Abstratas
Chamada ao método
toString da classe pai
Método a ser sobrescrito
54/69
CONCEITOS AVANÇADOS DE OO
Superclasses Abstratas
Polimorfismo
ve do tipoVeiculo instancia um Onibus
ve do tipoVeiculo instancia um VeiculoEsportivo
ve do tipoVeiculo instancia um Camionete
55/69
CONCEITOS AVANÇADOS DE OO
Superclasses Abstratas
 Ignoram detalhes das partes para focalizar a atenção
em um nível mais elevado de um problema.
 É uma técnica usada para lidar com o problema da
complexidade:
 Problemas são divididos em subproblemas até que os
novos problemas sejam suficientemente pequenos para
que possamos lidar com eles.
56/69
CONCEITOS AVANÇADOS DE OO
Superclasses Abstratas
 Há casos em que é útil definir classes para as quais o
programador nunca pretende instanciar um objeto
(Deitel, 2004)
 Essas classes são chamadas de classes abstratas
 Nenhum objeto de superclasse abstrata pode
ser instanciado
 O objetivo de uma classe abstrata é fornecer uma
superclasse apropriada da qual outras classes podem
herdar interface e/ou implementação (Deitel, 2004)
57/69
CONCEITOS AVANÇADOS DE OO
Superclasses Abstratas Sabemos como um
ser vivo tem que ser
alimentado??
carne ervas
Os métodos abstract tem que ser 
implementados nas classes filhas
Muito Genérica
Basta ter um método
ABSTRACT para que
a classe tenha que ser
ABSTRACT
abstract
abstract
fotossínteses
Muito Genérica
abstract
abstract
58/69
CONCEITOS AVANÇADOS DE OO
Superclasses Abstratas
 As classes em que os objetos podem ser instanciados
chamam-se classes concretas (são as classes que
foram vista até o momento na disciplina)
 Para declarar uma classe como abstrata utiliza-se a
palavra-chave abstract
 Também é possível declarar métodos abstratos
 Sempre que um método de uma superclasse abstrata
também é declarado como abstrato, esse método
deve ser obrigatoriamente sobrescrito nas
classes filhas
59/69
CONCEITOS AVANÇADOS DE OO
Exemplo
60/69
CONCEITOS AVANÇADOS DE OO
Exemplo
Nâo é 
implementado na 
classe abstract, mas 
nas classes filhas
Tem que ser
obrigatoriamente
sobrescrito nas classes
filhas.
61/69
CONCEITOS AVANÇADOS DE OO
Exemplo
62/69
CONCEITOS AVANÇADOS DE OO
Exemplo
63/69
CONCEITOS AVANÇADOS DE OO
Exemplo
64/69
CONCEITOS AVANÇADOS DE OO
Exemplo
variável 
da classe 
abstrata 
Ao invocar um método
por meio da variável
geral, o sistema irá
determinar o tipo do
objeto mencionado e
invocar o método da
subclasse respectiva.
Denominado de vinculação dinâmica de
método - a decisão sobre qual método
invocar é adiada até a hora da execução
65/69
CONCEITOS AVANÇADOS DE OO
Exercício 5
 Fazer um programa para calcular a área de um
polígono (Triângulo e retângulo).
O programa vai ter que conseguir armazenar um
vetor de N triângulos e retângulos e no final
apresentar a área e os dados de cada um.
 Faça o diagrama UML e depois implemente o codigo
66/69
CONCEITOS AVANÇADOS DE OO
Exercício 6
Numa biblioteca de mídia se tem documentos em
diferentes médios: Livros, DVDs (vídeos) e CDs (áudios).
Cada um dos documentos possui uma data de edição, titulo,
um preço e um atributo onde é especificado se o
documento esta disponível ou não. Por sua vez, os livros
possuem autor, os DVDs diretor do filme e os CDs o nome
do artista.
Quando os documentos foram emprestados e não são
devolvidos na data certa, existe uma multa. Nos livros a
multa é 5% do valor do livro. Nos DVDs a multa é 6% do
seu valor mais 5 reais. Nos CDs a multa é de 10% mais 2
reais.
67/69
CONCEITOS AVANÇADOS DE OO
Exercício 6
Para conseguir pegar um documento da biblioteca é preciso ser
sócio. Os dados que tem que ser registrados de cada sócio são:
nome, RG e um numero de sócio.
Cada sócio pode se emprestar até 3 documentos.
Faça um diagrama das classes em notação UML especificando a
relação existente entre as classes.
Faça um programa em Java das classes definidas no diagrama
UML
Crie um programa principal com 3 documentos de tipos
diferentes. Depois crie um objeto da classe sócio que pegue os 3
documentos criados. No final apresente na tela os dados do
sócio e as multas que terá que pagar pelos 3 documentos
emprestados.
68/69
Referências
 Slides professor Cristian Cechinel
 DEITEL, H.M. Java, como programar. Porto Alegre:
Bookman, 2003.
CONCEITOS AVANÇADOS DE OO
69/69
Unidade 3 
Concluída!!!
CONCEITOS AVANÇADOS DE OO

Continue navegando

Outros materiais