0% encontró este documento útil (0 votos)
28 vistas22 páginas

Taller Grupo5

Modelo de sistemas por capas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
28 vistas22 páginas

Taller Grupo5

Modelo de sistemas por capas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

UNIVERSIDAD ISRAEL

CIENCIAS DE LA INGENIERÍA

CARRERA DE (ESCRIBA LA CARRERA)

(ESCRIBA LA ASIGNATURA)

INFORME DE LABORATORIO - Semana 3

TEMA: Laboratorio

ESTUDIANTE(S): Jahir Medina, Sebastian Gudiño, Segundo Illicachi


CURSO: 5to Semestre
PARALELO: A

PROFESOR: Mg. Carlos Salazar

QUITO - ECUADOR
1. TEMA: Laboratorio

2. OBJETIVOS:

El objetivo general de estas actividades es proporcionar una comprensión profunda y


habilidades prácticas en el diseño y la implementación de relaciones entre clases en
programación orientada a objetos (POO) utilizando el lenguaje de modelado UML y Java. Se
espera que puedas:

1. Identificar, comprender y representar gráficamente las diferentes relaciones entre


clases, como asociación, agregación, composición, herencia e interfaz, utilizando UML.
2. Implementar ejercicios prácticos en Java que demuestren el funcionamiento de cada
tipo de relación entre clases.
3. Diseñar diagramas de clases UML que reflejen la estructura y las relaciones entre las
clases de un sistema de software, incluyendo al menos tres tipos de relaciones.
4. Traducir los diagramas UML diseñados en código Java funcional, desarrollando las
clases, métodos y relaciones según lo especificado en el diagrama.
5. Realizar pruebas para verificar la correcta implementación del código Java y su
correspondencia con el diseño UML.
6. Desarrollar habilidades prácticas en la programación orientada a objetos y en la
creación de sistemas de software modular, flexible y fácil de mantener.

Para la primera actividad, se espera que puedas comprender y representar gráficamente las
relaciones de asociación, agregación, composición, herencia e interfaz, además de poder
implementar ejercicios prácticos que demuestren su funcionamiento en Java.

En la segunda actividad, el objetivo es que puedas aplicar tus conocimientos sobre UML para
diseñar un diagrama de clases que incluya al menos tres tipos de relaciones entre clases, lo que
te permitirá visualizar cómo interactúan las diferentes partes de un sistema.

3. INTRODUCCION:

4. DESARROLLO:

1. Elabore un organizador gráfico sobre:

Ciencias de la Ingeniería
Ciencias de la Ingeniería
Ciencias de la Ingeniería
Ciencias de la Ingeniería
Ciencias de la Ingeniería
Ciencias de la Ingeniería
2. Elabore un ejercicio en JAVA para cada una de las relaciones expuestas en el punto

anterior, se debe incluir:

a. Enunciado

b. Evidencia del código

c. Evidencia de la ejecución

d. Explicación técnica sobre el funcionamiento

● Asociación

Crear dos clases, Cliente y Carrito, donde la clase Cliente tiene una asociación con la clase
Carrito.

Ejecución

Ciencias de la Ingeniería
En este ejemplo, la clase Cliente y la clase Carrito están asociadas. La clase Carrito tiene
una referencia a un objeto Cliente. Esto representa una relación de asociación donde un
cliente puede tener un carrito, pero el carrito no depende directamente del cliente para
existir.

● Agregación

Crear dos clases, Departamento y Empleado, donde la clase Departamento tiene una
relación de agregación con la clase Empleado.

Ciencias de la Ingeniería
Ejecución

En este ejemplo, la clase Departamento tiene una lista de objetos Empleado. La relación
entre Departamento y Empleado es de agregación, ya que un departamento puede
contener múltiples empleados. Sin embargo, los empleados pueden existir
independientemente del departamento y pueden pertenecer a diferentes departamentos.

● Composición

