SlideShare una empresa de Scribd logo
1 de 64
Descargar para leer sin conexión
1
UML
Diagramas de Clases
(UML ilustrado)
Universidad de Los Andes
Demián Gutierrez
Marzo 2011
2
Diagramas de Clases
(¿Qué Muestran?)
La estructura estática del sistema modelado
(piense en el plano estructural de un ingeniero civil)
Las relaciones que existen entre las distintas
clases y objetos del sistema
Las clases y objetos del sistema
y su estructura interna
Se concentran en los elementos del sistema de
forma independiente del tiempo
(Muestran aspectos estáticos y no dinámicos)
3
Diagramas de Clases
(¿Para qué Sirven?)
Realizar la abstracción de un dominio y formalizar el
análisis de los conceptos relacionados al mismo
(Modelo de Dominio)
(...o de cualquier tipo de conceptos)
Definir / Documentar una solución de diseño, es
decir, la estructura del sistema que se va a
implementar en términos de clases y objetos
Definir / Documentar modelado de datos
(Cumplen la misma función en este sentido de los
diagramas ERE)
4
Diagramas de Clases
Advertencia
5
Nota Importante
El hecho de que exista cierta característica en un
diagrama (ej: la declaración de métodos) no significa
que de forma obligatoria se deba usar, simplemente
son herramientas que están disponibles.
Cuando usted arregla algo, no usa todas las
herramientas de su caja de herramientas, sólo usa lo
que necesita para realizar el trabajo.
Igual ocurre con UML y las herramientas de modelado,
use sólo las herramientas (diagramas / constructos)
que necesita para una situación particular y no “sobre
use” las herramientas, tratando de usarlas sólo porque
si...
6
Diagramas de Clases
¿Qué es un
Dominio de
Aplicación?
¿Qué es un Modelo
de Dominio?
7
Diagramas de Clases
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)
vistos en PR2
8
Diagramas de Clases
¿Qué es una Clase?
9
Diagramas de Clases
(¿Que es una Clase?)
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?
10
Diagramas de Clases
(Atributos y Objetos)
Atributos:
Propiedades relevantes de un clase
Representan su estructura
Pueden ser simples o compuestos
Métodos:
Comportamiento asociado a una
clase
11
Diagramas de Clases
La relación que existe
entre el código y una
clase en UML es muy
importante
¡Necesito que hablemos
el mismo idioma!
12
Diagramas de Clases
(¿Que es una Clase?)
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 ;-)
13
Diagramas de Clases
(¿Que es una Clase?)
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
14
Diagramas de Clases
(¿Que es una Clase?)
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 ...
15
Diagramas de Clases
¿qué es un objeto?
¿qué es una instancia?
¿qué es instanciar?
16
Conceptos de Objetos
(Diagramas de Clases)
Instancia:
Cada objeto que pertenece a una
clase
Instanciación / Instanciar:
Proceso de generación o creación de
las instancias (objetos) de una clase
pedro = new Persona()
Objeto:
Representación de algo que se
describe mediante un identificador,
una estructura y un comportamiento.
“Instancia de una Clase”
17
Diagramas de Clases
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
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 / Utilitarias)
Clases Parametrizables: Plantillas
de clases que se pueden
parametrizar con uno o más tipos
de datos según sea necesario
(Clases Genéricas)
Clases Abstractas: Clases que no
tienen implementación para todos
los métodos definidos
Clases Utilitarias: Clases que
contienen librerías de funciones
(no interesa mucho la
implementación)
20
Diagramas de Clases
(Parametrizables / Abstractas / Utilitarias)
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 / Utilitarias)
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
(Especialización / Generalización / Herencia)
Jerarquía de Clases:
Relación ES-UN(A),
abstracciones de
generalización /
especialización de clases
Herencia: Propiedad que
tienen las clases de heredar
de sus superclases estructura
y/o comportamiento (Simple /
Múltiple)
23
Diagramas de Clases
(Especialización / Generalización / Herencia)
Herencia:
Disjunta / Traslapada
Total / Parcial
24
Diagramas de Clases
(Especialización / Generalización / Herencia)
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 {
// ...
}
Mayo,2008 EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. A-08. 25
Vista lógica o
estructural
• Polimorfismo: se puede usar el
mismo nombre para la definición de un
método en varias clases sin importar la
relación entre las mismas.
• Reescritura o
sobrecarga: permite nombrar
código diferente con el mismo nombre
para más de una clase de objetos.
• Encadenamiento tardío:
permite seleccionar el código adecuado al
objeto definido en la invocación del método.
Persona
-oid: OID
-nombre: Cadena(64)[1]
-direccion: Cadena(128)[0..1]
-telefono: Cadena(16)[0..1]
+modifica()
+despliega()
Trabajador
-cargo: TipoCargo[1]
-sueldoActual: Moneda[0..1]
+despliega()
Preparador
-fechaConcurso: Fecha[1]
+despliega()
Estudia
-carrera: Tipo
+despliega()
26
Relaciones (Vínculos)
¿Asociaciones?
¿1:1, 1:N y N:M?
Eso se puede ver
mejor con un ejemplo
27
Vínculo / Relación
Trabaja En / Tiene
Relaciones (Vínculos)
1:N
Departamento
de Control
Departamento
de Computación
Profesores Departamentos
Departamento
de Investigación
de Operaciones
¿Cuántos profesores puedo tener en el
conjunto de entidades “Profesores”?
¿Y en “Departamentos”?
¿Con cuantos profesores puede
estar asociado un departamento?
¿Y al contrario?
28
Vínculo / Relación
Dicta / Es dictada por
Relaciones (Vínculos)
N:M
Programación
10
Bases de Datos
Profesores Materias
Programación
20
¿Cuántos profesores puedo tener en el
conjunto de entidades “Profesores”?
¿Y en “Materias”?
¿Con cuantos profesores puede
estar asociado una materia? ¿Y al
contrario?
29
Relaciones (Vínculos)
1:1
Vínculo / Relación
Es novia de / Es novio de
Chicas Chicos
¿Cuántos muchachos puedo tener en
el conjunto de entidades “Chicos”?
¿Y en “Chicas”?
¿Con cuantos Chicos puede estar
asociados (ser novios) de una Chica
en particular? ¿Y al contrario?
30
Diagramas de Clases
(Asociaciones)
Asociaciones: Representan relaciones estructurales entre
las clases (la forma en que están relacionadas entre si las
clases)
¿Cómo se implementan?
31
Diagramas de Clases
(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;
}
32
Diagramas de Clases
(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;
}
33
Diagramas de Clases
(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;
}
34
Diagramas de Clases
(Asociaciones)
Una relación
muchos a muchos
se puede ver como
dos relaciones uno a
muchos
35
Diagramas de Clases
(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;
}
36
Diagramas de Clases
(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;
}
37
Diagramas de Clases
(Asociaciones / Navegabilidad)
Navegabilidad: Representan relaciones estructurales entre
las clases (la forma en que están relacionadas entre si las
clases)
Indefinido
Navegable
NO
navegable
Navegable por
ambos lados
38
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
Composición: Es una forma
más fuerte de la agregación,
en la que el todo no puede
existir sin sus partes
¿Cómo se implementan?
¿Cuál es la diferencia con las asociaciones?
39
Diagramas de Clases
(Agregación / Composición)
Composición: El todo no
puede existir sin las partes
(Ejemplo Anterior)
Composición: Las partes no
pueden existir sin el todo
En contradicción con el
ejemplo anterior:
¿La parte (La
rueda) puede
existir sin el
todo?
40
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...
41
Diagramas de Clases
(Agregación / Composición)
“Precise semantics of shared aggregation varies by
application area and modeler”
“Indicates that the property is aggregated compositely,
i.e., the composite object has responsibility for the
existence and storage of the composed objects (parts)”
Citas tomadas literalmente del Estándar de UML
42
Diagramas de Clases
(Dependencia)
Dependencia: Relación en la que una clase necesita
(requiere) a otra para poder funcionar
La clase
persona
depende de la
clase teléfono
43
Diagramas de Clases
¿Qué / Cuál es la
Interfaz de una clase?
44
Diagramas de Clases
(Interfaces / Realizaciones)
Interfaz: Clase asociada que describe su comportamiento
visible. Conjunto de métodos que describen el comportamiento
visible de una clase
<<interface>> es un estereotipoEditorGrafico es una clase
que usa la interfaz
Idibujable,
independientemente que la
implemente un Círculo o
cualquier otra clase
(Polimorfismo)
45
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
46
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 */ }
}
47
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();
}
48
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
49
Diagramas de Clases
(¿Que es una Clase?)
¿qué es acoplamiento?
¿qué es cohesión?
el acoplamiento más bajo posible y la cohesión más alta
posible suele ser el objetivo de todo arquitecto, diseñador
de software o programador
lectura recomendada:
http://latecladeescape.com/w0/ingenieria-del-software/acoplamiento-y-cohesion.html
50
Diagramas de Clases
Ejemplos
51
Diagramas de Clases
(Un ejemplo conceptual)
Modelo de Dominio
52
Diagramas de Clases
(Un ejemplo conceptual)
53
Diagramas de Clases
(Un ejemplo conceptual)
Modelo de Dominio
54
Diagramas de Clases
(Un ejemplo conceptual)
Modelo de Dominio
55
Diagramas de Clases
(Arquitectura de las clases GUI de CLEDA)
Arquitectura
Diseño OO
56
Diagramas de Clases
(Arquitectura del motor de Workflow CledaFlow)
Arquitectura
Diseño OO
57
Diagramas de Clases
A nivel de
implementación
58
class Dependencias
Dependencia
Escuela
Departamento
InstitutoDeInvestigación
CentroDeInvestigación
LaboratorioDeInvestigación
Postgrado
Facultad/ Núcleo
+tieneDepartamentos 1..*
+tieneEscuelas
1..*
+tieneInstitutos
*
+tieneCentros
*
+tieneLabs
*
+tienePostgrados
*
Diagramas de Clases
(Modelo Conceptual)
59
class películas
Película
- titulo: string = Desconocido
- año: char = 0000
- duracion: float = 0.0
- tipo: TipoPelicula
+ nuevaPelicula() : void
- setTitulo(string) : void
+ getTitulo() : string
- setAño(char) : void
+ getAño() : char
- setDuracion(float) : void
+ getDuracion() : float
+ modificaPelicula() : void
+ despliegaPelicula() : void
+ eliminaPelicula() : void
«enumeration»
TipoPelicula
«enum»
drama
suspenso
acción
comedia
Estudio
- nombre: string
- ciudad: string
- direccion: string
- dirWeb: string
- fechaFundacion: date
- pais: string
- telefonos: Lista
+ nuevoEstudio() : void
+ modificaEstudio() : void
+ cierraEstudio() : void
+ despliegaEstudio() : Estudio[]
- setNombre(string) : void
- setCiudad(string) : void
- setDireccion(string) : void
- setDirWeb(string) : void
- setFechaFundacion(date) : void
- setPais(string) : void
- setTelefonos(Lista) : void
+ getNombre() : string
+ getCiudad() : string
+ getDireccion() : string
+ getDirWeb() : string
+ getFechaFundacion() : date
+ getPais() : string
+ getTelefonos() : string[]
+produce
* producción
+producidaPor
1..*
Diagramas de Clases
(Modelo de Implementación)
60
class Préstamo de equipos
Dependencia
Departamento
Dependencia
Escuela
Personal
Profesor Equipo
Estudiante
Persona
SolicitudDeProfesor SolicitudDeEstudiante
-tieneDepartamentos
1..*
-controladoPor
1
-controla *
-profesores 1..*
-secretariaDe 1
-secretaria
1
-secretariaDe
1
-secretaria
1
-estudiantes 1..*
-solicitadoPor
*
-solicita
*
-solicita
*
-solicitadoPor
*
-autorizadoPor1 -autoriza *
Diagramas de Clases
61
class Geometría
DatoGeométrico
- color: TipoColor
«enumeration»
TipoColor
«enum»
rojo
verde
negro
«enumeration»
TipoRelleno
«enumeration»
TipoSombra
Polígono
- relleno: TipoRelleno
- sombra: TipoSombra
Punto
- x: float
- y: float
Línea
Rectángulo
- ancho: int
- largo: int
Polilínea
Arco
- anguloDeInicio: double
- anguloDeBarrido: double
-esquinaSuperiorIzquierda
1
-líneas
2..* {ordenado}
-líneas3..*
{ordenado, hasta línea final = de línea inicial}
-de 1
-líneas * -líneas *
-hasta
1
Diagramas de Clases
62
Diagramas de Clases
Lecturas recomendadas:
http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/
(En Inglés)
63
REFERENCIAS
Martin Fowler, UML
Distilled, Pearson Addison-
Wesley 2da. Edición
Booch, Rumbaugh,
Jacobson, El Lenguaje
Unificado de Modelado,
Pearson Addison-Wesley
1ra. Edición
64
Gracias
¡Gracias!

