Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación Orientada
a Objetos
1
2
Relaciones entre clases
Conexión semántica entre clases
Permite que una clase conozca los atributos,
comportamientos y las relaciones de otras
clases
Se destacan
Composición
Asociación
Generalización o Herencia
3
Relaciones
4
Las Relaciones
Composición, Se conectan conceptualmente, es un
“todo/parte”, en la cual la clase representa una
cosa grande “el todo” que consta de elementos
más pequeños “las partes” que se denominan
como Agregación. Si se encuentra que una clase
trabaja con un objeto de otra clase se considera
asociación y no dependencia.
Asociación, relación (transitoria) de uso, que
declara que un elemento utiliza información y los
servicios de otro elemento pero no necesariamente
a la inversa.
Generalización o Herencia
5
Dependencia (Relaciones de Uso)
+ Estudiante
-cedula : long
-nombre : String
-apellido : String
-estado : char + TestEstudiante
+ setCedula (long) : void
+ setNombre (String) : void
+ setApellido (String) : void + main (String) : void
+ setCasado (boolean): void
+ activar ( ) : void
+ desactivar ( ) : void
+ isCasado ( ) : boolean
+ getCedula ( ) : long
+ getNombre ( ) : String TestEstudiante depende de
+ setApellido ( ) : String
+ getCasado ( ) : boolean Estudiante para poder existir
6
Generalización o Herencia
La herencia de clases,
representa una jerarquía de
abstracciones.
Es la relación entre un
elemento general
(superclase ó padre) y un
caso más concreto de ese
elemento (subclase ó hijo);
se conoce como relación “es
un”
La herencia puede ser
simple o múltiple. En Java
es simple, jerárquica.
7
SuperClase TRANSPORTE
SubClase
AUTOMOVIL MOTO AVION GLOBO
8
Herencia (cont)
9
… Herencia
Proceso mediante el cual una clase, y como consecuencia
su objeto adquiere las propiedades (no privadas) de otro.
Permite una clasificación jerárquica establecida mediante
superclases y subclases
12
… Ejercicio
SuperClase Animal
SubClase
Perro Gato Zorro Cocodrilo Serpiente
13
Herencia
Extiende la funcionalidad de las clases, sin hacer modificación ó
re-escritura
Caja
- alto:double
extends
- ancho:double
- largo:double
- volumen:double
+ Caja()
+ setAlto(double): void CajaSolida
+ setLargo(double): void - peso:double
+ setAncho(double): void
+ getAlto(): double + CajaSolida()
+ getLargo(): double + CajaSolida(double)
+ getAncho(): double + CajaSolida(double,double,
+ getVolumen(): double double,double)
+ calculoVolumen(): void + setPeso(double): void
14
Herencia - implementación
public class Caja { public class CajaSolida extends Caja {
Elabore un clase que lea para los “N” empleados los siguientes datos:
nombre, cédula, departamento a que pertenece, puesto que ocupa y
tipo de contrato ( 1 = Asalariados y 2 = contrato por hora). A los
contratados por hora se les conoce el salario básico por hora y el
número de horas trabajadas; y a los asalariados el salario mensual.
16
… Herencia
Analice el cálculo de sueldo de un Empleado
EmpleadoPorHoras EmpleadoAsalariado
nombreEmpleado nombreEmpleado
cedulaEmpleado cedulaEmpleado
dptoLabora dptoLabora
puestoEmpleado puestoEmpleado
horasTrabajadas sueldoBruto
valorHora valorDeducciones
sueldoBruto valorBonificaciones
valorSubsidio sueldoNeto
sueldoNeto
17
… Herencia
Forma de jerarquía de objetos, similar al
árbol genealógico.
Elementos comunes
De lo general a lo particular
Empleado
EmpleadoPorHoras EmpleadoAsalariado
18
Actividad
19
… Abstracción
+ Estudiante + Piloso
-cedula: long -nombreApellidoMax:String
-nombre:String -calificaciónMax:double
-apellido:String -acumuladoNota:double
-calificación:double -promedioCurso:double
+ Estudiante()
+ setCedula(long):void
+ setApellido(String):void
+ setNombre(String):void + Piloso()
+ getCedula():long + getNombreApellidoMax ( ):String
+ getNombreApellido():String + getCalificacionMax ( ):double
+ getCalificación():double + calcularAcumuladoNota( ):void
+ calcularPromedio( ):void
+ getPromedioCurso( ):double
+ TestCurso
20
… Implementación
public class Estudiante { public class Piloso extends Estudiante {
private String nombre;
private String apellido; private String nombreApellidoMax;
private long cedula; private double calificacionMax;
private double calificacion; private double promedioCurso;
public Estudiante (){ private int cantidadNotas;
this.cedula = 0; private double acumuladoNotas;
this.calificacion = 0.0;
} public Piloso(){
public void setNombre(String nombre){
this.nombre = nombre; }
} public String getNombreApellidoMax (){
public void setApellido(String apellido){ return(nombreApellidoMax);
this.apellido = apellido; }
}
public void setCedula(long cedula){ public double getCalificacionMax (){
this.cedula = cedula; return(calificacionMax);
} }
public void setCalificacion(double calificacion){
this.calificacion = calificacion; public int getPromedio (){
} return(promedioCurso);
public String getNombreApellido(){ }
return(nombre + " " + apellido);
} public void calcularAcumuladoNota (){
public long getCedula(){ acumuladoNotas += getCalificacion();
return(cedula); cantidadNotas ++;
} }
public double getCalificacion(){
return(calificacion); public void calcularPromedioCurso(){
} promedioCurso = acumuladoNotas / cantidadNotas;
} }
}
21
El Polimorfismo
22
Polimorfismo
La acción específica se determina a partir de
la naturaleza exacta de la situación
23
POLIMORFISMO
Sobrecarga de Métodos y constructores
(overloading):
24
Polimorfismo de Sobrecarga
25
Polimorfismo de Generalización
26
POLIMORFISMO
Sobre-escritura de Métodos:
+ FiguraGometrica
# calcularArea():void
+ Cuadrado + Circulo
+ calcularArea():void + calcularArea():void
27
Ejemplo
+ Estudiante
# validarRequisitos():boolean
+ PreGrado + PostGrado
+ validarRequisitos():boolean + validarRequisitos():boolean
28
… Apuntador super
Al definir constructores con parámetros, tanto en la subclase
como en la superclase. El apuntador super, permite que el
constructor de la subclase invoque, de manera explícita, el
constructor de la superclase
30
Actividad
Elaborar una clase que lea las cédulas,
nombres, apellidos y calificaciones de
“N” estudiantes de un curso. El sistema
debe determinar el nombre y apellido,
de la nota más alta y el de la nota mas
baja.
31
… Abstracción + Piloso
-cedula: long
-nombre: String
-Apellido:String
-calificación:double
+ Estudiante + Piloso()
-cedula: long + Piloso(long cedula, String nombre,
-nombre:String String apellido, double calificacion
-apellido:String + getNombre ( ):String
-calificación:double + getApellido ( ): String
+ getCalificacion ( ):double
# Estudiante( )
+ calcularCalificacion ( ):void
# Estudiante(long cedula,
String nombre, String apellido,
double calificacion) + NoPiloso
-cedula: long
# setCedula(long):void
-nombre: String
# setApellido(String):void
-Apellido:String
# setNombre(String):void
-calificación:double
# setCalificacion (double):void
# getCedula():long + NoPiloso()
# getNombre ():String + NoPiloso(long cedula, String nombre,
# getApellido():String String apellido, double calificacion
# getCalificación():double + getNombre ( ):String
+ getApellido ( ): String
+ getCalificacion ( ):double
+ calcularCalificacion ( ):void
32