SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
Relaciones entre clases:
             Diagramas de clases UML
            Las relaciones existentes entre las distintas clases
    nos indican cómo se comunican los objetos de esas clases entre sí:


                           Los mensajes “navegan”
            por las relaciones existentes entre las distintas clases.




       Existen distintos tipos de relaciones:

       - Asociación (conexión entre clases)

       - Dependencia (relación de uso)

       - Generalización/especialización (relaciones de herencia)




OOP – Introducción: Java           - 23 -                 © Fernando Berzal
Asociación
Una asociación es una relación estructural
que describe una conexión entre objetos.




                  Gráficamente, se muestra como una línea continua
                    que une las clases relacionadas entre sí.


Navegación de las asociaciones

       Aunque las asociaciones suelen ser bidireccionales (se pueden
       recorrer en ambos sentidos), en ocasiones es deseable hacerlas
       unidireccionales (restringir su navegación en un único sentido).

       Gráficamente, cuando la asociación es unidireccional, la línea
       termina en una punta de flecha que indica el sentido de la
       asociación:




                             Asociación unidireccional




                              Asociación bidireccional
OOP – Introducción: Java          - 24 -                 © Fernando Berzal
equivale a




       class Cuenta
       {
         private Dinero balance;

           public void ingresar (Dinero cantidad)
           {
             balance += cantidad;
           }

           public void retirar (Dinero cantidad)
           {
             balance -= cantidad;
           }

           public Dinero getSaldo ()
           {
             return balance;
           }
       }


Hemos supuesto que Dinero es un tipo de dato con el que se pueden
hacer operaciones aritméticas y hemos añadido un método adicional que
nos permite comprobar el saldo de una cuenta.
OOP – Introducción: Java     - 25 -               © Fernando Berzal
viene a ser lo mismo que




                             con la salvedad de
         que el enlace bidireccional hemos de mantenerlo nosotros


                      public class Cuenta
                      {
                        …
                        private Cliente titular;
                        …
                      }

                      public class Cliente
                      {
                        …
                        private Cuenta cuenta[];
                        …
                      }

Un cliente puede tener varias cuentas, por lo que en la clase cliente
hemos de mantener un conjunto de cuentas (un vector en este caso).
OOP – Introducción: Java          - 26 -              © Fernando Berzal
Multiplicidad de las asociaciones
La multiplicidad de una asociación determina
cuántos objetos de cada tipo intervienen en la relación:



           El número de instancias de una clase que se relacionan
                   con UNA instancia de la otra clase.



- Cada asociación tiene dos multiplicidades
  (una para cada extremo de la relación).


- Para especificar la multiplicidad de una asociación hay que indicar la
  multiplicidad mínima y la multiplicidad máxima (mínima..máxima)


                 Multiplicidad   Significado
                        1        Uno y sólo uno
                       0..1      Cero o uno
                       N..M      Desde N hasta M
                        *        Cero o varios
                       0..*      Cero o varios
                       1..*      Uno o varios (al menos uno)


- Cuando la multiplicidad mínima es 0, la relación es opcional.


- Una multiplicidad mínima mayor o igual que 1 establece una
  relación obligatoria.




OOP – Introducción: Java         - 27 -               © Fernando Berzal
dirige
          Profesor                                  Departamento
                           1                 0..1

                     Todo departamento tiene un director.
                   Un profesor puede dirigir un departamento.




               Todo profesor pertenece a un departamento.
          A un departamento pueden pertenecer varios profesores.




       Relación opcional                        Relación obligatoria
       Un cliente puede o no                    Una cuenta ha de tener
       ser titular de una cuenta                un titular como mínimo



Relaciones involutivas
Cuando la misma clase aparece en los dos extremos de la asociación.




OOP – Introducción: Java            - 28 -              © Fernando Berzal
Agregación y composición
Casos particulares de asociaciones:
Relación entre un todo y sus partes


Gráficamente,
se muestran como asociaciones con un rombo en uno de los extremos.


       Agregación
       Las partes pueden formar parte de distintos agregados.




       Composición
       Agregación disjunta y estricta:
       Las partes sólo existen asociadas al compuesto
       (sólo se accede a ellas a través del compuesto)




