Sunteți pe pagina 1din 24

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

Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Programacin estructurada (I)

Valores de entrada

Procedimiento

Bloque principal

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 Datos de entrada Datos de salida Descripcin funcionalidad Implementacin Datos locales 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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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 l los 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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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 x y

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Abstraccin 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; { 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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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

Funciones Objeto

Sintaxis del lenguaje:


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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Estructura conceptual de un objeto


Propiedades: valores
Empleado nombre edad Directivo divisin sueldo bruto Empleado Directivo nombre edad divisin sueldo bruto categora

Relaciones con otros objetos Mtodos: cdigo


Empleado mostrar datos personales calcular salario neto


21

Acceso al estado del objeto Clculos sobre el estado Empleado Modificacin del estado Constructores: inicializacin

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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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 Cdigo Cdi que se ejecuta j t para realizar li l las operaciones i
Datos

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: Invocacin de mtodos: x . nombre 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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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 Persona

divisin sueldo bruto

Empleado

Cliente

nombre empresa telfono de contacto

categora

Directivo

26

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Herencia de funcionalidad
mostrar datos personales
especializacin

Persona

especializacin

calcular salario neto


herencia

mostrar datos personales

Empleado

Cliente

mostrar datos personales

calcular salario neto

mostrar datos personales

Directivo

27

Facilidad de extensin
Reutilizacin
Persona e so

Modularidad

calcular salario neto

Empleado

Cliente

mostrar datos personales

Administrativo

Directivo

28

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Herencia mltiple
curso asignaturas matricularse (asignatura) Estudiante Li Licenciado i d ao promocin especialidad nota media

Alumno doctorado promocin ao p 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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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

Ligadura dinmica
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 rea ( )

Rectngulo rea ( )

Elipse rea ( )

32

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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 C 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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Ligadura dinmica de argumentos: ambigedad (II)


A f (B x) B b = crear B

?
B f (A x)

b . f (b)

35

Ligadura dinmica de argumentos: ambigedad (III)


A B D 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

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

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
Clases Objetos Componentes Instalacin

De comportamiento
Casos de uso Secuencia Colaboracin Estados Actividad

38

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Diagramas UML
Estructurales
Clases Objetos Componentes Instalacin

De comportamiento
Casos de uso Secuencia Colaboracin Estados Actividad

39

Diagramas de clases y objetos


Clase At ib t Atributos Operaciones Objeto At ib t Atributos Operaciones I Interfaz f

Dependencia G Generalizacin l Asociacin Agregacin Composicin


40

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Diagrama de clases

Persona nombre : String edad : Integer 1..* Utiliza

Ordenador 0..* nombre : String memoria : Integer

Usuario1 : Persona

Servidor7 : Ordenador nombre = "Andromeda" memoria = 256

Diagrama de objetos

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

Usuario2 : Persona nombre = "Luis fecha nac. = 21/07/85

PC12 : Ordenador nombre = "Anubis" memoria = 128

41

Formado por

Figura {abstract} * posicin : Punto draw ( ) {abstract} area ( ) : Integer {abstract} *

Formado por

Canvas

Grupo

Crculo centro : Punto radio : Integer

Polgono Formado por draw ( ) area ( ) : Integer *

Punto x : Integer y : Integer

draw ( ) area ( ) : Integer

draw ( ) area ( ) : Integer

42

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Casos de uso
Cancel appointment Scheduler Make appointment Patient

Request medication

D Doctor

Pay bill Clerk


43

Casos de uso
Comunicacin Caso de uso Comunicacin

Cancel appointment
Caso de uso Actor

Actor

Scheduler
Actor

Make appointment
Caso de uso

Patient

Request medication
Caso de uso

D Doctor
Actor

Pay bill Clerk


44

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Secuencia
caller lift receiver dial tone dial digit ... exchange receiver

ringing tone

phone rings answer phone

stop tone

stop ringing

45

Secuencia
caller lift receiver dial tone dial digit ... exchange

Objetos
receiver

Mensajes

ringing tone

phone rings answer phone

stop tone

stop ringing

Focos de control
46

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

Programacin Orientada a Objetos (3er curso, grupo 31) 1. Introduccin: conceptos de Programacin Orientada a Objetos

23.02.11

Estados

digit(n) start Partial dial

digit(n)

47

Estados
I i i Inicio Estados Fin

digit(n) start Partial dial

digit(n)

Transiciones

48

Pablo Castells

Escuela Politcnica Superior Universidad Autnoma de Madrid

S-ar putea să vă placă și