Está en la página 1de 8

Programación Orientada a Objetos (3er curso, grupo 32) 16.02.

10
1. Introducción: conceptos de Programación Orientada a Objetos

Paradigmas de programación

Prog. orientada a objetos

Conceptos de Programación Abstracción de datos

Orientada a Objetos
Programación estructurada

Programación imperativa

Programación estructurada (I) Programación estructurada (II)


Abstracción de operaciones
ƒ Estructura de un módulo:
Valores de entrada Procedi- – Interfaz – Implementación
miento à Datos de entrada à Datos locales
à Datos
D t d de salida
lid à Secuencia
S i dde iinstrucciones
t i
Bloque
à Descripción funcionalidad
principal Valores de entrada
Función ƒ Sintaxis del lenguaje:
Valor(es) de salida – Organización del código en bloques de instrucciones
Definición de funciones y procedimientos
– Extensión del lenguaje con nuevas operaciones
Llamadas a nuevas funciones y procedimientos

3 4

Programación estructurada: ventajas Programación estructurada: ejemplo

ƒ Facilita el desarrollo
void main ()
– Se evita la repetición del trabajo {
– Trabajo de programación compartimentado en módulos independientes double u1, u2, m;
u1 = 4;
double modulo (double u1, double u2)
– Diseño top-down:
p descomposición
p en subproblemas
p u2 = -2;
{
m = sqrt (u1*u1 + u2*u2);
double m;
ƒ Facilita el mantenimiento printf (”%lf”, m);
m = sqrt (u1*u1 + u2*u2);
}
– Claridad del código return m;
}
– Independencia de los módulos
void main ()
ƒ Favorece la reutilización {
printf (”%lf”, modulo (4, -2));
}

5 6

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid
Programación Orientada a Objetos (3er curso, grupo 32) 16.02.10
1. Introducción: conceptos de Programación Orientada a Objetos

Tipos abstractos de datos Abstracción de datos


Abstracción de datos + abstracción de operaciones c
z
a
ƒ Un tipo abstracto de datos consiste en: b
x
y
– Estructura de datos que almacena información para representar un
determinado concepto
– Funcionalidad: conjunto de operaciones que se pueden realizar sobre el tipo
de datos

ƒ Sintaxis del lenguaje:


– Módulos asociados a tipos de datos
– No introduce necesariamente variaciones respecto a la programación modular

7 8

Abstracción de operaciones Ejemplo de TAD en C

struct vector {
Entrada Entrada double x;
double y;
};

void construir (vector *u, double u1, double u2)


{
u->x
u >x = u1;
arg1 arg1 arg2 arg3 u->y = u2;
}
void main ()
double modulo (vector u) {
{ vector u;
double m; construir (&u, 4, -2);
m = sqrt (u.x*u.x + u.y*u.y); printf (”%lf”, modulo (u));
return m; }

Salida Salida }

9 10

Ejemplo de TAD: extensibilidad Tipos abstractos de datos: ventajas

... ƒ Conceptos del dominio reflejados en el código

double producto (vector u, vector v) ƒ Encapsulamiento: ocultación de la complejidad interna y detalles de los
{
return u.x * v.x + u.y * v.y; datos y las operaciones
}
ƒ Especificación vs. implementación: utilización del tipo de datos
void main ()
{ independiente de su programación interna
vector u, v;
construir (&u, 4, -2); ƒ Mayor modularidad: también los datos
construir (&v, 1, 5);
printf (”%lf”, producto (u, v)); ƒ Mayor facilidad de mantenimiento, reutilización
}

11 12

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid
Programación Orientada a Objetos (3er curso, grupo 32) 16.02.10
1. Introducción: conceptos de Programación Orientada a Objetos

Programación orientada a objetos (I)


Programación orientada a objetos
) ƒƒ Soporte sintáctico explícito para la abstracción de datos
Cambia el punto de vista: los programas son apéndices de los datos
ƒ Aparece un nuevo concepto: objeto
Programación orientada a objetos
Objeto = tipo abstracto de datos con estado (atributos) y
= comportamiento (operaciones) propios
soporte sintáctico para los tipos abstractos de datos ) ƒ Aparece el concepto de jerarquía de tipos, y con él:
– Herencia de estructura y funcionalidad
+
– Polivalencia de los tipos Funciones
prestaciones asociadas a las jerarquías de clases – Polimorfismo
Objeto
+ ƒ Sintaxis del lenguaje:
cambio de perspectiva – Definición de clases
– Funciones explícitamente asociadas a clases Variables
– Creación de objetos
– Acceso a atributos, invocación de métodos

13 14

Programación orientada a objetos:


Programación orientada a objetos (II)
ejemplo en Java
class Vector {
private double x;
private double y;
Vector (double u1, double u2) { x = u1; y = u2; }
double modulo () { return Math
Math.sqrt
sqrt (x
(x*x
x + y*y);
y y); }
}

