SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
1
UML
Diagramas de Clases
(UML ilustrado)
Universidad de los Andes
Demián Gutierrez
Noviembre 2012
2
Diagramas de Clases
(¿Qué Muestran?)
La estructura estática del sistema modelado
¿simple verdad?
¿estructura estática?
3
Diagramas de Clases
(¿Qué Muestran?)
Se concentran en los elementos del sistema
de forma independiente del tiempo
(muestran aspectos estáticos y no dinámicos)
¿estructura estática?
4
Diagramas de Clases
(¿Qué Muestran?)
Las clases,
las interfaces / atributos de las clases,
las relaciones que existen entre las distintas
clases del sistema
Comparar el software con la ingeniería civil es
la peor analogía que puede existir...
Pero si se hace tal comparación, los
diagramas de clases serían lo más cercano a
los planos estructurales de un ingeniero civil
5
Diagramas de Clases
(¿Para qué Sirven?)
Realizar la abstracción de un dominio y
formalizar los conceptos relacionados al
mismo (Conceptos / Modelo de Dominio)
Definir / Documentar una solución de
diseño: la estructura del sistema en términos
de clases, objetos y relaciones
Definir / Documentar modelos de datos, en
especial modelos de datos orientados a
objetos (función similar los diagramas ERE)
Menorniveldeabstracción
siempre es necesario conocer el nivel de abstracción
de un diagrama para poder interpretarlo correctamente
implementaciónconceptos
6
Diagramas de Clases
(Programación Orientada a Objetos)
La mayoría de los conceptos
que se presentan en las
siguientes transparencias
están relacionados con los
conceptos de programación
orientada a objetos (POO)
7
Diagramas de Clases
(Programación Orientada a Objetos)
¿Qué es una Clase?
8
Diagramas de Clases
(Notación Básica)
Clase / Clasificador: Definición de la estructura y el
comportamiento de un conjunto de objetos que tienen
(comparten) el mismo patrón estructural y de
comportamiento
Un ejemplo de una clase “número complejo”:
Base de Datos:
¿No les suena esto al concepto de tipo de entidad?
9
Diagramas de Clases
(Atributos y Métodos)
Atributos:
Propiedades relevantes de un clase
Representan su estructura
Pueden ser simples o compuestos
(primitivos u otras clases)
Métodos:
Comportamiento asociado a una
clase,
“Contrato” asociado a una clase
una clase tiene:
¿contrato?
luego hablamos
de esto
10
Diagramas de Clases
(Diagramas de Clases y Código)
A nivel de implementación,
la relación que existe entre el
código y una clase en UML
es muy importante
¡Necesito que hablemos el
mismo idioma!
11
Diagramas de Clases
(Diagramas de Clases y Código)
public class ComplexNumber {
private double r;
private double i;
public ComplexNumber(double r, double i) {
this.r = r;
this.i = i;
}
public double norm() {
return Math.sqrt(r * r + i * i);
}
}
El código es
Java ;-)
12
Diagramas de Clases
(Notación Avanzada)
Visibilidad:
- Privado
~ Paquete
# Protegido
+ Público
Nombre
Atributo
Valor por
Defecto
Tipo de Dato
Multiplicidad
Tipo de
Retorno
Parámetros
de Entrada
Nombre del
Método
Base de Datos:
Generalmente, cuando se desarrolla un modelo de
datos no se utiliza toda esta complejidad.
Por ejemplo, generalmente no se definen métodos
13
Diagramas de Clases
(Notación Avanzada)
Para los Atributos:
[visibilidad] [/] nombre [:tipo] [multiplicidad] [=valor por
omisión] [{propiedad}]
Para los Métodos:
[visibilidad] nombre [(lista de parámetros)] [{propiedad}]
Donde un parámetro es:
[dirección (in/out/inout)] nombre: tipo [multiplicidad] [=valor por
omisión]
Las propiedades pueden una o mas de las siguientes:
readOnly, isQuery, Concurrent, Guarded, Sequential, etcétera
... o cualquier otra predefinida ...
14
Diagramas de Clases
¿Clases y Objetos?
Clases y Objetos
¿qué es un objeto?
15
Diagramas de Clases
¿Clases y Objetos?
Clases y Objetos
¿qué es una instancia?
¿qué es instanciar?
16
Diagramas de Clases
¿Clases y Objetos?
Instancia:
Manifestación concreta de una
abstracción, que puede tener un
estado y a la que se le puede aplicar
un conjunto de operaciones
Instanciación / Instanciar:
Proceso de generación o creación de
instancias (objetos) de una clase
pedro = new Persona()
Objeto:
Manifestación concreta de una clase
(abstracción)
17
Diagramas de Clases
¿Clases y Objetos?
public class Persona {
private String nombre;
private char sexo;
private Date fechaNac;
private String profesion;
public Persona(
String nombre, char sexo, Date fechaNac, String profesion) {
this.nombre = nombre;
this.sexo = sexo;
this.fechaNac = fechaNac;
this.profesion = profesion;
}
}
existe una diferencia muy
importante entre un
Objeto y una Clase
18
Diagramas de Clases
¿Clases y Objetos?
Persona p1 = new Persona(
“Pedro”, 'M', new Date(16, 7, 1988), “Actor” );
Persona p2 = new Persona(
“Andrea”, 'F', new Date(14, 4, 1980), “Ceramista”);
Persona p3 = new Persona(
“María”, 'F', new Date(23, 11, 1960), “Médico” );
Persona p4 = new Persona(
“Luis”, 'M', new Date(12, 1, 1977), “Ingeniero”);
CrearInstancias(Instanciar)
19
Diagramas de Clases
(Parametrizables / Abstractas)
Clases Parametrizable:
Clases que se pueden
parametrizar con uno o más tipos
de datos según sea necesario
Generics en Java,
Templates en C++
Clases Abstractas:
Clases que no tienen
instrumentados / implementados
todos sus métodos
20
Diagramas de Clases
(Parametrizables / Abstractas)
public class Lista<Tipo> {
public void insertar (Tipo t)
{ /* código */ }
public void eliminar (Tipo t)
{ /* código */ }
public Tipo eliminar (int pos)
{ /* código */ }
public Tipo obtener (int pos)
{ /* código */ }
public Iterador iterador ()
{ /* código */ }
}
// La clase se usa de la siguiente forma:
Lista<int> listaDeEnteros = new Lista<int>();
Lista<Persona> listaDePersonas = new Lista<Persona>();
21
Diagramas de Clases
(Parametrizables / Abstractas)
public abstract class FiguraBase {
public void insertarEnCanvas(Canvas c) { /* código */ }
public void eliminarDeCanvas(Canvas c) { /* código */ }
// Los métodos siguientes son abstractos,
// es decir, no tienen implementación
public abstract double getArea();
public abstract double getPerimetro();
public abstract double getRectCont();
public abstract double getDibujar();
}
22
Diagramas de Clases
(Herencia / Especialización / Generalización)
Generalización:
Relación de tipo ES-UN(A), abstracciones de
generalización / especialización de clases
Herencia:
Propiedad que tienen las
clases de heredar de sus
super-clases estructura
y/o comportamiento
(Simple / Múltiple)
23
Diagramas de Clases
(Herencia / Especialización / Generalización)
Clase Padre
Clase Hija
Relación de
Herencia
(“es una”)
¿Herencia Simple o Múltiple?
24
Diagramas de Clases
(Herencia / Especialización / Generalización)
01) Persona p1 = new Persona();
02) Persona p2 = new Estudiante();
03) Persona p3 = new Empleado();
04) Persona p4 = new Preparador();
05) Empleado e1 = new Empleado();
06) Empleado e2 = new Preparador();
07) Estudiante s1 = new Estudiante();
08) Estudiante s2 = new Preparador();
09) Preparador r1 = new Preparador();
10) Empleado e3 = new Persona();
11) Estudiante s3 = new Persona();
12) Preparador r2 = new Persona();
13) Preparador r3 = new Empleado();
14) Preparador r4 = new Estudiante();
Herencia Simple:
Estudiante->Persona
Herencia Múltiple:
Preparador
->Empleado
->Estudiante
¿Cuáles son
Válidos?
25
Diagramas de Clases
(Herencia / Especialización / Generalización)
public abstract class Figura {
public abstract double calcArea ();
public abstract void dibujar (Canvas canvas);
}
public class Rectangulo
extends Figura {
// ...
}
public class Cuadrado
extends Rectangulo {
// ...
}
public class Elipse
extends Figura {
// ...
}
public class Circulo
extends Elipse {
// ...
}
26
Diagramas de Clases
(Herencia / Especialización / Generalización)
Herencia:
Disjunta / Traslapada
Total / Parcial
esto se usa principalmente en el modelado de datos
la mayoría de los lenguajes de programación no lo permiten
27
Relaciones (Vínculos)
¿asociaciones / relaciones?
¿1:1, 1:N y N:M?
se puede ver
mejor con un ejemplo
28
Relaciones (Vínculos)
1:N
Departamento
de Control
Departamento
de Computación
Profesores Departamentos
Departamento
de Investigación
de Operaciones
¿Con cuántos profesores puede estar asociado un departamento?
¿Y al contrario?
Vínculo / Relación
Trabaja En / Tiene
29
Vínculo / Relación
Dicta / Es dictada por
Relaciones (Vínculos)
N:M
Programación
10
Bases de Datos
Profesores Materias
Programación
20
¿Con cuántos profesores puede estar asociado una materia?
¿Y al contrario?
30
Relaciones (Vínculos)
1:1
Vínculo / Relación
Es novia de / Es novio de
Chicas Chicos
¿Con cuántos Chicos está asociada una Chica en particular?
¿Y al contrario?
31
Diagramas de Clases
(Relaciones / Vínculos / Asociaciones)
Asociaciones:
Representan relaciones estructurales entre las clases
(la forma en que están relacionadas entre si las clases)
¿cómo se implementan?
32
Diagramas de Clases
(Relaciones / Vínculos / Asociaciones)
public class Departamento {
// Una lista de profesores
// (Un departamento tiene muchos profesores)
private List<Profesor> profesorList;
}
// ...
public class Profesor {
// Una referencia a un departamento
// (Un profesor pertenece sólo a un departamento)
private Departamento departamentoRef;
}
33
Diagramas de Clases
(Relaciones / Vínculos / Asociaciones)
public class Estudiante {
// Una lista de asignaturas
// (Un estudiante tiene muchas asignaturas)
private List<Asignatura> asignaturaList;
}
// ...
public class Asignatura {
// Una lista de estudiantes
// (Una asignatura tiene muchos estudiantes)
private List<Estudiante> estudianteList;
}
34
Diagramas de Clases
(Relaciones / Vínculos / Asociaciones)
N:M
¿hay otra forma de implementarlo?
35
Diagramas de Clases
(Relaciones / Vínculos / Asociaciones)
Una relación muchos a muchos se puede ver
como dos relaciones uno a muchos
36
Diagramas de Clases
(Relaciones / Vínculos / Asociaciones)
public class Estudiante {
// Una lista de EstAsigRelacion (Una clase relación)
private List<EstAsigRelacion> estAsigRelacionList;
}
public class EstAsigRelacion {
// referencias cruzadas a las dos clases relacionadas
private Estudiante estudianteRef;
private Asignatura asignaturaRef;
}
public class Asignatura {
// Una lista de EstAsigRelacion (Una clase relación)
private List<EstAsigRelacion> estAsigRelacionList;
}
37
Diagramas de Clases
(Relaciones / Vínculos / Asociaciones)
public class Estudiante {
// Una lista de Nota (Una clase asociación)
private List<Nota> notaList;
}
public class Nota {
// Datos de la asociación
private double nota;
private int asistencias
// referencias cruzadas a
// las dos clases relacionadas
private Estudiante estudianteRef;
private Seccion seccionRef;
}
public class Seccion {
// Una lista de Nota (Una clase asociación)
private List<Nota> notaList;
}
38
Diagramas de Clases
(Relaciones / Vínculos / Asociaciones)
public class Departamento {
// Una referencia a una secretaria
// (Un departamento tiene sólo una secretaria)
private Secretaria secretariaRef;
}
// ...
public class Secretaria {
// Una referencia a un departamento
// (Una secretaria pertenece sólo a un departamento)
private Departamento departamentoRef;
}
39
Diagramas de Clases
(Asociaciones / Navegabilidad)
Navegabilidad:
Permite definir qué lado de la asociación es
accesible desde el otro lado
Indefinido
Navegable
NO
navegable
Navegable por
ambos lados
40
Diagramas de Clases
(Agregación / Composición)
“una asociación normal entre dos clases representa una
relación estructural entre iguales, es decir, ambas clases
están conceptualmente en el mismo nivel”*
*Booch, Rumbaugh, Jacobson, El Lenguaje Unificado de Modelado, Pearson Addison-Wesley 1ra. Edición
“en algunos casos, se desea modelar una relación de tipo
todo/parte, en la cual una de las clases representa un todo
y la otra una parte del todo”*
41
Diagramas de Clases
(Agregación / Composición)
Agregación:
Es una relación en la que una de las clases representa un
todo y la otra representa parte de ese todo
Una agregación representa una relación de tipo “tiene un”
42
Diagramas de Clases
(Agregación / Composición)
“Precise semantics of shared aggregation varies by
application area and modeler”*
*Tomado de la versión 2.2 del estándar de UML
Cuidado:
En muchos casos las agregaciones (y las
composiciones como veremos más adelante), pueden
ser fuente de mucha confusión
43
Diagramas de Clases
(Agregación / Composición)
Composición:
Es una forma más fuerte de la agregación, en la que
las partes no pueden existir sin el todo
El todo es responsable del ciclo de vida de las partes
objeto
“compuesto”
objeto
“componente”
44
Diagramas de Clases
(Agregación / Composición)
composite
object
composed
object
“the composite object has responsibility for the existence
and storage of the composed objects (parts)”
En este caso el estándar es más claro
*Tomado de la versión 2.2 del estándar de UML
45
Diagramas de Clases
(Agregación / Composición)
Composición: ¡Las partes NO
pueden ser compartidas por
varios todos!
Agregación: ¡Las partes
pueden ser compartidas por
varios todos!
peor aún
¿No hay una aparente contradicción entre
Rectángulo, Circulo y la composición con Punto?
46
Diagramas de Clases
(Agregación / Composición)
En realidad, si se piensa en términos de
instancias no hay ninguna contradicción
47
Diagramas de Clases
(Dependencia)
Dependencia:
Relación en la que una clase necesita (requiere) a otra para poder
funcionar (esto no implica necesariamente una asociación)
La clase persona
depende de la
clase teléfono
Si se borra una
las clases de la
dependencia,
¿en qué caso se
produce un error
de compilación?
48
Diagramas de Clases
¿qué es una interfaz?
¿cuál es la Interfaz de
una clase?
49
Diagramas de Clases
(Interfaces / Realizaciones)
Interfaz (desde el punto de vista de POO):
Todas los métodos y atributos públicos que exporta una clase
El “contrato” por medio del cual se accede/utiliza una clase
Interfaz (desde el punto de vista de UML):
Clase/Tipo asociado que describe (no implementa) un
comportamiento público/visible
50
Diagramas de Clases
(Interfaces / Realizaciones)
La interfaz IGeometrico es
implementada / realizada tanto
por Círculo como por
Rectángulo
Desde el punto de vista de
POO, tanto Círculo como
Rectángulo son objetos de tipo
IGeometrico
“Contrato”
“Contrato”
51
Diagramas de Clases
(Interfaces / Realizaciones)
01) IGeometrico g1 = new IGeometrico();
02) IDibujable d1 = new IDibujable();
03) IGeometrico g2 = new Rectangulo();
04) IGeometrico g3 = new Circulo();
05) IDibujable d2 = new Rectangulo();
06) IDibujable d3 = new Circulo();
06) g2.getArea();
07) g2.dibujar();
08) g2.getP1();
¿Cuáles son
Válidos?
52
Diagramas de Clases
(Interfaces / Realizaciones)
<<interface>> es un estereotipoEditorGrafico es una clase
que usa la interfaz
Idibujable,
independientemente que la
implemente un Círculo o
cualquier otra clase
(Polimorfismo)
¡El acto de magia de las interfaces y el polimorfismo!
53
Diagramas de Clases
(Interfaces / Realizaciones)
import java.awt.Point;
import java.awt.Rectangle;
public class Circulo implements IGeometrico, IDibujable {
private double centro;
private double radio;
public double getArea() { /* de IGeometrico */ }
public double getPerimetro() { /* de IGeometrico */ }
public Rectangle getRectCont() { /* de IGeometrico */ }
public void dibujar() { /* de IDibujable */ }
public Point getCentro() { /* de circulo */ }
public void setCentro(...) { /* de circulo */ }
public double getRadio() { /* de circulo */ }
public void setRadio(...) { /* de circulo */ }
}
54
Diagramas de Clases
(Interfaces / Realizaciones)
import java.awt.Rectangle;
public interface IGeometrico {
public double getArea();
public double getPerimetro();
public Rectangle getRectCont();
}
public interface IDibujable {
public void dibujar();
}
55
Diagramas de Clases
(Interfaces / Realizaciones)
List<IDibujable> elementosDibujar;
// ...
for (IDibujable dibujable :
elementosDibujar) {
// No importa si dibujable es
// un círculo, rectángulo, etcétera
// Los puedo manejar a todos igual
// porque tienen una interfaz en común
dibujable.dibujar();
}
¡El acto de magia de las interfaces y el polimorfismo!
Algunos de estos
son círculos, otros
son rectángulos,
estrellas, líneas,
etcétera...
Pero todos
implementan la
interfaz IDibujable
56
Gracias
¡Gracias!

