Sei sulla pagina 1di 24

Algoritmos

y Programacin

III

Ricardo Casanova Nbola-Kopak


rcasanov@ucab.edu.ve
Blog: www.ricardocasanova.net
Twitter: @rcasanovan
Skype: rcasanovan
Lminas elaboradas para la materia Algoritmos y Programacin III de la
Escuela de Ingeniera Informtica de la Universidad Catlica Andrs Bello

Qu NO es UML
NO es programacin
No es una metodologa
Qu es UML
Es un lenguaje de modelado
Unified Modeling Lenguage
Lenguaje Unificado de Modelado

Clases
Objetos
Interaccin
Procesos
Roles

Este modelado se hace a travs de un


conjunto de diagramas que
proporciona UML

UML es indepentiente del lenguaje de


programacin (usualmente un
lenguaje orientado a objetos)

C#

Objective C
PHP
Python C++
Java

VB .Net

Un buen diseo implica tener una app


robusta y la reduccin del tiempo de
desarrollo

C#

Objective C
PHP
Python C++
Java

VB .Net

Diagrama de clases. Conceptos

Pa

Cliente'
Una clase es una descripcin de un
conjunto de objetos que comparten los
mismo atributos, operaciones,
relaciones y semntica
Cada clase debe tener un nombre que
la distinga de otras clases. Un nombre
Cliente'
es una cade de texto simple

Persona'
Pared'
Negocio'

Los nombres de las clases se definen


SIEMPRE en singular (ya que se habla
de la plantilla)

Persona'

La primera letra de la clase de define


en maysculas (no es obligatorio, pero
es un estndar)

Sensor'

Diagrama de clases. Conceptos


Una clase est compuesta por tres
elementos: Un nombre (nico para
cada clase), un conjunto de atributos y
un conjunto de mtodos

NombreDeLaClase
atributos
mtodos

public (+): Indica que el atributo ser


