metodologia de la programacion cap 2

Upload: hyun-jaechura

Post on 12-Oct-2015

30 views

Category:

Documents


1 download

TRANSCRIPT

  • 15/05/2013

    1

    M. Sc. Ing. Lucas Coaquira Cano

    CAP. 2 CONCEPTOS

    FUNDAMENTALES DE POO

    Es un mtodo de implementacin en el que los programas

    se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de

    alguna clase, y cuyas clases son todas miembros de una

    jerarqua de clases unidas mediante relaciones de

    herencia. (Grady Booch)

    Existen tres importantes partes en la definicin: la POO

    Utiliza objetos, no algortmicos, como bloques de construccin Cada objeto es una instancia de una clase Las clases se relacionan unas con otras por medio de la herencia.

    2.1 QUE ES LA PROGRAMACION ORIENTADA A

    OBJETOS?

    Los conceptos fundamentales de programacin son: objetos, clases,

    herencia, mensajes y polimorfismo. M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.1.1 El objeto

    La idea fundamental en los LOO es combinar en una sola unidad datos y

    funciones que operan sobre estos datos. Tal unidad se denomina objeto.

    Funcin miembro

    Funcin miembro

    Funcin miembro

    Datos

    Datos

    Datos

    Funcin

    Funcin

    Procedimientos externos Datos Funciones externas

    Privado Pblico

    Figura 2.1. El modelo objeto

    Los datos y las funciones asociadas se dicen que estn encapsulados en una nica entidad o mdulo.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Los datos estan ocultos, eso asegura que no se puedan modificar accidentalmente

    por funciones externas al objeto.

    Un objeto es una entidad que contiene los atributos que describen el

    estado de un objeto del mundo real y las acciones que se asocian con el objeto del mundo real.

    2.1.2 Ejemplos de objetos

    Objetos fsicos: Aviones en un sistema de control de trfico areo. Automviles en un sistema de control de trfico terrestre. Casas.

    Elementos de interfaces grficos de usuario: Ventanas. Mens. Objetos grficos (cuadrados, tringulos, etc.). Teclado. Cuadros de dilogo. Ratn.

    Animales: Animales vertebrados. Animales invertebrados. Pescados.

    Tipos de datos definidos por el usuario: Datos complejos. Puntos de un sistema de coordenadas.

    Alimentos: Carnes. Frutas. Pescados. Verduras. Pasteles.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

  • 15/05/2013

    2

    Clase: Persona

    Objetos: Juan, Alberto, Julia

    Clase: Perro

    Objetos: Boby, Lazy, Benji

    Clase: Pais

    Objetos: Chile, Australia, Afganistan

    Clase: Curso

    Objetos: ING1310, ING2210

    Clase: Alumno

    Objetos: Pedro, Oscar, Carolina, Diego

    Clase: Universidad

    Objetos: UANCV, UNA, PUC, UNSA

    Clase: Nmero Complejo

    Objetos: (3 + 5i ), (5 7i ), 0, i

    Ejemplos de clases y objetos:

    Mtodos

    Variables

    Nombre del objeto

    Datos

    Mtodos

    (a)

    (c) (d)

    (b)

    Mtodos

    Atributos

    Nombre

    Figura 2.2. Notaciones graficas de objetos: (a) Taylor; (b) Coad / Yourdon (c) OMT; (d) Booch

    Nombre del

    objeto

    Datos y

    operaciones

    La notacin grfica de un objeto vara de unas metodologas a otras

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Notacin de clase en UML FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Clases y Objetos

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Point

    - x: Real

    - y: Real

    :Point + rotate (angle: Real)

    + scale (factor: Real)

    p1: Point

    x = 3.14

    y = 2.718

    x = 1

    y = 1.414

    Clase

    Objetos

  • 15/05/2013

    3

    Automvil

    - Marca : string

    - Modelo: string - Color: string

    + frenar(): void

    + acelerar(): void + retroceder(): void

    celular

    - Marca : string

    - Modelo: string

    + llamar(): void

    + colgar(): void

    Un_objeto:celular

    - Marca : Sagem

    - Modelo: X5

    + llamar(): void

    + colgar(): void

    Rectangulo

    - base : float

    - altura : float

    + Rectangulo()

    + calcularArea(b: float, a:float) :float

    + ponerBase(b: float) : void

    + obtenerBase(): float

    + ponerAltura(a: float) : void

    + obtenerAltura() : float

    + calcularPerimetro(b: float, a: float): float

    public class NombreClase {

    /*

    Atributos:

    tipo nombreAtributo1 ;

    tipo nombreAtributo2 ;

    */

    /*

    Metodos :

    salida nombreMetodo1 ( parametros){ contenido del

    metodo } ;

    Salida nombreMetodo2 (parametros) { contenido del

    metodo } ;

    */

    }

    Ejemplo de plantilla o formato de clase

    class Prueba{

    public static void main(String args[]){

    NombreClase objeto = new NombreClase();

    }

    Utilizacion de la clase

  • 15/05/2013

    4

    Ejemplo de clase perro

    public class Perro{

    //atributos

    private String nombre;

    private String raza;

    private float altura;

    //metodos

    public Perro() { ... }

    public void comer() { ... }

    public void dormir() { ... }

    public void ladrar() { ... }

    }

    class Prueba{

    public static void main(String args[]){

    Perro pancho = new Perro();

    ...

    }

    }

    Consideremos la ilustracin de un coche vendido por un distribuidor de coches.

    Figura 2.3. El objeto Coche1.

    Coche 1

    Matrcula

    Marca

    Precio

    Ao compra

    Calcular_Precio_A

    ctual

    Identificador del objeto

    Atributos asociados

    Mtodos

    Atributos: Datos o variables que caracterizan el estado de un objeto.

    Mtodos: Procedimientos o acciones que cambian el estado de un objeto.

    La encapsulacin de operaciones e informacin es muy importante. Dicha

    encapsulacin es la propiedad que permite incluir en una sola entidad (modulo u

    objeto) la informacin (datos o atributos) y las operaciones (mtodos o funciones)

    que operan sobre dicha informacin.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Informacin

    y

    operaciones

    Seccin

    privada

    Figura 2.4. Encapsulamiento de datos

    Los objetos tienen un interfaz pblico y una representacin privada que permiten

    ocultar la informacin que se desee al exterior.

    Interfaz pblico

    Representacin

    privada

    Figura 2.5. Interfaz pblico de un objeto

    2.1.3 Mtodos y mensajes Un programa orientado a objetos consiste en un nmero de objetos que se comunican unos con otros llamando a funciones miembro (en C++), se denominan mtodos en otros lenguajes (como Java).

    Las funciones miembro residen en el objeto y determinan como actan los objetos cuando reciben un mensaje.

    Un mensaje es la accin que hace un objeto. Un mtodo es la funcin que se invoca para actuar sobre un objeto.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Llegada de

    mensajes Datos

    Mtodos

    Figura 2.6. Mtodos y mensajes de un objeto

    El conjunto de mensajes a los cuales puede responder un objeto se

    denomina protocolo del objeto. Ej. El protocolo de un icono puede constar de mensajes

    invocados por el click de un botn del ratn cuando el usuario localiza un

    puntero sobre un icono.

    Los mensajes que recibe el objeto son los nicos conductos que conectan el objeto con el mundo externo.

    Cuando se ejecuta un programa OO ocurren tres sucesos:

    1. Los objetos se crean a medida que se necesitan

    2. Los mensajes se mueven de un objeto a otro (o desde el usuario al objeto)

    3. Cuando los objetos ya no son necesarios, se borran y se libera la memoria M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

  • 15/05/2013

    5

    Funcin miembro

    Funcin miembro

    Datos

    Funcin miembro

    Funcin miembro

    Datos

    Funcin miembro

    Funcin miembro

    Datos

    Figura 2.7. Diagrama orientado a objetos.

    Objeto 1

    Objeto 2 Objeto 3

    2.1.4. Clases

    Una clase es la descripcin de un conjunto de objetos; consta de mtodos y datos que resumen caractersticas comunes de un conjunto de objetos. Una clase es la declaracin de un tipo de objeto.

    Un objeto es una instancia de una clase.

    Una clase es una coleccin de objetos similares.

    Madonna, Michael Jackson, Prince, Mecano y Dire Straits son objetos de una clase, Cantantes de rock

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.2.1. Definicin de objetos

    Un objeto, es una abstraccin de cosas (entidades) del mundo real, tales que:

    Todas las cosas (instancias) del mundo real dentro de un conjunto, tienen las mismas caractersticas.

    Todas las instancias siguen las mismas reglas.

    Cada objeto consta de:

    Estado (atributos)

    Operaciones o comportamiento (mtodos invocados por mensajes).

    Desde el punto de vista informtico, los objetos son TAD.

    Algunos ejemplos tpicos de objetos:

    Nmero racional

    Estado (valor actual).

    Operaciones (sumar, multiplicar, asignar)

    Una de las ventajas ineludibles de la orientacin a objetos es la posibilidad de

    reflejar sucesos del mundo real mediante tipos abstractos de datos extensibles

    a objetos.

    2.2 UN MUNDO DE OBJETOS

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Vehculo

    Estado (valor actual)

    Operaciones (acelerar, posiciones, parar )

    Conjunto

    Estado (elementos)

    Operaciones (aadir, quitar, visualizar )

    La identificacin se obtiene examinando la descripcin del problema y localizando

    los nombre. Pueden caer dentro de las siguientes categoras:

    Cosas tangibles. (avin, reactor nuclear, fuente de alimentacin, TV, libro, automvil).

    Roles o papeles jugados o representados por personas (gerente, cliente, empleado, medico, paciente, ingeniero).

    Organizaciones (empresa, divisin, equipo ). Incidentes (representa un suceso evento- u ocurrencia, tales como vuelo,

    accidente, suceso, llamada a un servicio de asistencia tcnica ). Interacciones (implican generalmente una transaccin o contrato y relacionan

    dos o mas objetos del modelo: compras comprador, vendedor, artculo-, matrimonio esposo, esposa, fecha de boda).

    2.2.2. Identificacin de objetos

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Especificaciones (muestran aplicaciones de inventario o fabricacin: refrigeradora, nevera ).

    Lugares (sala de embarque, muelle de carga ).

    Luego se identifican los atributos y las operaciones que acten sobre ellos.

    Los atributos:

    AVION

    Matrcula Licencia del piloto

    Nombre de avin Capacidad de carga

    Nmero de pasajeros

    EMPLEADO

    Nombre Nmero de identificacin

    Salario Direccin

    Nombre del departamento

    Las operaciones cambian el objeto su comportamiento- Generalmente se dividen en tres grandes grupos: operaciones que

    Manipulan los datos (aadir, borrar, cambiar formato ).

    Realizan un calculo o proceso.

    Comprueban un objeto frente a la ocurrencia e algn suceso de control

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

  • 15/05/2013

    6

    Todos los objetos (o instancias) de una misma clase comparten

    ciertos atributos (propiedades).

    Clase: Persona

    Atributos: nombre, sexo, fecha de nacimiento, estatura ....

    Clase: Perro

    Atributos: raza, color de pelo, sexo, ....

    Clase: Pais

    Atributos: nombre, rea, nmero de habitantes, ...

    Distintos objetos (de una misma clase) pueden tener distintos

    valores en estos atributos:

    Clase: Persona

    Objeto: Juan Vargas (futbolista)

    Atributos:

    nombre: Juan Vargas sexo: masculino

    estatura: 1,85 metros

    ....

    Se pueden realizar operaciones o mtodos sobre objetos (instancias)

    de una clase, para modificar su estado.

    Por ejemplo:

    Cambiarle el nombre a una persona

    2.2.3. Duracin de los objetos

    Los objetos son entidades que existen en el tiempo; por ello deben ser creados o

    instanciados (normalmente a travs de otros objetos).

    Campos miembro

    Funciones miembro

    Inte

    rfaz

    Interior Exterior

    Figura 2.8. Diagrama de un objeto.

    Objeto hola mundo

    Miembro dato privado

    Esto es saludo 1

    cambiar

    anunciar

    Figura 2.9. El objeto saludo 1.

    2.2.4. Objetos frente a clases. Representacin grfica Es til ilustrar objetos y clases con diagramas

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Cual es la diferencia entre clase y objeto?

    Un objeto es un simple elemento, no importa lo complejo que pueda

    ser. Una clase, por el contrario, describe una familia de elementos similares.

    Clase

    Campo miembro

    Funciones miembro

    Figura 2.10. Diagrama de una clase

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

  • 15/05/2013

    7

    2.2.5 Datos internos (variables de estado)

    Una propiedad importante de los objetos es que almacenan informacin

    de su estado en forma de datos internos.

    2.2.6 Ocultacin de datos La practica de limitacin del acceso a cierta informacin interna se llama

    ocultacin de datos.

    Java soporta las caractersticas de ocultacin de datos con las palabras

    reservadas public, private y protected

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    ATRIBUTO

    Propiedad comn a todos los objetos de una clase

    ESTADO

    Conjunto de los valores de los atributos de un objeto en un

    determinado momento.

    Ejemplo:

    Clase Coche

    Marca

    No. de puertas Color

    V. Max

    CC HP

    Ejemplo:

    XYZ 5 puertas Negro

    205 km/h

    4500 cc 230 hp

    METODO

    Definicin e implementacin de las operaciones que pueden

    realizar todos los objetos de una

    clase

    MENSAJE

    Invocacin de un mtodo de una clase sobre un objeto de dicha

    clase en un instante

    determinado.

    Clase Coche

    arrancar() parar()

    acelerar()

    frenar()

    arrancar()

    acelerar()

    2.3 COMUNICACIONES ENTRE OBJETOS: LOS

    MENSAJES

    El mensaje es esencialmente una orden que se enva a un objeto para indicarle

    que realice alguna accin. Los objetos se comunican entre si enviando mensajes,

    al igual que sucede con las personas. Los mtodos son los procedimientos que se

    invocan cuando un objeto recibe un mensaje.

    Los mensajes pueden venir de otros objetos o desde fuentes externas, tales como

    un ratn o un teclado.

    Datos

    Datos Datos

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

  • 15/05/2013

    8

    2.3.1. Activacin de objetos

    A los objetos solo se puede acceder a travs de su interfaz publico. Un objeto

    accede a otro objeto envindole un mensaje.

    Modelo

    Puertas

    Edad

    2

    4

    Precio_coche

    Matricula

    Calcular precio() coche.Calcular precio()

    coche (carro)

    Figura 2.12. Envo de un mensaje

    M. Sc. Ing. Lucas Coaquira Cano

    Cuando un objeto esta inactivo (durmiendo) y recibe un mensaje se hace activo.

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    XYZ

    2.3.2. Mensajes

    Un mensaje es una peticin de un objeto a otro objeto al que le solicita

    ejecutar uno de sus mtodos. El objeto que enva la peticin se denomina emisor y el objeto que recibe la peticin se denomina receptor.

    Objeto emisor Objeto receptor

    Prueba()

    Ventas Producto

    Calcular_precio(100)

    (a)

    (b)

    Figura 2.13. Objetos emisor y receptor de un mensaje

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Estructuralmente un mensaje consta de tres partes:

    Identidad del receptor

    El mtodo que se ha de ejecutar

    Informacin especial necesaria para realizar el mtodo invocado (argumentos o parmetros requeridos)

    Sumar obj_test obj_test sumar 10 xyz

    receptor mtodo parmetro

    Figura 2.14. Estructura de un mensaje

    Cuando un objeto esta inactivo (durmiendo) y recibe un mensaje se hace activo.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    El conjunto de mensajes a los que responde un objeto se denomina comportamiento.

    Nombre de un mensaje

    Un mensaje incluye el nombre de una operacin y cualquier argumento requerido por esa operacin.

    Mtodos

    Cuando un mtodo recibe un mensaje, se realiza la operacin solicitada ejecutando un mtodo. Un mtodo es el algoritmo ejecutado en respuesta a la recepcin de un mensaje cuyo nombre se corresponde con el nombre del mtodo.

    El receptor responde a un mensaje.

    2.3.3. Paso de mensajes El protocolo de un mensaje implica dos partes: el emisor y el receptor. Cuando un

    objeto emisor enva un mensaje a un objeto receptor, tiene que especificar los siguiente:

    Un receptor Un nombre de mensaje Argumentos o parmetros (si se necesita).

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

  • 15/05/2013

    9

    Ejemplo

    enviarCoche1.Precio_Coche() //enva a Coche1 el mensaje Precio_Coche

    enviarCoche1.Fijar_precio(25000) //enva a coche1 el mensaje Fijar_precio

    con el parmetro 25000

    enviarCoche1.Poner_en_blanco() //enva a Coche1 el mensaje Poner_en_blanco

    Los parmetros o argumentos pueden ser:

    Datos utilizados por el mtodo invocado.

    Un mensaje, propiamente dicho.

    La estructura de un mensaje puede ser:

    enviar .

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.4 ESTRUCTURA INTERNA DE UN OBJETO Consta de dos componentes bsicos:

    Atributos

    Mtodos (operaciones o servicios)

    Gato (Romo) (Torno)

    Atributos

    Mtodos

    Clase Objetos

    Alimento

    Leche Carne Pescado

    Figura 2.15. Notacin grafica OMT de una clase y de un objeto

    Figura 2.16. Objetos en notacion Coad / Yourdon M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.4.1. Atributos

    Describen el estado del objeto. Un atributo consta de dos partes: un

    nombre de atributo y un valor de atributo.

    Atributos

    Objeto A

    Mtodo_1

    Mtodo_2

    Mtodo_3

    El mtodo_1 llama al mtodo_2,

    envindole un mensaje

    El mtodo_3 se invoca por un

    mensaje de otro objeto

    Figura 2.17. Invocacin de un mtodo

    2.4.2. Mtodos (operaciones o servicios) Describen el comportamiento asociado a un objeto o sobre un objeto.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.5. CLASES

    Generalmente, una clase se puede definir como una descripcin abstracta

    de un grupo de objetos, cada uno de los cuales se diferencia por un estado especfico y es capaz de realizar una serie de operaciones.

    Clase A ObjClase A

    Clase Instancia (objeto) de la clase

    Figura 2.19. Una clase y una instancia (objeto) de la clase (notacin Booch)

    2.5.1. Una comparacin con tablas de datos Una clase se puede considerar como la extensin de un registro.

    Se pueden asociar clase e instancias con tablas y registros

    respectivamente. Como mdulo la clase encapsula los recursos que ofrece a otras clases.

    Como tipo describe un conjunto de objetos o instancias que existen en

    tiempo de ejecucin.

    Dentro de un programa, las clases tienen dos propsitos principales:

    definir abstracciones y favorecer la modularidad.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

  • 15/05/2013

    10

    Instancias como registros

    Servicio Horas Frecuencia Descuento

    S2020 4,5 6 10

    S1010 8 2 20

    S4040 5 3 15

    Cuenta

    Servicio

    Horas

    Frecuencia

    Descuento

    (Cuenta Cte.) (Cuenta Ahorro)

    S1010

    8

    2

    20

    S2020

    4,5

    6

    10

    Figura 2.19. Instancias de una clase (notacin OMT)

    Dos operaciones comunes son tpicas en cualquier clase son:

    Constructor: crea un objeto y/o inicializa su estado.

    Destructor: libera el estado de un objeto y/o destruye el propio objeto.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.6 HERENCIA

    Propiedad que permite a los objetos ser construidos a partir de otros

    objetos. Capacidad de un objeto para utilizar las estructuras de datos y los mtodos previstos en antepasados o ascendientes.

    Caracterstica A Caracterstica B

    Caracterstica A

    Caracterstica B

    Caracterstica Y

    Caracterstica Z

    Caracterstica A

    Caracterstica B

    Caracterstica X Caracterstica W

    Caracterstica B

    Caracterstica A

    Clase base

    Clase derivada

    Clase derivada

    Clase derivada

    Figura. 2.20. Jerarqua de clases

    El objetivo final es la reutilizabilidad o reutilizacin (reusability), es decir

    reutilizar cdigo anteriormente ya desarrollado.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Caracterstica A

    Herencia

    Es una propiedad que permite que los objetos sean creados a

    partir de otros ya existentes obteniendo caractersticas (mtodos y atributos) similares a los ya existentes. Ejemplo el gato y el perro

    tendran la herencia (mtodos y atributos) de mamfero.

    Abstraccin

    Expresa las caractersticas esenciales de un objeto las cuales

    distinguen al objeto de los dems. Ejemplo en la abstraccin de las Aves, el objeto seria el pjaro y sus caractersticas por ejemplo

    serian:

    Pico, alas, plumas, patas; las funcionalidades asociadas serian: volar, parar, etc.

    Polimorfismo

    Es la capacidad que tienen los objetos de una clase de responder al mismo

    mensaje o evento en funcin de los parmetros utilizados durante su

    invocacin.

    Figura 2.21. Jerarqua de herencia

    Las jerarquas de clases se organizan en forma de rbol.

    Como ejemplo, considrese la jerarqua de herencia mostrada en la

    Figura 2.21.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Animal

    Insecto Mamifero Animal

    Persona

    Hombre Mujer

  • 15/05/2013

    11

    Las definiciones de clases para esta jerarqua puede tomar la siguiente estructura:

    clase animal atributos tipo: string; peso: real; habitat:( algun tipo de habitat ); operaciones crear() animal; predadores(animal) fijar(animal); esperanza_vida(animal) entero; end animal. clase mamfero hereda animal; atributos (propiedades) periodo_gestacion: real; operaciones end mamfero clase persona hereda mamifero; atributos apellidos, nombre: string; fecha_nacimiento: date; origen: pais; end persona clase hombre hereda persona; atributos esposa: mujer; operaciones end hombre clase mujer hereda persona; atributos esposo: hombre; nombre: string; end mujer

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    celular

    - Marca : string

    - Modelo: string

    + llamar(): void

    + colgar(): void

    celular_nuevo

    - precio_venta : int

    - fecha_ingreso: Date

    celular_malogrado

    - motivo : string

    - dueo: string

    2.6.1. Tipos de herencia

    Herencia simple: un objeto (clase) puede tener solo un ascendiente

    Herencia mltiple: un objeto (clase) puede tener mas de un ascendiente.

    Herencia simple Herencia mltiple

    Figura 2.22. Tipos de herencia

    Herencia simple (herencia jerrquica)

    Herencia mltiple (herencia en malla)

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Figura

    Circulo Rectangulo Triangulo

    Rectan. Red.

    Persona

    Profesor Investigador

    Prof Univers

  • 15/05/2013

    12

    Atributos

    Tamao

    Color

    Mapasdebits

    Mtodos

    Dibujar

    Cargar

    Almacenar

    Escala

    Atributos

    Duracin

    Voz y tono

    Mtodos

    Reproducir

    Cargar

    Escala

    almacenar

    Para un objeto multimedia, el mtodo Escala significa poner el sonido en

    diferentes tonalidades, o bien aumentar/reducir el tamao de la escala de grafico

    Ejemplo de una dificultad que surge con la herencia mltiple:

    El problema que se produce es la ambigedad, y se tendr que resolver con una

    operacin de prioridad que el lenguaje tendr que soportar.

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    M. Sc. Ing. Lucas Coaquira Cano

    Grficos

    Multimedia

    Sonidos

    Problemas de la Herencia mltiple:

    1. La propiedad referida solo est en una de las superclases padre.

    2. La propiedad concreta existe en ms de una superclase.

    Caso 1. No hay problemas

    Atributos Nombre

    Direccin Campus

    Curso

    Ao

    Atributos Nombre Direccin Estudios Salario Dias_Vacaciones Mtodo Aumento_salario

    Atributos heredados

    Nombre Direccin

    Salario Estudios

    Dias_Vacaciones Curso

    Campus Ao

    Mtodos heredados

    Aumento_salario

    Figura 2.23. Herencia de atributos y mtodos

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Estudiante Empleado

    Emplead_est

    Caso 2. Existen diferentes tipos de conflictos que pueden ocurrir:

    Conflictos de nombres

    Conflictos de valores

    Conflictos por defecto

    Conflictos de dominio

    Conflictos de restricciones

    Por ejemplo:

    Conflicto de nombres Nombre Nombre_estudiante

    Nombre_empleado

    Valores Atributos con igual nombre, tienen valores en cada

    clase

    Universidad con diversos campus

    Reglas de resolucin de conflictos

    1. Una lista de precedencia de clases, como sucede en LOOPS y FLAVORS

    2. Una precedencia especificada por el usuario para herencia, como en Smalltalk

    3. Lista de precedencia del usuario, y si no sucede asi, la lista de precedencia de

    las clases por profundidad.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Declaracin de subclases en Java

    public class Motocicleta extends Vehiculo {

    public Motocicleta() {

    super(2);

    }

    }

    public class ClaseA {

    // Declaracion de atributos y metodos especificos de

    ClaseA

    }

    public class ClaseB extends ClaseA {

    // Declaracion de atributos y metodos especificos de

    ClaseB

    // y/o redeclaracion de componentes heredados

    }

  • 15/05/2013

    13

    2.6.2. Clases abstractas

    Es una clase que sirve como clase base comn, pero no tendr

    instancias (objetos).

    + inyectores + agujas

    Figura 2.24. La clase abstracta impresora y sus clases

    derivadas que se conocen como clases concretas

    2.6.3. Anulacin / sustitucin (overriding)

    Cuando la propiedad se define nuevamente en la subclase, aunque se

    haya definido anteriormente a nivel de superclase, entonces la definicin realizada en la subclase es la utilizada por esta subclase.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Impresora

    Impresora chorro tinta

    Impresora matricial

    A

    H G

    J I F E

    C D

    Figura. Anulacin de atributos y mtodos en clases derivadas.

    2.7. SOBRECARGA

    Es una propiedad que describe una caracterstica adecuada que utiliza el

    mismo nombre de operacin para representar operaciones similares que se comportan de modo diferente cuando se aplican a clases diferentes.

    Empleado

    Ingeniero Administrativo

    Nombre Salario

    Edad Incrementar = Salario * inflacin

    Beneficios Salario [40 80] Edad [25 65] Incrementar

    Calcular_ Comision = 0.03 * Presupuesto

    Calcular_Comision = 0.05 * Presupuesto

    Figura 2.25. Sobrecarga

    Actualmente la sobrecarga se aplica solo a operaciones. La sobrecarga

    no es propiedad especifica de los LOO. Lenguajes como C y Pascal soportan operaciones sobrecargadas.

    En la mayora de los lenguajes, los operadores aritmticos +, - y * se utilizan para sumar, restar y multiplicar nmeros enteros o reales. M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.8 LIGADURA DINAMICA Los LOO tienen la caracterstica de poder ejecutar ligadura tarda

    (dinmica), al contrario que los lenguajes imperativos, que emplean ligadura temprana (esttica).

    En el caso de ligadura dinmica o tarda, el tipo se conecta directamente

    al objeto. Por consiguiente, el enlace entre el mensaje y el mtodo

    asociado solo se puede conocer en tiempo de ejecucin.

    Esto permite definir funciones o mtodos virtuales.

    2.8.1. Funciones o mtodos virtuales

    Las funciones virtuales en C++ permiten especificar un mtodo como

    virtual en la definicin de una clase particular. La implementacin real del mtodo se realiza en las subclases. En este caso, la seleccin del

    mtodo se hace en tiempo de compilacin, pero el cdigo real del

    mtodo utilizado se determina utilizando ligadura dinmica o tarda en tiempo de ejecucin.

    M. Sc. Ing. Lucas Coaquira Cano

    LENGUAJE DE PROGRAMACION

  • 15/05/2013

    14

    Esto permite definir el mtodo de un numero de formas diferentes para

    cada una de las diferentes clases.

    Figura

    Dibujar Dibujar Dibujar Dibujar

    Dibujar

    Mtodo virtual

    Circulo Cuadrado Rectngulo Lnea

    Cdigo para dibujar un circulo

    Figura 2.26. Mtodos o funciones virtuales

    Aqu el mtodo virtual se define en la clase FIGURA y el cdigo

    procedimental real utilizado se define en cada una de las subclases CIRCULO, CUADRADO, RECTANGULO Y LINEA.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.9 OBJETOS COMPUESTOS

    Son objetos que contienen otros objetos.

    En la mayora de los sistemas, los objetos compuestos no contienen en el sentido estricto otros objetos, sino que contienen referencias a otros objetos. La referencia almacenada en la variable se llama

    identificador del objeto (ID del objeto).

    Var1: *

    Var2: *

    Objcompuesto

    Objgr1 Objgr2

    Figura 2.27. Un objeto compuesto

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Coche

    Motor Sistema frenos Sistema

    transmisin Chasis

    parte_de parte_de parte_de parte_de

    Figura 2.28. Relacin de agregacin (parte_de)

    Un objeto compuesto consta de dos o mas objetos componentes. Los

    objetos componentes tienen una relacin part_of (parte_de).

    La relacin parte_de puede representarse tambin por has_a (tiene_un).

    Coche

    Motor

    Tiene_un

    Figura 2.29. Relacin de agregacin (tiene_un)

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    Figura 2.30. Objetos compuestos (dos objetos orden_compra)

    Cliente

    Articulo

    *

    *

    Cliente

    Articulo

    *

    *

    Objetos

    compuestos

    orden_compra

    componentes

    Artculo Cliente Artculo

    2.9.1 Un ejemplo de objetos compuestos

  • 15/05/2013

    15

    Empleado

    -pNombre: String -apPaterno : String

    -fechaNac : Fecha - fechaCont : Fecha

    Fecha

    - dia : int - mes : int

    - anio : int

    + Fecha(int, int, int) - comprobarMes(int) : int

    + comprobarDia(int) : int + aStringFecha() : String

    + Empleado(String, String, Fecha, Fecha)

    + StringEmpleado():String

    public class Fecha {

    private int mes; private int dia;

    private int anio;

    public Fecha(int d, int m, int a){ }

    private int comprobarMes(int mp){

    } private int comprobarDia(int dp){

    }

    public String aStringFecha(){

    }

    }

    public class Empleado {

    private String pNombre; private String apPaterno;

    private Fecha fechaNac;

    private Fecha fechaCont;

    public Empleado(String nombre, String apellido, Fecha

    fechaNacim, Fecha fechaContrata ){ }

    public String aStringempleado(){

    } }

    public class PruebaEmp {

    public static void main(String args[]){ Fecha nacimiento = new Fecha(24, 7, 1949);

    Fecha contratacion = new Fecha(12, 3, 1988);

    Empleado empleado = new Empleado("Juan", "Perez", nacimiento, contratacion);

    }

    2.9.2 Niveles de profundidad COCHE

    MOTOR SISTEMA_FRENOS

    SISTEMA_TRANSMISION CHASIS

    Atributos

    Numero_coches_vendidos

    Atributos compartidos

    Concesionario: SEAT

    Atributos instancia

    modelo

    color

    precio

    Objetos componentes

    MOTOR

    SISTEMA_FRENOS

    SISTEMA_TRANSMISION

    CHASIS

    Atributos:

    Numero_cilindros

    Potencia

    Cilindrada

    Valvulas_cilindros

    Atributos:

    Tipo:

    ABS:

    Proveedor:

    Atributos:

    Tipo_embrague:

    Caja_cambio:

    Atributos:

    Tipo:

    Color:

  • 15/05/2013

    16

    A

    B

    C

    Figura 2.31 Jerarqua de componentes agregados A

    B

    Z

    Figura 2.32 Anidamiento de objetos

    2.10 REUTILIZACION CON ORIENTACION A

    OBJETOS

    Es la propiedad por la que el software desarrollado puede ser utilizado

    cuantas veces sea necesario en mas de un programa

    2.10.1. Objetos y reutilizacin

    La POO proporciona el marco idneo para la reutilizacin de las

    clases. Los conceptos de encapsulamiento y herencia son las bases que facilitan la reutilizacin.

    La facilidad para reutilizar clases (y en consecuencia objetos) es una

    de las propiedades fundamentales que justifican el uso de la POO.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    La sobrecarga es una clase de polimorfismo, que tambin es una

    caracterstica importante de POO

    En un sentido mas amplio, el polimorfismo supone que un mismo mensaje puede producir acciones (resultados) totalmente

    diferentes cuando se reciben por objetos diferentes.

    M. Sc. Ing. Lucas Coaquira Cano

    FUNDAMENTOS DE LENGUAJE DE PROGRAMACION

    2.11 POLIMORFISMO

    Es el uso de un nombre o un smbolo por ejemplo, un operador- para representar o significar mas de una accin.

    Cuando un operador existente en el lenguaje tal como +, = o * se le

    asigna la posibilidad de operar sobre un nuevo tipo de dato, se dice que esta sobrecargado.

    La utilizacin de operadores o funciones de formas diversas,

    dependiendo de cmo estn operando, se denomina polimorfismo.

    El trmino polimorfismo se refiere a que la caracterstica de una clase

    puede tomar varias formas.

    El polimorfismo representa en nuestro caso la posibilidad de

    desencadenar operaciones distintas en respuesta a un mismo mensaje.

    Cada subclase hereda las operaciones pero tiene la posibilidad de modificar localmente el comportamiento de estas operaciones.

    Ejemplo: todo animal duerme, pero cada clase lo hace de forma distinta.

  • 15/05/2013

    17

    Animal

    Tigre Oso Len

    dormir()

    dormir() dormir() dormir()

    dormir ()

    {

    }

    dormir ()

    {

    en un rbol

    }

    dormir ()

    {

    sobre la espalda

    }

    dormir ()

    {

    sobre el vientre

    }

    Vehculo

    bicicleta automvil moto embarcacin

    Conducir()

    Conducir() Conducir() Conducir() Conducir()

    Figura. Ejemplo de polimorfismo al enviar el mensaje conducir

    al objeto vehiculo

    Animal

    + mover()

    + mover() + mover() + mover()

    Pez Rana Ave