Está en la página 1de 36

Tema 3

Desarrollo de Software Orientado a Objetos

Ingeniería del Software I

Ricardo Pérez del Castillo


Objetivos

❑Recordar los conceptos básicos de la orientación a objetos

❑Aprender los conceptos básicos de UML como lenguaje de modelado.

❑Bibliografía:
• Schach, S.R. (2004) Classical and Object-Oriented Software Engineering. McGraw Hill
• Pressman, R. S. (2005) Ingeniería del Software: Un enfoque práctico. McGraw-Hill. ISBN:
9789701054734
• Sitio Web de OMG para UML, con información del estándar y otros recursos
(http://www.uml.org/)

2
Contenidos

❑ Objetos
▪ Introducción
▪ Objeto
▪ Clase
▪ Relaciones entre clases
▪ Jerarquías de clases
▪ Polimorfismo
❑UML
▪ Introducción a UML
▪ Tipos de Diagramas
▪ Arquitectura del Software
3
Introducción OO

❑Áreas de Aplicación:
• Lenguajes de programación
• Bases de datos
• Reingeniería de procesos
• CASE
• Inteligencia artificial
• Sistemas operativos
• Interfaces de usuario
• Hardware
❑Beneficios Potenciales:
• Mejorar la calidad del software
• Acortar los tiempos de desarrollo
• Aumentar la productividad del programador
• Incrementar la reutilización del software 4
Introducción OO

❑En el Diseño Estructurado

PROGRAMAS DATOS
D.F.D. Mod. E/R

S. Información
❑La Orientación a Objetos
▪ ...es un paradigma unificador

5
Objeto: Concepto

❑Unidad atómica formada por la


unión de estado y
Comportamiento
comportamiento.
visible
❑La encapsulación proporciona una
cohesión interna fuerte y un OBJETO
acoplamiento externo débil.
❑Para manipular los objetos se
utilizan los mensajes. Estado interno

Objeto = Estado + Comportamiento + Identidad

6
Objeto: estado de un objeto

❑Contiene los valores de sus atributos (variables) cuya información cualifica al objeto.
❑Existe un rango de valores para los atributos
❑El estado en un instante dado corresponde a una selección de valores de entre todos
los posibles en cada atributo.

Automóvil

Automóvil
50 litros

Verde Recorrido de
150 Km.

120 CV
Automóvil

1000 Kg. 30 litros


7
Objeto: comportamiento

❑Describe las acciones y reacciones de los objetos.


❑Cada operación es un átomo de comportamiento.
❑Las operaciones se desencadenan por estímulos externos (mensajes), enviados por
otros objetos.
❑El estado y el comportamiento están relacionados.

Mensaje
Segundo
Primer Objeto
Objeto

Método 1 Método 2 ....... Método n

8
Objeto: identidad

❑Caracteriza la existencia de un objeto.

❑Le distingue de los demás de manera no ambigua independientemente de su estado


▪ Dos objetos se pueden distinguir a pesar de tener atributos idénticos

❑En el modelado no se representa la identidad de manera específica.

❑El concepto de identidad es independiente del de estado.

9
Objeto: Encapsulamiento

Públicos

Atributos
Privados

Representación privada
(cómo)

Métodos Privados

Públicos

Interfaz pública (qué)


Mundo
10
Clase

❑La clase “Persona”


▪ Atributos
• Nombre: String
• Fecha de nacimiento: fecha
• Color del pelo: (negro, blanco, pelirrojo, rubio)
▪ Métodos
• Nacer Persona
• Crecer
• Morir
Ana Paco Andrés ….
23 19 40
rubio negro blanco
Objetos de la Clase Persona

11
Relaciones entre clases

❑Los enlaces particulares que relacionan los objetos pueden verse de manera abstracta
en el mundo de las clases:

▪ A cada familia de enlaces entre objetos corresponde una relación entre las clases de estos
mismos objetos

▪ Existen tres tipos de relaciones entre clases:


• La asociación
• La agregación
• La composición

12
Relaciones entre clases

❑La Asociación:
▪ Expresa una conexión semántica bidireccional entre clases.
▪ Es una abstracción de los enlaces que existen entre los objetos instancias de esas clases.
▪ Se representan como los
enlaces
enlaces y se diferencian por e1
Pepe: Estudiante

el contexto del diagrama. D.E. de Sistemas


e2
Antonio: Estudiante
e3

Sara: Estudiante

Pepe: Estudiante
e1

Ing. Programación e2 Isabel: Estudiante

Asignatura Estudiante

asociación
13
Relaciones entre clases

❑La Asociación:

Trabaja en >
Persona Compañía

< Emplea a
Persona Compañía

Trabaja en >
Persona Compañía
1..* 1

Alumnos Asignaturas
1..* 1..*

14
Relaciones entre clases

❑La Agregación:
▪ Es una forma particular de asociación, 1
pero con acoplamiento fuerte y Agregado componentes
asimétrico *

▪ Una de las clases cumple una función 1


más importante que la otra.
coche motor
▪ Permite representar asociaciones de tipo 1
‘principal/secundario’, ‘todo/partes’,
*
‘compuestos / componentes’, etc. Flota Barcos

* *

Equipo Persona

15
Relaciones entre clases

❑La Agregación:

Coche
marca:String
modelo:String Rueda
cilindrada:entero anchura:entero
diámetro:entero
r1, r2, r3, r4:
inflar()
desinflar()

16
Relaciones entre clases

❑La Composición:
• En una composición el “todo” es
dueño de las “partes”.
*
• Las partes viven dentro del
Texto

“todo” → las partes componentes


deben ser destruidas cuando se * Cuadro de
destruye el “todo”. texto
Contiene
Ventana
*
Botón

*
Menu

17
Las jerarquías de clases

❑Las jerarquías de clases o clasificaciones permiten gestionar la complejidad ordenando


los objetos dentro de árboles de clases
▪ La Generalización:
• Consiste en factorizar los elementos comunes (atributos, operaciones y restricciones) de un
conjunto de clases en una clase más general llamada superclase

Abstracciones más generales

18
Las jerarquías de clases

❑Las jerarquías de clases o clasificaciones permiten gestionar la complejidad ordenando


los objetos dentro de árboles de clases
▪ La Especialización:
• Permite capturar particularidades de un conjunto de objetos no discriminados por las clases ya
identificadas. Las nuevas características se representan por una nueva clase, subclase de una de
las clases existentes.

Extensión por especialización


19
Las jerarquías de clases

❑Herencia (Generalización ↑/ Especialización ↓)


▪ Las subclases heredan las propiedades y métodos de las superclases
▪ Las subclases especializan a la superclase
▪ La superclase es una definición Superclase
generalista de las subclases a1, a2, a3
m1, m2, m3
▪ Las subclases pueden (respecto a los métodos) ...
• Añadir
• Inhibir
• Redefinir Subclase 1 Subclase 2
a1, a2, a3, a3, a7 a1, a2, a3, a4, a5
m1, m2, m3, m3, m5 m1, m2, m3, m3, m4

20
Polimorfismo

❑Capacidad de una operación de tener más de una interpretación en más de una clase.
❑Facultad de un método de poder aplicarse a objetos de clases diferentes
❑Dos formas de polimorfismo
▪ De subclases
▪ De sobrecarga

Ejemplo

21
Polimorfismo

❑Objetos vs Estructurado
public class Zoo {
Animal[] animales;
public void DarSomnifero (Animal a) {
a.dormir;
}
} public class Animal {
abstract void Dormir () {
}
}

public class Leon extends public class Tigre extends public class Oso extends
Animal { Animal { Animal {
public void Dormir () { public void Dormir () { public void Dormir () {
// dormir sobre el vientre // dormir sobre la espalda // dormir en un árbol
} } }
} } }
22
Polimorfismo

❑Como había que hacerlo antes del Polimorfismo


▪ Estructurado vs. Orientación a Objetos
Type TipoAnimal = [ Leon, Oso, Tigre]

Procedure DormirLeon
Begin
// Dormir sobre el vientre
End Procedure

Procedure DormirOso
Begin
// Dormir en un árbol Procedure DarSomnifero
End Procedure Begin
Select Case TipoAnimal:
Procedure DormirTigre Leon: DormirLeon;
Begin Tigre: DormirTigre;
// Dormir sobre la espalda Oso: DormirOso;
End Procedure End Case
End Procedure
23
Introducción a UML

❑UML es un lenguaje de modelado que sirve para visualizar, especificar , construir y


documentar un sistema software.
▪ Lenguaje Modelado = Notación + Reglas (Sintácticas, Semánticas) para modelar
(representar, comprender) un sistema
❑UML es apropiado para modelar diversos sistemas
▪ desde SI en empresas hasta aplicaciones distribuidas basadas en la Web, sistemas
empotrados de tiempo real muy exigentes, etc.

24
Introducción a UML

❑Lenguaje muy expresivo que cubre las distintas vistas necesarias para el desarrollo de
sistemas

❑Aprender a aplicar UML de modo eficaz comienza por crear un modelo conceptual de
lenguaje, lo cual requiere aprender tres elementos:

▪ Bloques básicos de construcción de UML


▪ Reglas que dictan cómo pueden combinarse esos bloques
▪ Mecanismos comunes que se aplican a lo largo del lenguaje

25
Introducción a UML

❑UML es sólo un lenguaje


▪ Independiente del Proceso
▪ Uso óptimo con procesos dirigidos por casos de uso, centrados en la arquitectura,
iterativos e incrementales (es decir, metodología Proceso Unificado de Desarrollo, que se
verá en ISO 2)

❑Lenguaje para:
▪ Visualizar
▪ Especificar
▪ Construir y
▪ Documentar

26
Introducción a UML

❑Lenguaje de modelado estándar:


▪ Vocabulario y reglas centradas en la representación conceptual y física de un sistema

▪ Para la descripción de los ‘planos’ del software

▪ Cubre los diferentes puntos de vistas de la arquitectura de un sistema mientras


evoluciona a través del ciclo de vida del desarrollo de software
• Vistas Software (estáticas, dinámicas, etc..) → Son como los distintos planos de una casa
(fontanería, electricidad, etc..)

27
Arquitectura de un Sistema Software

❑La visualización, especificación, construcción y documentación de un sistema con gran


cantidad de software requiere que el sistema sea visto desde varias perspectivas
❑La arquitectura es el mejor artefacto que puede emplearse para:
▪ Manejar los diferentes puntos de vista
▪ Controlar el desarrollo iterativo e incremental de un sistema a lo largo de su ciclo de vida

28
Introducción a UML

❑UML para especificar:

▪ Especificar es equivalente a construir modelos que cumplan las condiciones de:

• no ambigüedad
• completitud

▪ UML cubre la especificación del análisis, diseño e implementación de un sistema software.

29
Introducción a UML

❑UML para construir

❑Es posible hacer corresponder con los lenguajes de programación (Java, C++, B.Datos,
etc.).

Ingeniería Directa

Modelo
CÓDIGO
UML

Ingeniería Inversa

30
Introducción a UML

❑UML cubre todo el diseño/documentación de un sistema:


▪ Requisitos
▪ Arquitectura
▪ Diseño
▪ Código fuente
▪ Planificación
▪ Pruebas
▪ Prototipos
▪ Versiones

31
Tipos de Diagramas

❑UML 2 tiene 14 tipos de diagramas


❑Veremos 7 tipos:
▪ Clases
▪ Objetos
▪ Casos de uso
▪ Secuencia
▪ Comunicación
▪ Transición entre estados/de estados
▪ Actividad
▪ Componentes
▪ Despliegue
32
Tipos de Diagramas

❑Diagrama de Casos de Uso:


▪ Muestra un conjunto de casos de uso y actores y sus relaciones.
▪ Cubren la vista de casos de uso estática de un sistema.
▪ Son importantes en el modelado y organización del comportamiento de un sistema.

❑Diagrama de Clases:
▪ Muestra un conjunto de clases, interfaces y colaboraciones, así como sus relaciones.
▪ Cubren la vista de diseño estática de un sistema.

33
Tipos de Diagramas

❑Diagrama de Objetos:
▪ Muestra un conjunto de objetos y sus relaciones.
▪ Representan instantáneas de instancias de los elementos encontrados en los diagramas de
clases.
❑Diagrama de Secuencia:
▪ Es un diagrama de interacción que resalta
la ordenación temporal de los mensajes.

❑Diagrama de Comunicación:
▪ Es un diagrama de interacción que resalta la organización estructural de los objetos que
envían y reciben mensajes.

34
Tipos de Diagramas

❑Diagrama de Transición de Estados:


▪ Máquinas de estados, que constan de:
• estados, transiciones, eventos y actividades.
▪ Cubren la vista dinámica de un sistema.
▪ Especialmente importantes en el modelado del comportamiento de:
• una interfaz, una clase o una colaboración
▪ Resaltan el comportamiento dirigido por eventos de un objeto
❑Diagramas de Actividad:
▪ Tipo especial de diagramas de estado
▪ Muestra el flujo de actividades dentro de un sistema.
▪ Cubren la vista dinámica de un sistema.
▪ Especialmente importantes al modelar el funcionamiento de un
sistema
▪ Resaltan el flujo de control entre objetos.
35
Tipos de Diagramas

❑Diagrama de Componentes:
▪ Muestran la organización y las dependencias entre un
conjunto de componentes.
▪ Cubren la vista de implementación
estática de un sistema.

❑Diagramas de Despliegue:
▪ Muestra la configuración de nodosde procesamiento en
tiempo de ejecución y los componentes que residen en
ellos.
▪ Cubren la vista de despliegue estática de una
arquitectura.

36

También podría gustarte