Crear dos clases, Casa y Habitación, donde la clase Casa tiene una relación de composición
con la clase Habitación.

Ciencias de la Ingeniería
Ejecución

Ciencias de la Ingeniería
En este ejemplo, la clase Casa tiene una lista de objetos Habitación. La relación entre Casa
y Habitación es de composición, ya que una casa está compuesta por múltiples
habitaciones y la existencia de las habitaciones depende de la existencia de la casa. Si
destruyes la casa, también se destruirán todas sus habitaciones.

● Herencia

Crear dos clases, Animal y Perro, donde la clase Perro hereda de la clase Animal.

Ciencias de la Ingeniería
Ejecución

Ciencias de la Ingeniería
El código muestra cómo se pueden usar la herencia y el polimorfismo en Java para modelar
diferentes tipos de animales y permitir que compartan ciertas características y
comportamientos comunes.

● Interfaz

Crear una interfaz llamada IDisponible que defina el método estaDisponible() y luego
implementar esta interfaz en una clase llamada Producto.

Ciencias de la Ingeniería
Ejecución

En este ejemplo, la interfaz IDisposable define un contrato para que las clases que la
implementen proporcionan una implementación del método estaDisponible(). La clase
Producto implementa esta interfaz y proporciona una implementación concreta del
método estaDisponible(). Las interfaces son útiles para definir comportamientos comunes

Ciencias de la Ingeniería
Actividad 2 – Diagrama de clases UML

Para esta actividad debes afrontar los siguientes desafíos:

Elabore un diagrama de clases UML que incluya al menos tres tipos de relaciones entre

clases.

1. Asociación

La asociación representa que las clases están relacionadas entre sí de alguna forma, pero no
implica ningún tipo de propiedad o dependencia de una clase sobre la otra.

Representación: Una línea simple entre dos clases.

2. Agregación

La agregación representa una relación de "todo/parte", pero donde las partes pueden existir
independientemente del todo.

Representación: Una línea con un rombo vacío en el extremo del "todo".

3. Composición

La composición representa una relación de "todo/parte", pero donde las partes no pueden
existir independientemente del todo. Si el "todo" es destruido, las partes también

Representación: Una línea con un rombo relleno en el extremo del "todo".

4. Herencia

La herencia representa una relación jerárquica entre una clase base (superclase) y una o más
clases derivadas (subclases). La subclase hereda atributos y métodos de la superclase.

● Representación: Una línea con un triángulo vacío apuntando hacia la superclase.

5. Interfaz

Una interfaz es un conjunto de métodos que una clase debe implementar. Las clases que
implementan la interfaz acuerdan proporcionar implementaciones para todos los métodos de
la interfaz.

● Representación: Una línea punteada con un triángulo vacío apuntando hacia la


interfaz.

Diagrama de clases UML

Ciencias de la Ingeniería
Actividad 4 – Programación

En esta actividad debes resolver lo siguiente:

1. A partir del diagrama UML elaborado en el apartado anterior, elabore un proyecto en

Java que lo represente, se debe contemplar:

a. Codificación

Ciencias de la Ingeniería
Ciencias de la Ingeniería
b. Clases

c. Pruebas

5. CONCLUSIONES:
● Flexibilidad y Reusabilidad: La combinación de estos conceptos proporciona un alto
nivel de flexibilidad y reusabilidad en el diseño y la implementación del software. La
herencia permite la reutilización de código, la agregación y composición permiten la
construcción de objetos complejos a partir de partes más simples, y las interfaces
definen un contrato que puede ser implementado por múltiples clases, lo que facilita la
creación de sistemas adaptables y modulares.

● Jerarquías de Clases Claras: La herencia es útil para establecer jerarquías de clases


claras, donde las subclases heredan comportamientos y atributos de las superclases.
Sin embargo, es importante tener en cuenta que una jerarquía demasiado profunda
puede llevar a una rigidez en el diseño y dificultar el mantenimiento del código.

