Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 4
Tem
Programacin Basada
en Objetos
IES Trassierra
Dpto. Informtica
ndice de contenidos
Introduccin.
Lenguaje de modelado unificado: UML.
Programacin basada en objetos:
Creacin de clases propias.
PROGRAMACIN
Instanciacin de objetos.
Miembros de clase estticos.
Paquetes (packages) de clases.
PROGRAMACIN
Introduccin
PROGRAMACIN
Introduccin 2
En orientacin a objetos, cada concepto o entidad
del mundo real se traduce, a nivel de cdigo, en una
clase.
PROGRAMACIN
Introduccin 3
PROGRAMACIN
y
la
Introduccin 4
PROGRAMACIN
Camin real
Objeto 1
Marca: Pegaso
Modelo: Ultima
Matrcula: SE-1089-BD
Velocidad: 20
Peso_carga: 8000
Objeto 2
Objeto 3
Marca: Renault
Modelo: Grand
Matrcula: 8990BDA
Velocidad: 10
Peso_carga: 10000
Marca: Ford
Modelo: Plymouth
Matrcula: M-2338-XM
Velocidad: 15
Peso_carga: 12000
Introduccin 5
El concepto de clase es sinnimo al de TAD o Tipo
Abstracto de Dato.
PROGRAMACIN
Introduccin 6
PROGRAMACIN
PROGRAMACIN
PROGRAMACIN
PROGRAMACIN
fundamentalmente
en
los
Clase abreviada
PROGRAMACIN
UML: Asociaciones 1
Las clases se pueden relacionar mediante
asociaciones, las cuales se representan mediante
lneas que las unen.
PROGRAMACIN
UML: Asociaciones 2
Las asociaciones pueden restringidas mediante la
multiplicidad, que limita el nmero de instancias de
una clase que pueden tener esa asociacin con una
instancia de la otra clase.
PROGRAMACIN
UML: Asociaciones 2
PROGRAMACIN
UML: Asociaciones 4
PROGRAMACIN
UML: Agregacin
PROGRAMACIN
UML: Composicin
La composicin es un tipo especial de agregacin, en
la que el todo "posee" a las partes.
PROGRAMACIN
UML: Dependencias
Se dice que se produce una relacin de depencia
entre dos clases si una de ellas utiliza a la otra.
PROGRAMACIN
PROGRAMACIN
relaciones
Creacin de clases
PROGRAMACIN
Creacin de clases 2
publicclassFecha{
privateintdia;//131enfuncindelMes
privateintmes;//112
privateintanio;//cualquierao
publicFecha(intdia_i,intmes_i,intanio_i){
// constructor:LlamaalmtodomodificadorsetFecha
setFecha(dia_i,mes_i,anio_i);
}//findelconstructordeFecha
PROGRAMACIN
publicintgetAnio(){
returnanio;
}
privateintcomprobarMes(intmes){
//mtodoutilitarioparaconfirmarelvalorapropiadodelMes
if(mes>0&&mes<=12)//validarMes
returnmes;
else{//Mesesinvlidoseestablecea1
return1;
}
}//findelmtodocomprobarMes
privateintcomprobarDia(intdia){
//mtodoparaconfirmarvalorapropiadodeDia,conbaseenMesyAnio
intdias_por_mes[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//comprobarsielDiaestdentrodelrangodelMes
if(dia>0&&dia<=dias_po_mes[mes])
returndia;
//comprobarsiesaobisiesto
if(mes==2&&dia==29&&(anio%400==0||
(anio%4==0&&anio%100!=0)))
returndia;
//Eldanoesvlidoyloponemosa1
return1;
}//findelmtodocomprobarDia
publicStringcadenaFecha(){
//devolverunStringdelaformada/mes/ao
returndia+"/"+mes+"/"+anio;
}//findelmtodocadenaFecha
publicvoidsetFecha(intdia_i,intmes_i,intanio_i){
//llamaacomprobarMesycomprobarDiaparaconfirmarelvalorapropiadodeMesyDia
mes=comprobarMes(mes_i);//validarMes
anio=anio_i;
dia=comprobarDia(dia_i);//validarDia
}
}
Creacin de clases 3
Detrs de la palabra clave class escribimos el
nombre de la clase y a continuacin entre llaves los
atributos y mtodos.
PROGRAMACIN
Creacin de clases 4
PROGRAMACIN
Creacin de clases 5
PROGRAMACIN
Referencias a objetos
PROGRAMACIN
Referencias a objetos e
instancias
PROGRAMACIN
Acceso a miembros
Los modificadores public y private controlan el
acceso de los atributos y mtodos de una clase.
PROGRAMACIN
Acceso a miembros 2
PROGRAMACIN
Acceso a miembros 3
La referencia a objeto podr ser la palabra clave
this o una variable referencial creada al efecto.
El formato de este tipo de acceso
referenciaAobjeto.identificadorMiembro.
sera
PROGRAMACIN
Ejemplo: Usando la clase Fecha definida anteriormente, el siguiente programa crea una
instanciadelamismayaccedealosmiembrospblicosdelobjetocreado,
publicclassPruebaFecha{
publicstaticvoidmain(String[]args){
Stringsalida;//Cadenaquecontendrlasalidadelprograma.
//Creamosunavariabledereferenciaafechaylaigualamos
//aunobjetoFechaquecreamosalefecto.
Fechanacimiento=newFecha(10,12,1976);
//AadimosalacadenadesalidalafechainvocandoelmtodopblicocadenaFecha()
salida="Lafechadenacimientoes:"+nacimiento.cadenaFecha()+"\n";
//Cambiamoslafechacontenidamediantelallamadaalmtodo
//modificadorsetFecha(...)
nacimiento.setFecha(23,5,1989);
//AadimosalacadenadesalidaelcontenidomodificadodelobjetodetipoFecha.
salida+="Lanuevafechaes:"+nacimiento.cadenaFecha()+"\n";
//Mostramoslacadenadesalidamedianteunaventanagrfica
JOptionPane.showMessageDialog(null,salida,"Ejemplodeaccesoamiembrosdeobjetos",
JoptionPane.WARNING_MESSAGE);
//Lasiguienteinstruccinprovocaraunerror,yaqueseintentaaccederaun
//miembroprivadodelobjeto.
nacimiento.dia=12;//Errordeaccesoaunmiembroprivadodelobjeto
}
}
Mtodos constructores
PROGRAMACIN
Mtodos constructores 2
PROGRAMACIN
Sobrecarga de constructores
PROGRAMACIN
Sobrecarga de constructores 2
PROGRAMACIN
Ejemplo:
UsandolaclaseFechadefinidaanteriormente,sobrecargaremoslosmtodos
constructorescreando,juntoalconstructorcontresargumentosoriginal,
tres versiones adicionales del mismo: una sin argumentos, otra con un
argumentoyotramscondosargumentos.
Estos nuevos constructores sobrecargados llaman al constructor de tres
argumentosusandolareferenciathisalaqueselepasan3parmetros.
publicFecha(intdia_i,intmes_i,intanio_i){
// constructor:LlamaalmtodomodificadorsetFecha
setFecha(dia_i,mes_i,anio_i);
}//findelconstructordeFechacontresparmetros
publicFecha(){
//Constructorsinargumentos
this(1,1,2005);//Sellamaalconstructorcon3argumentos
}
publicFecha(intdia_i){
//Constructoralqueselepasasloelda
this(dia_i,1,2005);//Sellamaalconstructorcon3argumentos
}
publicFecha(intdia_i,intmes_i){
//Constructoralqueselepasaeldayelmes
this(dia_i,mes_i,2005);//Sellamaalconstructorcon3argumentos
}
Asignacin y comparacin
PROGRAMACIN
Copia de objetos
PROGRAMACIN
PROGRAMACIN
publicObjectclone(){
//Mtodoquerealizaunacopiadelobjetoactual.
returnnewFecha(this.dia,this.mes,this.anio);
}
ElsiguienteprogramautilizalasnuevasfuncionalidadesaadidasalaclaseFecha,creando
unacopiadeunobjetoycomparandoelmismoconeloriginal
publicclassPruebaFecha{
publicstaticvoidmain(String[]args){
Stringsalida;//Cadenaquecontendrlasalidadelprograma.
//Creamosunavariabledereferenciaafechaylaigualamos
//aunobjetoFechaquecreamosalefecto.
Fechacopia,nacimiento=newFecha(10,12,1976);
//AadimosalacadenadesalidalafechainvocandoelmtodopblicocadenaFecha()
salida="Lafechadenacimientoes:"+nacimiento.cadenaFecha()+"\n";
//Cambiamoslafechacontenidamediantelallamadaalmtodo
//modificadorsetFecha(...)
nacimiento.setFecha(23,5,1989);
//AadimosalacadenadesalidaelcontenidomodificadodelobjetodetipoFecha.
salida+="Lanuevafechaes:"+Nacimiento.cadenaFecha()+"\n";
//ClonamoselobjetoreferenciadoporNacimientoenCopia
copia=(Fecha)nacimiento.clone();
//AadimosalacadenadesalidaelcontenidodeCopiayelresultadodelallamadaaequals
Salida+="Lafechaclonadaes:"+copia.cadenaFecha()+"\n";
Salida+="Salidadelmtodoequals:"+copia.equals(nacimiento);
//Mostramoslacadenadesalidamedianteunaventanagrfica
JOptionPane.showMessageDialog(null,salida,"Ejemplodeaccesoamiembrosdeobjetos",
JOptionPane.WARNING_MESSAGE);
}
}
Destruccin de objetos
PROGRAMACIN
Destruccin de objetos 2
PROGRAMACIN
PROGRAMACIN
PROGRAMACIN
PROGRAMACIN
PROGRAMACIN
Paquetes de clases
PROGRAMACIN
Paquetes de clases 2
Si para una clase no se declara un paquete se
supone que pertenece al paquete por defecto, que
se compone de todas las clase se que encuentren en
el directorio raz de la aplicacin.
PROGRAMACIN
Formatodedeclaracindepaqueteparaunaclase:
packagemiempresa[.proyecto[.subproyecto[...]]];
Se creara en el directorio raz de nuestra aplicacin una estructura de
directoriosdelaforma./miempresa/proyecto/subproyecto...
Las clases de ese paquete se almacenaran en el directorio final de la
jerarquadada.
Paquetes de clases 3
No es necesario importar el paquete java.lang ya
que est disponible siempre.
PROGRAMACIN
Paquetes de clases 4
Una vez que una clase ha sido asignada a un paquete
y compilada, la misma puede ser importada en otros
proyectos.
PROGRAMACIN