Вы находитесь на странице: 1из 7

APOO

Aula 1.2 Composio

Prof. Bruno Moreno


bruno.moreno@ifrn.edu.br
Composio
A composio (ou delegao) um mecanismo
de reuso da POO;
Com a composio, uma instncia de uma
classe existente utilizada como componente
de outra classe
Na prtica, uma classe o tipo do atributo de outra
classe;

2
Classe Data
Atributos:
dia, mes e ano;
Qual o tipo desses atributos?
Mtodos:
Data(dia, mes, ano)
Construtor da classe;
dataEhValida(dia, mes, ano)
Avalia se dia, mes e ano so valores que representam uma data
vlida;
toString()
Mtodo sobreposto da classe Object.

3
Composio
Data.java
publicclassData{
privateintdia;
privateintmes;
privateintano;

publicData(intd,intm,inta){
if(dataEhValida(d,m,a)){
dia=d; Este o mtodo
mes=m; construtor da classe
Data. O construtor o
ano=a;
responsvel pela
}else{
inicializao de objetos do
dia=0; tipo Data.
mes=0;
ano=0;
}
}

//(prximoslide)

4
Composio
Data.java
publicbooleandataEhValida(intdia,intmes,intano){
if(ano%4==0&&mes==2&&dia>0&&dia<30)
returntrue;
elseif((mes==1||mes==3||mes==5||mes==7||
mes==8||mes==10||mes==12)&&dia>0&&dia<32)
returntrue;
elseif((mes==4||mes==6||mes==9||mes==11)
&&dia>0&&dia<31)
returntrue;
else
returnfalse;
}

publicStringtoString(){ Mtodo toString da


returndia+"/"+mes+/+ano; classe Object
} sobrescrito.

}//fimdaclasseData

5
Composio
Aluno.java
publicclassAluno{
Uma instncia da classe String
privateStringnomeDoAluno;
privateDatadataDeNascimento; Uma instncia da classe Data
privateintnumDeMat; Ambos podem ser manipulados da
mesma forma que numDeMat
publicAluno(Stringn,Datad,intm){
nomeDoAluno=n;
dataDeNascimento=d;
numDeMat=m;
} Chamada implcita do mtodo
toString da classe Data
publicStringtoString(){
Stringresultado="";
resultado+=Matrcula:+numDeMat
+Nome:+nomeDoAluno+"\n";
resultado+="Nascimento:+dataDeNascimento+"\n";
returnresultado;
}
}//fimdaclasseAluno

6
Composio
ExecutaAluno.java
publicclassExecutaAluno{

publicstaticvoidmain(Stringargs[]){
Datanascimento=
newData((byte)18,(byte)12,(short)1984);

Alunobruno=newAluno(BrunoMoreno,
nascimento,1234567);
System.out.println(bruno);
}
}//fimdaclasseExecutaAluno

Вам также может понравиться