Sei sulla pagina 1di 33

Tema 2.

El paradigma
Orientado a Objetos.

Departamento de Lenguajes y Ciencias de la Computación


E.T.S. de Ingenieros en Informática
Universidad de Málaga
http://www.lcc.uma.es/~amg/ISE/Tema2.zip
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Programa

El Paradigma Orientado a Objetos


– Historia e introducción.
– Conceptos básicos.
– Aplicación de los conceptos en
lenguajes de programación y
métodos de análisis.

Departamento de Lenguajes y Ciencias de la


Computación. 2
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

A Evolución Histórica A
B B
S S
T Lenguajes Id = Dir Mem. T
R Cód.Inst.Simb.
A Máquina / Manip.Total de R
Macros A
C Ensamblador Datos
C C
I Id. Simb. C
Ó Subrutinas FORTRAN I
N Tipos
Funciones Ó
O
Oper. restring. N
P
Registros D
E Anidamiento PASCAL
R Tipos definidos E
A Subprogramas
C Gest. Din. Mem
D
I
O Encapsulam. Tipo A
N MODULA-2 T
Octult. Inform. Abstracto de O
A ADA
L Espec - Impl Datos S

Métodos Lenguajes Objetos


Mensajes Orientados a
Objetos
Departamento de Lenguajes y Ciencias de la
Computación. 3
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

A Evolución Histórica A
B
S B
T S
R
Cód.Inst.Simb.
Lenguajes Id = Dir Mem. T
A Manip.Total de R
C Macros Máquina / A
C Ensamblador Datos
C
I C
Ó Id. Simb.
Subrutinas I
N
Funciones
FORTRAN Tipos Ó
O
Oper. restring. N
P
E Registros D
Anidamiento
R
Subprogramas
PASCAL Tipos definidos E
A Gest. Din. Mem
C D
I A
O Encapsulam. Tipo
MODULA-2 T
N Octult. Inform. Abstracto de O
A Espec - Impl ADA Datos S
L

Métodos Lenguajes
Mensajes Orientados a Objetos
Objetos

COMPONENTES
Eventos
Componentes
Invocación remota

Departamento de Lenguajes y Ciencias de la


Computación. 4
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Introducción

Razones para la crisis del software


– ¿Hacer un lápiz es difícil?
– ¿La industria del software se parece
más a ...
• la fabricación de armas?
• la fontanería?
Tecnología / objetivo.

Departamento de Lenguajes y Ciencias de la


Computación. 5
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Programa

El Paradigma Orientado a Objetos


– Historia e introducción.
– Conceptos básicos.
– Aplicación de los conceptos en
lenguajes de programación y
métodos de análisis.

Departamento de Lenguajes y Ciencias de la


Computación. 6
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

¿Qué es la Orientación a Objetos?

 El concepto surge en los lenguajes de


programación
– Se organiza el software como una colección de objetos
discretos que encapsulan
• Estructuras de Datos y
• Comportamiento.
– Un sistema OO funciona mediante la colaboración entre
los objetos que se comunican entre sí.
 El concepto se extiende a los métodos de análisis y
diseño
– Se utilizan los objetos del mundo real como base para
construir modelos
– Los elementos que forman los sistemas del mundo real se
corresponden con objetos software

Departamento de Lenguajes y Ciencias de la


Computación. 7
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Las clases y los objetos están en todas


partes

Vehículo

Platero:Animal
Animal

Punto

Figura (1,3)
(5,2.5)
(2,2)
(2,1)
Departamento de Lenguajes y Ciencias de la
Computación. 8
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Conceptos básicos: CLASES y OBJETOS


Lavadora
 CLASE
marca
– Atributos modelo
capacidad: integer
– Operaciones ...
– Comportamiento Programar
PonerRopa
CerrarPuerta
 OBJETO Lavar

– Valores de los atributos


ID:Lavadora
– Estado
– Identidad marca=“Lapava”
capacidad=5
estado=centrifugando

Departamento de Lenguajes y Ciencias de la


Computación. 9
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Conceptos básicos: PASO DE


MENSAJES
 Invocación de métodos
 Medio de colaboración
entre objetos

Conectar()
:MandoADistancia :Televisor
Canal(4)

Departamento de Lenguajes y Ciencias de la


Computación. 10
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Conceptos básicos: ENCAPSULACIÓN

 Ocultaciónde detalles
 Concepto de Interfaz
 Independencia

l+
Vo

Sens => =>