Más contenido relacionado

La actualidad más candente

Modelo requisitos UML
Modelo requisitos UMLModelo requisitos UML
Modelo requisitos UMLramirezjaime
 
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
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosjosecuartas
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sqlByron Eras
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosAlvaro Enrique Ruano
 
Unidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de DatosUnidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de Datoshugodanielgd
 
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de ClasesAdal Dg
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionLuiS YmAY
 
Introducción a UML y Diagrama de Casos de Uso
Introducción a UML y Diagrama de Casos de UsoIntroducción a UML y Diagrama de Casos de Uso
Introducción a UML y Diagrama de Casos de UsoYaskelly Yedra
 
Modelo objeto semántico
Modelo objeto semánticoModelo objeto semántico
Modelo objeto semánticoReicerBlanco
 

La actualidad más candente (20)

Modelo de requerimientos
Modelo de requerimientosModelo de requerimientos
Modelo de requerimientos
 
Introduccion a UML
Introduccion a UMLIntroduccion a UML
Introduccion a UML
 
Modelo requisitos UML
Modelo requisitos UMLModelo requisitos UML
Modelo requisitos UML
 
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
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
Clase4 poo-uml
Clase4 poo-umlClase4 poo-uml
Clase4 poo-uml
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Unidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de DatosUnidad 1. Fundamentos de Base de Datos
Unidad 1. Fundamentos de Base de Datos
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Diagrama UML de Clases
Diagrama UML de ClasesDiagrama UML de Clases
Diagrama UML de Clases
 