Más contenido relacionado

La actualidad más candente

Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetoshector_h30
 
Mapa conceptual uml z1-
Mapa conceptual uml  z1-Mapa conceptual uml  z1-
Mapa conceptual uml z1-karlanm07
 
Antecedentes de la tgs
Antecedentes de la tgsAntecedentes de la tgs
Antecedentes de la tgsjulianj
 
Manejo de archivos en JAVA
Manejo de archivos en JAVAManejo de archivos en JAVA
Manejo de archivos en JAVAMichelle Torres
 
Modelo entidad relacion ok
Modelo entidad relacion okModelo entidad relacion ok
Modelo entidad relacion okBB
 
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoAula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoRudson Kiyoshi Souza Carvalho
 
Capitulo 16- Excepciones en Java
Capitulo 16- Excepciones en JavaCapitulo 16- Excepciones en Java
Capitulo 16- Excepciones en JavaJonnathan Cuvi
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareRoberth Loaiza
 
Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Marta Silvia Tabares
 
Otras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosOtras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosEmer Gio
 
Collaboration diagram- UML diagram
Collaboration diagram- UML diagram Collaboration diagram- UML diagram
Collaboration diagram- UML diagram Ramakant Soni
 
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de ClasesAdal Dg
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de usoTensor
 
Analysis modeling in software engineering
Analysis modeling in software engineeringAnalysis modeling in software engineering
Analysis modeling in software engineeringMuhammadTalha436
 