Sens3 VolUp =>
Vol++
=>=>Settings.vol++
DAC31.out=2.1
=>=>DAC23.out=0.7
Amp27.gain=1.3
=>=>Amp02.gain=1.7
OSD, Pref, ...
=> OSD, Pref, ...

Departamento de Lenguajes y Ciencias de la


Computación. 11
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Conceptos básicos: HERENCIA

 Generalización / Especialización
 Los objetos “heredan” las características de la clase.
 Las clases pueden heredar de otras clases.
– Extensión.
– Restricción.
Electrodoméstico
– Modificación. tensión
consumo
 Utilidad: Conectar
– Abstracción. Desconectar

– Reutilización.

Lavadora
Hormiga Televisor Plancha
capacidad numCanales vapor

Departamento de Lenguajes y Ciencias de la


Computación. 12
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Conceptos básicos: POLIMORFISMO

 Ej: Operación “Abrir”


Puerta Cuenta Puerto Plazo

Abrir() Abrir() Abrir() Abrir()

 Permite al modelador hablar el lenguaje del cliente.


 Evita asignar identificadores artificiosos para
distinguir las operaciones.
 Contribuye a la reutilización de código.
 Ej: Operación “Enchufar” TomaDeCorriente
tensión
Enchufar(e:Electrodoméstico)

Departamento de Lenguajes y Ciencias de la


Computación. 13
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Conceptos básicos: ASOCIACION

 Modela la relación entre objetos (necesaria


para que se comuniquen y colaboren)
 Asociación-Clase / Enlace-Objeto
 Tipos básicos:
– Asociación
– Herencia
– Agregación / Composición (agregación fuerte)

Coche Motor Árbol Hoja

Departamento de Lenguajes y Ciencias de la


Computación. 14
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Hasta aquí deberíamos tener claro ...

 Cómo surge el enfoque OO.


 Cómo funciona un sistema OO.
 El concepto y la representación de:

 Clase y Objeto  Asociación


– Atributos – Agregación
– Operaciones – Herencia
– Comportamiento  Polimorfismo
– Identidad  Pasode mensajes
 Interfaz  Encapsulación

Departamento de Lenguajes y Ciencias de la


Computación. 15
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Programa

El Paradigma Orientado a Objetos


– Historia e introducción.
– Conceptos básicos.
– Aplicación de los conceptos en
lenguajes de programación y
métodos de análisis.

Departamento de Lenguajes y Ciencias de la


Computación. 16
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Clases y Objetos

 CLASE = MODULO + TIPO


• Criterio de Modularización
• Estado + Comportamiento
• Entidad estática (en general)

 OBJETO = Instancia de una CLASE


• Objeto (Clase) ≈ Valor (Tipo)
• Identidad
• Entidad dinámica
• Cada objeto tiene su propio estado
• Objetos de una clase comparten su comportamiento
Departamento de Lenguajes y Ciencias de la
Computación. 17
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Métodos y Mensajes

 Métodos: definen el comportamiento de


una clase
Punto Estado e identidad
x,y: float
Comportamiento
trasladar(a,b)
distancia(pto)

 Invocación de métodos: Paso de Mensajes


obj.mens(args) mens(obj,args)
P1:Punto
trasladar(1,-1)
X=2
Y=2
Departamento de Lenguajes y Ciencias de la
Computación. 18
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Clases

 Estructuras que encapsulan datos y


funciones
CONSTRUCTOR
class Punto VARIABLES DE ESTADO
{ public: (DATOS MIEMBRO)
Punto();
“Punto.hpp”

float x,y;
void trasladar(float, float);
void cambiar_x(float
a){x=a;};
void cambiar_y(float
b){y=b;};
float distancia(Punto); MÉTODOS
}; (FUNCIONES MIEMBRO)
Departamento de Lenguajes y Ciencias de la
Computación. 19
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Colaboración entre objetos

 Los objetos (clases) colaboran para


resolver problemas.
 La forma en que los objetos (clases)
colaboran puede ser muy variada:
– Asociación simple
– Herencia
– Agregación
– Composición
– ...

Departamento de Lenguajes y Ciencias de la


Computación. 20
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Agregación de objetos
class Segmento {
private Punto inicio,final;

public Segmento(Punto p)
{inicio = Punto();
final = p;}

public float longitud()


{return inicio.distancia(final);}

public void trasladar(float a,float b)


{inicio.trasladar(a,b);
final.trasladar(a,b);}
}
Departamento de Lenguajes y Ciencias de la
Computación. 21
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Composición de objetos

public class Habitacion {


private int numHabitacion;
private int numCamas;
// declaración de métodos
...
}

