Mais conteúdo relacionado
Mais de Ludimila Monjardim Casagrande (20)
POO - 08 - Prática de Encapsulamento
- 1. Programação Orientada a Objetos
Prática de Implementação
Encapsulamento e Modificadores de Acesso
Ludimila Monjardim Casagrande
2012
- 2. Exercício
public class Data {
public int dia;
public int mes; Atributos declarados como
public int ano; públicos
public Data () {
}
public Data (int dia, int mes, int ano) { Falha nos construtores!
this.dia = dia; Ambos permitem a criação de
this.mes = mes; datas inválidas.
this.ano = ano;
}
public String toString() {
String data = dia + "/" + mes + "/" + ano;
return data;
}
}
Aula Prática ©2012 Ludimila Monjardim Casagrande 2
- 3. Exercício
public class Principal {
public static void main (String[] args) {
Data d = new Data();
d.dia = 40; Como os atributos são públicos, eles
d.mes = 40; podem ser acessados e alterados
d.ano = -40; diretamente em outra classe
System.out.println(d);
}
}
Resultado: 40/40/-40 Não é uma data válida!
Aula Prática ©2012 Ludimila Monjardim Casagrande 3
- 4. Exercício
public class Data {
private int dia;
private int mes;
private int ano; public void setDia (int dia) {
if(dia >= 1 && dia <= 31) {
this.dia = dia;
public Data () {
}
this.dia = 1;
}
this.mes = 1;
this.ano = 1800; public void setMes (int mes) {
} if(mes >= 1 && mes <= 12) {
public Data (int d, int m, int a) { this.mes = mes;
this(); }
if((d >= 1 && d <= 31) && }
(m >= 1 && m <= 12) &&
public void setAno (int ano) {
(a >= 1800 && a <= 2100)) { if(ano >= 1800 && ano <= 2100) {
this.dia = d; this.ano = ano;
this.mes = m; }
this.ano = a; }
} …
} }
…
Aula Prática ©2012 Ludimila Monjardim Casagrande 4
- 5. Exercício
public class Principal {
public static void main (String[] args) {
Data d = new Data();
d.setDia(40);
d.setMes(40);
d.setAno(-40);
System.out.println(d);
}
}
Resultado: 1/1/1800 Tentativas de alterações inválidas
não são aceitas.
Aula Prática ©2012 Ludimila Monjardim Casagrande 5
- 6. Solução Alternativa
public class Data {
private int dia = 1; Definição de
private int mes = 1;
valores default public void setDia (int dia) {
private int ano = 1800;
if(dia >= 1 && dia <= 31) {
this.dia = dia;
public Data () {
}
}
}
public Data (int d, int m, int a) { public void setMes (int mes) {
if((d >= 1 && d <= 31) && if(mes >= 1 && mes <= 12) {
(m >= 1 && m <= 12) && this.mes = mes;
}
(a >= 1800 && a <= 2100)) {
}
this.dia = d;
this.mes = m; public void setAno (int ano) {
this.ano = a; if(ano >= 1800 && ano <= 2100) {
} this.ano = ano;
} }
…
}
…
}
Aula Prática ©2012 Ludimila Monjardim Casagrande 6
- 7. Exercício
Implemente as classes Hora e Data (cada uma em um
arquivo separado, porém no mesmo projeto).
Crie duas pastas, chamadas hora e data, ambas na raiz
(src) e coloque as respectivas classes nas pastas.
Declare as packages das classes corretamente.
Implemente uma classe Principal com o método main e
salve-a na raiz do projeto.
Na classe Principal crie e altere objetos das classes
Hora e Data, explorando o uso dos vários construtores
disponíveis.
A cada alteração do objeto, imprima-o na tela e observe
os resultados.
Aula Prática ©2012 Ludimila Monjardim Casagrande 7
- 8. Atenção
Ao fazer seu exercício, explore o uso das
packages criando novas packages, movendo as
classes de lugar e observando os efeitos
provocados.
Explore também o uso dos diferentes
modificadores de acesso nas classes Hora e
Data e observe os efeitos colaterais na classe
Principal.
Não espere a professora pedir, aprimore você
mesmo o seu estudo.
Aula Prática ©2012 Ludimila Monjardim Casagrande 8