app iii lecture2 - introducción a uml.pdf
Post on 09-Sep-2015
235 Views
Preview:
TRANSCRIPT
-
Ricardo Casanova Nbola-Kopakrcasanov@ucab.edu.ve
Blog: www.ricardocasanova.netTwitter: @rcasanovan
Skype: rcasanovan
IIIAlgoritmosy Programacin
Lminas elaboradas para la materia Algoritmos y Programacin III de la Escuela de Ingeniera Informtica de la Universidad Catlica Andrs Bello
-
NO es programacin
No es una metodologa
Es un lenguaje de modelado
Unified Modeling Lenguage
Qu NO es UML
Qu es UML
Lenguaje Unificado de Modelado
-
Clases
Objetos
Interaccin
Procesos
Roles
-
PHP
JavaPython
C#VB .Net
C++Objective C
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)
-
PHP
JavaPython
C#VB .Net
C++Objective C
Un buen diseo implica tener una app robusta y la reduccin del tiempo de desarrollo
-
Diagrama de clases. Conceptos
Una clase es una descripcin de un conjunto de objetos que comparten los mi smo at r ibutos , op erac iones , relaciones y semntica
Cada clase debe tener un nombre que la distinga de otras clases. Un nombre es una cade de texto simple
Cliente'Pared'
Persona'
Negocio'
Sensor'Cliente'
Pared'
Persona'
Negocio'
Sensor'
Los nombres de las clases se definen SIEMPRE en singular (ya que se habla de la plantilla)
La primera letra de la clase de define en maysculas (no es obligatorio, pero es un estndar)
-
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 Materia{ private Profesor profesor; public void metodo() { ... profesor.nombre = "Ricardo"; profesor.apellido = "Prez"; } }
public class Profesor{ public String nombre; private String apellido; private String CI;}
Se define otra clase llamada Materia y dentro de ella un atributo de tipo profesor (quin dicta la materia)
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 Materia{ private Profesor profesor; public void metodo() { ... profesor.nombre = "Ricardo"; profesor.apellido = "Prez"; } }
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; }}
Se implementa un mtodo get en Profesor. Dicho mtodo es pblico (puede ser invocado desde otra clase). El mtodo devuelve el valor del atributo apellido
Se implementa un mtodo set en Profesor. 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 Materia{ private Profesor profesor; public void metodo() { ... profesor.nombre = "Ricardo"; profesor.setApellido("Prez"); } }
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; }}
Ahora desde Materia y a travs del objeto de tipo Profesor, podemos invocar el mtodo setApellido que recibe como parmetro el String. Ahora nuestro profesor se apellida Prez
RCNK 2013Ing. Ricardo Casanova
-
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
En resumen
En el caso de los atributos, olviden lo explicado anteriormente
Por cada atributo privado hay dos mtodos pblicos
el getterel 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
ItemDeLibreria
titulocodigo
...
Libro
autoreditorial
...
Video
productorestudio
...
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
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
-
Relaciones. Herencia
ItemDeLibreria
titulocodigo
...
Libro
autoreditorial
...
Video
productorestudio
...
ItemDeLibreria se conoce como la clase padre o la super clase
Libro y Video se conocen como las clases hijas o sub clases
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
-
Relaciones. Herencia
ItemDeLibreria
titulocodigo
...
Libro
autoreditorial
...
Video
productorestudio
...
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
A
B
C
D
-
Relaciones. Herencia
ItemDeLibreria
titulocodigo
...
Libro
autoreditorial
...
Video
productorestudio
...
Esto puede ocurrir. Se conoce como herencia mltiple. Una clase puede heredar de mltiples clases
A B
C
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 chasisMotor motor
...
Chasis
Carro carro
...
Motor
Carro carro
...
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
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
Cliente
...
OrdenDeCompra
...
La relacin de asociacin permite relacionar clases que colaboran entre s.
Un cliente tiene rdenes de compra
Una orden de compra est asociada a un cliente
-
Cardinalidad
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)
Cliente
...
OrdenDeCompra
...
1..*
1
Un cliente posee una o ms rdenes de compra
Una orden de compra est asociada a un cliente
-
Relaciones. Uso (Utilizacin)
Computadora
String direccionIP
...
Cliente
String nombreComputadora equipo
...
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
Aplica lo mismo para los parmetros de un mtodo
-
Primer ejemplo
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.
Trata de modelar el siguiente problema usando un diagrama de clases de UML:
top related