Sunteți pe pagina 1din 69

Semana 3

Algoritmica I I
2013

Introduccin: Modelado de SW
Construccin de Algoritmo de Fibonacci
Puede hacerlo una sola persona
Requiere:
Modelado mnimo
Proceso simple
Herramientas simples
int fib(int val){
if ((val==1)||(val==2)) return 1;
else
return (fib(val-1)+fib(val-2));
}
Construccin del software para un
cajero automatico
Construida eficientemente y en un tiempo
razonable por un equipo
Requiere:
Modelado
Proceso bien definido
Herramientas ms sofisticadas
Auto-teller
system
Security
system
Maintenance
system
Account
da tabase
Usage
database
Branch
accounting
system
Branch
counter
system
Sistema de Radar de Aeropuerto
Herramientas Proceso
Notacin
Pero, como se modela un sistema con
esta complejidad ?
Beneficios del Modelado
Interface de Usuario
(Visual Basic,
Java, ..)
Lgica del Negocio
(C++, Java, ..)
Servidor de BDs
(C++ & SQL, ..)
Mltiples Sistemas
Componentes
Reutilizados
Manejar la complejidad
Modelar el sistema
independientemente
del lenguaje de
implementacin
Promover la Reutilizacin
Introduccin: UML
Qu es UML?
UML = Unified Modeling Language
Un lenguaje de propsito general para el modelado
orientado a objetos. Impulsado por el Object
Management Group (OMG, www.omg.org)
Documento OMG Unified Modeling Language
Specification
UML combina notaciones provenientes desde:
Modelado Orientado a Objetos
Modelado de Datos
Modelado de Componentes
Modelado de Flujos de Trabajo (Workflows)


Antes de UML
Diversos mtodos y tcnicas OO, con muchos aspectos
en comn pero utilizando distintas notaciones.
Modelos de Constantine, Jackson, Gane Sarson,
Shlaer-Mellor, etc.
Inconvenientes para el aprendizaje, aplicacin,
construccin y uso de herramientas CASE, etc.

Pugna entre distintos enfoques

Objetivo: Establecer una notacin estndar
Antes de UML
Modelos de descripcin de procesos: Diagramas de
flujo de datos.
Modelos de descripcin de datos: Diagramas de
entidad-relacin, diccionario de datos.
Modelos de descripcin arquitectural: Diagramas de
Estructura.
Modelos de descripcin de comportamiento: State-
Charts.

Historia de UML
Comenz como el Mtodo Unificado, con la
participacin de Grady Booch y Jim Rumbaugh. Se
present en el OOPSLA95

El mismo ao se uni Ivar Jacobson. Los Tres Amigos
son socios en la compaa Rational Software.
Herramienta CASE Rational Rose
Historia de UML
Nov 97
UML aprobado
por el OMG
1998
1999
2000
UML 1.2
UML 1.3
UML 1.4
2005?
UML 2.0
Revisiones menores
UML 1.5
2003
Participantes en UML 1.0
Rational Software
(Grady Booch, Jim Rumbaugh y
Ivar Jacobson)
Digital Equipment
Hewlett-Packard
i-Logix (David Harel)
IBM
ICON Computing
(Desmond DSouza)
Intellicorp and James
Martin & co. (James Odell)

MCI Systemhouse
Microsoft
ObjecTime
Oracle Corp.
Platinium Technology
Sterling Software
Taskon
Texas Instruments
Unisys

UML reune a enfoques OO
UML
Rumbaugh
Jacobson
Meyer
Harel
Wirfs-Brock
Fusion
Embly
Gamma et. al.
Shlaer-Mellor
Odell
Booch
Pre- and Post-conditions
State Charts
Responsabilities
Operation descriptions,
message numbering
Singleton classes
Frameworks, patterns,
notes
Object life cycles
Factores importantes en UML
Definicin del proceso de desarrollo usando UML. UML
no es una metodologa o proceso.
No cubre todas las necesidades de especificacin de un
proyecto software.


