19
Universidad Central de Venezuela.  Recopilación y P reparación Prof . Yusneyi Carbal lo Escuela de Computación - Algoritmos y Programación Oct-05, Julio 07  Pág. 1 Tema 8. PROGRAMACIÓN ORIENTADA A OBJETOS I. CONCEPTO S B ÁSICOS 1. Programación Orientada a Objeto (PO O) La programación Orientada a Objetos es una metodología que basa la estructura de los programas en torno a los objetos. Los lenguajes de POO ofrecen medios y herramientas para describir los objetos manipulados por un programa. Más que describir cada objeto individualmente, estos lenguajes proveen una construcción (Clase) que describe a un conjunto de objetos que poseen las mismas propiedades. 2. Objeto Es una entidad (tangible o intangible) que posee características y acciones que realiza por sí solo o interactuando con otros objetos. Un objeto es una entidad caracterizada por sus atributos propios y cuyo comportamiento está determinado por las acciones o funciones que pueden modificarlo, así como también las acciones que requiere de otros objetos. Un objeto tiene identidad e inteligencia y constituye una unidad que oculta tanto datos como la descripción de su manipulación. Puede ser definido como una encapsulación y una abstracción: una encapsulación de atributos y servicios, y una abstracción del mundo real. Para el contexto del Enfoque Orientado a Objetos (EOO) un objeto es una entidad que encapsula datos (atributos) y acciones o funciones que los manejan (métodos). También para el EOO un objeto se define como una instancia o particularización de una clase. Los objetos de interés durante el desarrollo de software no sólo son tomados de la vida real (objetos visibles o tangibles), también pueden ser abstractos. En general son entidades que juegan un rol bien definido en el dominio del problema. Un libro, una persona, un carro, un polígono, son apenas algunos ejemplos de objeto. Cada objeto puede ser considerado como un proveedor de servicios utilizados por otros objetos que son sus clientes. Cada objeto puede ser a al vez proveedor y cliente. De allí que un programa pueda ser visto como un conjunto de relaciones entre proveedores clientes. Los servicios ofrecidos por los objetos son de dos tipos: 1.- Los datos, que llamamos atributos . 2.- Las acciones o funciones, que llamamos métodos . Características Generales  Un objeto se identifica por un nombre o un identificador único que lo diferencia de los demás.  Ejemplo: el objeto Cuenta de Ahorros número 12345 es diferente al objeto Cuenta de Ahorros número 25789. En este caso el identificador que los hace únicos es el número de la cuenta.  Un objeto posee estados.  El estado de un objeto está determinado por los valores que poseen sus atributos en un momento dado.  Un objeto tiene un conjunto de métodos.  El comportamiento general de los objetos dentro de un sistema se describe o representa mediante sus operaciones o métodos. Los métodos se utilizarán para obtener o cambiar el estado de los objetos, así como para proporcionar un medio de comunicación entre objetos.  Un objeto tiene un conjunto de atributos.  Los atributos de un objeto contienen valores que determinan el estado del objeto durante su tiempo de vida. Se implementan con variables, constantes y estructuras de datos (similares a los campos de un registro).

ProfaYusneyi_Tema8_POOClasesyObjetos

Embed Size (px)

DESCRIPTION

clase_objeto

