Está en la página 1de 24

Programación Orientada a Objetos (3er curso, grupo 31) 23.02.

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

Conceptos de Programación
Orientada a Objetos

Paradigmas de programación

Prog. orientada a objetos

Abstracción de datos

Programación estructurada

Programación imperativa

Escuela Politécnica Superior


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

Programación estructurada (I)

Valores de entrada Procedi-


miento

Bloque
principal Valores de entrada
Función
Valor(es) de salida

Programación estructurada (II)


Abstracción de operaciones
ƒ Estructura
E t t de
d un módulo:
ód l
– Interfaz – Implementación
à Datos de entrada à Datos locales
à Datos de salida à Secuencia de instrucciones
à Descripción funcionalidad

ƒ Sintaxis del lenguaje:


– 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

Escuela Politécnica Superior


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

Programación estructurada: ventajas

ƒ Facilita el desarrollo
– Se evita la repetición del trabajo
– Trabajo de programación compartimentado en módulos independientes
– Diseño top-down: descomposición en subproblemas
ƒ Facilita el mantenimiento
– Claridad del código
– Independencia
I d d i dde llos módulos
ód l
ƒ Favorece la reutilización

Programación estructurada: ejemplo

void main ()
{
double u1, u2, m;
u1 = 4;
double modulo (double u1, double u2)
u2 = -2;
{
m = sqrt (u1*u1 + u2*u2);
double m;
printf (”%lf”, m);
m = sqrt (u1*u1 + u2*u2);
}
return m;
}

void main ()
{
printf (”%lf”, modulo (4, -2));
}

Escuela Politécnica Superior


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

Tipos abstractos de datos


Abstracción de datos + abstracción de operaciones
ƒ Un
U tipo
ti abstracto
b t t de d d
datos
t consiste
i t en:
– 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

Abstracción de datos
c
z
a
x
b y

Escuela Politécnica Superior


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

Abstracción de operaciones

Entrada Entrada

arg1 arg1 arg2 arg3

Salida Salida

Ejemplo de TAD en C

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

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


{
u->x = u1;
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; }
}

10

Escuela Politécnica Superior


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

Ejemplo de TAD: extensibilidad

...

double producto (vector u, vector v)


{
return u.x * v.x + u.y * v.y;
}

void main ()
{
vector u, v;
construir
t i ( (&u, 4
4, -2);
2)
construir (&v, 1, 5);
printf (”%lf”, producto (u, v));
}

11

Tipos abstractos de datos: ventajas

ƒ Conceptos del dominio reflejados en el código

ƒ Encapsulamiento: ocultación de la complejidad interna y detalles de los


datos y las operaciones

ƒ Especificación vs. implementación: utilización del tipo de datos


independiente de su programación interna

ƒ Mayor modularidad: también los datos

ƒ Mayor facilidad de mantenimiento, reutilización

12

Escuela Politécnica Superior


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

Programación orientada a objetos

Programación orientada a objetos


=
soporte sintáctico para los tipos abstractos de datos
+
prestaciones asociadas a las jerarquías de clases
+
cambio de perspectiva

13

Programación orientada a objetos (I)


) ƒƒ 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
Objeto = tipo abstracto de datos con estado (atributos) y
comportamiento (operaciones) propios
) ƒ Aparece el concepto de jerarquía de tipos, y con él:
– Herencia de estructura y funcionalidad
– Polivalencia de los tipos Funciones
– Polimorfismo
Objeto
ƒ Sintaxis del lenguaje:
– Definición de clases
– Funciones explícitamente asociadas a clases Variables
– Creación de objetos
– Acceso a atributos, invocación de métodos

14

Escuela Politécnica Superior


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

Programación orientada a objetos (II)

15

Programación orientada a objetos:


ejemplo en Java
class Vector {
private double x;
private double y;
Vector (double u1, double u2) { x = u1; y = u2; }
double modulo () { return Math.sqrt (x*x + y*y); }
}

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

16

Escuela Politécnica Superior


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

Programación orientada a objetos:


ejemplo en C++
class Vector {
private:
double x;
double y;
public:
Vector (double u1, double u2) { x = u1; y = u2; }
double modulo () { return sqrt (x*x + y*y); }
};

void main ()
{
Vector u (4, -2);
cout << u.modulo ();
}

17

Programación orientada a objetos:


ventajas
ƒ Ventajas de la abstracción de datos + disciplina de programación