Util en la definicin de requerimientos, pero tambien en
el diseo (y en las pruebas).
Notacion estndar y soportada por herramientas CASE
Estndar del OMG
Gran cantidad de Libros y cursos.


Modelos y Diagramas
Un modelo captura una vista de un sistema del mundo
real. Es una abstraccin de dicho sistema, considerando
un cierto propsito. As, el modelo describe completa-
mente aquellos aspectos del sistema que son relevantes
al propsito del modelo, y a un apropiado nivel de detalle.

Diagrama: una representacin grfica de una coleccin
de elementos de modelado, a menudo dibujada como un
grafo con vrtices conectados por arcos

OMG UML 1.4 Specification



... Modelos y Diagramas
Un proceso de desarrollo de software debe ofrecer un conjunto de
modelos que permitan expresar el producto desde cada una de las
perspectivas de inters

El cdigo fuente del sistema es el modelo ms detallado del sistema
(y adems es ejecutable). Sin embargo, se requieren otros modelos
...




Cada modelo es completo desde su punto de vista del sistema, sin
embargo, existen relaciones de trazabilidad entre los diferentes
modelos
Diagramas de UML
Use Case
Diagrams
Use Case
Diagrams
Diagramas de
Casos de Uso
Scenario
Diagrams
Scenario
Diagrams
Diagramas de
Colaboracin
State
Diagrams
State
Diagrams
Diagramas de
Componentes
Component
Diagrams
Component
Diagrams
Diagramas de
Distribucin
State
Diagrams
State
Diagrams
Diagramas de
Objetos
Scenario
Diagrams
Scenario
Diagrams
Diagramas de
Estados
Use Case
Diagrams
Use Case
Diagrams
Diagramas de
Secuencia
State
Diagrams
State
Diagrams
Diagramas de
Clases
Diagramas de
Actividad
Modelos
Los diagramas expresan grficamente partes de un modelo
Diagramas de
Clase

(Qu Muestran?)
Muestran la estructura esttica del sistema modelado.
Se concentran en los elementos del sistema de forma
independiente del tiempo
Muestran las relaciones que existen entre las distintas
clases y objetos del sistema
Muestran las clases y objetos del sistema y su estructura
interna

(Para qu Sirven?)
Permiten realizar la abstraccin de un dominio y formalizar
el anlisis de los conceptos relacionados al mismo
(o de cualquier tipo de conceptos)
Permiten definir una solucin de diseo, es decir, la
estructura del sistema que se va a implementar en
trminos de clases y objetos
Permiten realizar modelado de datos
(cumplen la misma funcin en este sentido de los
diagramas ERE)
Diagrama de Clases
El Diagrama de Clases es el diagrama principal para el
anlisis y diseo del sistema
Un diagrama de clases presenta las clases del sistema
con sus relaciones estructurales y de herencia
La definicin de clase incluye definiciones para
atributos y operaciones
El modelo de casos de uso debera aportar
informacin para establecer las clases, objetos,
atributos y operaciones
Objetos
Objeto = unidad atmica que encapsula estado y
comportamiento
La encapsulacin en un objeto permite una alta
cohesin y un bajo acoplamiento
La cohesion es la medida de la cercania de las
relaciones entre sus componentes.
El acoplamiento es una medida de la fuerza de las
interconecciones entre los componentes en el diseo.
Un objeto puede caracterizar una entidad fsica (coche)
o abstracta (ecuacin matemtica)

(Que es una Clase?)
Visibilidad:
- Privado
~ Paquete
# Protegido
+ Pblico
Nombre Atributo
Valor por Defecto
Tipo de Dato
Multiplicidad
Tipo de Retorno Parmetros de Entrada Nombre del Mtodo
Clase / Clasificador: Definicin de la estructura y el
comportamiento de un conjunto de objetos que tienen el
mismo patrn estructural y de comportamiento
Clases y Objetos
En UML, para distinguir una
clase y una instancia de la
clase (un objeto) se
representa por un rectngulo
con un nombre subrayado
Objeto = Identidad + Estado
+ Comportamiento
El estado est representado
por los valores de los
atributos los cuales tienen una
visibilidad.
Un atributo toma un valor en
un dominio concreto.



