Upload
gilmargutierrez
View
212
Download
0
Embed Size (px)
Citation preview
8/14/2019 Programacin Orientada a Objetos (3er Curso, Grupo
1/8
Programacin Orientada a Objetos (3 er curso, grupo 32)1. Introduccin: conceptos de Programacin Orientada a Objetos
16.02.10
Pablo Castells Escuela Politcnica Superior
Universidad Autnoma de Madrid
Conceptos de ProgramacinOrientada a Objetos
Paradigmas de programacin
Abstraccin de datos
Prog. orientada a objetos
2
Programacin imperativa
Programacin estructurada
Programacin estructurada (I)
Procedi-miento
Valores de entrada
3
FuncinValor(es) de salida
Valores de entrada
Bloqueprincipal
Programacin estructurada (II)
Abstraccin de operaciones
Estructura de un mdulo: Interfaz
Datos de entrada
Implementacin
Datos locales
4
a to s e s a aDescripcin funcionalidad
Sintaxis del lenguaje:
Organizacin del cdigo en bloques de instruccionesDefinicin de funciones y procedimientos
Extensin del lenguaje con nuevas operacionesLlamadas a nuevas funciones y procedimientos
ecuenc a e nstruccones
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
5
Facilita el mantenimiento
Claridad del cdigo
Independencia de los mdulos
Favorece la reutilizacin
Programacin estructurada: ejemplo
double modulo (double u1, double u2)
void main (){
double u1, u2, m;u1 = 4;u2 = -2;
6
double m;m = sqrt (u1*u1 + u2*u2);return m;
}
void main (){
printf (%lf, modulo (4, -2));}
m = sqrt (u1*u1 + u2*u2);printf (%lf, m);
}
8/14/2019 Programacin Orientada a Objetos (3er Curso, Grupo
2/8
Programacin Orientada a Objetos (3 er curso, grupo 32)1. Introduccin: conceptos de Programacin Orientada a Objetos
16.02.10
Pablo Castells Escuela Politcnica Superior
Universidad Autnoma de Madrid
Tipos abstractos de datos
Abstraccin de datos + abstraccin de operacionesUn tipo abstracto de datos consiste en:
Estructura de datos que almacena informacin para representar un
determinado concepto
7
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
a
bx
y
z
8
Abstraccin de operaciones
Entrada Entrada
9
arg1 arg1 arg2 arg3
SalidaSalida
Ejemplo de TAD en C
struct vector {double x;double y;
};
void construir (vector *u, double u1, double u2){
-> = 1
10
u x = uu->y = u2;
}
double modulo (vector u){
double m;m = sqrt (u.x*u.x + u.y*u.y);return m;
}
void main (){
vector u;construir (&u, 4, -2);printf (%lf, modulo (u));
}
Ejemplo de TAD: extensibilidad
...
double producto (vector u, vector v){
return u.x * v.x + u.y * v.y;}
11
void main (){
vector u, v;construir (&u, 4, -2);construir (&v, 1, 5);printf (%lf, producto (u, v));
}
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
12
Especificacin vs. implementacin: utilizacin del tipo de datos
independiente de su programacin interna
Mayor modularidad: tambin los datos
Mayor facilidad de mantenimiento, reutilizacin
8/14/2019 Programacin Orientada a Objetos (3er Curso, Grupo
3/8
Programacin Orientada a Objetos (3 er curso, grupo 32)1. Introduccin: conceptos de Programacin Orientada a Objetos
16.02.10
Pablo Castells Escuela Politcnica Superior
Universidad Autnoma de Madrid
Programacin orientada a objetos
Programacin orientada a objetos=
soporte sintctico para los tipos abstractos de datos
13
+prestaciones asociadas a las jerarquas de clases
+cambio de perspectiva
Programacin orientada a objetos (I)Soporte sintctico explcito para la abstraccin de datos
Cambia el punto de vista: los programas son apndices de los datosAparece un nuevo concepto: objetoObjeto = tipo abstracto de datos con estado (atributos) ycomportamiento (operaciones) propiosAparece el concepto de jerarqua de tipos, y con l:
14
Herencia de estructura y funcionalidad Polivalencia de los tipos PolimorfismoSintaxis del lenguaje: Definicin de clases Funciones explcitamente asociadas a clases Creacin de objetos Acceso a atributos, invocacin de mtodos
ObjetoFunciones
Variables
Programacin orientada a objetos (II)
15
Programacin orientada a objetos:ejemplo en Java
class Vector {
p ri va te d ou bl e x ;
p ri va te d ou bl e y ;
Vector (double u1, double u2) { x = u1; y = u2; }
l m l r rn M h r * + *
16
u u u . x x y y
}
c la ss M ai nC la ss {
p ub li c s ta ti c v oi d m ai n ( St ri ng a rg s [ ]) {Vector u = new Vector (4, -2);
System.out.println (u.modulo ());
}
}
Programacin orientada a objetos:ejemplo en C++
class Vector {
private:
doub le x ;
doub le y ;
public:
17
Vector (double u1, double u2) { x = u1; y = u2; }
double modulo () { return sqrt (x*x + y*y); }
};
v oi d m ai n ( )
{
Vector u (4, -2);
cout
8/14/2019 Programacin Orientada a Objetos (3er Curso, Grupo
4/8
Programacin Orientada a Objetos (3 er curso, grupo 32)1. Introduccin: conceptos de Programacin Orientada a Objetos
16.02.10
Pablo Castells Escuela Politcnica Superior
Universidad Autnoma de Madrid
Lenguajes orientados a objetos
Simula (1967)
Smalltalk (1980)
C++ (1983, 1990)
Obect Pascal (1988)
19
Lisp CLOS (1989)
Java (1995, 1997, 1998...)
Lenguajes puros vs. hbridos
Elementos de la programacin
orientada a objetosObjetos: atributos + mtodos
Mtodos: operaciones sobre los objetos
20
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
Estructura conceptual de un objeto
Propiedades: valores
Relaciones con otros objetos
Empleadoedad divisinsueldo bruto
Directivoedad divisinsueldo brutocategora
Empleado Directivo
nombre nombre
21
Mtodos: cdigo Acceso al estado del objeto Clculos sobre el estado Modificacin del estado Constructores: inicializacin
mostrar datos
personales
calcular salario
neto
Empleado
Empleado
Relaciones entre objetos
Tipos de relaciones Especializacin: slo entre clases
Agregacin: objetos compuestos formados por partes
22
. .
Implementacin Lenguajes con elementos especficos para relaciones
Atributos que contienen referencias (punteros) a objetos
Objetos: encapsulamiento
Porcin visible: interfaz (protocolo)
Contrato pblico de comportamiento
Descripcin de operaciones: informacin de entrada y de salida
23
Porcin oculta: implementacin
Estructura de datos para almacenar la informacin
Cdigo que se ejecuta para realizar las operaciones
Datos
MtodosInterfaz
Ciclo de vida de los objetos
CreacinReserva dememoria: Empleadox = crear Empleado( )
Inicializacin de atributos: constructores
Manipulacin
24
Acceso a a tributos: x . nombre
Invocacinde mtodos: x . salario_neto( )
DestruccinLiberar la memoria
Destruir partes internas, si las hay
Eliminar referencias al objeto destruido (p.e. jefe)
8/14/2019 Programacin Orientada a Objetos (3er Curso, Grupo
5/8
8/14/2019 Programacin Orientada a Objetos (3er Curso, Grupo
6/8
Programacin Orientada a Objetos (3 er curso, grupo 32)1. Introduccin: conceptos de Programacin Orientada a Objetos
16.02.10
Pablo Castells Escuela Politcnica Superior
Universidad Autnoma de Madrid
Polimorfismo
SobrecargaRecta r1 = crear RectaRecta r2 = crear RectaVector v = crear Vectorr1. aralela r2
Ligadura dinmicaPersona xEmpleado y = crear Empleadox = yx.mostrar datos
31
.r1.paralela (v)
Sobreescritura (especializacin)Persona x = crear personaEmpleado y = crear Empleadox.mostrar_datos ( )y.mostrar_datos ( )
. _ y.mostrar_datos ( )
Ligadura dinmica (II)
Fi u ra
Calcular rea de figura seleccionada
rea ( )
32
Tringulo ElipseRectngulo
rea ( ) rea ( ) rea ( )
Ligadura dinmica de argumentos
Tringulodouble interseccin (Tringulo t)double interseccin (Elipse e)double interseccin (Rectngulo r)
Calcular rea de la interseccin de figuras seleccionadas
33
Rectngulodouble interseccin (Tringulo t)double interseccin (Elipse e)
double interseccin (Rectngulo r)Elipse
double interseccin (Tringulo t)double interseccin (Elipse e)double interseccin (Rectngulo r)
Ligadura dinmica de argumentos:ambigedad (I)
CA f (A x, B y) f (B x, A y)
34
B b 1 = crear BB b 2 = crear B
C c = crear C
c . f (b 1, b2)
B
?
Ligadura dinmica de argumentos:ambigedad (II)
A
B b = crear B
f (B x)
35
f (A x)
b . f (b)
B
?
Ligadura dinmica de argumentos:ambigedad (III)
BA D f (A x) f (B x)
36
C
C c = crear C
D d = crear D
d . f (c)
?
8/14/2019 Programacin Orientada a Objetos (3er Curso, Grupo
7/8
Programacin Orientada a Objetos (3 er curso, grupo 32)1. Introduccin: conceptos de Programacin Orientada a Objetos
16.02.10
Pablo Castells Escuela Politcnica Superior
Universidad Autnoma de Madrid
Anlisis y Diseo Orientado a ObjetosUnified Modeling Language (UML)
Lenguaje grfico estndar para visualizar, especificar, construir y documentarlas 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
37
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 )
Diagramas UML
Estructurales
Clases
De comportamiento
Casos de uso
38
e os
Componentes
Instalacin
ecuenc a
Colaboracin
Estados
Actividad
Diagramas UML
Estructurales Clases
De comportamiento Casos de uso
39
etos
Componentes
Instalacin
ecuenc a
Colaboracin
Estados Actividad
Diagramas de clases y objetos
Clase
Atributos
Operaciones
Objeto
Atributos
Operaciones
Interfaz
40
Dependencia
Generalizacin
Asociacin
Agregacin
Composicin
1..* 0..*Utiliza
Persona
nombre : Stringedad : Integer
Ordenador
nombre : Stringmemoria : Integer
Usuario1 : Persona
nombre = "Juan"
Servidor7 : Ordenador
nombre = "Andromeda"
D i a g r a m a
d e c l a s e s
41
fecha nac. = 21/07/76
memoria = 256
Usuario2 : Persona
nombre = "Luisfecha nac. = 21/07/85
PC12 : Ordenador
nombre = "Anubis"memoria = 128
D i a g r a m a
d e o
b j e t o s
Figura{abstract }
posicin : Punto
draw ( ) { abstract }area ( ) : Integer { abstract }
CanvasFormado por Formado por* *
42
Grupo
draw ( )area ( ) : Integer
Polgono
draw ( )area ( ) : Integer
Punto
x : Integery : Integer
Crculo
centro : Puntoradio : Integer
draw ( )area ( ) : Integer
Formadopor
*
8/14/2019 Programacin Orientada a Objetos (3er Curso, Grupo
8/8