public class Hotel1 {


Habitacion h1;
Habitacion h2;
// resto declaraciones
...
h1 = new Habitacion( 222 );
}
Departamento de Lenguajes y Ciencias de la
Computación. 22
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Construcción y Destrucción

 Diferentesmecanismos para la creación y la


eliminación de objetos, dependiendo del
lenguaje.
 Construcción de objetos (≈ reservar memoria):
– Constructores (C++, Eiffel, Java)
– Métodos de clase (Smalltalk)
 Eliminación de objetos (≈ liberar memoria):
– Destructores (C++)
– Recolección automática de memoria –garbage
collection- (Smalltalk, Eiffel, Java)

Departamento de Lenguajes y Ciencias de la


Computación.
Detalles 23
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Construcción y Destrucción
//C++
class Jugador {
int salud;
int fuerza;

Jugador(); // constructor - no tiene tipo


Jugador(int s, int f);// constructor alternativo
void mover();
void atacar();
};

Jugador::~Jugador() {
salud = 0;
fuerza = 0;
}
Departamento de Lenguajes y Ciencias de la
Computación. 24
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Construcción y Destrucción

JAVA
class Circulo extends Elipse {
// extensión, restricción, modificación;
public Circulo () {
... };
public Circulo (int radio) {
... };
}
...
Circulo c1;
...
c1 = new Circulo(4);
Departamento de Lenguajes y Ciencias de la
Computación. 25
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Construcción y Destrucción

Smalltalk
Vehiculo subclass: #Coche
// extensión, restricción, modificación;

...
MiCoche := Coche new: ’ABC-1234’

Departamento de Lenguajes y Ciencias de la


Computación. 26
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Herencia
 Posibilidad de reutilizar código
 Algo más que incluir ficheros o importar
módulos
Figura
 Distintos tipos de herencia:
– simple / múltiple
– de implementación/de interfaz
 Limitaciones
Polígono Elipse
 Problemas

Regular Irregular Círculo


Detalles
Departamento de Lenguajes y Ciencias de la
Computación. 27
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Herencia
JAVA
class Elipse extends Figura {
// extensión, restricción, modificación
}
C++
class Elipse : public Figura {
// extensión, restricción, modificación
}
Smalltalk
Figura subclass: #Elipse
”extensión, restricción, modificación”
Python
class Elipse (Figura)
”extensión, restricción, modificación”

Departamento de Lenguajes y Ciencias de la


Computación. 28
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Herencia

 Extensión y Reutilización de código


 Una clase derivada hereda el
comportamiento de su clase padre
 Redefinición de métodos
 Clases abstractas
 Herencia múltiple / Herencia repetida

Departamento de Lenguajes y Ciencias de la


Computación. 29
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Polimorfismo

puntero a objeto en C++


 Una variable puede referirse a objetos de
una clase distinta de la que se ha declarado
 Tipo Dinámico vs. Tipo Estático
 Polimorfismo de objetos / de mensajes
 Restricción en base a la herencia

Departamento de Lenguajes y Ciencias de la


Computación. 30
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Encapsulación

 Las clases ocultan los detalles de realización


de los métodos.
 Los “usuarios” (los objetos que invocan
esos métodos) conocen el interfaz y la
semántica. No tienen que preocuparse de los
detalles.
 El concepto de interfaz puede ampliarse.
 Contribuye a la reusabilidad del código.

Departamento de Lenguajes y Ciencias de la


Computación. 31
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

Al fin del tema 2 debemos tener claro


...
 Cómo surge y evoluciona el concepto OO.
 Cuáles son los elementos y características
básicas de este enfoque.
 Cómo se plasma el enfoque OO en los
lenguajes de programación.
 Las particularidades que se introducen
sobre los conceptos básicos al aplicarlos
en sistemas reales

Departamento de Lenguajes y Ciencias de la


Computación. 32
Ingeniería del Software.
Tema 5. El Paradigma Orientado a Objetos.
Especificación

A continuación ...
 El Lenguaje de Modelado Unificado.
– Introduciremos UML, y
– veremos cómo realizar
• Modelado estructural
• Modelado del comportamiento
• Modelado arquitectónico
 Preparación:
– Tema 3. El Lenguaje de Modelado Unificado.
http://polaris.lcc.uma.es/~amg/ISE/Tema3.zip
– Caps. 1,3,4,5. Schmuller. Teach yourself UML in 24 hours.
– Cap, 1. “Los 3 amigos”, The Unified Modeling Language.
– Probar/Jugar con Rational Rose y MagicDraw UML.

Departamento de Lenguajes y Ciencias de la


Computación. 33

Potrebbero piacerti anche