Clases y objetos

La clase define el mbito de definicin de un conjunto de objetos

Cada objeto pertenece a una clase

Los objetos se crean por instanciacin de las clases

Para distinguir entre una clase (el tipo) y un objeto (una instancia
del tipo), un objeto se muestra subrayado. Un objeto puede
representarse como anObject, anotherObject:Class, o :Class.

Las clases y los objetos forman parte de varios diagramas UML.

Clases: Notacin Grfica
Cada clase se representa en un rectngulo con tres
compartimientos:

nombre de la clase
atributos de la clase
operaciones de la clase


Motocicleta
color
cilindrada
velocidad mxima
arrancar()
acelerar()
frenar()
Diagramas de Clases
Qu es una Instancia?

Qu es Instanciar?

Qu es una
Clasificacin (POO)?

Qu es la extensin de
una clase (POO)?
Conceptos de Objetos
(Diagramas de Clases)
Extensin de Clase: Conjunto de
todas las instancias de una clase
Instancia: Cada objeto que
pertenece a una clase
Instanciacin: Proceso de
generacin o creacin de las
instancias (objetos) de una clase
Clasificacin: Agrupacin de
objetos con propiedades y
comportamiento similares dentro de
una clase
pedro = new Persona()
Clases: Encapsulacin
La encapsulacin permite la cohesion y presenta dos
ventajas bsicas:
Se protegen los datos de accesos indebidos
El acoplamiento entre las clases se disminuye
Favorece la modularidad y el mantenimiento

Los atributos de una clase no deberan ser
manipulables directamente por el resto de objetos

Clases: Encapsulacin
Los niveles de encapsulacin estn heredados de los
niveles
de C++, y explican si estos son visibles desde el exterior de
la clase:
(-) Privado : es el ms fuerte. Esta parte es totalmente
invisible (excepto para clases friends en terminologa C++)

