Vous êtes sur la page 1sur 24

23.02.

11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Conceptos de Programacin
Orientada a Objetos

Paradigmas de programacin
Prog. orientada a objetos

Abstraccin de datos

Programacin estructurada

Programacin imperativa

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Programacin estructurada (I)

Valores de entrada

Bloque
principal

Procedimiento

Valores de entrada

Funcin
Valor(es) de salida

Programacin estructurada (II)


Abstraccin de operaciones
Estructura
E t t
de
d un mdulo:
d l
Interfaz

Implementacin

Datos de entrada

Datos locales

Datos de salida
Descripcin funcionalidad

Secuencia de instrucciones

Sintaxis del lenguaje:


Organizacin del cdigo en bloques de instrucciones
Definicin de funciones y procedimientos
Extensin del lenguaje con nuevas operaciones
Llamadas a nuevas funciones y procedimientos

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Programacin estructurada: ventajas


Facilita el desarrollo
Se evita la repeticin del trabajo
Trabajo de programacin compartimentado en mdulos independientes
Diseo top-down: descomposicin en subproblemas

Facilita el mantenimiento
Claridad del cdigo
Independencia
I d
d
i d
de llos mdulos
d l

Favorece la reutilizacin

Programacin estructurada: ejemplo


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

double modulo (double u1, double u2)


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

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Tipos abstractos de datos


Abstraccin de datos + abstraccin de operaciones
Un
U tipo
ti abstracto
b t t de
d d
datos
t consiste
i t en:
Estructura de datos que almacena informacin para representar un
determinado concepto
Funcionalidad: conjunto de operaciones que se pueden realizar sobre el tipo
de datos

Sintaxis del lenguaje:


Mdulos asociados a tipos de datos
No introduce necesariamente variaciones respecto a la programacin modular

Abstraccin de datos
c
z
a
b

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Abstraccin de operaciones
Entrada

arg1

Salida

Entrada

arg1

arg2

arg3

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;
{
construir (&u, 4, -2);
double m;
printf (%lf, modulo (u));
m = sqrt (u.x*u.x + u.y*u.y);
}
return m;
}

10

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin 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 cdigo
Encapsulamiento: ocultacin de la complejidad interna y detalles de los
datos y las operaciones
Especificacin vs. implementacin: utilizacin del tipo de datos
independiente de su programacin interna
Mayor modularidad: tambin los datos
Mayor facilidad de mantenimiento, reutilizacin

12

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Programacin orientada a objetos


Programacin orientada a objetos
=
soporte sintctico para los tipos abstractos de datos
+
prestaciones asociadas a las jerarquas de clases
+
cambio de perspectiva

13

Programacin orientada a objetos (I)

)
)

Soporte sintctico explcito para la abstraccin de datos


Cambia el punto de vista: los programas son apndices de los datos
Aparece un nuevo concepto: objeto
Objeto = tipo abstracto de datos con estado (atributos) y
comportamiento (operaciones) propios
Aparece el concepto de jerarqua de tipos, y con l:
Herencia de estructura y funcionalidad
Polivalencia de los tipos
Polimorfismo

Sintaxis del lenguaje:

Funciones
Objeto

Definicin de clases
Funciones explcitamente asociadas a clases
Creacin de objetos
Acceso a atributos, invocacin de mtodos

Variables

14

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Programacin orientada a objetos (II)

15

Programacin 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

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Programacin 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

Programacin orientada a objetos:


ventajas
Ventajas de la abstraccin de datos + disciplina de programacin
Reutilizacin de cdigo, mantenimiento y extensin de las aplicaciones
Desarrollo e integracin de software orientado a componentes
Potencia del lenguaje: herencia, polimorfismo
Reflejar conceptos de problemas reales?
Ms fcil de utilizar?

18

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin 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. hbridos

19

Elementos de la programacin
orientada a objetos
Objetos: atributos + mtodos
Mtodos: operaciones sobre los objetos
Clases: categoras de objetos con propiedades y operaciones comunes
Jerarquas de clases
En algunos lenguajes las clases son objetos
Caso particular: paradigma prototipo-instancia

Relaciones, objetos compuestos

20

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Estructura conceptual de un objeto


Propiedades: valores

nombre
edad
Directivo
divisin
sueldo bruto

Empleado

Relaciones con otros objetos

Empleado

Mtodos: cdigo

Acceso al estado del objeto


Clculos sobre el estado
Empleado
Modificacin del estado
Constructores: inicializacin

nombre
edad
divisin
sueldo bruto
categora

Directivo

Empleado
mostrar
datos
personales
calcular
salario
neto
21

Relaciones entre objetos


Tipos de relaciones
Especializacin: slo entre clases
Agregacin: objetos compuestos formados por partes
Asociacin: relaciones arbitrarias (p.e. jefe de empleado)

Implementacin
Lenguajes con elementos especficos para relaciones
Atributos que contienen referencias (punteros) a objetos

22

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Objetos: encapsulamiento
Porcin visible: interfaz (protocolo)
Contrato pblico de comportamiento
Descripcin de operaciones: informacin de entrada y de salida

Porcin oculta: implementacin


Estructura de datos para almacenar la informacin

Datos

Cdigo
Cdi que se ejecuta
j
t para realizar
li
llas operaciones
i

Interfaz
Mtodos
23

Ciclo de vida de los objetos


Creacin
Reserva de memoria:

Empleado x = crear Empleado ()


( )

Inicializacin de atributos: constructores

Manipulacin
Acceso a atributos:

x . nombre

Invocacin de mtodos:

x . salario_neto ( )

Destruccin
D t
i
Liberar la memoria
Destruir partes internas, si las hay
Eliminar referencias al objeto destruido (p.e. jefe)
24

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Jerarquas de objetos
Persona