La actualidad más candente (20)

Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A ObjetosMetodologías Para AnáLisis Y DiseñO Orientado A Objetos
Metodologías Para AnáLisis Y DiseñO Orientado A Objetos
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relación
 
Mapa conceptual uml z1-
Mapa conceptual uml  z1-Mapa conceptual uml  z1-
Mapa conceptual uml z1-
 
Antecedentes de la tgs
Antecedentes de la tgsAntecedentes de la tgs
Antecedentes de la tgs
 
Manejo de archivos en JAVA
Manejo de archivos en JAVAManejo de archivos en JAVA
Manejo de archivos en JAVA
 
Modelo entidad relacion ok
Modelo entidad relacion okModelo entidad relacion ok
Modelo entidad relacion ok
 
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. CarvalhoAula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
Aula de Analise e Projetos - Diagramas UML - prof. Rudson Kiyoshi S. Carvalho
 
modelo entidad-relacion
modelo entidad-relacionmodelo entidad-relacion
modelo entidad-relacion
 
Capitulo 16- Excepciones en Java
Capitulo 16- Excepciones en JavaCapitulo 16- Excepciones en Java
Capitulo 16- Excepciones en Java
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 
Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2Ingeniería de software II- Parte 3.2
Ingeniería de software II- Parte 3.2
 