(#) Los atributos/operaciones protegidos estn visibles
para las clases friends y para las clases derivadas de la
original

(+) Los atributos/operaciones pblicos son visibles a otras
clases (cuando se trata de atributos se est transgrediendo
el principio de encapsulacin)
Clases: Encapsulacin
Ejemplo:
Reglas de visibilidad
+ Atributo pblico : Integer
# Atributo protegido : Integer
- Atributo privado : Integer
+ "Operacin pblica"()
# "Operacin protegida"()
- "Operacin privada"()
Diagramas de Clases

Un diagrama de clases describe los tipos de objetos
en el sistema y los distintos tipos de relaciones
estticas que existen entre ellos. Existen cuatro
relaciones:

Asociacin
Generalizacin/especializacin
Agregacin/composicin
Dependencia



(Asociaciones)
Asociaciones: Representan relaciones estructurales entre
las clases (la forma en que estn relacionadas entre si las
clases)
Cmo se implementan?
Asociacin
Profesor Departamento
1 0..1
director
1
dirige
0..1
Permite asociar objetos.
La asociacion se representa mediante una lnea
que une las cajas de los dos objetos.
Empresa Empleado
1..* * 1..* *
trabajadores empleador
Cargo
nombre
sueldo
0..1
1..*
superior
subordinado
1..*
0..1
Asociacin
Profesor Departamento
1 0..1
director
1
dirige
0..1
Una asociacin se representa mediante una lnea que une las
cajas de las dos clases.
Esta asociacion tiene un nombre y opcionalmente una
pequea cabeza de flecha que indica la direccin en la cual
se debe leer el nombre de la asociacin.
En cada extremo de la lnea se sita la multiplicidad o
cuantas instancias de una clase se relacionan con una
instancia de la otra.
Se puede usar una flecha de lnea (stick arrow) para
representar la direccin de la navegabilidad.
Asociacin
Ejemplo:


Compaa
nombre
direccin
Persona
nombre
s.s.
0..1
*
jefe
0..1
Administra
empleado
*
0..1
0..1
mujer
0..1
casado-con
marido
0..1
*
*
trabaja-para
*
emplea-a
*
Asociacin
Especificacin de multiplicidad (mnima...mxima)

1 Uno y slo uno
0..1 Cero o uno
M..N Desde M hasta N (enteros naturales)
* Cero o muchos
0..* Cero o muchos
1..* Uno o muchos (al menos uno)

La multiplicidad mnima >= 1 establece una restriccin
de existencia


Relacin de Asociacin
UniDireccional

Relacin de Asociacin Bidireccional

(Asociaciones / Navegabilidad)
Navegabilidad: Representan relaciones estructurales entre
las clases (la forma en que estn relacionadas entre si las
clases)
Indefinido
Navegable
NO navegable
Navegable por ambos lados

(Especializacin / Generalizacin / Herencia)
J erarqua de Clases:
Relacin ES-UN(A),
abstracciones de
generalizacin /
especializacin de clases
Herencia: Propiedad que
tienen las clases de heredar
de sus superclases estructura
y/o comportamiento (Simple /
Mltiple)
Generalizacin
Catalogue n umber
Acquisition da te
Cost
Type
Status
Number of copies
Library item
Acquire ()
Catalogue ()
Dispose ()
Issue ()
Return ()
Author
Edition
Publication da te
ISBN
Book
Year
Issue
Magazine
Director
Date of release
Distributor
Film
Version
Platfor m
Computer
program
Title
Publisher
Published item
Title
Medium
Recorded item
Esta es una relacin de
tipo: es-un.
Una generalizacin se
representa como una flecha
que une a las subclases
(hijos) a la superclase
(padre), con la flecha
tocando la caja de la
superclase.
Generalizacin
Permite gestionar la complejidad mediante un
ordenamiento taxonmico de clases
Se obtiene usando los mecanismos de abstraccin de
Generalizacin y/o Especializacin
La Generalizacin consiste en factorizar las propiedades
comunes de un conjunto de clases en una clase ms
general


... Generalizacin
Nombres usados: clase padre - clase hija. Otros
nombres: superclase - subclase, clase base - clase
derivada
Las subclases heredan propiedades de sus clases
padre, es decir, atributos y operaciones (y asociaciones)
de la clase padre estn disponibles en sus clases hijas



Generalizacin
Supongamos la clase empleado de la universidad
Empleado
Profesor

Adminis-
trativo

Obrero
Autorida-
des
Implementaremos la clase profesor
como subclase de empleado
Generalizacin
Empleado
Atributos:
cedula
nombre y apellido
sueldo por hora
Mtodos:
constructor
obtener cedula
obtener nombre
obtener sueldo por hora
modificar sueldo

class CEmp {
protected float suelhor;
protected String nomape;
protected int cedula;

public CEmp(float sue, String nom, int ced) {
suelhor=sue;
nomape=nom;
cedula=ced;
}
public CEmp(String nom, int ced) {
nomape=nom;
cedula=ced;
}


I mplementando la clase empleado

public int getcedula() {
return cedula;
}
public String getnombre() {
return nomape;
}
public float getsuelhor() {
return suelhor;
}
public void setsuelhor(float sue) {
suelhor=sue;
}
}

Generalizacin
Generalizacin
Profesor
Atributos:
nmero de materias
nmero de horas
dependencia
Mtodos:
constructor
obtener horas
obtener materias
obtener dependencia
calcular sueldo a pagar
Generalizacin
Para indicar que la clase profesor es subclase de la clase empleado
Empleado
Profesor
class CProfesor extends CEmpleado
Generalizacin
Para invocar al constructor de la super clase,
debemos contemplar los siguiente:
Java invoca automticamente al constructor de la
superclase, al crear un objeto de la subclase, la llamada se
efecta sin parmetros.
Si no existe un constructor de la superclase sin parmetros,
se debe especificar la palabra super junto con los
parmetros del constructor que se desee invocar.
En nuestro ejemplo no existe en CEmpleado un constructor
definido sin parmetros, por lo tanto, debemos invocar al
constructor con los parmetros correspondientes desde el
constructor de la subclase.
super(sue,nom,ced);
public class CProf extends CEmp {
protected int nomat;
protected int nohor;
protected String dependencia;

public CProf(String nom, int ced, int m, int n,
String dep, float sue) {

super(sue,nom,ced);
nomat = m;
nohor = n;
dependencia = dep;
}
public CProf(String nom, int ced,String dep)
{
super(0,nom,ced);
dependencia=dep;
nomat=0;
nohor=0;
}

I mplementando la clase profesor
public int gethoras() {
return nohor;}
public int getmat() {
return nomat;}
public String getdep() {
return dependencia; }
public void setmat(int mat) {
nomat=mat; }
public void sethor(int hor) {
nohor=hor; }
public float getsuelpagar() {
return nohor*suelhor; }
}

Generalizacin
class Univer {
public static void main(String args[]) {
CProf Betty;
CProf Carlo;
CProf Elvira;
Betty = new CProf("Betty del moral",785747,2,12,"Programacion",80000.00f);
Elvira = new CProf("Elvira Navas",685422,2,12,"Programacion",100000.00f);
Carlo = new CProf("Carlo Magurno",542635,"Programacion");
Carlo.setmat(3);
Carlo.sethor(16);
Carlo.setsuelhor(60000f);

System.out.println(Betty.getcedula()+Betty.getnombre()+Betty.getsuelpagar());
System.out.println(Elvira.getcedula()+Elvira.getnombre()+Elvira.getsuelpagar());
System.out.println(Carlo.getcedula()+Carlo.getnombre()+Carlo.getsuelpagar());
}
}

Creando tres profesores
Generalizacin
Relacion de Dependencia entre
Clases

Se usa para mostrar
relaciones entre paquetes
(grupos de clases)
Proveedor Cliente

(Agregacin / Composicin)
Composicin: Las partes NO
pueden ser compartidas por
varios todos!
Agregacin: Las partes
pueden ser compartidas por
varios todos!
Agregacion de Objetos
En este modelo se muestra como
las clases pueden estar compuestas
por otras clases.
Existe la relacion de agregacion y
la de composicion.
Son similares a los modelos de
entidad-relacion.

(Agregacin / Composicin)
Precise semantics of shared aggregation varies by
application area and modeler
Tomado Literalmente del Estndar de UML
Composicin: El todo no
puede existir sin las partes
(Ejemplo Anterior)
Composicin: Las partes no
pueden existir sin el todo
En contradiccin con el
ejemplo anterior:
La parte (La rueda) puede existir sin el todo?
Ejemplos



Window
scrollbar[2] : Slider
title : Header
body : Panel
Slider Header
Window
1
2
1
2
scrollbar
1
1
1
1
title
Panel
1
1
1
1
body
Esta compuesta de
Son parte de
Composicin
Composicin

(Dependencia)
Dependencia: Relacin en la que una clase necesita
(requiere) a otra para poder funcionar
La clase persona depende de la clase telfono
68
Diagrama de clases
class Dependencias
Dependencia
Escuela
Departamento
InstitutoDeInvestigacin
CentroDeInvestigacin
LaboratorioDeInvestigacin
Postgrado
Facultad/Ncleo
+tieneDepartamentos 1..*
+tieneEscuelas
1..*
+tieneInstitutos
*
+tieneCentros
*
+tieneLabs
*
+tienePostgrados
*
69
Diagrama de clases
class pelculas
Pelcula
- titulo: string = Desconocido
- ao: char = 0000
- duracion: float = 0.0
- tipo: TipoPelicula
+ nuevaPelicula() : void
- setTitulo(string) : void
+ getTitulo() : string
- setAo(char) : void
+ getAo() : char
- setDuracion(float) : void
+ getDuracion() : float
+ modificaPelicula() : void
+ despliegaPelicula() : void
+ eliminaPelicula() : void
enumeration
TipoPelicula
enum
drama
suspenso
accin
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
*
produccin
+producidaPor
1..*

S-ar putea să vă placă și