Está en la página 1de 6

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Facultad de Ingeniera de Sistemas e Informtica


EAP. Ingeniera de Sistemas
Curso: Algortmica II
Prof. G. A Salinas A.

Relaciones entre clases


I. OBJETIVOS
El presente laboratorio tiene por objetivos:
Relaciones entre objetos
o Dependencia o de uso
o Asociacin
o Agregacin
o Composicin
Relaciones entre clases (se ver en la siguiente clase)
o
II. RESUMEN
En esta prctica 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 cdigo de acuerdo a los objetivos planteados. Construya los diagramas
de clases y sus relaciones de acuerdo a la implementacin. Toda implementacin debe
basarse en los conceptos de la orientacin a objetos.

1. La Dependencia o relacin 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 Asociacin:
La asociacin podramos definirla como dos objetos que se unen para trabajar
juntos y alcanzar una meta, ambos objetos son independientes y podramos
validarla con la frase usa un. Por ejmplo: el profesor usa computadora; el
alumno se matricula en un curso; la facultad apertura cursos
8..40 * 0..5 1
Alumno Curso Fisi
Se matricula Apertura

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 Composicin y Agregacin. (el todo y sus partes)
En agregacin es un tipo de relacin sencilla (simple) tiene un, est
conformada por , es parte dey se implementa como la asociacin.Por
ejemplo, Un equipo y sus miembros

1
La composicin es un tipo de relacin ms dependiente (fuerte), un objeto ms
complejo est conformado por objetos simples (o pequeos) podemos validarla
con la frase tiene un, est conformada por. Una instancia parte est
relacionada, como mximo, con una instancia todo en un determinado momento,
de forma que cuando se elimina un objeto todo es eliminado tambin 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 Direccin

public class Nombre{ public class Persona{ public class Direccion{



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

4. Una fabrica compuesta de muchos empleados requiere una aplicacin OO con


operaciones como mostrar, eliminar y determinar el monto total de planilla de
sueldos.

TFabrica Fabrica Empleado

Vase el programa y mejore creando las operaciones buscar empleado, eliminar un


determina empleado.. Crear las clases Ventas y Clientes y relaciona con las dems
clases. Complete los diagramas con diagramas de diseo
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);

2
}

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
this(5);
}
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();
}

3
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("-------------------------------------------");
}
}
5. Implementar las clases Fecha, PersonaX y TPersonaX y debera deducir que la clase Persona es
una agregacin de las clases String y Fecha y la clase TPersonaX muestra un ejemplo de la
relacin 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);

4
System.out.println(p.nombre+" "+"nacio el "+n.toString());
}
}

6. Analice el siguiente cdigo lista y luego construya el diagrama de clase, sus relaciones e
implemente todas las operaciones bsicas
public class Nodo {
private String valor;
private Nodo siguiente;

public Nodo(String cadena) {


valor = cadena;
siguiente = null;
}
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 aplicacin de la realidad donde se muestre todas


relaciones entre objetos. La investigacin debe plantear el enunciado de problema. La solucin:

5
debe construir el diagrama de clase haciendo una breve explicacin de las relaciones y luego la
implementacin. (debe contar con datos inicializados para la prueba). (En grupos de 2 alumnos)

8. Problemtica.

TMatricula

Alumno Curso

Matricula
||

Leer Docente

La FISI desea implementar un sistema de matricula OO se ha hecho el anlisis y se ha


encontrado que un docente puede dictar hasta 3 cursos, un alumno puede matricularse
hasta en 6 cursos, a un curso pueden matricularse hasta 40 alumnos. La matricula trata
determinar que cursos se van dictar, la cantidad de alumnos por curso y que docente lo
va a dictar.
Recomendaciones:
Primero analice las relaciones entre las clases Alumno, Curso, Docente y Aula que
pueden ser asociacin, agregacin o composicin Construya los diagramas de clase
de diseo.
Implemente las clases Alumno, Curso Aula y Docente con sus atributos y mtodos
y haga la prueba unitaria a cada una de ellos.
Ahora trate de agregar los atributos y mtodos de una clase segn las relaciones que
haya determinado y haga la prueba unitaria y as hasta terminar con todas las
relaciones.
Luego implemente la clase matricula y finalmente el test matrcula.
La clase Leer permite capturar datos de todo tipo a travs de la entrada estndar,
por tanto pueden incluirla a su aplicacin sin ninguna restriccin.

La idea es hacer la implementacin, por ejemplo, tres cursos sus respectivos docentes
y alumnos y que funcione lgicamente o sea deben contar con datos de prueba para
poder probarlos.

También podría gustarte