OOP – Introducción: Java        - 29 -                   © Fernando Berzal
Dependencia
Relación (más débil que una asociación) que muestra la relación entre
un cliente y el proveedor de un servicio usado por el cliente.

   - Cliente es el objeto que solicita un servicio.

   - Servidor es el objeto que provee el servicio solicitado.


Gráficamente, la dependencia se muestra como una línea discontinua
con una punta de flecha que apunta del cliente al proveedor.


       Ejemplo
       Resolución de una ecuación de segundo grado




                              − b ± b 2 − 4ac
                           x=
                                    2a
             Para resolver una ecuación de segundo grado hemos
                de recurrir a la función sqrt de la clase Math
                       para calcular una raíz cuadrada.

              NOTA:
              La clase Math es una clase “degenerada” que no tiene
              estado. Es, simplemente, una colección de funciones
              de cálculo matemático.

OOP – Introducción: Java         - 30 -               © Fernando Berzal
Herencia (generalización y especialización)
La relación entre una superclase y sus subclases


Objetos de distintas clases pueden tener atributos similares y exhibir
comportamientos parecidos (p.ej. animales, mamíferos…).




              public class Empleado
              {
                 ...
              }

              public class Profesor extends Empleado
              {
                 ...
              }

              public class PAS extends Empleado
              {
                 ...
              }




OOP – Introducción: Java        - 31 -                © Fernando Berzal
La noción de clase está próxima a la de conjunto:

                      Generalización y especialización
               expresan relaciones de inclusión entre conjuntos.




Instancias:           coches ⊂ vehículos

   - Todo coche es un vehículo.

   - Algunos vehículos son coches.



Propiedades:          propiedades(coches) ⊃ propiedades(vehículos)

   - Un coche tiene todas las propiedades de un vehículo.

   - Algunas propiedades del coche no las tienen todos los vehículos.



OOP – Introducción: Java           - 32 -               © Fernando Berzal
Jerarquías de clases




                        Las clases se organizan
        en una estructura jerárquica formando una taxonomía.


   - El comportamiento de una categoría más general
     es aplicable a una categoría particular.


   - Las subclases heredan características de las clases de las que se
     derivan y añaden características específicas que las diferencian.



                       En el diagrama de clases,
los atributos, métodos y relaciones de una clase se muestran en el nivel
            más alto de la jerarquía en el que son aplicables.


OOP – Introducción: Java       - 33 -                © Fernando Berzal

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (13)

S2-Representación Gráfica
S2-Representación GráficaS2-Representación Gráfica
S2-Representación Gráfica
 
Alexander Irwin Uml
Alexander Irwin UmlAlexander Irwin Uml
Alexander Irwin Uml
 
Herencia en C++
Herencia en C++Herencia en C++
Herencia en C++
 
Metodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prevMetodología de la programación orientada a objetos con c++ prev
Metodología de la programación orientada a objetos con c++ prev
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad  10: Reporte de polimorfismo, herencia & encapsulamientoActividad  10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
 
Herencia - Java
Herencia - JavaHerencia - Java
Herencia - Java
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
 
Poo presentacion
Poo presentacionPoo presentacion
Poo presentacion
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Java
JavaJava
Java
 
Poo
PooPoo
Poo
 

Andere mochten auch

Andere mochten auch (16)

Que Se Entiende Por Evaluacion
Que Se Entiende Por EvaluacionQue Se Entiende Por Evaluacion
Que Se Entiende Por Evaluacion
 
Prezentace Mobilnidata Final Ukazka
Prezentace Mobilnidata Final UkazkaPrezentace Mobilnidata Final Ukazka
Prezentace Mobilnidata Final Ukazka
 
Prerovsky
PrerovskyPrerovsky
Prerovsky
 
Dvorak
DvorakDvorak
Dvorak
 
Social Media & Web 2.0 Services for Choirs
Social Media & Web 2.0 Services for ChoirsSocial Media & Web 2.0 Services for Choirs
Social Media & Web 2.0 Services for Choirs
 
Kolar
KolarKolar
Kolar
 
Manas Template
Manas TemplateManas Template
Manas Template
 
Peterka
PeterkaPeterka
Peterka
 
