Programación Orientada a Objetos (3er Curso, Grupo

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