PDF de programación - UML Diagramas de Clases (UML ilustrado)

Imágen de pdf UML Diagramas de Clases (UML ilustrado)

UML Diagramas de Clases (UML ilustrado)gráfica de visualizaciones

Publicado el 21 de Enero del 2021
1.576 visualizaciones desde el 21 de Enero del 2021
2,0 MB
64 paginas
Creado hace 12a (17/05/2011)
UML

Diagramas de Clases

(UML ilustrado)

Universidad de Los Andes

Demián Gutierrez

Marzo 2011

1

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)

2

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)

3

Diagramas de Clases

Advertencia

4

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...

5

Diagramas de Clases

¿Qué es un
Dominio de
Aplicación?

¿Qué es un Modelo

de Dominio?

6

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

7

Diagramas de Clases

¿Qué es una Clase?

8

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?

9

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

10

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!

11

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 ;-)

12

Diagramas de Clases
(¿Que es una Clase?)

Visibilidad:
- Privado
~ Paquete
# Protegido
+ Público

Nombre
Atributo

Valor por
Defecto

Tipo de Dato

Multiplicidad

Nombre del

Tipo de
Retorno
Base de Datos: Generalmente, cuando se desarrolla

Parámetros
de Entrada

Método

un modelo de datos no se utiliza toda esta

complejidad. Por ejemplo, generalmente no se

definen métodos

13

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 ...

14

Diagramas de Clases

¿qué es un objeto?

¿qué es una instancia?

¿qué es instanciar?

15

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

Objeto:

pedro = new Persona()

Representación de algo que se

describe mediante un identificador,
una estructura y un comportamiento.

“Instancia de una Clase”

16

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

17

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”);

C
r
e
a
r

I

n
s
t
a
n
c
a
s

i


(
I
n
s
t
a
n
c
a
r
)

i

18

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)

19

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>();

20

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();
}

21

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)

22

Diagramas de Clases
(Especialización / Generalización / Herencia)

Herencia:

Disjunta / Traslapada

Total / Parcial

23

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 Elipse
extends Figura {
// ...
}

public class Cuadrado
extends Rectangulo {
// ...
}

public class Circulo
extends Elipse {
// ...
}

24

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()

Estudiante

-carrera: TipoCarrera[1]
+despliega()

Preparador

-fechaConcurso: Fecha[1]
+despliega()

Mayo,2008

EISULA. Dpto. De Computación. Isabel Besembel C. Base de Datos. Sem. A-08.

25

Relaciones (Vínculos)

¿Asociaciones?
¿1:1, 1:N y N:M?

Eso se puede ver

mejor con un ejemplo

26

Relaciones (Vínculos)
1:N

Vínculo / Relación
Trabaja En / Tiene

Departamento

de Control

Departamento
de Investigación
de Operaciones

Departamento
de Computación

Profesores

Departamentos

¿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?

27

Relaciones (Vínculos)
N:M

Vínculo / Relación

Dicta / Es dictada por

Programación

10

Programación

20

Bases de Datos

Profesores

Materias

¿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?

28

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
29

en particular? ¿Y al contrario?

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?

30

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;
}

31

Diagramas de Clases
(Asociaciones)

public class Estudiante {

// Una lista de asignaturas
// (Un estudiante tiene muchas asignaturas)
private List<Asignatura> asign
  • Links de descarga
http://lwp-l.com/pdf18738

Comentarios de: UML Diagramas de Clases (UML ilustrado) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad