-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQuartoLuxo.java
More file actions
84 lines (72 loc) · 3.02 KB
/
QuartoLuxo.java
File metadata and controls
84 lines (72 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// * Classe QuartoLuxo - Demonstra:
// * 1. HERANÇA: Implementação concreta da classe abstrata Quarto
// * 2. ESPECIALIZAÇÃO: Adiciona atributos e comportamentos específicos para quartos de luxo
// * 3. POLIMORFISMO DE SOBRESCRITA: Implementa getDescricao() de forma específica para este tipo
// * 4. ENCAPSULAMENTO: Atributos privados com getters/setters controlando acesso
// * 5. CONSTRUTORES ENCADEADOS: Usa super() para inicializar atributos da superclasse
// * 6. SOBRESCRITA: Implementa toString() com representação textual específica deste tipo
public class QuartoLuxo extends Quarto {
private String tipoCama;
private boolean possuiJacuzzi;
private boolean incluiCafeDaManha;
private boolean possuiVaranda;
/**
* Construtor que inicializa todos os atributos e chama o construtor da superclasse
* Demonstra o reuso de código através do uso de super()
*/
public QuartoLuxo(int numero, int capacidade, double precoPorNoite, String tipoCama,
boolean possuiJacuzzi, boolean incluiCafeDaManha, boolean possuiVaranda) {
super(numero, capacidade, precoPorNoite);
this.tipoCama = tipoCama;
this.possuiJacuzzi = possuiJacuzzi;
this.incluiCafeDaManha = incluiCafeDaManha;
this.possuiVaranda = possuiVaranda;
}
// Métodos de acesso - exemplos de encapsulamento
public String getTipoCama() {
return tipoCama;
}
public void setTipoCama(String tipoCama) {
this.tipoCama = tipoCama;
}
public boolean isPossuiJacuzzi() {
return possuiJacuzzi;
}
public void setPossuiJacuzzi(boolean possuiJacuzzi) {
this.possuiJacuzzi = possuiJacuzzi;
}
public boolean isIncluiCafeDaManha() {
return incluiCafeDaManha;
}
public void setIncluiCafeDaManha(boolean incluiCafeDaManha) {
this.incluiCafeDaManha = incluiCafeDaManha;
}
public boolean isPossuiVaranda() {
return possuiVaranda;
}
public void setPossuiVaranda(boolean possuiVaranda) {
this.possuiVaranda = possuiVaranda;
}
/**
* Implementação do método abstrato da superclasse - POLIMORFISMO
* Cada tipo de quarto pode fornecer sua própria descrição
*/
@Override
public String getDescricao() {
return "Quarto Luxo " + numero + " - " + capacidade + " pessoa(s), Cama: " + tipoCama;
}
/**
* Sobrescrita do método toString() da classe Object - POLIMORFISMO
* Fornece uma representação textual mais detalhada específica para quartos de luxo
*/
@Override
public String toString() {
return "Quarto Luxo #" + numero +
"\nCapacidade: " + capacidade +
"\nTipo de Cama: " + tipoCama +
"\nJacuzzi: " + (possuiJacuzzi ? "Sim" : "Não") +
"\nCafé da Manhã: " + (incluiCafeDaManha ? "Sim" : "Não") +
"\nVaranda: " + (possuiVaranda ? "Sim" : "Não") +
"\nPreço por Noite: R$" + String.format("%.2f", precoPorNoite);
}
}