class MainClass {
public static void main (String args []) {
Vector u = new Vector (4, -2);
System.out.println (u.modulo ());
}
}

15 16

Programación orientada a objetos: Programación orientada a objetos:


ejemplo en C++ ventajas
class Vector {
private:
ƒ Ventajas de la abstracción de datos + disciplina de programación
double x;
double y; Reutilización de código, mantenimiento y extensión de las aplicaciones
public:
Vector (double u1, double u2) { x = u1; y = u2; } Desarrollo e integración de software orientado a componentes
double modulo () { return sqrt (x*x + y*y); }
};
ƒ Potencia del lenguaje: herencia, polimorfismo
void main ()
{ ƒ ¿Reflejar conceptos de problemas reales?
Vector u (4, -2);
cout << u.modulo ();
}
ƒ ¿Más fácil de utilizar?

17 18

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid
Programación Orientada a Objetos (3er curso, grupo 32) 16.02.10
1. Introducción: conceptos de Programación Orientada a Objetos

Lenguajes orientados a objetos Elementos de la programación


orientada a objetos
ƒ Simula (1967)
ƒ Smalltalk (1980)
ƒ Objetos: atributos + métodos
ƒ C++ (1983, 1990)
ƒ Métodos: operaciones sobre los objetos
ƒ Object Pascal (1988)
ƒ Clases: categorías de objetos con propiedades y operaciones comunes
ƒ Lisp CLOS (1989)
ƒ Java (1995, 1997, 1998...) ƒ Jerarquías de clases
ƒ En algunos lenguajes las clases son objetos
Lenguajes puros vs. híbridos – Caso particular: paradigma prototipo-instancia

ƒ Relaciones, objetos compuestos

19 20

Estructura conceptual de un objeto Relaciones entre objetos


