A Analise de Projetos
Por: Caroline_Testoni • 15/3/2017 • Trabalho acadêmico • 1.191 Palavras (5 Páginas) • 563 Visualizações
Considere o código a seguir que é um programa para calcular e imprimir o valor devido por um cliente em uma vídeo locadora. O programa recebe como entrada quais filmes o cliente alugou e por quanto tempo. Ele então calcula o valor devido, que depende de quanto tempo o filme foi alugado, e identifica o tipo do filme. Há três tipos de filmes: normal, lançamento e infantil. Além de calcular os custos, o programa também calcula os pontos do locador freqüente, que variam se o filme é um lançamento.
Você é capaz de identificar problemas com relação aos princípios de um bom projeto orientado a objetos? Faça uma análise e procure apontar estes problemas. Sugestão: Aplique uma engenharia reversa (você sabe o que é engenharia reversa?) e faça um diagrama de classes e o diagrama de sequência para o método Extrato da classe Cliente.
Aponte os problemas encontrados a partir desta análise.
public class Fita {
public enum Tipo {
normal, lancamento, infantil
};
private String título;
private Tipo códigoDePreço;
public Fita(String título, Tipo códigoDePreço) {
this.título = título;
this.códigoDePreço = códigoDePreço;
}
public String getTítulo() {
return título;
}
public Tipo getCódigoDePreço() {
return códigoDePreço;
}
public void setCódigoDePreço(Tipo códigoDePreço) {
this.códigoDePreço = códigoDePreço;
}
}
-------------------------------------------------------------------------------------------------------------------------------------
public class Aluguel {
private Fita fita;
private int diasAlugada;
public Aluguel(Fita fita, int diasAlugada) {
this.fita = fita;
this.diasAlugada = diasAlugada;
}
public Fita getFita() {
return fita;
}
public int getDiasAlugada() {
return diasAlugada;
}
}
import java.util.ArrayList;
import java.util.Collection;
public class Cliente {
private String nome;
private Collection
public Cliente(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void adicionaAluguel(Aluguel aluguel) {
fitasAlugadas.add(aluguel);
}
public String extrato() {
final String fimDeLinha = System.getProperty("line.separator");
double valorTotal = 0.0;
int pontosDeAlugadorFrequente = 0;
String resultado = "Registro de Alugueis de " + getNome() + fimDeLinha;
for (Aluguel f : fitasAlugadas) {
double valorCorrente = 0.0;
Aluguel cada = f;
// determina valores para cada linha
// switch com enum
switch (cada.getFita().getCódigoDePreço()) {
case normal:
valorCorrente += 2;
if (cada.getDiasAlugada() > 2) {
valorCorrente += (cada.getDiasAlugada() - 2) * 1.5;
...