3. Modelo ER - Relacional
3. Modelo ER - Relacional3. Modelo ER - Relacional
3. Modelo ER - Relacional
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
 
UML - Analisis de Sistemas
UML - Analisis de SistemasUML - Analisis de Sistemas
UML - Analisis de Sistemas
 
UML: CASOS DE USO
UML: CASOS DE USOUML: CASOS DE USO
UML: CASOS DE USO
 
Introducción a UML y Diagrama de Casos de Uso
Introducción a UML y Diagrama de Casos de UsoIntroducción a UML y Diagrama de Casos de Uso
Introducción a UML y Diagrama de Casos de Uso
 
Modelo objeto semántico
Modelo objeto semánticoModelo objeto semántico
Modelo objeto semántico
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 

Destacado

UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de softwareYaskelly Yedra
 
Diagrama de actividades uml
Diagrama de actividades umlDiagrama de actividades uml
Diagrama de actividades umlcamiloan40
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividadesTerryJoss
 
Modelo conceptual de uml
Modelo conceptual de umlModelo conceptual de uml
Modelo conceptual de umlSergio Girado
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1Clara Patricia Avella Ibañez
 

Destacado (6)

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
 
UML. un analisis comparativo para la diagramación de software
UML.  un analisis comparativo para la diagramación de softwareUML.  un analisis comparativo para la diagramación de software
UML. un analisis comparativo para la diagramación de software
 