Reutilización de código, mantenimiento y extensión de las aplicaciones

Desarrollo e integración de software orientado a componentes

ƒ Potencia del lenguaje: herencia, polimorfismo

ƒ ¿Reflejar conceptos de problemas reales?

ƒ ¿Más fácil de utilizar?

18

Escuela Politécnica Superior


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

Lenguajes orientados a objetos

ƒ Simula (1967)
ƒ Smalltalk (1980)
ƒ C++ (1983, 1990)
ƒ Object Pascal (1988)
ƒ Lisp CLOS (1989)
ƒ Java (1995, 1997, 1998...)

Lenguajes puros vs. híbridos

19

Elementos de la programación
orientada a objetos
ƒ Objetos: atributos + métodos
ƒ Métodos: operaciones sobre los objetos
ƒ Clases: categorías de objetos con propiedades y operaciones comunes
ƒ Jerarquías de clases
ƒ En algunos lenguajes las clases son objetos
– Caso particular: paradigma prototipo-instancia

ƒ Relaciones, objetos compuestos

20

Escuela Politécnica Superior


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

Estructura conceptual de un objeto


nombre nombre
edad edad
ƒ Propiedades: valores Empleado división Directivo división
sueldo bruto sueldo bruto
categoría
ƒ Relaciones con otros objetos Empleado Directivo

ƒ Métodos: código Empleado

– Acceso al estado del objeto


mostrar
– Cálculos sobre el estado datos
Empleado
– Modificación del estado personales
– Constructores: inicialización calcular
salario
neto

21

Relaciones entre objetos

ƒ Tipos de relaciones
– Especialización: sólo entre clases
– Agregación: objetos compuestos formados por partes
– Asociación: relaciones arbitrarias (p.e. jefe de empleado)
ƒ Implementación
– Lenguajes con elementos específicos para relaciones
– Atributos que contienen referencias (punteros) a objetos

22

Escuela Politécnica Superior


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

Objetos: encapsulamiento
ƒ Porción visible: interfaz (protocolo)
– Contrato público de comportamiento

– Descripción de operaciones: información de entrada y de salida

ƒ Porción oculta: implementación


Datos
– Estructura de datos para almacenar la información

– Código
Códi que se ejecuta
j t para realizar
li llas operaciones
i

Interfaz
Métodos

23

Ciclo de vida de los objetos


ƒ Creación
Reserva de memoria: Empleado x = crear Empleado (···)
( )
Inicialización de atributos: constructores
ƒ Manipulación
Acceso a atributos: x . nombre
Invocación de métodos: x . salario_neto ( )
ƒ Destrucción
D t ió
Liberar la memoria
Destruir partes internas, si las hay
Eliminar referencias al objeto destruido (p.e. jefe)

24

Escuela Politécnica Superior


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

Jerarquías de objetos

Persona
Jerarquía de tipos
Persona x
Empleado y = crear Empleado
Empleado Cliente Directivo z = crear Directivo
x=y
x=z
Directivo

25

Herencia de estructura
nombre
Persona
edad

división nombre empresa


Empleado Cliente
sueldo bruto teléfono de contacto

categoría Directivo

26

Escuela Politécnica Superior


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

Herencia de funcionalidad
mostrar
datos
personales

especialización especialización
Persona

calcular mostrar mostrar


salario datos Empleado Cliente datos
neto personales personales

herencia

calcular mostrar
salario datos Directivo
neto personales

27

Facilidad de extensión

Reutilización
Persona
e so

Modularidad calcular
salario Empleado Cliente
neto

mostrar
datos Administrativo Directivo
personales

28

Escuela Politécnica Superior


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

Herencia múltiple
curso año promoción
asignaturas Estudiante Li
Licenciado
i d especialidad
matricularse (asignatura) nota media

Alumno
doctorado

año ppromoción
especialidad
nota media
curso
asignaturas
matricularse (asignatura)

29

Herencia múltiple
Resolución de la ambigüedad
x

y y
B C z D obj = crear D
t
obj . x
obj . y
D

x
y
z
t

30

Escuela Politécnica Superior


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

Polimorfismo
ƒ Sobrecarga ƒ Ligadura dinámica
Recta r1 = crear Recta Persona x
Recta r2 = crear Recta Empleado y = crear Empleado
Vector v = crear Vector x=y
r1.paralela (r2) x.mostrar_datos ( )
r1.paralela (v) y.mostrar_datos ( )
ƒ Sobreescritura (especialización)
Persona x = crear persona
Empleado y = crear Empleado
x.mostrar_datos ( )
y.mostrar_datos ( )