Otras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datosOtras relaciones y modelos bases de datos
Otras relaciones y modelos bases de datos
 
Collaboration diagram- UML diagram
Collaboration diagram- UML diagram Collaboration diagram- UML diagram
Collaboration diagram- UML diagram
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de Clases
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de uso
 
Flujo datos
Flujo datosFlujo datos
Flujo datos
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Analysis modeling in software engineering
Analysis modeling in software engineeringAnalysis modeling in software engineering
Analysis modeling in software engineering
 
8a Curso de POO en Java - crear proyecto eclipse
8a Curso de POO en Java - crear proyecto eclipse8a Curso de POO en Java - crear proyecto eclipse
8a Curso de POO en Java - crear proyecto eclipse
 

Destacado (20)

Clase 11 uml_casos_de_uso
Clase 11 uml_casos_de_usoClase 11 uml_casos_de_uso
Clase 11 uml_casos_de_uso
 
Clase 04 diseno_ui
Clase 04 diseno_uiClase 04 diseno_ui
Clase 04 diseno_ui
 
Clases y uml
Clases y umlClases y uml
Clases y uml
 
Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
Clase 03 XP
Clase 03 XPClase 03 XP
Clase 03 XP
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemplo
 
Hg mini manual
Hg mini manualHg mini manual
Hg mini manual
 
Clase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionClase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacion
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigo
 
Clase 05b pruebas introduccion
Clase 05b pruebas introduccionClase 05b pruebas introduccion
Clase 05b pruebas introduccion
 