Diagrama de actividades uml
Diagrama de actividades umlDiagrama de actividades uml
Diagrama de actividades uml
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividades
 
Modelo conceptual de uml
Modelo conceptual de umlModelo conceptual de uml
Modelo conceptual de uml
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 

Similar a Uml clase 04_uml_clases

Similar a Uml clase 04_uml_clases (20)

Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 
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
 
Clases 2
Clases 2Clases 2
Clases 2
 
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
 
UML
UMLUML
UML
 
UML.pptx
UML.pptxUML.pptx
UML.pptx
 
Trabajo%20 informatica%20arturo%20veras
Trabajo%20 informatica%20arturo%20verasTrabajo%20 informatica%20arturo%20veras
Trabajo%20 informatica%20arturo%20veras
 
Trabajo%20 informatica%20arturo%20veras
Trabajo%20 informatica%20arturo%20verasTrabajo%20 informatica%20arturo%20veras
Trabajo%20 informatica%20arturo%20veras
 
Diagramas Analisis
Diagramas AnalisisDiagramas Analisis
Diagramas Analisis
 
SISTEMA ORIENTADO A OBJETOS
SISTEMA ORIENTADO A OBJETOSSISTEMA ORIENTADO A OBJETOS
SISTEMA ORIENTADO A OBJETOS
 