31

Ligadura dinámica (II)

Calcular área de figura seleccionada

área ( )

Figura

Triángulo Rectángulo Elipse

área ( ) área ( ) área ( )

32

Escuela Politécnica Superior


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

Ligadura dinámica de argumentos


Calcular área de la intersección de figuras seleccionadas
Triángulo
double intersección (Triángulo t)
double intersección (Elipse e)
double intersección (Rectángulo r)
Rectángulo
double intersección (Triángulo t)
double intersección (Elipse e)
double intersección (Rectángulo r)
Elipse
double intersección (Triángulo t)
double intersección (Elipse e)
double intersección (Rectángulo r)

33

Ligadura dinámica de argumentos:


ambigüedad (I)

f (A x, B y)
A C
f (B x, A y)

B
B b1 = crear B
?
B b2 = crear B
C c = crear C
c . f (b1, b2)

34

Escuela Politécnica Superior


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

Ligadura dinámica de argumentos:


ambigüedad (II)

A f (B x)

B b = crear B
? b . f (b)

B f (A x)

35

Ligadura dinámica de argumentos:


ambigüedad (III)

f (A x)
A B D f (B x)

C
?

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

36

Escuela Politécnica Superior


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

Análisis y Diseño Orientado a Objetos


Unified Modeling Language (UML)
ƒ Lenguaje gráfico estándar para visualizar, especificar, construir y documentar
las partes de un sistema de software
– Con cualquier proceso de desarrollo
– A lo largo de todo el ciclo de vida
– Con distintas tecnologías de implementación
– Herramientas para generar código
ƒ Partes de un modelo en UML
– El modelo de clases
– El modelo de casos de uso
– El modelo de interacción
– El modelo de estados
– El modelo de implementación
– El modelo de instalación (deployment)
37

Diagramas UML

ƒ Estructurales ƒ De comportamiento
– Clases – Casos de uso
– Objetos – Secuencia
– Componentes – Colaboración
– Instalación – Estados
– Actividad

38

Escuela Politécnica Superior


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

Diagramas UML

ƒ Estructurales ƒ De comportamiento
– Clases – Casos de uso
– Objetos – Secuencia
– Componentes – Colaboración
– Instalación – Estados
– Actividad

39

Diagramas de clases y objetos


Clase Objeto

At ib t
Atributos At ib t
Atributos I
Interfaz
f

Operaciones Operaciones

Dependencia

G
Generalización
l ó

Asociación

Agregación

Composición

40

Escuela Politécnica Superior


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

Diagrama Persona Ordenador


de clases
nombre : String 1..* Utiliza 0..* nombre : String
edad : Integer memoria : Integer

Usuario1 : Persona Servidor7 : Ordenador

nombre = "Juan" nombre = "Andromeda"


Diagrama de objetos

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

Usuario2 : Persona PC12 : Ordenador

nombre = "Luis“ nombre = "Anubis"


fecha nac. = 21/07/85 memoria = 128

41

Figura
{abstract}
Formado por * posición : Punto * Formado por
Canvas

draw ( ) {abstract}
area ( ) : Integer {abstract}

Grupo Círculo Polígono Punto


Formado
centro : Punto x : Integer
por
radio : Integer y : Integer
*
draw ( ) draw ( ) draw ( )
area ( ) : Integer area ( ) : Integer area ( ) : Integer

42

Escuela Politécnica Superior


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

Casos de uso

Cancel appointment

Scheduler
Make appointment

Patient
Request medication
D
Doctor

Pay bill
Clerk

43

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

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

44

Escuela Politécnica Superior


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

Secuencia

caller exchange receiver

lift receiver

dial tone

dial digit
...

ringing tone phone rings

answer phone

stop tone stop ringing

45

Secuencia Objetos

caller exchange receiver

lift receiver

dial tone
Mensajes
dial digit
...

ringing tone phone rings

answer phone

stop tone stop ringing

Focos de control
46

Escuela Politécnica Superior


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

Estados

digit(n)
start Partial dial

digit(n)

47

Estados

Estados
I i i
Inicio Fin

digit(n)
start Partial dial

digit(n)

Transiciones

48

Escuela Politécnica Superior


Pablo Castells Universidad Autónoma de Madrid

También podría gustarte