Diseño de Software - Conceptos OO
-
Upload
kenny-horna-cardenas -
Category
Documents
-
view
221 -
download
0
Transcript of Diseño de Software - Conceptos OO
-
8/16/2019 Diseño de Software - Conceptos OO
1/77
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
Diseño Orientado a Objetos
-
8/16/2019 Diseño de Software - Conceptos OO
2/77
¿Qué es “mal diseño”?
• Rigidez : dificultad para introducircambios.
• Fragilidad : efecto cascada.
• Inmovilidad : reusabilidad dificultosa.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
3/77
Agenda
• Conceptos de Orientación a Objetos
• Principios de Diseño O-O
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
4/77
Orientación a Objetos
Revisión de conceptos
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
5/77
¿Qué significa “Orientado a
Objetos”?Un modelo es orientado a objetos cuandoestá compuesto por un conjunto de
objetos que cooperan entre si enviándosemensajes . Dichos objetos pertenecen aclases , las cuales pueden relacionarse
entre si por medio de la herencia .
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
6/77
¿Qué es un Objeto?
Un Objeto representa un ítem o entidadindividual (ya sea conceptual o real) con
un rol bien definido en el dominio delproblema.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
7/77
Objetos: algunos ejemplos
Dominio del Problema Objetos
Operaciones comerciales
Artículos, Facturas,
Ventas, Compras, Clientes,
Contratos, Créditos, etc.
Procesos industriales
Orden de Fabricación,
Productos y piezas,
Métodos, Máquinas, etc.
Redes de Computadoras Nodos, Enlaces,Protocolos, Dispositivos,
Usuarios, Permisos, etc.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
8/77
Caracterización de un Objeto
• Estado
• Comportamiento
• Identidad
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
9/77
Clases: dos visiones
• Plantilla (o template )
Una Clase es la especificación o
descripción genérica de un conjunto deobjetos
• Conjunto de instancias
Una Clase es un conjunto de objetos quecomparten características ycomportamientos comunes
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
10/77
Clases vs. Objetos
• Objeto
entidad individual
• ClaseEspecificación abstracta
• Todo Objeto es instancia de una Clase
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
11/77
Los Objetos colaboran entre si
• Visión antropomórfica
objetos como “entes vivos”
• Responsabilidades y ColaboracionesRelaciones de uso
• Relaciones estructurales
Agregación o Composición de Objetos
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
12/77
Mensajes
• La única forma de acceder a un objetoes enviándole un Mensaje.
• “Acceder” obtener información del objeto
solicitar la realización de una acción
• El objeto está encapsulado
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
13/77
Encapsulamiento
• Encapsular significaesconder todos losdetalles de
implementación deun objeto,revelandosolamente aquello
que es necesarioconocer para haceruso del mismo.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
14/77
Enviando mensajes
• Emisor y Receptor(cliente y servidor )
• Selector yParámetros
• Método
Mensaje
Método
ObjetoReceptor
ObjetoEmisor
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
15/77
Agrupando métodos
• Contratos
• Protocolo
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
16/77
Contratos
“Un contrato (o interfaz) define unconjunto cohesivo de requerimientos que
un cliente puede hacer a un server.”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
17/77
Contratos (cont.)
• Un contrato es un conjunto cohesivo demétodos
• Una clase puede implementar muchoscontratos
• El mismo contrato puede ser implementadopor diferentes clases
• Los contratos pueden especificarseindependientemente de las clases que losimplementan
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
18/77
Ejemplopublic interface Ordenable{
public int comparar(Ordenable o);}
class ClaseA implements Ordenable{// ... Otras declaraciones ...public int comparar(Ordenable o){
// compara}
}
class ClaseB implements Ordenable{// ... Otras declaraciones ...public int comparar(Ordenable o){
// compara}
}
class Sorter{// ... Otras declaraciones ...public void shell_sort(Sortable[] a) {....}public void quick_sort(Sortable[] a) {....}public void bubble_sort(Sortable[] a)
}
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
19/77
Protocolo
“ El protocolo de una clase está formadopor el conjunto de aquellos mensajes que
puede responder”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
20/77
Polimorfismo
• Desde el punto de vista del receptor:Es la capacidad de diferentes objetos de
responder de diferente manera ante el mismomensaje.
• Desde el punto de vista del emisor:Es la capacidad para manipular objetos de
diferentes clases solo en base al conocimiento desus propiedades comunes, sin tener en cuenta laclase exacta a la que pertenecen.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
21/77
Herencia
• Permite definir nuevas clases en base aclases ya existentes
• La subclase extiende la superclase,redefiniendo y/o agregandopropiedades.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
22/77
Principios de Diseño Orientado
a Objetos
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
23/77
Principio de Apertura y
Clausura “Las clases debieran estar abiertas parasu extensión pero cerradas para su
modificación”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
24/77
Principio de Apertura y Clausura (cont.)
• Apertura para la extensión
La clase puede extenderse para funcionar
de nuevas maneras• Clausura para la modificación
El código fuente es inviolable: no puede
modificarse
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
25/77
Circulo
radiodibujarCirculo
Figura
tipo
x
y
Rectangulo
largoancho
dibujarrectangulo
Ejemplo
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
26/77
class Circulo: public Figura
{
public:
float radio;
void DibujarCirculo();
};
enum TipoFigura {circulo, rectangulo};
class Figura{
public:TipoFigura tipo;int x, y;
};
class Rectangulo: public Figura{
public:float largo;
float ancho;
void DibujarRectangulo();};
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
27/77
typedef Figura* PunteroFigura;
void Pantalla::DibujarFiguras(PunteroFigura lista[], int n){
int i;
for(i = 0; i < n; i++)
{
Figura* fig = lista[i];
switch(fig->tipo)
{
case circulo:
Circulo* C = (Circulo*)fig;
C->DibujarCirculo();
break;
case rectangulo:Rectangulo* R = (Rectangulo*)fig;
R->DibujarRectangulo();
}
}
}
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
28/77
Rectangulo
largo
ancho
dibujar
Circulo
radio
dibujar
Figura
x
y
dibujar
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
29/77
class Circulo: public Figura
{
public:
float radio;
virtual void Dibujar();
};
class Figura
{public:
int x, y;virtual void Dibujar() = 0;
};
class Rectangulo: public Figura{
public:float largo;
float ancho;
virtual void Dibujar();};
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
30/77
typedef Figura* PunteroFigura;
void Pantalla::DibujarFiguras(PunteroFigura lista[], int n)
{
int i;
for(i = 0; i < n; i++){
Figura* fig = lista[i];
fig->Dibujar();
}
}
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
31/77
Principio de Apertura y Clausura (cont.)
La abstracción es la clave!
ClaseCliente ClaseServidorausa
ClaseCliente ServidorAbstracto
ServidorConcreto1 ServidorConcreto3
ServidorConcreto2
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
32/77
Principio de Apertura y Clausura (cont.)
• Clausura estratégica
Es imposible lograr la clausura absoluta
ante todo tipo de cambioEl diseñador debe seleccionar los cambios
ante los que clausurar el diseño
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
33/77
Principio de Apertura y Clausura (cont.)
“En vez de considerar que cosas podríanforzar un rediseño, considere que cosas
quiere ser capaz de cambiar sinrediseñar”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
34/77
Principio de Apertura y Clausura (cont.)
• Heurísticas derivadas
Todas las variables de instancia deben ser
privadasNo utilizar variables globales
La comprobación de tipos en tiempo de
ejecución (ej: RTTI o tags) es peligrosaDiseñar hacia la interfaz, no hacia la
implementación
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
35/77
Principio del Ocultamiento de
la Información “Todos los detalles acerca de la
implementación de una clase deben serinvisibles e inaccesibles desde el exteriorde la misma”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
36/77
¿Para qué ocultar?
• El problema del AcoplamientoDificultad para entender las dependencias
Rigidez, Fragilidad, Inmovilidad• Ventajas del OcultamientoClara separación de interfaz e implementación
Mayor nivel de abstracción
Acceso controlado a la parte privada
Libertar para modificar la implementación
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
37/77
Dos principios derivados
• Principio de las Mínimas Interfaces
• Principio de las Interfaces Pequeñas
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
38/77
Principio de las Mínimas
Interfaces
“Cada clase debiera comunicarse con lamenor cantidad posible de otras clases”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
39/77
Ejemplovoid Agenda::AniversariosDeHoy(Personas lista[], int n){
int i;for(i = 0; i < n; i++){
Persona* p = lista[i];Fecha* f = P->darFechaNacimiento()
if(f->esHoy()){AgregarPersonaQueCumpleHoy(p);
}
}};
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
40/77
Persona Agenda
Fecha
1
1
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
41/77
void Agenda::AniversariosDeHoy(Personas lista[], int n){
int i;for(i = 0; i < n; i++){
Persona* p = lista[i];
if(p->CumpleHoy())
{AgregarPersonaQueCumpleHoy(p);
}}
};
bool Persona::CumpleHoy()
{return fechaNacimiento->esHoy();
}
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
42/77
Persona Agenda
Fecha
1
1
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
43/77
Principio de las Interfaces
Pequeñas “Si dos clases se comunican, debieranintercambiar la menor cantidad posible de
información”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
44/77
Ejemplo
void AlgunaClase::HacerAlgoConUnTiempo(Tiempo t){
long horas, minutos, segundos;long horaEnSegundos;
horas = t->DarHoras();minutos = t->DarMinutos();segundos = t->DarSegundos();
horaEnSegundos = horas * 3600 + minutos * 60 + segundos;
Procesar(horaEnSegundos);}
Tiempo
horas
minutos
segundos
darHoras
darMinutos
darSegundos
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
45/77
void AlgunaClase:: HacerAlgoConUnTiempo(Tiempo* t){long horaEnSegundos = t->DarHoraEnSegundos();
Procesar(horaEnSegundos);}
long Tiempo::DarHoraEnSegundos(){return horas * 3600 + minutos * 60 + segundos;
}
Tiempo
horasminutossegundos
darHorasdarMinutosdarSegundosdarHoraEnSegundos
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
46/77
Principio de Substitución
“Las funciones que usan referencias ainstancias de una clase determinada,
deben ser capaces de operar con objetospertenecientes a las subclases sinsaberlo”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
47/77
Principio de Substitución (cont.)
• Dicho de otra forma:
Las subclases de una clase deben
diseñarse de tal forma que sus instanciaspuedan intercambiarse libremente coninstancias de la superclase
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
48/77
Ejemplo
Rectangulo
Cuadrado
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
49/77
class Rectangulo{private:
long alto, largo;
public:virtual void AsignarAlto(float a) { alto = a; }virtual float DarAlto() { return alto; }
virtual void AsignarLargo(float l) { largo = l; }virtual float DarLargo() { return largo; }
};
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
50/77
class Cuadrado: public Rectangulo{public:
virtual void AsignarAlto(float a);virtual void AsignarLargo(float l)
};
void AsignarAlto(float a){Rectangulo::AsignarAlto(a);Rectangulo::AsignarLargo(a);
}
void AsignarLargo(float l){Rectangulo::AsignarAlto(l);Rectangulo::AsignarLargo(l);
}
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
51/77
void test(Rectangulo* r){
r->AsignarAlto(5);r->AsignarLargo(4);
float superficie = r->DarAlto() * r->DarLargo();
if(superficie != 20){
MostrarError();}
}
void main(){
Rectangulo* r = new Rectangulo;
Cuadrado* c = new Cuadrado;
test(r); // aquí funciona bientest(c); // AQUÍ DA ERROR!!
}
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
52/77
Principio de Inversión de la
Dependencia• Las clases de alto nivel no debieran
depender de las clases de bajo nivel;ambas debieran depender deabstracciones .
• Las abstracciones no debieran dependerde los detalles; los detalles debierandepender de las abstracciones.
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
53/77
Ejemplo
void Copiador::Copiar(Teclado* t, Impresora* i){
char c = t->LeerCaracter();while(c != EOF)
{i->EscribirCaracter(c);c = t->LeerCaracter()
}}
Copiador
Teclado Impresora
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
54/77
class Reader{public:virtual char LeerCaracter() = 0;
}
class Writer{public:virtual void EscribirCaracter(char c) = 0;
}
DiscoScanner Impresora Pantalla
Copiador
Teclado
Reader Writer
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
55/77
void Copiador::Copiar(Reader* r, Writer* w){
char c = r->LeerCaracter();while(c != EOF)
{w->EscribirCaracter(c);c = w->LeerCaracter()
}}
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
56/77
Estratificación
PoliticasGlobales
Utilidades de bajo nivel
Mecanismos intermedios
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
57/77
Estratificación + Abstracción
PoliticasGlobales Mecanismos abstractos
Utilidades abstractas
Utilidades de bajo nivel
Mecanismos intermedios
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
58/77
Principio de la Segregación de
las Interfaces“Los clientes de una clase no debieran serforzados a depender de interfaces que no
utilizan”
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
59/77
Principio de Segregación de las Interfaces (cont.)
• Fenómeno de las interfaces “gordas ”
Clase C
Clase B
Clase A
Universidad Nacional Mayor de San Marcos
E.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
60/77
Principio de Segregación de las Interfaces (cont.)
• Solución:
Clase B Contrato C Clase C
Clase A
Contrato B
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
61/77
Principio de Segregación de las Interfaces (cont.)
• En sintesis:
Diferentes clientes implican interfaces
separadas
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
62/77
Ejemplo
InspectorPosicional InspectorDeFiguras
Diagrama
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
63/77
Diagrama
InspectorPosicional InspectorDeFiguras
InformadorDeFigurasInformadorPosicional
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
64/77
Principio de la Dependencia
Acíclica “La estructura de dependencias entre
módulos debe ser un grafo acíclicodirigido”
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
65/77
Principio de la Dependencia Acíclica (cont.)
• Modulo:
Conjunto de clases relacionadas, que se
puede tratar como una unidad.
Paquete B
Paquete A
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
66/77
Ejemplo
Aplicacion
Ventanas
de Tareas
Utilidades
Tareas
Base de
Datos
Cajas de
Dialogo
Ventanas
de Mensajes
Ventanas
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
67/77
Ventanasde Tareas
Utilidades
Tareas
Base de
Datos
Ventanas
de Mensajes
Ventanas
Cajas de
Dialogo
Aplicacion
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
-
8/16/2019 Diseño de Software - Conceptos OO
68/77
Clase X Clase Y
AplicacionCajas de Dialogo
Clase X
Clase Abstracta Y
Clase Y
AplicacionCajas de Dialogo
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
DISEÑO ORIENTADO A OBJETOS
-
8/16/2019 Diseño de Software - Conceptos OO
69/77
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
DISEÑO ORIENTADO A OBJETOSUn sistema orientado a objetos se diseña considerando la
interacción entre ellos, tales objetos mantienen su propio estado
local (localidades de memoria) y otorgan operaciones sobre tales
estados.
o1:C1
estado o1
ops1 ()
o3:C3
estado o3
ops3 ()
o4:C4
estado o4
ops4 ()
o2:C3estado o2
ops3 ()
o6:C1estado o6
ops1 ()
o5:C5estado o5
ops5 ()
ESTRATEGIAS DEL DISEÑO
-
8/16/2019 Diseño de Software - Conceptos OO
70/77
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
ESTRATEGIAS DEL DISEÑOORIENTADO A OBJETOS
El proceso de diseño orientado a objetos involucra diseñar clases deobjetos y las relaciones entre estas clases. Dichas clases definen a los
objetos en el sistema y sus interacciones.
Análisis Orientado
a Objetos.Desarrollo de un modelo
Orientado a objetos del
dominio de la
aplicación
1Diseño Orientado
a Objetos.Desarrollo de un modelo
Orientado a objetos de un
sistema de Software,
para implementar los
requerimientos
2
Programación Orientadoa Objetos.
Elaborar un diseñode software usando un lenguaje
de programación
Tal como: JAVA, C++ u otro
3
LAS ASOCIACIONES EN UML
-
8/16/2019 Diseño de Software - Conceptos OO
71/77
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
LAS ASOCIACIONES EN UMLLa asociación es una relación muy simple y es utilizada de forma
regular en UML para indicar que ya sea un atributo de un objeto es unobjeto asociado o la implementación de un método del objeto recae en
un objeto asociado. Una de las asociaciones más frecuentes es la de
agregación.
Empleado
Supervisor
Departamento
supervis
a
es miembro
de
es supervisado
por
OBJETOS CONCURRENTES
-
8/16/2019 Diseño de Software - Conceptos OO
72/77
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
OBJETOS CONCURRENTESConceptualmente, un objeto requiere un servicio de otro pero enviando una “petición de
servicio” o mensaje a ese objeto. Al no existir alguna forma de requerimiento para la
ejecución serial el modelo general de la interacción permite a los objetos ejecutarseconcurrentemente como procesos paralelos.
o1:C1
estado o1
ops1 ()
o2:C2
estado o2
ops2 ()
on:Cn
estado on
opsn ()
ok :Ck
estado ok
opsk ()
CONCURRENCIA
Objetos ejecutándose
en la misma máquina
u objetos distribuidos
ejecutándose en
diferentes máquinas
OBJETOS CONCURRENTES
-
8/16/2019 Diseño de Software - Conceptos OO
73/77
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
OBJETOS CONCURRENTESEn la práctica, la mayoría de los lenguajes de programación tienen por omisión
un modelo de ejecución serial de tal forma que las ejecuciones para los servicios
del objeto se implementan en la misma forma que las llamadas a las funciones.
Logrando con ello suspender la llamada a tal objeto.
Sin embargo, Java y C++ proporcionan un mecanismo llamado Thread (Hilos),
que permite la ejecución de objetos de forma concurrente.
TIPOS DEIMPLEMENTACIÓNDE OBJETOSCONCURRENTES
SERVIDORES. Donde el objeto es ejecutado como un proceso en paralelo. Los métodos inician en respuesta a un
mensaje externo y se pueden ejecutar en paralelo con
métodos asociados con otros objetos. Cuando finaliza, el
objeto se suspende y espera por más peticiones de servicio.
Aplicado en sistemas distribuidos.
OBJETOS ACTIVOS. El estado del objeto puede cambiar
por operaciones internas ejecutadas dentro del mismo
objeto. El objeto nunca se suspende por sí mismo, como en
el caso anterior. Aplicado en sistemas de tiempo real.
UN PROCESO DE DISEÑO ORIENTADO A
-
8/16/2019 Diseño de Software - Conceptos OO
74/77
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
UN PROCESO DE DISEÑO ORIENTADO AOBJETOS
Se tomará un software que se encuentra inmerso en una estación climatológicaautomatizada, como ejemplo de diseño. Las etapas del proceso se encuentran
estrechamente relacionadas y se listan a continuación:
1. Entendimiento y definición del contexto de las formas de uso del
sistema
2. Diseño de la arquitectura del sistema
3. Identificación de los objetos principales del sistema
4. Desarrollo de los modelos de diseño
5. Especificación de las interfaces de los objetos
A continuación se describen las características que la planta climatológica tiene,
así como también las necesidades que tiene. Tomando en consideración y en gran
detalle el hecho de que cada una de ellas deberán de ser tomadas para el diseño
correspondiente.
UN PROCESO DE DISEÑO
-
8/16/2019 Diseño de Software - Conceptos OO
75/77
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
UN PROCESO DE DISEÑOORIENTADO A OBJETOS
Un sistema de registro del clima es necesario con el fin de generar mapasclimatológicos haciendo uso de datos recabados de estaciones climatológicas
lejanas y desatendidas, además de otras fuentes de datos tales como:
observadores climatológicos e información vía satélite. Las estaciones
climatológicas transmiten sus datos a la computadora en respuesta a las
peticiones de esa máquina.
Un sistema computacional dedicado valida los datos coleccionados y recaba la
Información de las diferentes fuentes. Tales datos son almacenados para
Posteriormente, son utilizados en conjunto con la información contenida dentro
De una base de datos de mapas digitalizados, para crear los mapas climatológicos.
Dichos mapas, pueden ser impresos para su distribución o pueden ser desplegados
En un número determinado de formatos
DISEÑO DE LA ARQUITECTURA
-
8/16/2019 Diseño de Software - Conceptos OO
76/77
Universidad Nacional Mayor de San MarcosE.A.P. de Ingeniería de Software
Q
Subsistema
Desplegado de los datos
Subsistema
Almacenamiento de datos
Subsistema
Procesamiento de datos
Subsistema
Colección de datos
En donde los objetos se relacionan con la
forma en la que los datos puedan ser
presentados en forma adecuada a los sereshumanos
En donde los objetos se relacionan con la
forma en la que los datos puedan ser
almacenados para su uso posterior
En donde los objetos se relacionan con la
verificación e integración de los datos
En donde los objetos se relacionan con la
adquisición de los datos de las fuentes
remotas
PAQUETES DE UML
-
8/16/2019 Diseño de Software - Conceptos OO
77/77
PAQUETES DE UMLEn la figura anterior se han mostrado las capas y se ha incluido el nombre de la capa en un
símbolo de paquete de UML que se ha denotado como un subsistema. Un paquete de UML
representa una colección de objetos y otros paquetes. Se verifica que cada capa incluye unnúmero determinado de otros componentes.
Almacenamiento
de datos
Almacenamiento Almacenamiento
Subsistema
Almacenamiento de datos
Checar
datos
Integración
de datos
Subsistema de
Procesamiento de datos
Observador
Comms
Satélite
Estación
climatológica Ballon
Subsistema de
Colección de datos
Interfaz de
usuario
Mapa de
desplegado
Mapa Mapa de
impresión
Subsistema de
desplegado de datos