Buscar

ProgramaçãoOrientadaObjetos(UVA)-(Agregação Particionamento)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

01/10/2018
1
Parte 7 – Agregação e Particionamento.
Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento
caugusto.sicsu@uva.br
Cursos de Ciência da Computação e
Engenharia da Computação
Classes e 
Objetos
Métodos e Atributos
Herança
Polimorfismo
Sobrescrita
Encapsulamento
Agregação
Particionamento
Métodos 
Construtores
Polimorfismo
Sobrecarga
Métodos
Setters e Getters
Classes Abstratas
Interfaces
Desenvolvimento
e Linguagem
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 2
01/10/2018
2
Agregação
• Uma classe também é um tipo definido pelo usuário.
• Pode-se usar um conjunto de classes para criar novas classes.
• Podemos então agregar diferentes classes formando uma nova
classe mais completa e com melhor controle de atualização e
manutenção.
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 3
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 4
Agregação X Particionamento
Agregação
É o mecanismo através do qual o ser humano constata que alguns
objetos ou conceitos, obtidos a partir de objetos dentro de uma
parcela do mundo real (mini-mundo ou domínio do problema),
podem ser justapostos formando objetos ou conceitos mais
complexos cujos componentes são os objetos ou conceitos iniciais.
Particionamento
É o inverso da agregação, onde uma classe pode ser dividida em
fragmentos de objetos que em um conjunto, formam um outro
objeto.
01/10/2018
3
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 5
Agregação X Particionamento
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 6
Agregação X Particionamento
CARROCERIA RODA VIDROS
AUTOMÓVEL
AGREGAÇÃO
01/10/2018
4
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 7
MECANISMOS BÁSICOS DE ABSTRAÇÃO 
(GENERALIZAÇÃO)
AUTOMÓVEL AVIÃO
COMPRI
MENTO
LAR
GURA
PESO TIPO DE
PARA-
CHOQUE
COMPRI
MENTO
LAR
GURA
PESO
TIPO DE
ASA
VEÍCULO
GENERALIZAÇÃO
PARTICIONAMENTO
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 8
MECANISMOS BÁSICOS DE ABSTRAÇÃO 
(ESPECIALIZAÇÃO)
AUTOMÓVEL AVIÃO
COMPRI
MENTO
LAR
GURA
PESO TIPO DE
PARA-
CHOQUE
COMPRI
MENTO
LAR
GURA
PESO
TIPO DE
ASA
VEÍCULO
ESPECIALIZAÇÃO
01/10/2018
5
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 9
MECANISMOS BÁSICOS DE ABSTRAÇÃO
AUTOMÓVEL AVIÃO
COMPRIMENTO
LARGURA
PESO
TIPO DE
PARA-
CHOQUE
TIPO DE
ASA
VEÍCULO
GENERALIZAÇÃO
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 10
MECANISMOS BÁSICOS DE ABSTRAÇÃO (AGREGAÇÃO)
CHASSIS MOTOR RODA
TIPO CHASSIS
MATERIAL CHASSIS
RESISTÊNCIA A CHOQUE CHASSIS
POTÊNCIA MOTOR
CONSUMO DE COMBUSTÍVEL MOTOR
DIÂMETRO RODA
TIPO PNEU RODA
DIÂMETRO TIPO PNEU
AUTOMÓVEL
POTÊNCIA CONSUMO DE
COMBUSTÍVEL
AGREGAÇÃO
TIPO MATERIAL RESISTÊNCIA A CHOQUE
01/10/2018
6
• Exemplo:
Classe : Motor
Atributos:
PotenciaMaxima : inteiro
TipoCombustivel : texto
PotenciaAtual : inteiro
Métodos:
- Setters e Getters para todos os atributos.
- cadastrar (todos os atributos) – recebe todos os atributos e
armazena.
- imprimir () – Exibe todos os dados do Motor.
- acelarar() – Aumenta a potência atual em incremento de 100
unidades.
- desacelarar() – Diminui a potência atual em decremento de 100
unidades.
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 11
public class Motor {
public String tipoCombustivel;
public int potenciaMaxima, potenciaAtual ;
public void acelerar(){
if(potenciaAtual < potenciaMaxima) {
potenciaAtual += 100;
}
}
public void desacelerar(){
if(potenciaAtual > 0) {
potenciaAtual -= 100;
}
}
...//demais métodos
} 
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 12
01/10/2018
7
Classe : Aviao
Atributos:
Prefixo : texto
CapacidaDoTanque : inteiro
NumeroPassageiros : inteiro
Preco : Real
DataRevisao : Texto
Motor1 : Motor
Motor2 : Motor
Motor3 : Motor
Motor4 : Motor
Métodos:
- Setters e Getters para todos os atributos.
- cadastrar (todos os atributos) – recebe todos os atributos do Avião e armazena
suas propriedades.
- imprimir () – Exibe todos os dados do Avião.
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 13
public class Aviao {
// Atributos da classe:
public String prefixo, dataRevisao;
public int capacidadeTanque, numeroPassageiros;
public double preco;
Motor motor1 = new Motor();
Motor motor2 = new Motor();
Motor motor3 = new Motor();
Motor motor4 = new Motor();
// Métodos da classe:
} 
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 14
01/10/2018
8
Em uma aplicação:
...
Aviao a1 = new Aviao();
a1.motor1.setPotenciaMaxima(1000);
a1.motor2.setPotenciaMaxima(1000);
a1.motor3.setPotenciaMaxima(1000);
a1.motor4.setPotenciaMaxima(1000);
a1.motor1.acelerar(); // motor1.potenciaAtual = 100
a1.motor2.acelerar(); // motor2.potenciaAtual = 100
a1.motor3.acelerar(); // motor3.potenciaAtual = 100
a1.motor4.acelerar(); // motor4.potenciaAtual = 100
a1.motor1.acelerar(); // motor1.potenciaAtual = 200
a1.motor2.desacelerar(); // motor2.potenciaAtual = 0
a1.motor3.acelerar(); // motor3.potenciaAtual = 200
a1.motor4.desacelerar(); // motor4.potenciaAtual = 0

