You are on page 1of 5

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Facultad de Ingeniería de Sistemas e Informática


EAP. Ingeniería de Sistemas
Curso: Algorítmica II
Prof. Robert Espinoza

Relaciones entre clases


I. OBJETIVOS
El presente laboratorio tiene por objetivos:
 Relaciones entre objetos
o Dependencia o de uso
o Asociación
o Agregación
o Composición

II. RESUMEN
En esta práctica usted debe implementar programas Java aplicando las relaciones entre objetos.

III. IMPLEMENTACION DE CLASES JAVA

Para cada uno de los ejemplos: digite el programa, compile, ejecute y los resultados. Comente los el código de acuerdo
a los objetivos planteados. Construya los diagramas de clases y sus relaciones de acuerdo a la implementación. Toda
implementación debe basarse en los conceptos de la orientación a objetos.

1. La Dependencia o relación de uso, una clase A usa una clase B cuando no contiene atributos de la clase B. Por
ejemplo cuando se utiliza algunas funciones de la clase Math
2. El siguiente diagrama de Asociación:
La asociación podríamos definirla como dos objetos que se unen para trabajar juntos y alcanzar una meta, ambos
objetos son independientes y podríamos validarla con la frase ”usa un”. Por ejemplo: el profesor usa
computadora; el alumno se matricula en un curso; la facultad implementa cursos

8..40 * 0..5 1
Alumno Curso Fisi
Se matricula implementa

public class Alumno{ public class Curso{ public class Facultad{


… … …
Curso cur[ ]; Alumno alu[ ]; Curso cur[ ];
… Facultad fac; …
public void adicCurso( … public void adicCurso(
Curso x){ public void adicAlu( Curso c){
} Alumno x){ }
}

} }
}
3. El siguiente diagrama de Composición y Agregación. (el todo y sus partes)
 En agregación es un tipo de relación sencilla (simple) “tiene un, está conformada por ”, “es parte de” y se
implementa como la asociación. Por ejemplo, un equipo y sus miembros
 La composición es un tipo de relación más dependiente (fuerte), un objeto más complejo está conformado por
objetos simples (o pequeños). Una instancia parte está relacionada, como máximo, con una instancia todo en un
determinado momento, de forma que cuando se elimina un objeto todo es eliminado también son eliminados sus
objetos parte. Por ejemplo: la notebook tiene teclado; una persona tiene nombre; el auto tiene llantas.
 En el caso de las manecillas del reloj: el reloj tiene manecillas, el reloj usa manecillas para dar la hora.
¿Asociacion o Composicion?

Nombre Persona Dirección

1
public class Nombre{ public class Persona{ public class Direccion{
… … …
Nombre nom = new Nombre();
… Direccion dir; …
public Nombre( ){ … public Direccion( ){
} public Persona( …){ }
}
} }
}

4. Una fábrica compuesta de muchos empleados requiere una aplicación OO con operaciones como mostrar, eliminar
y determinar el monto total de planilla de sueldos.

TFabrica Fabrica Empleado

Véase el programa y mejore creando las operaciones buscar empleado, eliminar un determina empleado.. Crear las
clases Ventas y Clientes y relaciona con las demás clases. Complete los diagramas con diagramas de diseño

public class Empleado {


//atributos
private String nombre;
private double sueldo;
//Constructor
public Empleado (String n, double s ) {
nombre = n;
sueldo = s;
}
public Empleado ( ) {
this("NN"); // Otro uso de this investigar
}
public Empleado ( String n) {
this(n, 0);
}
public Empleado ( double s) {
this("NN", s);
}

public String getNombre() {


return nombre;
}
public double getSueldo() {
return sueldo;
}
}