visible tanto dentro como fuera de la
clase, es decir, ser accesible desde
todos lados
private (-): Indica que el atributo slo
ser accesible desde la propia clase
(slo los mtodos de la clase podrn
tener acceso directo a l)
protected (#): Indica que el atributo no
ser accesible desde fuera de la clase,
pero si podr ser accedido por la
propia clase y por las subclases que se
generen (este concepto ms adelante)

Diagrama de clases. Conceptos


Una clase est compuesta por tres
elementos: Un nombre (nico para
cada clase), un conjunto de atributos y
un conjunto de mtodos

NombreDeLaClase
atributos
mtodos

public (+): Indica que el mtodo ser


visible tanto dentro como fuera de la
clase, es decir, ser accesible desde
todos lados
private (-): Indica que el mtodo slo
ser accesible desde la propia clase
(slo los otros mtodos de la clase
podrn tener acceso directo a l)
protected (#): Indica que el mtodo no
ser accesible desde fuera de la clase,
pero si podr ser accedido por la
propia clase y por las subclases que se
generen (este concepto ms adelante)

Ejemplo en Java
public class Profesor
{
public String nombre;
private String apellido;
private String CI;
}

Se utilizan las palabras reservadas public class


para indicar que se definir una clase en este
caso llamada Profesor

Se definen 3 atributos de tipo String, dos de ellos


de tipo private y uno de tipo public

La regla para definir los atributos es exactamente


igual a la de C para definir variables:
TipoDeDato nombreDelAtributo;

Ejemplo en Java
public class Profesor
{
public String nombre;
private String apellido;
private String CI;
}

public class Materia


{
private Profesor profesor;
public void metodo()
{
...
profesor.nombre = "Ricardo";

Se define otra clase llamada Materia y dentro de


ella un atributo de tipo profesor (quin dicta la
materia)

profesor.apellido = "Prez";
}

Dentro de un mtodo se trata de tener acceso


al campo nombre del profesor. Correcto, el
atributo es pblico en Profesor, por tanto es
visible desde otra clase
Dentro de un mtodo se trata de tener acceso al
campo apellido del profesor. Error, el atributo es
privado en Profesor, slo es visible en Profesor

Entonces Cmo tener acceso a


un atributo privado?

Ejemplo en Java
public class Profesor
{
public String nombre;
private String apellido;
private String CI;
public String getApellido()
{
return apellido;
}
public void setApellido(String
apellido)
{
this.apellido = apellido;
}
}

public class Materia


{
private Profesor profesor;
Se implementa un mtodo get en Profesor.
Dicho mtodo
es pblico
ser invocado
public
void (puede
metodo()
desde otra
{ clase). El mtodo devuelve el valor del
atributo apellido
...
profesor.nombre = "Ricardo";

Se implementa
un mtodo set en=Profesor.
profesor.apellido
"Prez";
Dicho
mtodo
es
pblico
(puede
ser
invocado
}
desde otra clase). El mtodo inicializa el valor del
atributo apellido con el parmetro (obviamente
deben ser del mismo tipo)

El this se utiliza en este caso para diferenciar el


atributo del parmetro (se llaman igual). Si no se
usa this Java se confunde. El this SIEMPRE va
asociado al atributo, NUNCA al parmetro

Ejemplo en Java
public class Profesor
{
Ahora desde Materia y a travs del objeto de
public String nombre;
tipo Profesor, podemos invocar el mtodo
private
String que
apellido;
setApellido
recibe como parmetro el
private
String
CI;
String. Ahora nuestro profesor se apellida Prez

public class Materia


{
private Profesor profesor;
public void metodo()
{
...
profesor.nombre = "Ricardo";

public String getApellido()


{
return apellido;
}

profesor.setApellido("Prez");
}

public void setApellido(String


apellido)
{
this.apellido = apellido;
}

RCNK 2013
Ing. Ricardo Casanova

En resumen
En el caso de los atributos, olviden lo
explicado anteriormente
Todos los atributos de una clase son
siempre, siempre, siempre, SIEMPRE
privados (salvo algunos casos)
Por qu?
Se garantiza la seguridad del atributo
Slo su clase se encarga de modificar su valor

Por cada atributo privado hay dos


mtodos pblicos
el getter
el setter

Un mtodo privado SLO podr ser


llamado desde la propia clase (para las
dems clases, no existe)
En el caso de Java la sintaxis es muy
similar a C al momento de definir
variables y mtodos
Los atributos y mtodos pueden ser
accedidos slo a travs de un objeto
(por ahora), tal como si se tratara de un
record o un struct en C

Relaciones. Herencia

Nota: En UML, la punta de la flecha va sin relleno. Dado que


Keynote no permite flechas sin relleno se ha utilizado esta
nomenclatura en la lmina

ItemDeLibreria
titulo
codigo

La relacin puede leerse fcilmente de forma jerrquica, de abajo


hacia arriba. un Video es un ItemDeLibreria o un Libro es un
ItemDeLibreria. La relacin no puede leerse al revs: un
ItemDeLibreria es un Video ya que en este caso tenemos libros
tambin

...

Libro

Video

autor
editorial

productor
estudio

...

...

Relaciones. Herencia

ItemDeLibreria se conoce como la clase padre o la super clase

ItemDeLibreria
Libro y Video se conocen como las clases hijas o sub clases

titulo
codigo
...

Desde el punto de vista de las sub clases, se hereda de la


super clase todo aquello que sea pblico (o protegido). No se
heredan atributos ni mtodos privados
Libro

Video

autor
editorial

productor
estudio

...

...

Relaciones. Herencia

ItemDeLibreria
titulo
codigo

...

Libro

Video

autor
editorial

productor
estudio

...

...

La relacin de herencia
puede darse en N cantidad de
niveles. De esta manera D
heredar todos los atributos y
mtodos pblicos de C, B y A

Relaciones. Herencia

ItemDeLibreria
titulo
codigo

...

Esto puede ocurrir. Se conoce


como herencia mltiple. Una
clase puede heredar de
mltiples clases

Libro

Video

autor
editorial

productor
estudio

...

...

Java en particular NO permite la herencia


mltiple. Slo trabaja con herencia
simple (para evitar el problema de
herencia en diamante) - ms adelante lo
veremos

Relaciones. Agregacin
Carro
Chasis chasis
Motor motor

Nota: En UML, el rombo va sin relleno. Dado que Keynote no


permite flechas sin relleno se ha utilizado esta nomenclatura en la
lmina. Si el rombo va con relleno implica otra cosa adicional (lo
veremos ms adelante)

La relacin de agregacin es bidireccional. En el ejemplo se utiliza ya


que un Carro posee un Chasis y el Chasis est asociado a ese y slo
ese Carro. Lo mismo ocurre con Carro-Motor

...

Chasis

Motor

Carro carro

Carro carro

...

...

Si es necesario definir atributos a uno y otro


lado de la relacin, la relacin de agregacin
es la que debe ser empleada

La direccin del rombo vendr indicada por


cul es la clase ms general (la que envuelve
al resto). En este ejemplo, sera Carro

Relaciones. Asociacin
La relacin de asociacin permite relacionar clases que colaboran
entre s.
Cliente

...

Un cliente tiene rdenes de compra

OrdenDeCompra

...

Una orden de compra est asociada a un cliente

Cardinalidad
Una orden de compra est asociada a un cliente
Cliente

1 (uno y slo uno)


...

0..1 (cero o uno)

N..M (desde N hasta M)

* (cero o varios)

0..* (cero o varios)

1..* (uno o varios)

1..*
OrdenDeCompra

...
Un cliente posee una o ms rdenes de compra

Relaciones. Uso (Utilizacin)


Computadora
String direccionIP

La relacin de uso es unidireccional. En el ejemplo se utiliza ya que


un Cliente posee una computadora (la que usa) pero desde el punto
de vista de la Computadora no nos interesa saber quin la usa

...
Se dice que Cliente est usando la clase Computadora para definir el
atributo

Cliente
String nombre
Computadora equipo
...

Aplica lo mismo para los parmetros de un mtodo

Primer ejemplo
Trata de modelar el siguiente problema usando un diagrama de clases de UML:
Los alumnos y los profesores son personas. Por cada persona se conoce su nombre,
apellido, cdula de identidad, direccin y nmero de telfono. De un alumno se conoce
adicionalmente su nmero de expediente y la carrera que est cursando. En el caso de
los profesores, se conoce su cargo en la universidad y facultad a la que est adscrito.
Un alumno asiste a cursos. Los cursos estn impartidos por un nico profesor. El alumno
no puede repetir el mismo curso, pero puede asistir a ms de uno. El profesor puede
impartir diferentes cursos y repetir un mismo curso en varias ocasiones. Para que un
curso se imparta debe haber un mnimo de 10 alumnos y un mximo de 50. De cada
curso se conoce el nombre, carrera a la que pertenece y nmero de UC.
Como registro del curso se guarda la fecha de comienzo, la fecha de finalizacin y la nota
del alumno.

Potrebbero piacerti anche