Citation preview

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    1/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    Tema PROGRAMACIN ORIENTADA A OBJETO

    I. CONCEPTOS BSICOS

    1.Programacin Orientada a Objeto (POO)La programacin Orientada a Objetos es una metodologa que basa la estructura de los programas en torno a los objetos.

    Los lenguajes de POO ofrecen medios y herramientas para describir los objetos manipulados por un programa. Ms qudescribir cada objeto individualmente, estos lenguajes proveen una construccin (Clase) que describe a un conjunto de objetque poseen las mismas propiedades.

    2.ObjetoEs una entidad (tangible o intangible) que posee caractersticas y acciones que realiza por s solo o interactuando con otroobjetos.

    Un objeto es una entidad caracterizada por sus atributos propios y cuyo comportamiento est determinado por las accionesfunciones que pueden modificarlo, as como tambin las acciones que requiere de otros objetos. Un objeto tiene identidadinteligencia y constituye una unidad que oculta tanto datos como la descripcin de su manipulacin. Puede ser definido comuna encapsulacin y una abstraccin: una encapsulacin de atributos y servicios, y una abstraccin del mundo real.

    Para el contexto del Enfoque Orientado a Objetos (EOO) un objeto es una entidad que encapsula datos (atributos) y accionesfunciones que los manejan (mtodos). Tambin para el EOO un objeto se define como una instancia o particularizacin de unclase.

    Los objetos de inters durante el desarrollo de software no slo son tomados de la vida real (objetos visibles o tangiblestambin pueden ser abstractos. En general son entidades que juegan un rol bien definido en el dominio del problema. Un libruna persona, un carro, un polgono, son apenas algunos ejemplos de objeto.

    Cada objeto puede ser considerado como un proveedor de servicios utilizados por otros objetos que son sus clientes. Cadobjeto puede ser a al vez proveedor y cliente. De all que un programa pueda ser visto como un conjunto de relaciones entproveedores clientes. Los servicios ofrecidos por los objetos son de dos tipos:

    1.- Los datos, que llamamos atributos .

    2.- Las acciones o funciones, que llamamos mtodos.

    Caractersticas Generales

    Un objeto se identi fica por un nombre o un identificador nico que lo diferencia de los dems.Ejemplo: el objeCuenta de Ahorros nmero 12345 es diferente al objeto Cuenta de Ahorros nmero 25789. En este caso el identificador qlos hace nicos es el nmero de la cuenta.

    Un objeto posee estados. El estado de un objeto est determinado por los valores que poseen sus atributos en momento dado.

    Un objeto t iene un conjunto de mtodos.El comportamiento general de los objetos dentro de un sistema se describerepresenta mediante sus operaciones o mtodos. Los mtodos se utilizarn para obtener o cambiar el estado de los objetoas como para proporcionar un medio de comunicacin entre objetos.

    Un objeto tiene un conjunto de atributos. Los atributos de un objeto contienen valores que determinan el estado dobjeto durante su tiempo de vida. Se implementan con variables, constantes y estructuras de datos (similares a los campde un registro).

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    2/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    Los objetos soportan encapsulamiento.La estructura interna de un objeto normalmente est oculta a los usuarios dmismo. Los datos del objeto estn disponibles solo para ser manipulados por los propios mtodos del objeto. El nimecanismo que lo conecta con el mundo exterior es el paso de mensajes.

    Un objeto tiene un tiempo de vida dentro del programa o sistema que lo crea y util iza. Para ser utilizado en algoritmo el objeto debe ser creado con una instruccin particular (New Nuevo) y al finalizar su utilizacin es destruido c

    el uso de otra instruccin o de manera automtica.

    3.ClaseLa clase es la unidad de modularidad en el EOO. La tendencia natural del individuo es la de clasificar los objetos segn sucaractersticas comunes (clase). Por ejemplo, las personas que asisten a la universidad se pueden clasificar (haciendabstraccin) en estudiante, docente, empleado e investigador.

    La clase puede definirse como la agrupacin o coleccin de objetos que comparten una estructura comn y un comportamiencomn.

    Es una plantilla que contiene la descripcin general de una coleccin de objetos. Consta de atributos y mtodos que resumelas caractersticas y el comportamiento comunes de un conjunto de objetos.

    Todo objeto (tambin llamado instancia de una clase), pertenece a alguna clase. Mientras un objeto es una entidad concreque existe en el tiempo y en el espacio, una clase representa solo una abstraccin.

    Todos aquellos objetos que pertenecen a la misma clase son descritos o comparten el mismo conjunto de atributos y mtodoTodos los objetos de una clase tienen el mismo formato y comportamiento, son diferentes nicamente en los valores qucontienen sus atributos. Todos ellos responden a los mismos mensajes.

    Su sintaxis algortmica es:

    Clase

    FClase ;

    Caractersticas Generales

    Una clase es un nivel de abstraccin alto. La clase permite describir un conjunto de caractersticas comunes para lobjetos que representa. Ejemplo: La clase Avin se puede utilizar para definir los atributos (tipo de avin, distancia, altuvelocidad de crucero, capacidad, pas de origen, etc.) y los mtodos (calcular posicin en el vuelo, calcular velocidad vuelo, estimar tiempo de llegada, despegar, aterrizar, volar, etc.) de los objetos particulares Avin que representa.

    Un objeto es una instancia de una clase.Cada objeto concreto dentro de un sistema es miembro de una clase especficatiene el conjunto de atributos y mtodos especificados en la misma

    Las clases se relacionan entre s mediante una jerarqua. Entre las clases se establecen diferentes tipos de relaciones herencia, en las cuales la clase hija (subclase) hereda los atributos y mtodos de la clase padre (superclase), adems d

    incorporar sus propios atributos y mtodos.Ejemplos, Superclase: Clase Avin

    Subclases de Avin: Clase Avin Comercial, Avin de Combate, Avin de Transporte

    Los nombres o identificadores de las clases deben colocarse en singular (clase Animal, clase Carro, clase Alumno).

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    3/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    4.Relacin entre Clase y ObjetoAlgortmicamente, las clases son descripciones netamente estticas o plantillas que describen objetos. Su rol es definuevos tipos conformados por atributos y operaciones.

    Por el contrario, los objetos son instancias particularesde una clase. Las clases son una especie de molde de fbrica, e

    base al cual son construidos los objetos. Durante la ejecucin de un programa slo existen los objetos, no las clases.La declaracinde una variable de una clase NO creael objeto.

    La asociacin siguiente: ; (por ejemplo, Rectngulo R), no genera o no creautomticamente un objeto Rectngulo. Slo indica que R ser una referencia o una variable de objeto de la clase Rectngulo

    La creacin de un objeto, debe ser indicada explcitamente por el programador, de forma anloga a como inicializamos lvariables con un valor dado, slo que para los objetos se hace a travs de un mtodo Constructor(ver punto Mtodos).

    5.AtributoSon los datos o variables que caracterizan al objeto y cuyos valores en un momento dado indican su estado.

    Un atributo es una caracterstica de un objeto. Mediante los atributos se define informacin oculta dentro de un objeto, la cues manipulada solamente por los mtodos definidos sobre dicho objeto

    Un atributo consta de un nombre y un valor. Cada atributo est asociado a un tipo de dato, que puede ser simple (entero, relgico, carcter, string) o estructurado (arreglo, registro, archivo, lista, etc.)

    Su sintaxis algortmica es: ;

    Los modos de accesoson:

    Pblico:Atributos (o Mtodos) que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si est relacionada con ella. Este modo de acceso tambin se puederepresentar con el smbolo +

    Privado: Atributos (o Mtodos) que slo son accesibles dentro de la implementacin de la clase. Tambin se puerepresentar con el smbolo

    Protegido:Atributos (o Mtodos) que son accesibles para la propia clase y sus clases hijas (subclases). Tambin se puerepresentar con el smbolo #

    6.MtodoSon las operaciones (acciones o funciones) que se aplican sobre los objetos y que permiten crearlos, cambiar su estadoconsultar el valor de sus atributos.

    Los mtodos constituyen la secuencia de acciones que implementan las operaciones sobre los objetos. La implementacin dlos mtodos no es visible fuera de objeto.

    La sintaxis algortmicade los mtodos expresados como funciones y acciones es:

    Parafuncionesse pueden usar cualquiera de estas dos sintaxis:

    Funcin [(Lista Parmetros)]:

    Para acciones:

    Accin [(Lista Parmetros)] donde los parmetros son opcionales

    Ejemplo: Un rectngulo es un objeto caracterizado por los atributos Largo y Ancho, y por varios mtodos, entre otros Calcusu rea y Calcular su permetro.

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    4/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    Caractersticas Generales

    Cada mtodo tiene un nombre, cero o ms parmetros (por valor o por referencia) que recibe o devuelve y un algoritmo coel desarrollo del mismo.

    En particular se destaca el mtodo constructor, que no es ms que el mtodo que se ejecuta cuando el objeto es creadEste constructor suele tener el mismo nombre de la clase/ objeto, pero aunque es una prctica comn, el mtodconstructor no necesariamente tiene que llamarse igual a la clase (al menos, no en pseudos-cdigo). Es un mtodo qurecibe cero o ms parmetros y lo usual es que inicialicen los valores de los atributos del objeto.

    En lenguajes como Java y C++ se puede definir ms de un mtodo constructor, que normalmente se diferencian entrepor la cantidad de parmetros que reciben.

    Los mtodos se ejecutan o activan cuando el objeto recibe un mensaje , enviado por un objeto o clase externo al que contiene, o por el mismo objeto de manera local.

    Creacin de Objetos y Mtodos Constructores:

    Cada objeto o instancia de una clase debe ser creada explcitamente a travs de un mtodo u operacin especial denomina

    Constructor. Los atributos de un objeto toman valores iniciales dados por el constructor. Por convencin el mtodo constructiene el mismo nombre de la clase y no se le asocia un modo de acceso ( es pblico).

    Algunos lenguajes proveen un mtodo constructor por defecto para cada clase y/o permiten la definicin de ms de un mtoconstructor.

    Mtodo de Destructores de objetos:

    Los objetos que ya no son utilizados en un programa, ocupan intilmente espacio de memoria, que es conveniente recuperen un momento dado. Segn el lenguaje de programacin utilizado esta tarea es dada al programador o es tratadautomticamente por el procesador o soporte de ejecucin del lenguaje.

    En la notacin algortmicaNO tomaremos en cuenta ese problema de administracin de memoria, por lo tanto no definirem

    formas para destruir objetos. En cambio al utilizar lenguajes de programacin si debemos conocer los mtodos destructorsuministrados por el lenguaje y utilizarlos a fin de eliminar objetos una vez no sean tiles.

    7.MensajeEs la peticin de un objeto a otro para solicitar la ejecucin de alguno de sus mtodos o para obtener el valor de un atribupblico.

    Estructuralmente, un mensaje consta de 3 partes:

    Identidad del receptor:Nombre del objeto que contiene el mtodo a ejecutar. Nombre del mtodo a ejecutar: Sololos mtodos declarados pblicos. Lista de Parmetrosque recibe el mtodo (cero o mas parmetros)Su sintaxis algortmica es: . ( [ ] );

    Cuando el objeto receptor recibe el mensaje, comienza la ejecucin del algoritmo contenido dentro del mtodo invocadrecibiendo y/o devolviendo los valores de los parmetros correspondientes, si los tiene ya que son opcionales: ( [ ] )

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    5/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    Ejemplo 1, Definic in de la Clase Rectngulo

    IMPLEMENTACINClase Rectngulo;

    // AtributosPrivado:Real Largo, Ancho;

    // Mtodos// mtodo constructorAccin Rectngulo(Real lar, anc);

    Largo = lar;Ancho = anc;

    FAccin;

    Rectngulo

    Privado Real LargoPrivado Real Ancho

    Constructor Accin Rectngulo(lar, anc)Pblico Funcin rea: RealPblico Funcin Permetro: Real

    Pblico Funcin rea: Real

    // Retorna el rea o superficie ocupada por el rectnguloretornar(Largo * Ancho);

    FFuncin rea;

    Pblico Funcin Permetro: Real// Retorna el permetro del rectnguloretornar(2 * (Largo + Ancho));

    FFuncin Permetro;

    FClase Rectngulo;

    // Uso de la clase rectnguloAccin Principal

    Rectngulo R; // se declara una variable de tipo objeto Rectngulo, a la cual llamaremos RReal L, A; // se declaran las variables reales L y A para largo y ancho del rectnguloEscribir(Suministre a continuacin los valores para el largo y el ancho);Leer(L); Leer(A);R.Rectngulo(L, A);Escribir(Resultados de los clculos:);Escribir(rea: + R.rea + - Permetro + R.Permetro);

    FAccin Principal;

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    6/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    II. REPRESENTACIN EN NOTACIN ALGORTMICA DE UNA CLASE

    Las clases son el elemento principal dentro del enfoque orientado a objetos. En este lenguaje las declaraciones forman parte dsu propio grupo, el grupo [Clases]. Cada una de las declaraciones de clase debe tener el siguiente formato:

    Clase [Hereda de: ]AtributosPblico:

    [Constantes]; [Variables]; o [Estructuras];Privado:[Constantes]; [Variables]; o [Estructuras];Protegido:[Constantes]; [Variables]; o [Estructuras];

    OperacionesPblico:

    [Mtodos]

    Privado:[Mtodos]Protegido:

    [Mtodos]FClase

    En el caso de la especificacin de los Atributos o de los Mtodos los modos de acceso Pblico (+), Privado (-) o Protegido (pueden omitirse, solamente en el caso en el que los grupos [Constantes], [Estructuras] y [Variables] son vacos, es decir, no sestn declarando Atributos Mtodos.

    NOTA: Otra forma de especificar los modos de acceso es colocndolo antes del nombre DE CADA UNO de latributos o mtodos

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    7/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    III. DIAGRAMAS DE CLASE

    La representacin grfica de una o varias clases se har mediante los denominados Diagramas de Clase. Para los diagramde clase se utilizar la notacin que provee el Lenguaje de Modelacin Unificado (UML, ver www.omg.org), a saber:

    Las clases se denotan como rectngulos divididos en tres partes. La primera cont iene el nombre de la clase, la seguncontiene los atributos y la tercera los mtodos.

    Los modificadores de acceso a datos y operaciones, a saber: pblico, protegido y privado; se representan con los smbol+, # y respectivamente, al lado derecho del atributo. (+ pblico, # protegido, - privado).

    En la figura se muestra el mtodo color que no tiene ningn parmetro y retorna un valor entero y el mtomodificar_tamao que tiene un real como parmetro y no retorna nada (es una accin).

    Notacin: EjemplosNombre Clase Ventana Rectngulo

    Atributos + Real rea;# Lgico visible;

    Privado Real Lado

    Mtodos + color: Entero+ modificar_tamao(Real porcentaje)

    Accin Cuadrado(Entero lad)Pblico Funcin rea: RealPblico Funcin Permetro: Real

    IV. RELACIONES ENTRE CLASES

    Las clases no se construyen para que trabajen de manera aislada, la idea es que ellas se puedan relacionar entre s, manera que puedan compartir atributos y mtodos sin necesidad de rescribirlos.

    La posibilidad de establecer jerarquas entre las clases es una caracterstica que diferencia esencialmente la programaciorientada a objetos de la programacin tradicional, ello debido fundamentalmente a que permite extender y reutilizar el cdigexistente sin tener que rescribirlo cada vez que se necesite.

    Los cuatro tipos de relaciones entre clases estudiados en este curso sern:

    Herencia (Generalizacin / Especializacin o Es-un) Agregacin (Todo / Parte o Forma-parte-de) Composicin (Es parte elemental de) Asociacin (entre otras, la relacin Usa-a)

    1. Relacin de Herencia (Generalizacin / Especializacin, Es un)Es un tipo de jerarqua de clases, en la que cada subclase contiene los atributos y mtodos de una (herencia simple) o m

    superclases (herencia mltiple).

    Mediante la herencia las instancias de una clase hija (o subclase) pueden acceder tanto a los atributos como a los mtodopblicos y protegidos de la clase padre (o superclase). Cada subclase o clase hija en la jerarqua es siempre una extensi(esto es, conjunto estrictamente ms grande) de la(s) superclase(s) o clase(s) padre(s) y adems incorporar atributosmtodos propios, que a su vez sern heredados por sus hijas.

    Representacin:

    En la notacin algortmica: Se coloca el nombre de la clase padre despus de la frase Hereda de del encabezado de clase y se usan sus atributos y mtodos pblicos o protegidos. Ejemplo: Clase Punto3D Hereda de Punto2D

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    8/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    En el diagrama de clases:La herencia se representa mediante una relacin de generalizacin/especificacin, que se denode la siguiente forma:

    Ejemplo: El siguiente diagrama de clases muestra la relacin de Herencia entre la Clase Animal y sus hijas

    2. Relacin de Agregacin (Todo / Parte, Forma parte de)Es una relacin que representa a los objetos compuestos por otros objetos. Indica Objetos que a su vez estn formados potros. El objeto en el nivel superior de la jerarqua es el todo y los que estn en los niveles inferiores son sus partescomponentes.

    Representacin en el Diagrama de Clase

    La relacin forma parte de, no es ms que una asociacin, que se denota:

    Si motor forma parte de carro, la flecha apunta a la clase motor, y el diamante va pegado a carro.

    La multiplicidad es el rango de cardinalidad permitido que puede asumir la asociacin, se denota LI..LS. Se puede usar * enlimite superior para representar una cantidad ilimitada (ejemplo: 3..*).

    Ejemplo: Objeto Casa descrito en trminos de sus componentes

    Nombre del objetode nivel superior

    Nombre del objetoque lo compone

    multiplicidadcarro ruedas

    4 .. *

    clase hija clase madre subclase superclase

    Animal

    Mamfero Reptil

    SerpienteCocodriloHumanoPerro Gato

    MujerHombre

    Casa

    Habitacin Bao

    ParedPuerta Ventana

    Terraza

    1 .. * 1 .. * 0 .. *

    3 .. 40 .. 41 .. *

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    9/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg

    3. Relacin de ComposicinUn componente es parte esencial de un elemento. La relacin es ms fuerte que el caso de agregacin, al punto que si componente es eliminado o desaparece, la clase mayor deja de existir.

    Representacin en el Diagrama de Clases

    La relacin de composicin, se denota de la siguiente forma:

    4. Relacin de Asociacin (uso, usa, cualquier otra relacin)Es una asociacin que se establece cuando dos clases tienen una dependencia de utilizacin, es decir, una clase utilizatributos y/o mtodos de otra para funcionar. Estas dos clases no necesariamente estn en jerarqua, es decir, nnecesariamente una es clase padre de la otra, a diferencia de las otras relaciones de clases.

    El ejemplo mas comn de esta relacin es de objetos que son utilizados por los humanos para alguna funcin, como Lpiz (usa para escribir), tenedor (se usa para comer), silla (se usa para sentarse), etc. Otro ejemplo son los objetos Cajero y CuentEl Cajero usa a la cuenta para hacer las transacciones de consulta y retiro y verificar la informacin del usuario.

    Representacin en el Diagrama de Clases

    La relacin de uso, se denota con una dependencia estereotipada:

    Ejemplos:

    Impresora Cartucho_tintauso

    Estudiante Portaminarecarga

    clase 1 clase 2usa a

    clase mayor clase componente persona corazn

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    10/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    V. FUNDAMENTOS DEL ENFOQUE ORIENTADO A OBJETO

    El Enfoque Orientado a Objeto se basa en cuatro principios que constituyen la base de todo desarrollo orientado a objetoEstos principios son: la Abstraccin, el Encapsulamiento, la Modularidad y la Herencia.

    Otros elementos a destacar (aunque no fundamentales) en el EOO son: Polimorfismo, Enlace dinmico (o bindin

    Concurrencia y Persistencia.

    Fundamento 1: AbstraccinEs el principio de ignorar aquellos aspectos de un fenmeno observado que no son relevantes, con el objetivo dconcentrarse en aquellos que si lo son. Una abstraccin denota las caractersticas esenciales de un objeto (datosoperaciones), que lo distingue de otras clases de objetos. Decidir el conjunto correcto de abstracciones de un determinaddominio, es el problema central del diseo orientado a objetos.

    Los mecanismos de abstraccin son usados en el EOO para extraer y definir del medio a modelar, sus caractersticas y comportamiento. Dentro del EOO son muy usados mecanismos de abstraccin: la Generalizacin, la Agregacin y clasificacin.

    La generalizacin es el mecanismo de abstraccin mediante el cual un conjunto de clases de objetos son agrupados euna clase de nivel superior (Superclase), donde las semejanzas de las clases constituyentes (Subclases) son enfatizadaslas diferencias entre ellas son ignoradas. En consecuencia, a travs de la generalizacin, la superclase almacena datogenerales de las subclases, y las subclases almacenan slo datos particulares. La especializacin es lo contrario de generalizacin. La clase Mdico es una especializacin de la clase Persona, y a su vez, la clase Pediatra es uespecializacin de la superclase Mdico.

    La agregacin es el mecanismo de abstraccin por el cual una clase de objeto es definida a partir de sus partes (otraclases de objetos). Mediante agregacin se puede definir por ejemplo un computador, por descomponerse en: la CPU,ULA, la memoria y los dispositivos perifricos. El contrario de agregacin es la descomposicin .

    La clasificacinconsiste en la definicin de una clase a partir de un conjunto de objetos que tienen un comportamiensimilar. La ejemplificacin es lo contrario a la clasificacin, y corresponde a la instanciacin de una clase, usando ejemplo de un objeto en particular.

    Fundamento 2: Encapsulamiento (Ocultamiento de Informacin)Es la propiedad del EOO que permite ocu ltar al mundo exterior la representacin in terna del objeto. Esto quiere deque el objeto puede ser utilizado, pero los datos esenciales del mismo no son conoc idos fuera de l.

    La idea central del encapsulamiento es esconder los detalles y mostrar lo relevante. Permite el ocultamiento de la informaciseparando el aspecto correspondiente a la especificacin de la implementacin; de esta forma, distingue el "qu hacer" d"cmo hacer". La especificacin es visible al usuario, mientras que la implementacin se le oculta.

    El encapsulamiento en un sistema orientado a objeto se representa en cada clase u objeto, definiendo sus atributos y mtodcon los siguientes modos de acceso:

    Pblico (+)Atributos o Mtodos que son accesibles fuera de la clase. Pueden ser llamados por cualquier clase, aun si est relacionada con ella. Privado (-)Atributos o Mtodos que solo son accesibles dentro de la implementacin de la clase. Protegido (#):Atributos o Mtodos que son accesibles para la propia clase y sus clases hijas (subclases).Los atributos y los mtodos que son pblicos constituyen la interfaz de la clase, es decir, lo que el mundo exterior conoce de misma.Normalmente lo usual es que se oculten los atributos de la clase y solo sean visibles los mtodos, incluyendo entonces algunde consulta para ver los valores de los atributos. El mtodo constructor (Nuevo, New) siempre es Pblico.

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    11/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    Fundamento 3: ModularidadEs la propiedad que permite tener independencia entre las diferentes partes de un sistema. La modularidad consisen dividir un programa en mdul os o partes, que pueden ser compilados separadamente, pero que tienen conexioncon otros mdulos. En un mismo mdulo se suele colocar clases y objetos que guarden una estrecha relacin. El sentido dmodularidad est muy relacionado con el ocultamiento de informacin.

    Fundamento 4: HerenciaEs el proceso mediante el cual un obj eto de una clase adquiere propiedades definidas en otra clase que lo preceda una jerarqua de clasificaciones. Permite la definicin de un nuevo objeto a partir de otros, agregando las diferencias entellos (Programacin Diferencial), evitando repeticin de cdigo y permitiendo la reusabilidad.

    Las clases heredan los datos y mtodos de la superclase. Un mtodo heredado puede ser sustituido por uno propio si ambtienen el mismo nombre.

    La herencia puede ser simple (cada clase tiene slo una superclase) o mltiple (cada clase puede tener asociavarias superclases). La clase Docente y la clase Estudiante heredan las propiedades de la clase Persona (superclasherencia simple). La clase Preparador (subclase) hereda propiedades de la clase Docente y de la clase Estudiante (herenc

    mltiple).

    Fundamento 5: PolimorfismoEs una propiedad del EOO que permite que un mtodo tenga mlti ples implementaciones, que se seleccionan en baal tipo objeto indicado al solic itar la ejecucin del mtodo.

    El polimorfismo operacional o Sobrecarga operacional permite aplicar operaciones con igual nombre a diferentes clasesestn relacionados en trminos de inclusin. En este tipo de polimorfismo, los mtodos son interpretados en el contexto dobjeto particular, ya que los mtodos con nombres comunes son implementados de diferente manera dependiendo de caclase.

    Por ejemplo, el rea de un cuadrado, rectngulo y crculo, son calculados de manera distinta; sin embargo, en sus claserespectivas puede existir la implementacin del rea bajo el nombre comn rea. En la prctica y dependiendo del objeto q

    llame al mtodo, se usar el cdigo correspondiente.

    Ejemplos , Superclase: Clase Animal Subclases: Clases Mamfero, Ave, Pez

    Se puede definir un mtodo Comer en cada subclase, cuya implementacin cambia de acuerdo a la clase invocada, sembargo el nombre del mtodo es el mismo.

    Mamifero.Comer Ave.Comer Pez.Comer

    Otro ejemplo de polimorfismo es el operador +. Este operador tiene dos funciones diferentes de acuerdo al tipo de dato de loperandos a los que se aplica. Si los dos elementos son numricos, el operador + significa suma algebraica de los mismos, ecambio si por lo menos uno de los operandos es un String o Carcter, el operador es la concatenacin de cadenas caracteres.

    Otro ejemplo de sobrecarga es cuando tenemos un mtodo definido originalmente en la clase madre, que ha sidadaptado o modificado en la clase hija. Por ejemplo, un mtodo Comer para la clase Animal y otro Comer que ha siadaptado para la clase Ave, quien est heredando de la clase Animal.

    Cuando se desea indicar que se est invocando (o llamando) a un mtodo sobrecargado y que pertenece a otra c la(por ejemplo, a la clase padre) lo indicamos con la siguiente sintaxis:

    Clase_Madre::nombre_mtodo;

    Para el ejemplo, la llamada en la clase hija Ave del mtodo sobrecargado Comer de la clase madre Animal sera:

    Animal::Comer

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    12/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    VI. EJEMPLOS

    Ejemplo 1, Definicin de la Clase Rectngulo

    Clase Rectngulo;

    // AtributosPrivado:

    Real Largo, Ancho;

    // MtodosConstructor Rectngulo(Real lar, anc);

    Largo = lar;Ancho = anc;

    FConstructor;

    Pblico Funcin rea: Real// Retorna el rea o superficie ocupada por el rectngulo

    retornar(Largo * Ancho);FFuncin rea;

    Pblico Funcin Permetro: Real// Retorna el permetro del rectnguloretornar(2 * (Largo + Ancho));

    FFuncin Permetro;FClase Rectngulo;

    Rectngulo- Real Largo- Real Ancho

    + Accin Rectngulo+ Funcin rea: Real+ Funcin Permetro: Real

    Clase Principal

    Accin Usa_RectnguloRectngulo R; // se declara una variable de tipo objeto Rectngulo, a la cual llamaremos RReal L, A; // se declaran las variables reales L y A para leer el largo y ancho dado por el usuarioEscribir(Suministre a continuacin los valores para el largo y el ancho);Leer(L, A);R.Rectngulo(L, A);Escribir(Resultados de los clculos:);Escribir(rea: + R.rea + - Permetro + R.Permetro);

    FAccin Usa_Rectngulo;FClase Principal;

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    13/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    Ejemplo 2, Clase que implementa un punto en el plano realClase Punto2D

    //AtributosProtegido Real X, Y; // representan las coordenadas X e Y de un punto

    // Mtodos u operacionesPblico:

    //constructoresAccin Punto2D

    X = 0; Y = 0;FAccin;

    Accin Punto2D(Real CX, CY)X = CX; Y = CY;

    FAccin;

    // otros mtodos de la claseFuncin CoordenadaX:Real

    // devuelve el valor de la coordenada X del punto que hace la llamadaretornar(X);

    Ffuncin;

    Funcin CoordenadaY: Real// devuelve el valor de la coordenada Y del punto que hace la llamada

    retornar(Y);Ffuncin;

    Accin CambiarX(Real NX)// modifica el valor de la coordenada X del punto que hace la llamada

    X = NX;Ffuncin;

    Accin CambiarY(Real NY)// modifica el valor de la coordenada Y del punto que hace la llamada

    Y = NY;Ffuncin;

    Funcin Distancia(Real CX, CY):Real// devuelve la distancia entre el punto actual y otro con coordenadas CX y CY

    Real D; // variable donde se almacenar la distanciaD = (RestaC(X, CX) + RestaC(Y, CY)) (1/2);retornar(D);

    Ffuncin;

    Funcin Distancia(Ref Punto2D P):Real;//devuelve la distancia entre el punto actual y otro punto P

    retornar(Distancia(P.X, P.Y));Ffuncin Distancia;

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    14/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    Protegido Funcin RestaC (Real X,Y):Real;// devuelve la resta entre X y Y elevada al cuadrado

    retornar((X Y) 2));Ffuncin Resta_C;

    FClase Punto2D;

    Clase Prueba_Punto

    Accin PrincipalReal CX, CY; // valores para las coordenadas del punto a crearReal D; // contiene la distancia entre los puntosEscribir (Introduzca las coordenadas X e Y del punto a crear: );Leer(CX, CY);Punto P = nuevo Punto2D(CX , CY);Punto P1 = nuevo Punto2D; // crea un punto en el origen, es decir, en el punto (0.0 , 0.0)D = P.Distancia(P1.CoordenadaX , P1.CoordenadaY;Escribir (Distancia entre el punto P y el origen: + D);

    P1.CambiarX (15.0); P1.CambiarY(18.75); // se cambia a al punto (15.0 , 18.75)Escribir (Nuevo punto P1: ( + P1.CoordenadaX + , + P1.CoordenadaY + ) );D = P.Distancia(P1);Escribir (La nueva Distancia entre P y P1 es: + D);

    fAccin Principal;

    FClase Prueba_Punto;

    Ejemplo 3, Clase Punto3D que se deriva de la clase Punto2D

    Clase Punto3D Hereda dePunto2D;// AtributosProtegido Real Z; // coordenada Z del punto

    // Mtodos u operacionesPblico:

    // mtodos constructores Punto3DAccin Punto3D

    // Crea un punto con coordenadas (0,0,0) reutilizando el constructor de un punto de 2D

    Punto2D;Z = 0;

    FAccin;

    Accin Punto3D(Real CX, CY, CZ)// Crea un punto de tres coordenadas reutilizando el constructor de un punto de 2D

    Punto2D(CX, CY);Z = CZ;

    FAccin;

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    15/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    // otros mtodos de la claseFuncin CoordenadaZ:Real

    // devuelve el valor de la coordenada Z del punto que hace la llamadaretornar(Z);

    Ffuncin;

    Accin CambiarZ(Real NZ)// modifica el valor de la coordenada Z del punto que hace la llamada

    Z = NZ;Ffuncin;

    Funcin Distancia3D(Real CX, CY, CZ):Real// devuelve la distancia entre el punto actual y otro con coordenadas CX, CY y CZ

    Real D; //contiene la distanciaD = RestaC(X, CX) + RestaC(Y, CY) + RestaC(Z, CZ);D = D (1/2);

    retornar(D);Ffuncin;

    Funcin Distancia3D(Ref Punto3D P):Real// devuelve la distancia entre el punto actual y otro punto P

    retornar(Distancia3D(P.X, P.Y, P.Z));Ffuncin;

    FClase Punto3D

    Plantea tus reflexiones y respuestas a:

    1. Qu atributos y mtodos hereda la clase Punto3D de la clase Punto2D?2. Qu atributos y mtodos hereda la clase Punto2D de la clase Punto3D?3. Quines pueden usar los atributos y mtodos de Punto2D?4. Plantea un algoritmo principal que utilice las clases Punto2D y Punto3D

    Te atrevesa pasar?

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    16/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    Ejemplo 4, Clase Cuenta Bancaria

    Clase CuentaBancaria

    // atributos

    Privado Entero Saldo;Privado String NroCuenta;Privado String Titular;

    // mtodosAccin CuentaBancaria(Entero montoInicial; String num, nombre)

    // asigna a los atributo de la clase sus valores inicialesSaldo = montoInicial;NroCuenta = num;Titular = nombre;

    Faccin;

    Pblico Accin depositar(Entero cantidad)// incrementa el saldo de la cuentaSaldo = Saldo + cantidad;

    Faccin;

    Pblico Accin retirar(Entero cantidad)// disminuye el saldo de la cuentaSaldo = Saldo - cantidad;

    Faccin;

    Pblico Funcin obtenerSaldo: Entero

    // permite conocer el monto disponible o saldo de la cuentaRetornar(saldo);FFuncin;

    FinClase CuentaBancaria

    Reflexiona y plantea propuestas para:

    5. Crear un algoritmo principal que utilice la clase CuentaBancaria, creandvarios objetos cuenta y actualizando sus saldos. Recuerda agregar en t

    algoritmo principal las solicitudes de datos al usuario que considerenecesarias y las validaciones de estos datos de entrada

    6. Desde tu algoritmo principal podras actualizar directamente el valor datributo saldo? Cmo lo puedes hacer?

    7. Utiliza los mtodos de la clase CuentaBancaria para verificar, en el algoritmprincipal, que no se retire un monto que el saldo no puede cubrir

    Te atrevesa pasar?

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    17/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    Ejemplo 5, Clase Races Ecuacin de 2do Grado

    Desarrollar un algoritmo bajo el enfoque orientado a objetos, quepermita calcular las races (reales e imaginarias) de una ecuacin desegundo grado ax2+bx+c, dados los coeficientes a, b y c, con a>0.

    Anlisis:El objeto principal a ser tratado en este problema es la ecuacin y seimplementar a travs de la clase Ecuacin2doGrado .Se considerar que cada ecuacin tiene asociadas como atributos susraces, las cuales deben ser calculadas por el mtodo constructor atravs de una accin llamada Resolver. El mtodo constructor tendrtres parmetros, que son los coeficientes de la ecuacin (a, b y c).La clase Ecuacin2doGrado tendr un mtodo pblico para escribirlas races llamado Imprimir.

    Ecuacin2doGrado

    Privado Real RazReal1

    Privado Real RazImaginaria1Privado Real RazReal2

    Privado Real RazImaginaria2

    Constructor Ecuacin2doGrado(Real a, b, c)

    // Crea un Objeto Ecuacion2doGrado

    Privado Accin Resolver(Real a, b, c)

    // Calcula las races de la ecuacin

    Pblico Accin Imprimir

    // Muestra las races de la ecuacin

    Clase Ecuacin2doGrado;Privado Real r1, r2, i1, i2;

    Constructor Ecuacin2doGrado(Real a, b, c);Resolver(a,b,c);

    FConstructor;

    Privado Accin Resolver(Real a,b,c);// Calcula las races de la ecuacin ax2+bx+c

    Real delta;delta = b * b - (4*a*c);Si delta 0 entonces // Clculo de races reales

    Si b > 0 entonces r1 = - ( b + delta^(1/2) ) / (2*a);sino r1 = - (delta (1/2) - b) / (2*a);

    Fsi;r2 = c / (r1*a); i1 = 0; i2 = 0;

    sino // Clculo de races complejasr1 = -b / (2*a); r2 = -b / (2*a);i1 = (-delta)^(1/2) / (2*a);i2 = -i1;

    Fsi;FAccin Resolver;

    Pblico Accin Imprimir;# Muestra las races de la ecuacin

    Escribir(r1, i1);Escribir(r2, i2);

    FAccin Imprimir;

    FClase Ecuacin2doGrado;

    // Usamos la clase Ecuacion2doGradoAccin CalcularEcuaciones

    Real a,b,c;Ecuacin2doGrado E, F;Escribir(suministre coeficientes ecuacin 1

    Leer(a, b, c);E.Ecuacin2doGrado(a, b, c);E.Imprimir;Escribir(suministre coeficientes ecuacin 2Leer(a, b, c);F.Ecuacin2doGrado(a, b, c);F.Imprimir;

    FAccin;

  • 5/24/2018 ProfaYusneyi_Tema8_POOClasesyObjetos

    18/18

    Universidad Central de Venezuela. Recopilacin y Preparacin Prof. Yusneyi CarbaEscuela de Computacin - Algoritmos y Programacin Oct-05, Julio

    Pg.

    CONCLUSIONES

    En la Programacin Orientada a Objetos los programas son representados por un conjunto de objetos que interactan. Uobjeto engloba datos y operaciones sobre estos datos.

    La Programacin Orientada a Objetos constituye una buena opcin a la hora de resolver un problema, sobre todo cuando s

    es muy extenso. En este enfoque de programacin, se facilita evitar la repeticin de cdigo, no slo a travs de la creacin dclases que hereden propiedades y mtodos de otras, sino adems que el cdigo es reutilizable por sistemas posteriores qtengan alguna similitud con los ya creados.

    BIBLIOGRAFA

    BOOCH, Grady. "Object-oriented Analysis and Design with Applications". 2da. edicin, Benjamn/CumminPublishing, 1993.

    CARMONA, Rhadams. El Enfoque Orientado a Objetos . Gua para estudiantes de Algoritmos y Programacin. UC2004.

    COTO, Ernesto. Notacin Algortmicapara estudiantes de Algoritmos y Programacin. UCV. DEITEL & DEITEL. "Cmo Programar en Java". Pearson Prentice Hall, 2004 JOYANES AGUILAR, Luis; RODRGUEZ BAENA, Luis; FERNNDEZ, Matilde. "Texto: Fundamentos de Programaci

    Algoritmos, Estructuras de Datos y Objetos" . McGraw-Hill, 2003

    JOYANES AGUILAR, Luis; RODRGUEZ BAENA, Luis; FERNNDEZ, Matilde. "Libro de problemas: Fundamentos Programacin, Algoritmos, Estructuras de Datos y Objetos" . McGraw-Hill, 2003

    WU, Thomas C. Introduccin a la Programacin Orientada a Objetos en Java . McGraw-Hill. 2001