Jerarqua de tipos
Persona x
Empleado y = crear Empleado

Empleado

Cliente

Directivo z = crear Directivo


x=y
x=z

Directivo

25

Herencia de estructura
nombre
edad

divisin
sueldo bruto

Empleado

categora

Directivo

Persona

Cliente

nombre empresa
telfono de contacto

26

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Herencia de funcionalidad
mostrar
datos
personales
especializacin

calcular
salario
neto

especializacin

Persona

mostrar
datos
personales

Empleado

mostrar
datos
personales

Directivo

Cliente

mostrar
datos
personales

herencia

calcular
salario
neto

27

Facilidad de extensin
Reutilizacin

Modularidad

mostrar
datos
personales

Persona
e so

calcular
salario
neto

Administrativo

Empleado

Cliente

Directivo

28

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Herencia mltiple
curso
asignaturas
matricularse (asignatura)

Estudiante

Li
Licenciado
i d

ao promocin
especialidad
nota media

Alumno
doctorado
ao ppromocin
especialidad
nota media
curso
asignaturas
matricularse (asignatura)
29

Herencia mltiple
Resolucin de la ambigedad
x
A

y
t

y
z

D obj = crear D
obj . x
obj . y

D
x
y
z
t
30

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Polimorfismo
Sobrecarga

Ligadura dinmica

Recta r1 = crear Recta


Recta r2 = crear Recta
Vector v = crear Vector
r1.paralela (r2)
r1.paralela (v)

Persona x
Empleado y = crear Empleado
x=y
x.mostrar_datos ( )
y.mostrar_datos ( )

Sobreescritura (especializacin)
Persona x = crear persona
Empleado y = crear Empleado
x.mostrar_datos ( )
y.mostrar_datos ( )

31

Ligadura dinmica (II)


Calcular rea de figura seleccionada
rea ( )
Figura

Tringulo

Rectngulo

Elipse

rea ( )

rea ( )

rea ( )

32

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Ligadura dinmica de argumentos


Calcular rea de la interseccin de figuras seleccionadas
Tringulo
double interseccin (Tringulo t)
double interseccin (Elipse e)
double interseccin (Rectngulo r)
Rectngulo
double interseccin (Tringulo t)
double interseccin (Elipse e)
double interseccin (Rectngulo r)
Elipse
double interseccin (Tringulo t)
double interseccin (Elipse e)
double interseccin (Rectngulo r)

33

Ligadura dinmica de argumentos:


ambigedad (I)
A

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

B b1 = crear B
B b2 = crear B

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

34

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Ligadura dinmica de argumentos:


ambigedad (II)
f (B x)

B b = crear B

?
B

b . f (b)

f (A x)

35

Ligadura dinmica de argumentos:


ambigedad (III)
A

f (A x)
f (B x)

?
C c = crear C
D d = crear D

d . f (c)

36

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Anlisis y Diseo Orientado a Objetos


Unified Modeling Language (UML)

Lenguaje grfico estndar 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 tecnologas de implementacin
Herramientas para generar cdigo

Partes de un modelo en UML


El modelo de clases
El modelo de casos de uso
El modelo de interaccin
El modelo de estados
El modelo de implementacin
El modelo de instalacin (deployment)
37

Diagramas UML
Estructurales

De comportamiento

Clases

Casos de uso

Objetos

Secuencia

Componentes

Colaboracin

Instalacin

Estados
Actividad

38

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Diagramas UML
Estructurales

De comportamiento

Clases

Casos de uso

Objetos

Secuencia

Componentes

Colaboracin

Instalacin

Estados
Actividad

39

Diagramas de clases y objetos


Clase

Objeto

At ib t
Atributos

At ib t
Atributos

Operaciones

Operaciones

I
Interfaz
f

Dependencia
G
Generalizacin
l

Asociacin
Agregacin
Composicin
40

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Diagrama de objetos

Diagrama
de clases

Persona

Ordenador

nombre : String
edad : Integer

1..*

0..* nombre : String


memoria : Integer

Utiliza

Usuario1 : Persona

Servidor7 : Ordenador

nombre = "Juan"
fecha nac. = 21/07/76

nombre = "Andromeda"
memoria = 256

Usuario2 : Persona

PC12 : Ordenador

nombre = "Luis
fecha nac. = 21/07/85

nombre = "Anubis"
memoria = 128

41

Formado por

Figura
{abstract}
* posicin : Punto

Formado por

Canvas

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

Grupo

Crculo

Polgono

centro : Punto
radio : Integer
draw ( )
area ( ) : Integer

draw ( )
area ( ) : Integer

Punto
Formado
por

draw ( )
area ( ) : Integer

x : Integer
y : Integer
*

42

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin Orientada a Objetos

Casos de uso
Cancel appointment
Scheduler
Make appointment
Patient

Request medication

D
Doctor

Pay bill
Clerk
43

Casos de uso
Comunicacin

Comunicacin
Caso de uso

Cancel appointment
Caso de uso
Actor

Patient

Actor

Scheduler

Make appointment
Caso de uso

Request medication
Caso de uso

Actor

D
Doctor
Actor

Pay bill
Clerk
44

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin 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
caller

Objetos
exchange

receiver

lift receiver
dial tone
dial digit
...

ringing tone

Mensajes

phone rings
answer phone

stop tone

stop ringing

Focos de control
46

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

23.02.11

Programacin Orientada a Objetos (3er curso, grupo 31)


1. Introduccin: conceptos de Programacin 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

Pablo Castells

Escuela Politcnica Superior


Universidad Autnoma de Madrid

Vous aimerez peut-être aussi