Clase 01 agilidad
Clase 01 agilidadClase 01 agilidad
Clase 01 agilidad
 
Clase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualClase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtual
 
Clase 09a frameworks
Clase 09a frameworksClase 09a frameworks
Clase 09a frameworks
 
Clase 01 presentacion
Clase 01 presentacionClase 01 presentacion
Clase 01 presentacion
 
Clase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaClase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cleda
 
Clase 05c niveles de pruebas
Clase 05c niveles de pruebasClase 05c niveles de pruebas
Clase 05c niveles de pruebas
 
Clase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemploClase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemplo
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 
Clase 04a requerimientos introduccion
Clase 04a requerimientos introduccionClase 04a requerimientos introduccion
Clase 04a requerimientos introduccion
 
Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitectura
 

Similar a UML Diagramas Clases

Similar a UML Diagramas Clases (20)

Clases 2
Clases 2Clases 2
Clases 2
 
Introducción a la progrogramación orientada a objetos - UML
Introducción a la progrogramación orientada a objetos - UMLIntroducción a la progrogramación orientada a objetos - UML
Introducción a la progrogramación orientada a objetos - UML
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
diapositivas_basicas_sobre_la_notacion_uml.pptx
diapositivas_basicas_sobre_la_notacion_uml.pptxdiapositivas_basicas_sobre_la_notacion_uml.pptx
diapositivas_basicas_sobre_la_notacion_uml.pptx
 
Diseño oo
Diseño ooDiseño oo
Diseño oo
 
Diseño conceptual de bases de Batos
Diseño conceptual de bases de BatosDiseño conceptual de bases de Batos
Diseño conceptual de bases de Batos
 
Unidad 4 Modelo De Datos Para La ImplementacióN
Unidad 4 Modelo De Datos Para La ImplementacióNUnidad 4 Modelo De Datos Para La ImplementacióN
Unidad 4 Modelo De Datos Para La ImplementacióN
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisis
 
03 Modelo Relacional
03 Modelo Relacional03 Modelo Relacional
03 Modelo Relacional
 
DIAGRAMAS DE CLASE
DIAGRAMAS DE CLASEDIAGRAMAS DE CLASE
DIAGRAMAS DE CLASE
 
UML.pptx
UML.pptxUML.pptx
UML.pptx
 
UT5 - Introduccion al lenguaje unificado UML.pdf
UT5 - Introduccion al lenguaje unificado UML.pdfUT5 - Introduccion al lenguaje unificado UML.pdf
UT5 - Introduccion al lenguaje unificado UML.pdf
 
Resumen lectura el papel de los esquemas Hitt
Resumen lectura el papel de los esquemas HittResumen lectura el papel de los esquemas Hitt
Resumen lectura el papel de los esquemas Hitt
 
Diagramas de clase(dream team)
Diagramas de clase(dream team)Diagramas de clase(dream team)
Diagramas de clase(dream team)
 
CLASES DE DIAGRAMAS
CLASES DE DIAGRAMAS CLASES DE DIAGRAMAS
CLASES DE DIAGRAMAS
 
Paradigma orientado a objetos
Paradigma orientado a objetosParadigma orientado a objetos
Paradigma orientado a objetos
 
PresentacióN Tema 8
PresentacióN Tema 8PresentacióN Tema 8
PresentacióN Tema 8
 
SISTEMA ORIENTADO A OBJETOS
SISTEMA ORIENTADO A OBJETOSSISTEMA ORIENTADO A OBJETOS
SISTEMA ORIENTADO A OBJETOS
 
3a5 shirley vinces- tarea1
3a5 shirley vinces- tarea13a5 shirley vinces- tarea1
3a5 shirley vinces- tarea1
 
Bd capitulo ii
Bd capitulo iiBd capitulo ii
Bd capitulo ii
 

Más de Demián Gutierrez

Más de Demián Gutierrez (9)

Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 
Clase 14a uml_estados
Clase 14a uml_estadosClase 14a uml_estados
Clase 14a uml_estados
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplos
 
Clase 09c seleccion
Clase 09c seleccionClase 09c seleccion
Clase 09c seleccion
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicos
 
Clase 04b requerimientos documentacion
Clase 04b requerimientos documentacionClase 04b requerimientos documentacion
Clase 04b requerimientos documentacion
 
Clase 02 Scrum
Clase 02 ScrumClase 02 Scrum
Clase 02 Scrum
 

Último

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 

Último (20)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 