nombre nombre
edad edad
ƒ Propiedades: valores Empleado división Directivo división
sueldo bruto sueldo bruto ƒ Tipos de relaciones
categoría – Especialización: sólo entre clases
ƒ Relaciones con otros objetos Empleado Directivo – Agregación: objetos compuestos formados por partes
– Asociación: relaciones arbitrarias (p.e.
(p e jefe de empleado)

ƒ Métodos: código Empleado ƒ Implementación


– Acceso al estado del objeto – Lenguajes con elementos específicos para relaciones
mostrar
– Cálculos sobre el estado datos – Atributos que contienen referencias (punteros) a objetos
Empleado
– Modificación del estado personales
– Constructores: inicialización calcular
salario
neto

21 22

Objetos: encapsulamiento Ciclo de vida de los objetos


ƒ Porción visible: interfaz (protocolo) ƒ Creación
– Contrato público de comportamiento Reserva de memoria: Empleado x = crear Empleado (···)
Inicialización de atributos: constructores
– Descripción de operaciones: información de entrada y de salida
ƒ Manipulación
ƒ Porción oculta: implementación
Datos
Acceso a atributos: x . nombre
– Estructura de datos para almacenar la información Invocación de métodos: x . salario_neto ( )
– Código que se ejecuta para realizar las operaciones ƒ Destrucción
Liberar la memoria
Destruir partes internas, si las hay
Interfaz
Métodos Eliminar referencias al objeto destruido (p.e. jefe)

23 24

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid
Programación Orientada a Objetos (3er curso, grupo 32) 16.02.10
1. Introducción: conceptos de Programación Orientada a Objetos

Jerarquías de objetos Herencia de estructura


nombre
Persona Persona
Jerarquía de tipos edad

Persona x
Empleado y = crear Empleado
división p
nombre empresa
Empleado
l d Cliente
li Directivo z = crear Directivo Empleado
l d Cliente
li
sueldo bruto teléfono de contacto
x=y
x=z
Directivo categoría Directivo

25 26

Herencia de funcionalidad Facilidad de extensión


mostrar
datos
personales Reutilización
Persona
especialización especialización
Persona

Modularidad calcular
salario
l i Empleado
l d Cliente
li
calcular mostrar mostrar neto
salario datos Empleado Cliente datos
neto personales personales

herencia mostrar
datos Administrativo Directivo
calcular mostrar personales
salario datos Directivo
neto personales

27 28

Herencia múltiple
Herencia múltiple Resolución de la ambigüedad
x
curso año promoción
asignaturas Estudiante Licenciado especialidad A
matricularse (asignatura) nota media

y y
B C D obj = crear D
t z
Alumno
doctorado obj . x
obj . y
año promoción
especialidad D
nota media
curso x
asignaturas y
matricularse (asignatura) z
t

29 30

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid
Programación Orientada a Objetos (3er curso, grupo 32) 16.02.10
1. Introducción: conceptos de Programación Orientada a Objetos

Polimorfismo Ligadura dinámica (II)


ƒ Sobrecarga ƒ Ligadura dinámica Calcular área de figura seleccionada
Recta r1 = crear Recta Persona x
Recta r2 = crear Recta Empleado y = crear Empleado área ( )
Vector v = crear Vector x=y
r1.paralela (r2) x.mostrar datos ( )
x.mostrar_datos Figura
g
r1.paralela (v) y.mostrar_datos ( )
ƒ Sobreescritura (especialización)
Persona x = crear persona
Empleado y = crear Empleado Triángulo Rectángulo Elipse
x.mostrar_datos ( )
área ( ) área ( ) área ( )
y.mostrar_datos ( )

31 32

Ligadura dinámica de argumentos Ligadura dinámica de argumentos:


ambigüedad (I)
Calcular área de la intersección de figuras seleccionadas
Triángulo f (A x, B y)
A C
double intersección (Triángulo t) f (B x, A y)
double intersección (Elipse e)
double intersección (Rectángulo r)
Rectángulo
double intersección (Triángulo t)
double intersección (Elipse e) B
B b1 = crear B
double intersección (Rectángulo r) ?
Elipse B b2 = crear B
double intersección (Triángulo t) C c = crear C
double intersección (Elipse e)
c . f (b1, b2)
double intersección (Rectángulo r)

33 34

Ligadura dinámica de argumentos: Ligadura dinámica de argumentos:


ambigüedad (II) ambigüedad (III)

f (B x) f (A x)
A A B D
f (B x)
B b = crear B
? b . f (b) C
?
B f (A x)

C c = crear C
D d = crear D
d . f (c)

35 36

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid
Programación Orientada a Objetos (3er curso, grupo 32) 16.02.10
1. Introducción: conceptos de Programación Orientada a Objetos

Análisis y Diseño Orientado a Objetos


Unified Modeling Language (UML) Diagramas UML
ƒ Lenguaje gráfico estándar para visualizar, especificar, construir y documentar
las partes de un sistema de software
– Con cualquier proceso de desarrollo ƒ Estructurales ƒ De comportamiento
– A lo largo de todo el ciclo de vida
– Clases – Casos de uso
– Con distintas tecnologías de implementación
– Herramientas para generar código
– Objetos – Secuencia

ƒ Partes de un modelo en UML – Componentes – Colaboración


– El modelo de clases – Instalación – Estados
– El modelo de casos de uso
– Actividad
– El modelo de interacción
– El modelo de estados
– El modelo de implementación
– El modelo de instalación (deployment)
37 38

Diagramas de clases y objetos


Diagramas UML
Clase Objeto
Atributos Atributos Interfaz
ƒ Estructurales ƒ De comportamiento
– Clases – Casos de uso Operaciones Operaciones
– Objetos – Secuencia
– Componentes – Colaboración
Dependencia
– Instalación – Estados
Generalización
– Actividad
Asociación

Agregación

Composición

39 40

Persona Ordenador
Diagrama
de clases

Figura
nombre : String 1..* Utiliza 0..* nombre : String {abstract}
edad : Integer memoria : Integer Formado por Formado por
* posición : Punto * Canvas

draw ( ) {abstract}
area ( ) : Integer {abstract}
Usuario1 : Persona Servidor7 : Ordenador

nombre = "Juan"
Juan nombre = "Andromeda"
Andromeda
Diagrama de objetos
s

fecha nac. = 21/07/76 memoria = 256

Grupo Círculo Polígono Punto


Formado
Usuario2 : Persona PC12 : Ordenador centro : Punto x : Integer
por
radio : Integer y : Integer
nombre = "Luis“ nombre = "Anubis" *
fecha nac. = 21/07/85 memoria = 128 draw ( ) draw ( ) draw ( )
area ( ) : Integer area ( ) : Integer area ( ) : Integer

41 42

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid
Programación Orientada a Objetos (3er curso, grupo 32) 16.02.10
1. Introducción: conceptos de Programación Orientada a Objetos

Casos de uso Casos de uso


Comunicación
Comunicación
Caso de uso
Cancel appointment Cancel appointment Actor

Caso de uso
Scheduler Scheduler
Make appointment Actor Make appointment
Actor
Caso de uso
Patient Patient
Request medication Request medication
Doctor Doctor
Caso de uso Actor
Pay bill Pay bill
Clerk Clerk

43 44

Secuencia Secuencia Objetos

caller exchange receiver caller exchange receiver

lift receiver lift receiver

dial tone dial tone


Mensajes
dial digit dial digit
... ...

ringing tone phone rings ringing tone phone rings

answer phone answer phone

stop tone stop ringing stop tone stop ringing

Focos de control
45 46

Estados Estados

Estados
Inicio Fin

digit(n) digit(n)
start Partial dial start Partial dial

digit(n) digit(n)

Transiciones

47 48

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid

También podría gustarte