Aptec101 s2 Implementacion
Aptec101 s2 Implementacion
Aptec101 s2 Implementacion
CONTENIDO
1. INTRODUCCIÓN………………………………………………………………………………...………...………..2
1
Implementación de relaciones
entre clases
1. INTRODUCCIÓN
Una relación es una conexión semántica entre clases que permite que una conozca
los atributos, operaciones y relaciones de otras, debido a que las clases no actúan
aisladas, sino relacionadas. Una clase puede ser un tipo de otra, a lo que se llama
generalización; o puede contener objetos de otra clase de varias formas posibles,
dependiendo de la fortaleza de la relación que exista entre ambas. Le sugiero utilizar
la siguiente herramienta de diseño: https://staruml.io/
1
El Unified Modeling Language, UML (Lenguaje Unificado de Modelado) (Booch et al., 1998), se trata de un estándar que se
ha adoptado a nivel internacional por numerosos organismos y empresas para crear esquemas, diagramas y documentación relativa
a los desarrollos de software (programas informáticos).
Implementación de relaciones
entre clases
Cabe destacar que Las relaciones generalmente son binarias, es decir, el vínculo se
establece entre dos clases. También existe las asociaciones n-arias, vale decir el
vínculo que se establece entre tres o más clases.
Figura 5: Ejemplo de Cardinalidades entre los objetos de las clases Cliente y OrdenCompra.
Ejercicio propuesto 1:
Para el diagrama siguiente escriba lo que se está expresando en cada una de las
relaciones.
Ejercicio propuesto 2:
Se requiere implementar una aplicación para un banco de acuerdo con los siguientes
requerimientos:
• Que el ejecutivo de cuentas pueda registrar datos de los clientes y sus cuentas
de débitos cuando sean autorizadas. Los clientes forman parte del registro de
personas del banco y se registran o mantienen clientes en su base de datos
pudiendo tener al menos una cuenta.
• Las cuentas de los clientes se caracterizan por el número de la cuenta, saldo,
el cliente y un estado. Estas por ningún motivo pueden ser reasignadas a otro
cliente (aunque el cliente haya sido eliminado). Al ingresar (crear) una cuenta
se exige, además, los datos de la tarjeta asociada (id y tipo de tarjeta).
• Que el cliente a través de su tarjeta de débito bancaria se conecte al sistema
y pueda realizar movimientos.
• El sistema verifica que la tarjeta usada por el cliente corresponda al id
registrado en el sistema del banco, versus la ingresada por el cliente en el
cajero automático. En el caso de no cumplir con la verificación la tarjeta
quedará bloqueada. Podrá desbloquear su tarjeta solo si se presenta al banco
personalmente.
• El ejecutivo podrá cancelar la cuenta cuando sea solicitado por el cliente.
9
Diseñe el diagrama de clases representando los tipos de relaciones según
corresponda e indique la multiplicidad de todas ellas. Asigne atributos y
comportamientos (métodos) a cada clase. Suba al foro su respuesta indicando los
fundamentos de los tipos de relaciones elegidas (¿Por qué eligió ese tipo relación y
no otra?) para que sea retroalimentada por sus compañeros y docente.
Les dejo un ejemplo de diagrama de clases que representa el enunciado del ejercicio
propuesto 2. Al leer el enunciado debe identificar los objetos para agruparlos en
clases. Recuerde que NO TODO se modela, ya que debe aplicar el principio de
abstracción en la POO, por lo tanto, lea bien el enunciado e identifique solo aquello
que se necesite almacenar (junto con sus comportamientos) para que el usuario
pueda ejecutar dichos comportamientos una vez que se haya programado la
aplicación.
Implementación de relaciones
entre clases
11
Esta forma de definir los atributos (figura 8) se realiza en todo tipo de relación con
navegabilidad (relaciones en un solo sentido). A continuación, te entrego
ejemplos de definición de atributos para relaciones en ambas direcciones y
también te muestro relaciones con distintas cardinalidades. Si la cardinalidad es
superior a 1 vamos a usar arreglos estáticos (los arreglos los trabajamos en la
práctica 1 al inicio de la unidad).
Implementación de relaciones
entre clases
Ejemplo 1:
Ejemplo 2:
12
Un departamento posee varios
profesores y un profesor pertenece a un
sólo departamento.
Ejemplo 3:
Ejemplo 4:
Ahora que has aprendido como se definen los atributos de las clases que participan
en un diagrama, a continuación, implementaremos ejemplos para cada tipo de 13
relación (colaboración, composición, agregación y de uso). Recuerda que la Herencia
es otro tipo de relación, pero la aplicaremos en la siguiente unidad. Te sugiero que
tú también programes este ejemplo para enfrentar lo que sigue correctamente y sin
dificultades.
Figura 9: Diagrama de Clases para una aplicación que necesita registrar estudiantes. Un
estudiante estudia una carrera y una carrera pertenece a una facultad.
Aquí tienes que definir un atributo (objeto), que lo he llamado facCarr, generado
por la existencia de la relación de colaboración entre Carrera y Facultad (la facultad
posee una carrera). El constructor se comporta de la misma forma como si facCarr
fuera un atributo más, considerando que el parámetro respectivo referencie a
Facultad.
15
Al método toString(), como la carrera tiene una sola facultad, puedes agregar al
retorno del string los datos de la facultad.
Implementación de relaciones
entre clases
16
Aquí tienes que definir un atributo (objeto), que lo he llamado carrEst, generado
por la existencia de la relación de colaboración entre Estudiante y Carrera (el
estudiante estudia una carrera) y considerar lo que ya mencionamos en Facultad.
Implementación de relaciones
entre clases
17
Si te das cuenta, como facCarr y carrEst son atributos como los demás, puedes
usar sus respectivos métodos set y get cuando sea necesario.
Finalmente, programar el main es lo más importante para que logres una real
comprensión de la POO. Antes, te explicaré (leer figura 10), el acceso desde un objeto
estudiante (que crearemos en el main y que lo llamaremos est1) a cualquiera de los
métodos del diagrama:
Implementación de relaciones
entre clases
Figura 10: Ejemplo que explica el acceso a los distintos métodos de las Clases del diagrama.
El main siguiente (figura 11) crea un estudiante (est1) y realiza todas las pruebas
solicitadas en el enunciado de este ejercicio y te deja dos pruebas propuestas para
que tú las implementes. Para comprenderlo lee la explicación de la figura 10.
19
Esto es lo que arroja la ejecución del main de la figura 11. Si tienes dudas plantea
tus preguntas en el foro para que puedas seguir avanzando y comprendiendo los
ejercicios que siguen.
Implementación de relaciones
entre clases
Figura 12: Ejemplo de Agregación donde un objeto Servidor de Impresión más los objetos 20
impresoras y escáneres que lo componen es el “todo” y sus componentes son sus “partes”.
y también podrá darse que las partes no sean compartidas por otros. En el ejemplo
del apartado 2.3, también podría ser expresado como una agregación, pero no lo es,
porque así como está definida la navegabilidad entre los objetos, se pueden dar
algunas situaciones no permitidas por la agregación, por ejemplo: “el todo” no está
conformado por varias partes (un estudiante tiene solo una carrera y la carrera se
asocia a una facultad), el sistema podría tener registrado carreras sin que nunca se
le asocie su facultad y la carrera puede seguir operando sin problemas.
Figura 13: Ejemplo de relación de Agregación para una Apps que registra asignaturas de
los cursos de un colegio. “El todo” es el curso más sus asignaturas que son sus “partes”.
22
23
Aquí tienes que definir un atributo arreglo (“las partes” de Curso), que he
llamado asigLis, donde cada elemento del arreglo es un objeto asignatura, generado
por la relación de agregación entre Curso y Asignatura (un curso tiene hasta 5
asignaturas y mínimo 3) y debes programar también los métodos customer
solicitados en el enunciado.
Implementación de relaciones
entre clases
24
Implementación de relaciones
entre clases
25
Implementación de relaciones
entre clases
Figura 15: Ejemplo de Composición donde un objeto Empresa más los objetos
Departamentos que lo componen es el “todo” y sus componentes son sus “partes”.
El rombo negro
representa la
relación de
composición y se
pone en el lado del
'todo"
Implementación de relaciones
entre clases
Figura 16: Ejemplo de relación de Composición para una Apps que registra asignaturas de
los cursos de un colegio. “El todo” es el curso más sus asignaturas que son sus “partes”.
Por lo tanto, a pesar que a nivel de diseño (semántico) es una tremenda diferencia
con la asociación y agregación, la diferencia en programación es muy sutil. Solo debes
crear los objetos “partes” en el constructor “del todo” (en el mismo momento de
crear el todo). Entonces, los objetos asignaturas (las partes), que en la agregación
los creamos en el main (antes de crear el todo curso), ahora en la composición
debemos crear los objetos asignaturas (“sus partes”) en el constructor de Curso (“el
todo”).
Implementación de relaciones
entre clases
28
Implementación de relaciones
entre clases
29
Nosotros ya hemos aplicado este tipo de relación cuando realizamos las pruebas de
los ejemplos de los otros tipos de relaciones (ver figura 18). La relación de
dependencia existe entre la clase donde se encuentra el método main y la que
es necesario instanciar para cumplir los requerimientos establecidos.
Implementación de relaciones
entre clases
30
En el siguiente ejemplo de dependencia (ver figura 19), existe la relación entre una
clase que usa referencias a objetos de otra clase como parámetros de un método
(que en este caso es el método imprimir) de la misma. Si en el diagrama de clases
se suministra la signatura2 completa de este método, como en el caso de la figura
2
Se llama signatura a la parte donde se declaran los parámetros o argumentos de un
método. Cada parámetro se declara indicando el nombre del parámetro y su tipo de datos o
referencia a una Clase.
Implementación de relaciones
entre clases
Figura 19: Ejemplo de relación de Dependencia (o de uso) entre las clases Impresora y
Documento.
31
Se solicita:
2) Implemente el main para generar una venta y realizar las pruebas que se
solicitan. Pruebe lo siguiente:
a) Escriba las sentencias necesarias para ingresar una venta inválida al sistema y
muestre sus datos para probar que no se hayan seteado los valores.
b) Escriba las sentencias necesarias para ingresar una venta válida al sistema y
muestre sus datos.
c) Revise que fue correctamente asignado el correlativo del producto de la venta del
primer ítem.
Implementación de relaciones
entre clases
d) Revise que fue correctamente asignado el precio del producto del segundo ítem
vendido.
e) Pruebe si está funcionando correctamente la actualización del precio del producto
del primer ítem que fue vendido. Muestre el producto modificado a navegando a
través de la venta y mostrando el producto de forma directa.
33