UML Diagramas Clases

  • 1. 1 UML Diagramas de Clases (UML ilustrado) Universidad de los Andes Demián Gutierrez Noviembre 2012
  • 2. 2 Diagramas de Clases (¿Qué Muestran?) La estructura estática del sistema modelado ¿simple verdad? ¿estructura estática?
  • 3. 3 Diagramas de Clases (¿Qué Muestran?) Se concentran en los elementos del sistema de forma independiente del tiempo (muestran aspectos estáticos y no dinámicos) ¿estructura estática?
  • 4. 4 Diagramas de Clases (¿Qué Muestran?) Las clases, las interfaces / atributos de las clases, las relaciones que existen entre las distintas clases del sistema Comparar el software con la ingeniería civil es la peor analogía que puede existir... Pero si se hace tal comparación, los diagramas de clases serían lo más cercano a los planos estructurales de un ingeniero civil
  • 5. 5 Diagramas de Clases (¿Para qué Sirven?) Realizar la abstracción de un dominio y formalizar los conceptos relacionados al mismo (Conceptos / Modelo de Dominio) Definir / Documentar una solución de diseño: la estructura del sistema en términos de clases, objetos y relaciones Definir / Documentar modelos de datos, en especial modelos de datos orientados a objetos (función similar los diagramas ERE) Menorniveldeabstracción siempre es necesario conocer el nivel de abstracción de un diagrama para poder interpretarlo correctamente implementaciónconceptos
  • 6. 6 Diagramas de Clases (Programación Orientada a Objetos) La mayoría de los conceptos que se presentan en las siguientes transparencias están relacionados con los conceptos de programación orientada a objetos (POO)
  • 7. 7 Diagramas de Clases (Programación Orientada a Objetos) ¿Qué es una Clase?
  • 8. 8 Diagramas de Clases (Notación Básica) Clase / Clasificador: Definición de la estructura y el comportamiento de un conjunto de objetos que tienen (comparten) el mismo patrón estructural y de comportamiento Un ejemplo de una clase “número complejo”: Base de Datos: ¿No les suena esto al concepto de tipo de entidad?
  • 9. 9 Diagramas de Clases (Atributos y Métodos) Atributos: Propiedades relevantes de un clase Representan su estructura Pueden ser simples o compuestos (primitivos u otras clases) Métodos: Comportamiento asociado a una clase, “Contrato” asociado a una clase una clase tiene: ¿contrato? luego hablamos de esto
  • 10. 10 Diagramas de Clases (Diagramas de Clases y Código) A nivel de implementación, la relación que existe entre el código y una clase en UML es muy importante ¡Necesito que hablemos el mismo idioma!
  • 11. 11 Diagramas de Clases (Diagramas de Clases y Código) public class ComplexNumber { private double r; private double i; public ComplexNumber(double r, double i) { this.r = r; this.i = i; } public double norm() { return Math.sqrt(r * r + i * i); } } El código es Java ;-)
  • 12. 12 Diagramas de Clases (Notación Avanzada) Visibilidad: - Privado ~ Paquete # Protegido + Público Nombre Atributo Valor por Defecto Tipo de Dato Multiplicidad Tipo de Retorno Parámetros de Entrada Nombre del Método Base de Datos: Generalmente, cuando se desarrolla un modelo de datos no se utiliza toda esta complejidad. Por ejemplo, generalmente no se definen métodos
  • 13. 13 Diagramas de Clases (Notación Avanzada) Para los Atributos: [visibilidad] [/] nombre [:tipo] [multiplicidad] [=valor por omisión] [{propiedad}] Para los Métodos: [visibilidad] nombre [(lista de parámetros)] [{propiedad}] Donde un parámetro es: [dirección (in/out/inout)] nombre: tipo [multiplicidad] [=valor por omisión] Las propiedades pueden una o mas de las siguientes: readOnly, isQuery, Concurrent, Guarded, Sequential, etcétera ... o cualquier otra predefinida ...
  • 14. 14 Diagramas de Clases ¿Clases y Objetos? Clases y Objetos ¿qué es un objeto?
  • 15. 15 Diagramas de Clases ¿Clases y Objetos? Clases y Objetos ¿qué es una instancia? ¿qué es instanciar?
  • 16. 16 Diagramas de Clases ¿Clases y Objetos? Instancia: Manifestación concreta de una abstracción, que puede tener un estado y a la que se le puede aplicar un conjunto de operaciones Instanciación / Instanciar: Proceso de generación o creación de instancias (objetos) de una clase pedro = new Persona() Objeto: Manifestación concreta de una clase (abstracción)
  • 17. 17 Diagramas de Clases ¿Clases y Objetos? public class Persona { private String nombre; private char sexo; private Date fechaNac; private String profesion; public Persona( String nombre, char sexo, Date fechaNac, String profesion) { this.nombre = nombre; this.sexo = sexo; this.fechaNac = fechaNac; this.profesion = profesion; } } existe una diferencia muy importante entre un Objeto y una Clase
  • 18. 18 Diagramas de Clases ¿Clases y Objetos? Persona p1 = new Persona( “Pedro”, 'M', new Date(16, 7, 1988), “Actor” ); Persona p2 = new Persona( “Andrea”, 'F', new Date(14, 4, 1980), “Ceramista”); Persona p3 = new Persona( “María”, 'F', new Date(23, 11, 1960), “Médico” ); Persona p4 = new Persona( “Luis”, 'M', new Date(12, 1, 1977), “Ingeniero”); CrearInstancias(Instanciar)
  • 19. 19 Diagramas de Clases (Parametrizables / Abstractas) Clases Parametrizable: Clases que se pueden parametrizar con uno o más tipos de datos según sea necesario Generics en Java, Templates en C++ Clases Abstractas: Clases que no tienen instrumentados / implementados todos sus métodos
  • 20. 20 Diagramas de Clases (Parametrizables / Abstractas) public class Lista<Tipo> { public void insertar (Tipo t) { /* código */ } public void eliminar (Tipo t) { /* código */ } public Tipo eliminar (int pos) { /* código */ } public Tipo obtener (int pos) { /* código */ } public Iterador iterador () { /* código */ } } // La clase se usa de la siguiente forma: Lista<int> listaDeEnteros = new Lista<int>(); Lista<Persona> listaDePersonas = new Lista<Persona>();
  • 21. 21 Diagramas de Clases (Parametrizables / Abstractas) public abstract class FiguraBase { public void insertarEnCanvas(Canvas c) { /* código */ } public void eliminarDeCanvas(Canvas c) { /* código */ } // Los métodos siguientes son abstractos, // es decir, no tienen implementación public abstract double getArea(); public abstract double getPerimetro(); public abstract double getRectCont(); public abstract double getDibujar(); }
  • 22. 22 Diagramas de Clases (Herencia / Especialización / Generalización) Generalización: Relación de tipo ES-UN(A), abstracciones de generalización / especialización de clases Herencia: Propiedad que tienen las clases de heredar de sus super-clases estructura y/o comportamiento (Simple / Múltiple)
  • 23. 23 Diagramas de Clases (Herencia / Especialización / Generalización) Clase Padre Clase Hija Relación de Herencia (“es una”) ¿Herencia Simple o Múltiple?
  • 24. 24 Diagramas de Clases (Herencia / Especialización / Generalización) 01) Persona p1 = new Persona(); 02) Persona p2 = new Estudiante(); 03) Persona p3 = new Empleado(); 04) Persona p4 = new Preparador(); 05) Empleado e1 = new Empleado(); 06) Empleado e2 = new Preparador(); 07) Estudiante s1 = new Estudiante(); 08) Estudiante s2 = new Preparador(); 09) Preparador r1 = new Preparador(); 10) Empleado e3 = new Persona(); 11) Estudiante s3 = new Persona(); 12) Preparador r2 = new Persona(); 13) Preparador r3 = new Empleado(); 14) Preparador r4 = new Estudiante(); Herencia Simple: Estudiante->Persona Herencia Múltiple: Preparador ->Empleado ->Estudiante ¿Cuáles son Válidos?
  • 25. 25 Diagramas de Clases (Herencia / Especialización / Generalización) public abstract class Figura { public abstract double calcArea (); public abstract void dibujar (Canvas canvas); } public class Rectangulo extends Figura { // ... } public class Cuadrado extends Rectangulo { // ... } public class Elipse extends Figura { // ... } public class Circulo extends Elipse { // ... }
  • 26. 26 Diagramas de Clases (Herencia / Especialización / Generalización) Herencia: Disjunta / Traslapada Total / Parcial esto se usa principalmente en el modelado de datos la mayoría de los lenguajes de programación no lo permiten
  • 27. 27 Relaciones (Vínculos) ¿asociaciones / relaciones? ¿1:1, 1:N y N:M? se puede ver mejor con un ejemplo
  • 28. 28 Relaciones (Vínculos) 1:N Departamento de Control Departamento de Computación Profesores Departamentos Departamento de Investigación de Operaciones ¿Con cuántos profesores puede estar asociado un departamento? ¿Y al contrario? Vínculo / Relación Trabaja En / Tiene
  • 29. 29 Vínculo / Relación Dicta / Es dictada por Relaciones (Vínculos) N:M Programación 10 Bases de Datos Profesores Materias Programación 20 ¿Con cuántos profesores puede estar asociado una materia? ¿Y al contrario?
  • 30. 30 Relaciones (Vínculos) 1:1 Vínculo / Relación Es novia de / Es novio de Chicas Chicos ¿Con cuántos Chicos está asociada una Chica en particular? ¿Y al contrario?
  • 31. 31 Diagramas de Clases (Relaciones / Vínculos / Asociaciones) Asociaciones: Representan relaciones estructurales entre las clases (la forma en que están relacionadas entre si las clases) ¿cómo se implementan?
  • 32. 32 Diagramas de Clases (Relaciones / Vínculos / Asociaciones) public class Departamento { // Una lista de profesores // (Un departamento tiene muchos profesores) private List<Profesor> profesorList; } // ... public class Profesor { // Una referencia a un departamento // (Un profesor pertenece sólo a un departamento) private Departamento departamentoRef; }
  • 33. 33 Diagramas de Clases (Relaciones / Vínculos / Asociaciones) public class Estudiante { // Una lista de asignaturas // (Un estudiante tiene muchas asignaturas) private List<Asignatura> asignaturaList; } // ... public class Asignatura { // Una lista de estudiantes // (Una asignatura tiene muchos estudiantes) private List<Estudiante> estudianteList; }
  • 34. 34 Diagramas de Clases (Relaciones / Vínculos / Asociaciones) N:M ¿hay otra forma de implementarlo?
  • 35. 35 Diagramas de Clases (Relaciones / Vínculos / Asociaciones) Una relación muchos a muchos se puede ver como dos relaciones uno a muchos
  • 36. 36 Diagramas de Clases (Relaciones / Vínculos / Asociaciones) public class Estudiante { // Una lista de EstAsigRelacion (Una clase relación) private List<EstAsigRelacion> estAsigRelacionList; } public class EstAsigRelacion { // referencias cruzadas a las dos clases relacionadas private Estudiante estudianteRef; private Asignatura asignaturaRef; } public class Asignatura { // Una lista de EstAsigRelacion (Una clase relación) private List<EstAsigRelacion> estAsigRelacionList; }
  • 37. 37 Diagramas de Clases (Relaciones / Vínculos / Asociaciones) public class Estudiante { // Una lista de Nota (Una clase asociación) private List<Nota> notaList; } public class Nota { // Datos de la asociación private double nota; private int asistencias // referencias cruzadas a // las dos clases relacionadas private Estudiante estudianteRef; private Seccion seccionRef; } public class Seccion { // Una lista de Nota (Una clase asociación) private List<Nota> notaList; }
  • 38. 38 Diagramas de Clases (Relaciones / Vínculos / Asociaciones) public class Departamento { // Una referencia a una secretaria // (Un departamento tiene sólo una secretaria) private Secretaria secretariaRef; } // ... public class Secretaria { // Una referencia a un departamento // (Una secretaria pertenece sólo a un departamento) private Departamento departamentoRef; }
  • 39. 39 Diagramas de Clases (Asociaciones / Navegabilidad) Navegabilidad: Permite definir qué lado de la asociación es accesible desde el otro lado Indefinido Navegable NO navegable Navegable por ambos lados
  • 40. 40 Diagramas de Clases (Agregación / Composición) “una asociación normal entre dos clases representa una relación estructural entre iguales, es decir, ambas clases están conceptualmente en el mismo nivel”* *Booch, Rumbaugh, Jacobson, El Lenguaje Unificado de Modelado, Pearson Addison-Wesley 1ra. Edición “en algunos casos, se desea modelar una relación de tipo todo/parte, en la cual una de las clases representa un todo y la otra una parte del todo”*
  • 41. 41 Diagramas de Clases (Agregación / Composición) Agregación: Es una relación en la que una de las clases representa un todo y la otra representa parte de ese todo Una agregación representa una relación de tipo “tiene un”
  • 42. 42 Diagramas de Clases (Agregación / Composición) “Precise semantics of shared aggregation varies by application area and modeler”* *Tomado de la versión 2.2 del estándar de UML Cuidado: En muchos casos las agregaciones (y las composiciones como veremos más adelante), pueden ser fuente de mucha confusión
  • 43. 43 Diagramas de Clases (Agregación / Composición) Composición: Es una forma más fuerte de la agregación, en la que las partes no pueden existir sin el todo El todo es responsable del ciclo de vida de las partes objeto “compuesto” objeto “componente”
  • 44. 44 Diagramas de Clases (Agregación / Composición) composite object composed object “the composite object has responsibility for the existence and storage of the composed objects (parts)” En este caso el estándar es más claro *Tomado de la versión 2.2 del estándar de UML
  • 45. 45 Diagramas de Clases (Agregación / Composición) Composición: ¡Las partes NO pueden ser compartidas por varios todos! Agregación: ¡Las partes pueden ser compartidas por varios todos! peor aún ¿No hay una aparente contradicción entre Rectángulo, Circulo y la composición con Punto?
  • 46. 46 Diagramas de Clases (Agregación / Composición) En realidad, si se piensa en términos de instancias no hay ninguna contradicción
  • 47. 47 Diagramas de Clases (Dependencia) Dependencia: Relación en la que una clase necesita (requiere) a otra para poder funcionar (esto no implica necesariamente una asociación) La clase persona depende de la clase teléfono Si se borra una las clases de la dependencia, ¿en qué caso se produce un error de compilación?
  • 48. 48 Diagramas de Clases ¿qué es una interfaz? ¿cuál es la Interfaz de una clase?
  • 49. 49 Diagramas de Clases (Interfaces / Realizaciones) Interfaz (desde el punto de vista de POO): Todas los métodos y atributos públicos que exporta una clase El “contrato” por medio del cual se accede/utiliza una clase Interfaz (desde el punto de vista de UML): Clase/Tipo asociado que describe (no implementa) un comportamiento público/visible
  • 50. 50 Diagramas de Clases (Interfaces / Realizaciones) La interfaz IGeometrico es implementada / realizada tanto por Círculo como por Rectángulo Desde el punto de vista de POO, tanto Círculo como Rectángulo son objetos de tipo IGeometrico “Contrato” “Contrato”
  • 51. 51 Diagramas de Clases (Interfaces / Realizaciones) 01) IGeometrico g1 = new IGeometrico(); 02) IDibujable d1 = new IDibujable(); 03) IGeometrico g2 = new Rectangulo(); 04) IGeometrico g3 = new Circulo(); 05) IDibujable d2 = new Rectangulo(); 06) IDibujable d3 = new Circulo(); 06) g2.getArea(); 07) g2.dibujar(); 08) g2.getP1(); ¿Cuáles son Válidos?
  • 52. 52 Diagramas de Clases (Interfaces / Realizaciones) <<interface>> es un estereotipoEditorGrafico es una clase que usa la interfaz Idibujable, independientemente que la implemente un Círculo o cualquier otra clase (Polimorfismo) ¡El acto de magia de las interfaces y el polimorfismo!
  • 53. 53 Diagramas de Clases (Interfaces / Realizaciones) import java.awt.Point; import java.awt.Rectangle; public class Circulo implements IGeometrico, IDibujable { private double centro; private double radio; public double getArea() { /* de IGeometrico */ } public double getPerimetro() { /* de IGeometrico */ } public Rectangle getRectCont() { /* de IGeometrico */ } public void dibujar() { /* de IDibujable */ } public Point getCentro() { /* de circulo */ } public void setCentro(...) { /* de circulo */ } public double getRadio() { /* de circulo */ } public void setRadio(...) { /* de circulo */ } }
  • 54. 54 Diagramas de Clases (Interfaces / Realizaciones) import java.awt.Rectangle; public interface IGeometrico { public double getArea(); public double getPerimetro(); public Rectangle getRectCont(); } public interface IDibujable { public void dibujar(); }
  • 55. 55 Diagramas de Clases (Interfaces / Realizaciones) List<IDibujable> elementosDibujar; // ... for (IDibujable dibujable : elementosDibujar) { // No importa si dibujable es // un círculo, rectángulo, etcétera // Los puedo manejar a todos igual // porque tienen una interfaz en común dibujable.dibujar(); } ¡El acto de magia de las interfaces y el polimorfismo! Algunos de estos son círculos, otros son rectángulos, estrellas, líneas, etcétera... Pero todos implementan la interfaz IDibujable