Upatras Open Workshop Mathisi 2.0+
Upatras Open Workshop Mathisi 2.0+Upatras Open Workshop Mathisi 2.0+
Upatras Open Workshop Mathisi 2.0+
 
Presentación exploracion de campo
Presentación exploracion de campoPresentación exploracion de campo
Presentación exploracion de campo
 
Εκκλησιαστικά ΜΜΕ τον 21ο αιώνα
Εκκλησιαστικά ΜΜΕ τον 21ο αιώναΕκκλησιαστικά ΜΜΕ τον 21ο αιώνα
Εκκλησιαστικά ΜΜΕ τον 21ο αιώνα
 
Que Se Entiende Por Evaluacion
Que Se Entiende Por EvaluacionQue Se Entiende Por Evaluacion
Que Se Entiende Por Evaluacion
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividades
 
Diagramas de estados
Diagramas de estadosDiagramas de estados
Diagramas de estados
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Ähnlich wie Relaciones clases UML (20)

relaciones uml
 relaciones uml relaciones uml
relaciones uml
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Intro oo2
Intro oo2Intro oo2
Intro oo2
 
Intro oo2
Intro oo2Intro oo2
Intro oo2
 
Uml relaciones
Uml relacionesUml relaciones
Uml relaciones
 
Entidad relacion
Entidad relacionEntidad relacion
Entidad relacion
 
Entidad relacion
Entidad relacionEntidad relacion
Entidad relacion
 
Diseño de Clases
Diseño de ClasesDiseño de Clases
Diseño de Clases
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Clases 2
Clases 2Clases 2
Clases 2
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Diagrama de clases y objetos
Diagrama de clases y objetosDiagrama de clases y objetos
Diagrama de clases y objetos
 
Bases de Datos - Parte 4/10 Modelo ER continuación
Bases de Datos - Parte 4/10 Modelo ER continuaciónBases de Datos - Parte 4/10 Modelo ER continuación
Bases de Datos - Parte 4/10 Modelo ER continuación
 
P1 Programacion orientada a objetos con Java.pptx
P1 Programacion orientada a objetos con Java.pptxP1 Programacion orientada a objetos con Java.pptx
P1 Programacion orientada a objetos con Java.pptx
 
clases
clasesclases
clases
 
UML.pptx
UML.pptxUML.pptx
UML.pptx
 
Introduccion Programación Orientada a Objetos.ppt
Introduccion Programación Orientada a Objetos.pptIntroduccion Programación Orientada a Objetos.ppt
Introduccion Programación Orientada a Objetos.ppt
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 