Introduccion a Uml
Introduccion a Uml Introduccion a Uml
Introduccion a Uml
 
Bd capitulo ii
Bd capitulo iiBd capitulo ii
Bd capitulo ii
 
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
 
CLASES DE DIAGRAMAS
CLASES DE DIAGRAMAS CLASES DE DIAGRAMAS
CLASES DE DIAGRAMAS
 
3a5 shirley vinces- tarea1
3a5 shirley vinces- tarea13a5 shirley vinces- tarea1
3a5 shirley vinces- tarea1
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
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
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 

Más de Universidad Fermín Toro (13)

La paradoja
La paradojaLa paradoja
La paradoja
 
Equipo b informe fase 3
Equipo b informe fase 3Equipo b informe fase 3
Equipo b informe fase 3
 
Livia hernández
Livia hernándezLivia hernández
Livia hernández
 
Uml clase 02_uml_casos_de_uso
Uml clase 02_uml_casos_de_usoUml clase 02_uml_casos_de_uso
Uml clase 02_uml_casos_de_uso
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Interconexión de redes
Interconexión de redesInterconexión de redes
Interconexión de redes
 
Derecho informatico
Derecho informaticoDerecho informatico
Derecho informatico
 
Ensayo aspectos anatómicos_básico_hugolino_andrade
Ensayo aspectos anatómicos_básico_hugolino_andradeEnsayo aspectos anatómicos_básico_hugolino_andrade
Ensayo aspectos anatómicos_básico_hugolino_andrade
 
Roles docente estudiante
Roles docente estudianteRoles docente estudiante
Roles docente estudiante
 
Evolucion de la Web desde 1.0 hasta 7.0
Evolucion de la Web desde 1.0 hasta 7.0Evolucion de la Web desde 1.0 hasta 7.0
Evolucion de la Web desde 1.0 hasta 7.0
 
Clase 1
Clase 1Clase 1
Clase 1
 
Aprendizaje colaborativo1
Aprendizaje colaborativo1Aprendizaje colaborativo1
Aprendizaje colaborativo1
 
Uso de las TIC y Maestros del Futuro
Uso de las TIC y Maestros del FuturoUso de las TIC y Maestros del Futuro
Uso de las TIC y Maestros del Futuro
 

Último

Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Baker Publishing Company
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 

Último (20)

Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 