01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 15
Pode-se aplicar a muitas outras situações, por exemplo, pode-se criar a classe
Endereco e uma outra classe, Cliente pode ter como atributos três diferentes
endereços: Comercial, Residencial, Entrega.
Cria-se então a classe Endereco
public class Endereco {
String tipoLogradouro, logradouro, cep;
public setCep(String c) {
cep = c;
}
... // demais atributos e métodos
}
Na classe Cliente:
public class Cliente{
String nome;
Endereco endComercial = new Endereco( );
Endereco endResidencial = new Endereco( );
Endereco endEntrega = new Endereco( );
}
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 16
01/10/2018
9
Na aplicação então, usamos:
Cliente cliente = New Cliente( );
cliente.endComercial.setCep(“22220-020”);
cliente.endResidencial.setCep(“22220-042”);
cliente.endEntrega.setCep(“22222-222”);
Assim, criamos uma vez a classe endereço e esta pode ser reutilizada
inúmeras vezes e em diferentes aplicações, pois, caso precisássemos
do endereço do dono do avião, bastaria acrescentar um atributo do
tipo Endereço à classe Avião, o mesmo para o endereço da
seguradora e assim, por diante.
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 17
Exercício 2 (Parte 7):
Crie uma superclasse que contenha os atributos e métodos comuns,
reformulando as classes apresentadas a seguir. É necessário criar
pelo menos 5 métodos construtores para cada classe. Crie uma
aplicação para testar as classes criadas, criando pelo menos três
objetos de cada tipo usando diferentes construtores para cada um.
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 18
01/10/2018
10
Classe : Aviao
Atributos:
Prefixo : Texto
CapacidadeTanque : inteiro
NumeroPassageiros : inteiro
Preco : real
DataRevisao : Texto
Motor1 : Motor
Motor2 : Motor
Métodos:
- Setters e Getters para todos os atributos.
- cadastrar (todos os atributos) – recebe dados de todos os atributos e armazena no objeto.
- imprimir () – Exibe todos os dados do Avião, usando o println().
- reajustarPreco(percentual : real) – Reajusta o preço do avião, alterando o valor anterior, de
acordo com o percentual passado como parâmetro.
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 19
Classe : Navio
Atributos:
Nome : Texto
CapacidadeTanque : inteiro
NumeroPassageiros : inteiro
NumeroTripulantes : inteiro
Preco : real
DataLancamento : Texto
Motor1 : Motor
Motor2 : Motor
Métodos:
- Setters e Getters para todos os atributos.
- cadastrar (todos os atributos) – recebe dados de todos os atributos e armazena no objeto.
- imprimir () – Exibe todos os dados do Navio, usando o println().
- passageirosPorTripulantes() – Retorna a proporção de passageiros por tripulantes do navio, de
acordo com as suas propriedades.01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 20
01/10/2018
11
Classe : Motor
Atributos:
PotenciaMaxima : inteiro
TipoComubustivel : Texto
PotenciaAtual : inteiro
Métodos:
- Setters e Getters para todos os atributos.
- cadastrar (todos os atributos) – recebe todos os atributos e armazena.
- imprimir () – Exibe todos os dados do Motor.
- acelarar() – Aumenta a potência em incremento de 100 unidades.
- desacelarar() – Diminui a potência em decremento de 100 unidades.
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 21
Exercício 2 (Parte 7):
• Baseado nas classes a seguir pede-se:
– Crie uma superclasse que seja capaz de atender às
necessidades das subclasses Geladeira e MicroOndas, com
pelo menos 8 métodos construtores;
– A Superclasse deve reaproveitar métodos das classes
agregadas;
– Criar as subclasses Geladeira e MicroOndas utilizando os
conceitos de herança a partir da superclasse criada e com o
mínimo 10 métodos construtores (cada);
– As subclasses Geladeira e MicroOndas devem reaproveitar
métodos herdados da Superclasse e das classes agregadas;
– Cada Subclasse deverá reaproveitar no mínimo 5 métodos
construtores da superclasse;
– Aplique as regras da boa prática de programação em java.
01/10/2018 Prof. Dr. Eng. Carlos A. Sicsú A. do Nascimento 22
01/10/2018
12
Classes Atributos Métodos
Geladeira
Marca: Texto
Modelo: Texto
Volume: inteiro
Preço: real
Temperatura Mínima: real
Temperatura Máxima: real
Porta1 : Porta
Porta2: Porta
. Setters para todos os atributos
. Getters para todos os atributos
. Cadastrar (...) - Todos os atributos do objeto
. Imprimir ( ) - Exibir todos os atributos do objeto
. EntradaDados( ) – Efetua a entrada de dados via teclado.
Micro
Ondas
Marca: Texto
Modelo: Texto
Volume: inteiro
Preço: real
Potência Mínima: inteiro
Potência Máxima: inteiro
Porta1 : Porta
. Setters para todos os atributos
. Getters para todos os atributos
. Cadastrar (...) - Todos os atributos do objeto
. Imprimir ( ) - Exibir todos os atributos do objeto
. EntradaDados( ) – Efetua a entrada de dados via teclado.
Porta
Comprimento: real
Largura: real
Possui Vidro: Lógico
. Setters para todos os atributos
. Getters para todos os atributos
. Cadastrar (...) - Todos os atributos do objeto
. Imprimir ( ) - Exibir todos os atributos do objeto
. EntradaDados( ) – Efetua a entrada de dados via teclado.
01/10/2018 Prof. Dr. Eng. Carlos A. Sicsú A. do Nascimento 23
Fim da Parte VII
01/10/2018 Prof. Dr. Engº Carlos A. Sicsú A. do Nascimento 24

Continue navegando

Outros materiais