Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Relaciones entre clases java, Diapositivas de Programación Java

Como se relacionan las clases entre ellas

Tipo: Diapositivas

2018/2019

Subido el 03/12/2019

david-santos-bsh
david-santos-bsh 🇪🇸

9 documentos

1 / 18

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Projecte de Programació
Projecte de Programació
Implementación relaciones
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Vista previa parcial del texto

¡Descarga Relaciones entre clases java y más Diapositivas en PDF de Programación Java solo en Docsity!

Projecte de Programació

Implementación relaciones

Fase de Implementación

El lenguaje de programación que usaremos ya nos

proporciona mecanismos para implementar clases

(abstractas, genéricas, etc.), atributos, métodos, etc. Así

pues, al estudiar el lenguaje de programación ya

encontraremos cómo implementar las clases.

Implementación de las relaciones:

Implementación de les relaciones: Recordemos que en

PROP nos limitamos a las siguientes relaciones*:

  • Herencia : "es-un"
  • Asociación : "conoce / tiene"
  • Agregación : "parte-todo / contiene-a"
  • Composición : "parte-todo / contiene-a" (donde la parte no tiene sentido sin el todo)
  • Dependencia : "usa" *UML es capaz de expresar más relaciones. Con éstas tenemos suficiente en PROP

Fase de Implementación

Relación de Herencia:

  • Representa diferentes niveles de abstracción
  • Las subclases pueden tener atributos adicionales
  • Las subclases pueden tener comportamientos diferentes y/o adicionales.

Fase de Implementación

Relación de Herencia: Herencia Simple: Para acceder a la operación de la superclase redefinida en la subclase, desde la subclase existen diversos mecanismos dados por el LP. Un ejemplo es la palabra clave super (presente en Java, C++ o Smalltalk). El comportamiento de los hijos (subclases) puede ser muy diferente del comportamiento de los padres (superclases) vía la redefinición de métodos y atributos.

Fase de Implementación

Relación de Herencia: Herencia Múltiple: Si el LP la soporta, la implementa el compilador. Semántica

problemática ( diamond inheritance problems).

LPs sin herencia múltiple pueden:

  • (^) Simularla vía el mecanismo de delegación
  • (^) Simular parte de su expresividad gracias a mecanismos ad-

hoc: Interfaces en Java, Traits en Smalltalk-Pharo. La

ventaja (sobre la herencia múltiple) es que no es dan problemas de ambigüedad semántica.

Fase de Implementación

Relación de Agregación: Se implementará mediante la definición de atributos en cada

clase. La clase-todo, contenedora, en una agregación definirá

atributos para contener referencias a instancias de la clase-parte,

tantas como requiera la multiplicidad. Ejemplo: agregación de elementos de clase A dentro de clase B.

Fase de Implementación

Relación de Agregación: Si la multiplicidad es 1, la clase B definirá un atributo privado de tipo A de nombre NomRelacio. En Java: private A NomRelacio; Si la multiplicidad es > 1 hará falta que el atributo privado sea una estructura homogénea de elementos de clase A, de nombre NomRelacio. En Java: private A[] NomRelacio; private Vector/ArrayList NomRelacio;

Fase de Implementación

Relación de Asociación: Opción 1 : implementar la asociación como una agregación. Problema: hacer persistente un objeto implicaría guardar todos los objetos asociados, creando fácilmente mucha redundancia y duplicidad en los objetos guardados en los ficheros (o BD). Opción 2 : Utilizar identificadores únicos para los objetos. Imaginemos instancias de las clases A y B, relacionadas por una asociación con dirección (navegabilidad):

Fase de Implementación

Relación de Asociación:

  1. En la clase A definiríamos un atributo para identificar cada objeto: private TipoIDClaseA idA
  2. En la clase B definiríamos un atributo para identificar cada objeto: private tipoIDClaseB idB
  3. Para cada dirección de la asociación y dependiendo de la multiplicidad, tendríamos uno o más atributos de los tipos de los identificadores. En el ejemplo, la relación tiene una sola dirección y la multiplicidad es 1, por lo que sólo en la clase A tendremos: private tipoIDClaseB NomRelacio Si la cardinalitat fuera > 1 haría falta como atributo de A una estructura homogénea de identificadores de la clase B: private TipoIDClaseB [] NomRelacio private Vector/ArrayList NomRelacio

Fase de Implementación

Relación de Composición:

  • Igual que la Agregación pero en este caso la parte no tiene ningún sentido sin el todo.
  • Ejemplo : Casilla no tiene sentido sin Tablero
  • En PROP no os pediremos diferenciar las composiciones de les agregaciones.

Fase de Implementación

Relación de Dependencia:

  • Es una relación que existe para expresar que un objeto de una clase pueda usar los servicios de otra o pueda usar instancias de otra clase como variables locales y/o parámetros (aunque si el parámetro aparece a la cabecera de un método no hace falta poner explícitamente la relación).

Fase de Implementación