Uml clase 04_uml_clases

  • 1. 1 UML Diagramas de Clases (UML ilustrado) Universidad de Los Andes Demián Gutierrez Marzo 2011
  • 2. 2 Diagramas de Clases (¿Qué Muestran?) La estructura estática del sistema modelado (piense en el plano estructural de un ingeniero civil) Las relaciones que existen entre las distintas clases y objetos del sistema Las clases y objetos del sistema y su estructura interna Se concentran en los elementos del sistema de forma independiente del tiempo (Muestran aspectos estáticos y no dinámicos)
  • 3. 3 Diagramas de Clases (¿Para qué Sirven?) Realizar la abstracción de un dominio y formalizar el análisis de los conceptos relacionados al mismo (Modelo de Dominio) (...o de cualquier tipo de conceptos) Definir / Documentar una solución de diseño, es decir, la estructura del sistema que se va a implementar en términos de clases y objetos Definir / Documentar modelado de datos (Cumplen la misma función en este sentido de los diagramas ERE)
  • 5. 5 Nota Importante El hecho de que exista cierta característica en un diagrama (ej: la declaración de métodos) no significa que de forma obligatoria se deba usar, simplemente son herramientas que están disponibles. Cuando usted arregla algo, no usa todas las herramientas de su caja de herramientas, sólo usa lo que necesita para realizar el trabajo. Igual ocurre con UML y las herramientas de modelado, use sólo las herramientas (diagramas / constructos) que necesita para una situación particular y no “sobre use” las herramientas, tratando de usarlas sólo porque si...
  • 6. 6 Diagramas de Clases ¿Qué es un Dominio de Aplicación? ¿Qué es un Modelo de Dominio?
  • 7. 7 Diagramas de Clases 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) vistos en PR2
  • 9. 9 Diagramas de Clases (¿Que es una Clase?) 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?
  • 10. 10 Diagramas de Clases (Atributos y Objetos) Atributos: Propiedades relevantes de un clase Representan su estructura Pueden ser simples o compuestos Métodos: Comportamiento asociado a una clase
  • 11. 11 Diagramas de Clases La relación que existe entre el código y una clase en UML es muy importante ¡Necesito que hablemos el mismo idioma!
  • 12. 12 Diagramas de Clases (¿Que es una Clase?) 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 ;-)
  • 13. 13 Diagramas de Clases (¿Que es una Clase?) 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
  • 14. 14 Diagramas de Clases (¿Que es una Clase?) 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 ...
  • 15. 15 Diagramas de Clases ¿qué es un objeto? ¿qué es una instancia? ¿qué es instanciar?
  • 16. 16 Conceptos de Objetos (Diagramas de Clases) Instancia: Cada objeto que pertenece a una clase Instanciación / Instanciar: Proceso de generación o creación de las instancias (objetos) de una clase pedro = new Persona() Objeto: Representación de algo que se describe mediante un identificador, una estructura y un comportamiento. “Instancia de una Clase”
  • 17. 17 Diagramas de Clases 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 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 / Utilitarias) Clases Parametrizables: Plantillas de clases que se pueden parametrizar con uno o más tipos de datos según sea necesario (Clases Genéricas) Clases Abstractas: Clases que no tienen implementación para todos los métodos definidos Clases Utilitarias: Clases que contienen librerías de funciones (no interesa mucho la implementación)
  • 20. 20 Diagramas de Clases (Parametrizables / Abstractas / Utilitarias) 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 / Utilitarias) 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 (Especialización / Generalización / Herencia) Jerarquía de Clases: Relación ES-UN(A), abstracciones de generalización / especialización de clases Herencia: Propiedad que tienen las clases de heredar de sus superclases estructura y/o comportamiento (Simple / Múltiple)
  • 23. 23 Diagramas de Clases (Especialización / Generalización / Herencia) Herencia: Disjunta / Traslapada Total / Parcial
  • 24. 24 Diagramas de Clases (Especialización / Generalización / Herencia) 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 { // ... }
  • 25. Mayo,2008 EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. A-08. 25 Vista lógica o estructural • Polimorfismo: se puede usar el mismo nombre para la definición de un método en varias clases sin importar la relación entre las mismas. • Reescritura o sobrecarga: permite nombrar código diferente con el mismo nombre para más de una clase de objetos. • Encadenamiento tardío: permite seleccionar el código adecuado al objeto definido en la invocación del método. Persona -oid: OID -nombre: Cadena(64)[1] -direccion: Cadena(128)[0..1] -telefono: Cadena(16)[0..1] +modifica() +despliega() Trabajador -cargo: TipoCargo[1] -sueldoActual: Moneda[0..1] +despliega() Preparador -fechaConcurso: Fecha[1] +despliega() Estudia -carrera: Tipo +despliega()
  • 26. 26 Relaciones (Vínculos) ¿Asociaciones? ¿1:1, 1:N y N:M? Eso se puede ver mejor con un ejemplo
  • 27. 27 Vínculo / Relación Trabaja En / Tiene Relaciones (Vínculos) 1:N Departamento de Control Departamento de Computación Profesores Departamentos Departamento de Investigación de Operaciones ¿Cuántos profesores puedo tener en el conjunto de entidades “Profesores”? ¿Y en “Departamentos”? ¿Con cuantos profesores puede estar asociado un departamento? ¿Y al contrario?
  • 28. 28 Vínculo / Relación Dicta / Es dictada por Relaciones (Vínculos) N:M Programación 10 Bases de Datos Profesores Materias Programación 20 ¿Cuántos profesores puedo tener en el conjunto de entidades “Profesores”? ¿Y en “Materias”? ¿Con cuantos profesores puede estar asociado una materia? ¿Y al contrario?
  • 29. 29 Relaciones (Vínculos) 1:1 Vínculo / Relación Es novia de / Es novio de Chicas Chicos ¿Cuántos muchachos puedo tener en el conjunto de entidades “Chicos”? ¿Y en “Chicas”? ¿Con cuantos Chicos puede estar asociados (ser novios) de una Chica en particular? ¿Y al contrario?
  • 30. 30 Diagramas de Clases (Asociaciones) Asociaciones: Representan relaciones estructurales entre las clases (la forma en que están relacionadas entre si las clases) ¿Cómo se implementan?
  • 31. 31 Diagramas de Clases (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; }
  • 32. 32 Diagramas de Clases (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; }
  • 33. 33 Diagramas de Clases (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; }
  • 34. 34 Diagramas de Clases (Asociaciones) Una relación muchos a muchos se puede ver como dos relaciones uno a muchos
  • 35. 35 Diagramas de Clases (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; }
  • 36. 36 Diagramas de Clases (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; }
  • 37. 37 Diagramas de Clases (Asociaciones / Navegabilidad) Navegabilidad: Representan relaciones estructurales entre las clases (la forma en que están relacionadas entre si las clases) Indefinido Navegable NO navegable Navegable por ambos lados
  • 38. 38 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 Composición: Es una forma más fuerte de la agregación, en la que el todo no puede existir sin sus partes ¿Cómo se implementan? ¿Cuál es la diferencia con las asociaciones?
  • 39. 39 Diagramas de Clases (Agregación / Composición) Composición: El todo no puede existir sin las partes (Ejemplo Anterior) Composición: Las partes no pueden existir sin el todo En contradicción con el ejemplo anterior: ¿La parte (La rueda) puede existir sin el todo?
  • 40. 40 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...
  • 41. 41 Diagramas de Clases (Agregación / Composición) “Precise semantics of shared aggregation varies by application area and modeler” “Indicates that the property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts)” Citas tomadas literalmente del Estándar de UML
  • 42. 42 Diagramas de Clases (Dependencia) Dependencia: Relación en la que una clase necesita (requiere) a otra para poder funcionar La clase persona depende de la clase teléfono
  • 43. 43 Diagramas de Clases ¿Qué / Cuál es la Interfaz de una clase?
  • 44. 44 Diagramas de Clases (Interfaces / Realizaciones) Interfaz: Clase asociada que describe su comportamiento visible. Conjunto de métodos que describen el comportamiento visible de una clase <<interface>> es un estereotipoEditorGrafico es una clase que usa la interfaz Idibujable, independientemente que la implemente un Círculo o cualquier otra clase (Polimorfismo)
  • 45. 45 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
  • 46. 46 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 */ } }
  • 47. 47 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(); }
  • 48. 48 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
  • 49. 49 Diagramas de Clases (¿Que es una Clase?) ¿qué es acoplamiento? ¿qué es cohesión? el acoplamiento más bajo posible y la cohesión más alta posible suele ser el objetivo de todo arquitecto, diseñador de software o programador lectura recomendada: http://latecladeescape.com/w0/ingenieria-del-software/acoplamiento-y-cohesion.html
  • 51. 51 Diagramas de Clases (Un ejemplo conceptual) Modelo de Dominio
  • 52. 52 Diagramas de Clases (Un ejemplo conceptual)
  • 53. 53 Diagramas de Clases (Un ejemplo conceptual) Modelo de Dominio
  • 54. 54 Diagramas de Clases (Un ejemplo conceptual) Modelo de Dominio
  • 55. 55 Diagramas de Clases (Arquitectura de las clases GUI de CLEDA) Arquitectura Diseño OO
  • 56. 56 Diagramas de Clases (Arquitectura del motor de Workflow CledaFlow) Arquitectura Diseño OO
  • 57. 57 Diagramas de Clases A nivel de implementación
  • 58. 58 class Dependencias Dependencia Escuela Departamento InstitutoDeInvestigación CentroDeInvestigación LaboratorioDeInvestigación Postgrado Facultad/ Núcleo +tieneDepartamentos 1..* +tieneEscuelas 1..* +tieneInstitutos * +tieneCentros * +tieneLabs * +tienePostgrados * Diagramas de Clases (Modelo Conceptual)
  • 59. 59 class películas Película - titulo: string = Desconocido - año: char = 0000 - duracion: float = 0.0 - tipo: TipoPelicula + nuevaPelicula() : void - setTitulo(string) : void + getTitulo() : string - setAño(char) : void + getAño() : char - setDuracion(float) : void + getDuracion() : float + modificaPelicula() : void + despliegaPelicula() : void + eliminaPelicula() : void «enumeration» TipoPelicula «enum» drama suspenso acción comedia Estudio - nombre: string - ciudad: string - direccion: string - dirWeb: string - fechaFundacion: date - pais: string - telefonos: Lista + nuevoEstudio() : void + modificaEstudio() : void + cierraEstudio() : void + despliegaEstudio() : Estudio[] - setNombre(string) : void - setCiudad(string) : void - setDireccion(string) : void - setDirWeb(string) : void - setFechaFundacion(date) : void - setPais(string) : void - setTelefonos(Lista) : void + getNombre() : string + getCiudad() : string + getDireccion() : string + getDirWeb() : string + getFechaFundacion() : date + getPais() : string + getTelefonos() : string[] +produce * producción +producidaPor 1..* Diagramas de Clases (Modelo de Implementación)
  • 60. 60 class Préstamo de equipos Dependencia Departamento Dependencia Escuela Personal Profesor Equipo Estudiante Persona SolicitudDeProfesor SolicitudDeEstudiante -tieneDepartamentos 1..* -controladoPor 1 -controla * -profesores 1..* -secretariaDe 1 -secretaria 1 -secretariaDe 1 -secretaria 1 -estudiantes 1..* -solicitadoPor * -solicita * -solicita * -solicitadoPor * -autorizadoPor1 -autoriza * Diagramas de Clases
  • 61. 61 class Geometría DatoGeométrico - color: TipoColor «enumeration» TipoColor «enum» rojo verde negro «enumeration» TipoRelleno «enumeration» TipoSombra Polígono - relleno: TipoRelleno - sombra: TipoSombra Punto - x: float - y: float Línea Rectángulo - ancho: int - largo: int Polilínea Arco - anguloDeInicio: double - anguloDeBarrido: double -esquinaSuperiorIzquierda 1 -líneas 2..* {ordenado} -líneas3..* {ordenado, hasta línea final = de línea inicial} -de 1 -líneas * -líneas * -hasta 1 Diagramas de Clases
  • 62. 62 Diagramas de Clases Lecturas recomendadas: http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/ (En Inglés)
  • 63. 63 REFERENCIAS Martin Fowler, UML Distilled, Pearson Addison- Wesley 2da. Edición Booch, Rumbaugh, Jacobson, El Lenguaje Unificado de Modelado, Pearson Addison-Wesley 1ra. Edición