Relaciones clases UML

  • 1. Relaciones entre clases: Diagramas de clases UML Las relaciones existentes entre las distintas clases nos indican cómo se comunican los objetos de esas clases entre sí: Los mensajes “navegan” por las relaciones existentes entre las distintas clases. Existen distintos tipos de relaciones: - Asociación (conexión entre clases) - Dependencia (relación de uso) - Generalización/especialización (relaciones de herencia) OOP – Introducción: Java - 23 - © Fernando Berzal
  • 2. Asociación Una asociación es una relación estructural que describe una conexión entre objetos. Gráficamente, se muestra como una línea continua que une las clases relacionadas entre sí. Navegación de las asociaciones Aunque las asociaciones suelen ser bidireccionales (se pueden recorrer en ambos sentidos), en ocasiones es deseable hacerlas unidireccionales (restringir su navegación en un único sentido). Gráficamente, cuando la asociación es unidireccional, la línea termina en una punta de flecha que indica el sentido de la asociación: Asociación unidireccional Asociación bidireccional OOP – Introducción: Java - 24 - © Fernando Berzal
  • 3. equivale a class Cuenta { private Dinero balance; public void ingresar (Dinero cantidad) { balance += cantidad; } public void retirar (Dinero cantidad) { balance -= cantidad; } public Dinero getSaldo () { return balance; } } Hemos supuesto que Dinero es un tipo de dato con el que se pueden hacer operaciones aritméticas y hemos añadido un método adicional que nos permite comprobar el saldo de una cuenta. OOP – Introducción: Java - 25 - © Fernando Berzal
  • 4. viene a ser lo mismo que con la salvedad de que el enlace bidireccional hemos de mantenerlo nosotros public class Cuenta { … private Cliente titular; … } public class Cliente { … private Cuenta cuenta[]; … } Un cliente puede tener varias cuentas, por lo que en la clase cliente hemos de mantener un conjunto de cuentas (un vector en este caso). OOP – Introducción: Java - 26 - © Fernando Berzal
  • 5. Multiplicidad de las asociaciones La multiplicidad de una asociación determina cuántos objetos de cada tipo intervienen en la relación: El número de instancias de una clase que se relacionan con UNA instancia de la otra clase. - Cada asociación tiene dos multiplicidades (una para cada extremo de la relación). - Para especificar la multiplicidad de una asociación hay que indicar la multiplicidad mínima y la multiplicidad máxima (mínima..máxima) Multiplicidad Significado 1 Uno y sólo uno 0..1 Cero o uno N..M Desde N hasta M * Cero o varios 0..* Cero o varios 1..* Uno o varios (al menos uno) - Cuando la multiplicidad mínima es 0, la relación es opcional. - Una multiplicidad mínima mayor o igual que 1 establece una relación obligatoria. OOP – Introducción: Java - 27 - © Fernando Berzal
  • 6. dirige Profesor Departamento 1 0..1 Todo departamento tiene un director. Un profesor puede dirigir un departamento. Todo profesor pertenece a un departamento. A un departamento pueden pertenecer varios profesores. Relación opcional Relación obligatoria Un cliente puede o no Una cuenta ha de tener ser titular de una cuenta un titular como mínimo Relaciones involutivas Cuando la misma clase aparece en los dos extremos de la asociación. OOP – Introducción: Java - 28 - © Fernando Berzal
  • 7. Agregación y composición Casos particulares de asociaciones: Relación entre un todo y sus partes Gráficamente, se muestran como asociaciones con un rombo en uno de los extremos. Agregación Las partes pueden formar parte de distintos agregados. Composición Agregación disjunta y estricta: Las partes sólo existen asociadas al compuesto (sólo se accede a ellas a través del compuesto) OOP – Introducción: Java - 29 - © Fernando Berzal
  • 8. Dependencia Relación (más débil que una asociación) que muestra la relación entre un cliente y el proveedor de un servicio usado por el cliente. - Cliente es el objeto que solicita un servicio. - Servidor es el objeto que provee el servicio solicitado. Gráficamente, la dependencia se muestra como una línea discontinua con una punta de flecha que apunta del cliente al proveedor. Ejemplo Resolución de una ecuación de segundo grado − b ± b 2 − 4ac x= 2a Para resolver una ecuación de segundo grado hemos de recurrir a la función sqrt de la clase Math para calcular una raíz cuadrada. NOTA: La clase Math es una clase “degenerada” que no tiene estado. Es, simplemente, una colección de funciones de cálculo matemático. OOP – Introducción: Java - 30 - © Fernando Berzal
  • 9. Herencia (generalización y especialización) La relación entre una superclase y sus subclases Objetos de distintas clases pueden tener atributos similares y exhibir comportamientos parecidos (p.ej. animales, mamíferos…). public class Empleado { ... } public class Profesor extends Empleado { ... } public class PAS extends Empleado { ... } OOP – Introducción: Java - 31 - © Fernando Berzal
  • 10. La noción de clase está próxima a la de conjunto: Generalización y especialización expresan relaciones de inclusión entre conjuntos. Instancias: coches ⊂ vehículos - Todo coche es un vehículo. - Algunos vehículos son coches. Propiedades: propiedades(coches) ⊃ propiedades(vehículos) - Un coche tiene todas las propiedades de un vehículo. - Algunas propiedades del coche no las tienen todos los vehículos. OOP – Introducción: Java - 32 - © Fernando Berzal
  • 11. Jerarquías de clases Las clases se organizan en una estructura jerárquica formando una taxonomía. - El comportamiento de una categoría más general es aplicable a una categoría particular. - Las subclases heredan características de las clases de las que se derivan y añaden características específicas que las diferencian. En el diagrama de clases, los atributos, métodos y relaciones de una clase se muestran en el nivel más alto de la jerarquía en el que son aplicables. OOP – Introducción: Java - 33 - © Fernando Berzal