public class Fabrica {


//datos de la fabrica
private Empleado empleados[]; //la fabrica "TIENE" empleados
private int nEmp; // # de empleados

public Fabrica(int d){


empleados = new Empleado[d];
nEmp=d;
}
public Fabrica(){
//constructor por default
}

2
public void setNEmp(int n){
nEmp=n;
}

public int getNEmp(){


return empleados.length;
}

public void leerDatos(int limite){


String n;
double s;
Scanner in = new Scanner(System.in);
System.out.println("Empleado ["+(limite+1)+"]: ");
System.out.print("Nombre ---> ");
n = in.next();
System.out.print("Sueldo ---> ");
s = in.nextDouble();
empleados[limite]= new Empleado(n, s);
}

public void mostrarEmp(int limite){


encabezado1();
if(limite>0){
for(int i=0;i<limite;i++){
System.out.println((i+1)+"\t"+empleados[i].getNombre()+
"\t\t"+empleados[i].getSueldo());
}
raya1();
}
else
System.out.println("No Hay Registros Disponibles!...\n");
}

public void totalSueldo(int limite){


encabezado1();
double tSueldo=0;
if(limite>0){
for(int i=0;i<limite;i++){
System.out.println((i+1)+"\t"+empleados[i].getNombre()+
"\t\t"+empleados[i].getSueldo());
tSueldo=tSueldo+empleados[i].getSueldo();
}
raya1();
System.out.println("Nomina total a Pagar:"+tSueldo+"");
raya1();
}
else
System.out.println("No Hay Registros Disponibles!...\n");
}

public void encabezado1(){


System.out.println("\t\tPLANILLA DE SUELDOS \n\n");
System.out.println("===========================================");
System.out.println("No.\t APELLIDOS, Nombres\t\t\tSueldo");
System.out.println("-------------------------------------------");
}

public void raya1(){


System.out.println("-------------------------------------------"); }
}

3
5. Implementar las clases Fecha, PersonaX y TPersonaX, la clase Persona está asociada a las clases String y Fecha y
la clase TPersonaX muestra un ejemplo de la relación de uso de la clase PersonaX

public class Fecha {


private int dd;
private int mm;
private int aaaa;

public Fecha() {
dd = 1;
mm = 1;
aaaa = 1997;
}

public Fecha(int dia, int mes, int anio) {


dd=dia;
mm=mes;
aaaa=anio;
}

public String toString() {


return dd + "/" + mm + "/" + aaaa;
}
}

public class PersonaX {


String nombre;
Fecha fNac;

public PersonaX() {
}

public void setDatos(String nombre, Fecha f) {


this.nombre = nombre;
fNac = f;
}

public String toString() {


return nombre + " nacido el dia " + fNac.toString();
}
}

public class TPersonaX {


public static void main(String[] args) {
PersonaX p = new PersonaX();
Fecha n=new Fecha(5,9,1946);
p.setDatos("Freddy Mercury", n);
System.out.println(p.nombre+" "+"nacio el "+n.toString());
}
}

6. Analice el siguiente código lista y luego construya el diagrama de clase, sus relaciones e implemente todas las
operaciones básicas

public class Nodo {


private String valor;
private Nodo siguiente;

public Nodo(String cadena) {


valor = cadena;
siguiente = null;
}

4
public String darValor() {
return (valor);
}

public Nodo darSiguiente() {


return (siguiente);
}

public void insertarAContinuacion(Nodo siguienteNodo){


siguiente = siguienteNodo;
}
}

public class Lista {


private Nodo cabeza;

public Lista() {
cabeza = null;
}

public void incluir(String nValor) {


Nodo aux = new Nodo(nValor);
if (cabeza == null) {
cabeza = aux;
}
else {
Nodo aux2;
aux2=cabeza;
while(aux2.darSiguiente() != null) {
aux2 = aux2.darSiguiente();
}
aux2.insertarAContinuacion(aux);
}
}

public void imprimir() {


if(cabeza != null) {
Nodo aux3 = cabeza;
while(aux3 != null) {
System.out.println(aux3.darValor());
aux3 = aux3.darSiguiente();
}
}
}
}

7. Trabajo domiciliario: Implemente una aplicación de la realidad donde se muestre todas relaciones entre objetos. La
investigación debe plantear el enunciado de problema. La solución: debe construir el diagrama de clase haciendo
una breve explicación de las relaciones y luego la implementación. (debe contar con datos inicializados para la
prueba).

You might also like