● Acoplamiento y Cohesión: La composición y la agregación tienden a reducir el


acoplamiento entre los objetos, lo que significa que los cambios en una clase tienen

Ciencias de la Ingeniería
menos impacto en otras clases. Por otro lado, la herencia puede aumentar el
acoplamiento, ya que los cambios en una superclase pueden afectar a todas las
subclases. Además, una buena aplicación de interfaces puede mejorar la cohesión al
agrupar funcionalidades relacionadas en una estructura coherente.

● Encapsulamiento y Abstracción: Estos conceptos fomentan el principio de


encapsulamiento, donde los detalles de implementación de una clase se ocultan del
mundo exterior, lo que promueve la modularidad y la seguridad del código. La
abstracción, facilitada por las interfaces y las clases abstractas, permite definir
comportamientos y estructuras generales sin especificar detalles concretos de
implementación.

● Diseño Centrado en el Dominio: Al implementar estos conceptos, es fundamental


adoptar un enfoque centrado en el dominio del problema que se está resolviendo. La
elección entre asociación, agregación, composición, herencia e interfaces debe basarse
en las necesidades específicas del dominio y en los principios de diseño de software,
como la modularidad, la cohesión y el bajo acoplamiento.

● RECOMENDACIONES:

● Flexibilidad y Reusabilidad: Prioriza el diseño de clases y componentes que puedan ser


reutilizados en diferentes contextos. Diseña clases y componentes con
responsabilidades únicas y bien definidas, lo que facilitará su reutilización y adaptación
en diferentes partes del sistema.

● Jerarquías de Clases Claras: Mantén las jerarquías de clases lo más simples y planas
posible para evitar la rigidez en el diseño. Si la jerarquía se vuelve demasiado profunda,
considera reestructurarla utilizando composición o agregación para representar
relaciones más complejas entre objetos.

● Acoplamiento y Cohesión: Al diseñar clases y componentes, prioriza la cohesión


interna y reduce el acoplamiento externo. Utiliza la composición y la agregación para
construir objetos que sean independientes y que puedan cambiar sin afectar a otras
partes del sistema.

● Encapsulamiento y Abstracción: Aplica el principio de encapsulamiento para ocultar la


complejidad interna de tus clases y componentes. Utiliza la abstracción para definir
interfaces claras y genéricas que permitan interactuar con tus clases sin necesidad de
conocer los detalles de implementación.
● Diseño Centrado en el Dominio: Al diseñar tu sistema, mantén siempre en mente el
problema que estás resolviendo y las necesidades específicas de tu dominio. Elije
cuidadosamente entre asociación, agregación, composición, herencia e interfaces

Ciencias de la Ingeniería
según las características y requisitos de tu dominio, priorizando siempre la claridad, la
flexibilidad y la adaptabilidad del sistema.

● BIBLIOGRAFIA:

❖ Blasco, F. (2019). Programación orientada a objetos en Java: ( ed.). Ediciones de


la U. https://elibro.net/es/lc/uisrael/titulos/127125.

❖ Blasco, F. (2020). Programación Java: JDBC y Swing: (1 ed.). RA-MA Editorial.


https://elibro.net/es/lc/uisrael/titulos/222696.

❖ Vélez Serrano, J. (2011). Diseñar y programar, todo es empezar: una introducción


a la Programación Orientada a Objetos usando UML y Java: ( ed.). Dykinson.
https://elibro.net/es/lc/uisrael/titulos/63076.

❖ Greyrat, R. (2022, 5 julio). Asociación, Composición y Agregación en

Java – Barcelona Geeks.

https://barcelonageeks.com/asociacion-composicion-y-agregacion-en-jav

a/.

❖ Parada, I. (2021, 13 octubre). Agregación en Java. YuBrain.

https://www.yubrain.com/ciencias-de-la-computacion/agregacion-java/.

Ciencias de la Ingeniería
(

Ciencias de la Ingeniería

También podría gustarte