Vous êtes sur la page 1sur 10

Instituto Tecnolgico de Tlalnepantla Mondragn Villeda Carlos Echeverra Chan Ivonne Programacin Orientada a Objetos Unidad V y VI.

T-22

UNIDAD V.

5.1..... Concepto de herencia y polimorfismo. 5.2..... Definicin de una clase base. 5.3..... Definicin de una clase derivada. 5.4..... Clases abstractas. 5.5..... Definicin de herencia mltiple. 5.6..... Implementacin de herencia mltiple. 5.7..... Reutilizacin de la definicin de paquetes / libreras. 5.8..... Clases genricas (Plantillas).

UNIDAD VI.

6.1..... Definicin de archivos de texto y archivos binarios. 6.2..... Operaciones bsicas en archivos texto y binario. 6.3..... Manejo de excepciones en archivos Herencia.

En orientacin a objetos la herencia es, despus de la agregacin o composicin, el mecanismo ms utilizado para alcanzar algunos de los objetivos ms preciados en el desarrollo de software como lo son la reutilizacin y la extensibilidad. A travs de ella los diseadores pueden crear nuevas clases partiendo de una clase o de una jerarqua de clases preexistente (ya comprobadas y verificadas) evitando con ello el rediseo, la modificacin y verificacin de la parte ya implementada. La herencia facilita la creacin de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (mtodos) y eventualmente los atributos (variables) de su superclase. Es la relacin entre una clase general y otra clase ms especifica. Por ejemplo: Si declaramos una clase prrafo derivada de una clase texto, todos los mtodos y variables asociadas con la clase texto, son automticamente heredados por la subclase prrafo. La herencia es uno de los mecanismos de los lenguajes de programacin orientada a objetos basados en clases, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad. La clase de la que se hereda se suele denominar clase base, clase padre, superclase, clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programacin).

Polimorfismo.

En programacin orientada a objetos el polimorfismo se refiere a la posibilidad de enviar un mensaje a un grupo de objetos cuya naturaleza puede ser heterognea. El nico requisito que deben cumplir los objetos que se utilizan de manera polimrfica es saber responder al mensaje que se les enva. La apariencia del cdigo puede ser muy diferente dependiendo del lenguaje que se utilice, ms all de las obvias diferencias sintcticas. Por ejemplo, en un lenguaje de programacin que cuenta con un sistema de tipos dinmico (en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimrfico sean parte de una jerarqua de clases. En lenguajes basados en clases y con un sistema de tipos de datos fuerte (independientemente de si la verificacin se realiza en tiempo de compilacin o de ejecucin), es posible que el nico modo de poder utilizar objetos de manera polimrfica sea que compartan una raz comn, es decir, una jerarqua de clases, ya que esto proporciona la compatibilidad de tipos de datos necesaria para que sea posible utilizar una misma variable de referencia (que podr apuntar a objetos de diversas subclases de dicha jerarqua) para enviar el mismo mensaje (o un grupo de mensajes) al grupo de objetos que se tratan de manera polimrfica. En Java, es frecuente y profusamente aconsejada la utilizacin de interfaces (que es un mecanismo del lenguaje que se emplea por medio de la palabra clave Interface) para proveer la necesaria concordancia de tipos para hacer posible el polimorfismo, tambin como un contrato que debe cumplir cualquier clase que implemente una cierta interfaz y como una forma de documentacin para los desarrolladores. A veces, en la literatura que refiere especficamente a Java se hace mencin a "herencia y polimorfismo de interfaces", lo que no concuerda con los conceptos de la programacin orientada a objetos porque una clase que implementa una interfaz slo obtiene su tipo de datos y la obligacin de implementar sus mtodos, no obtiene comportamiento ni de atributos. Esto muchas veces resulta paradjico porque en Java frecuentemente se utiliza la mal llamada "herencia de interfaces" para dotar a una clase con un tipo adicional (o varios) para que su uso en combinacin con la agregacin (colaboracin o composicin) permita evitar la necesidad de la herencia mltiple y favorezca una utilizacin ms amplia del polimorfismo. No obstante, el uso de una jerarqua de clases como paso previo, es muy habitual incluso en aquellos lenguajes en los que es posible prescindir de tal

jerarqua, ya que, desde una perspectiva conceptual, se puede decir que al pertenecer los "objetos polimrficos" a subclases de una misma jerarqua, se asegura la equivalencia semntica de los mensajes que se invocarn de modo polimrfico. Por esto, en programacin orientada a objetos a veces se denomina al polimorfismo como "polimorfismo de subclase (o de subtipo)". En resumen, en la programacin orientada a objetos, la esencia del polimorfismo no atae a la clase o prototipo de la que provienen los objetos. Aun as, en los lenguajes basados en clases, es habitual (y en algunos tal vez sea el nico modo) que dichos objetos pertenezcan a subclases pertenecientes a una misma jerarqua. Entonces, el polimorfismo debe verse como una forma flexible de usar un grupo de objetos (como si fueran slo uno). Podra decirse que el polimorfismo en esencia refiere al comportamiento de los objetos, no a su pertenencia a una jerarqua de clases (o a sus tipos de datos). Lo anterior se hace an ms evidente en lenguajes de programacin orientada a objetos basados en prototipos, como Self, en los que las clases no existen. Adems, es importante remarcar que si un cierto grupo de objetos pueden utilizarse de manera polimrfica es porque, en ltima instancia, todos ellos saben responder a un cierto mensaje (o a varios), pero dado que esos mismos objetos generalmente contendrn otros mtodos (que otros objetos en dicho grupo no contienen), difcilmente se pueda decir lisa y llanamente que los objetos son polimrficos; lo correcto es decir que esos objetos se pueden utilizar de modo polimrfico para un cierto conjunto de mensajes.

Clase base. Clase que tiene uno o ms hijos (clase derivadas).

Clase derivada.

Tipo definido por el usuario que tiene la propiedad de heredar los datos y funciones miembro de una o mas clases denominada clases bases.

Clase Abstracta.

La herencia permite que existan clases que nunca sern instanciadas directamente. En el ejemplo anterior, una clase "perro" heredara los atributos y mtodos de la clase "mamfero", as como tambin "gato", "delfn" o cualquier otra subclase; pero, en ejecucin, no habr ningn objeto "mamfero" que no pertenezca a alguna de las subclases. En ese caso, a una clase as se la conocera como Clase Abstracta. La ausencia de instancias especficas es su nica particularidad, para todo lo dems es como cualquier otra clase.

Herencia mltiple.
Herencia mltiple hace referencia a la caracterstica de los lenguajes de programacin orientada a objetos en la que una clase puede heredar comportamientos y caractersticas de ms de una superclase. Esto contrasta con la herencia simple, donde una clase slo puede heredar de una superclase. Lenguajes que soportan herencia mltiple en su mayor parte son: C++, Centura SQL Windows, CLOS, Eiffel, Object REXX, Perl y Python. En la herencia mltiple aparecen ambigedades, como en el ejemplo de encima: si la clase Msico heredaba de Persona y Trabajador, y la clase Trabajador heredaba de Persona. Existiran las siguientes reglas:: -Msico Estudiante: Persona, Msico, Trabajador -Msico: Persona, Trabajador -Trabajador: Persona Si un compilador est mirando la clase Msico Estudiante necesita saber si debe juntar las caractersticas iguales o si deben estar separadas. Por ejemplo, tendra sentido unir las caractersticas "Edad" de Persona para Msico Estudiante. La edad de una persona no cambia si le consideras una Persona, un Trabajador o un Msico. Sin embargo, tendra sentido separar la caracterstica "Nombre" de Persona y Msico si los msicos usan un nombre artstico

diferente de su nombre real. Las opciones de juntar y separar son vlidas segn el contexto, y slo el programador sabe qu opcin es correcta para la clase que est diseando.

Implementacin de

herencia mltiple.

Una clase derivada puede heredar comportamientos de una clase, por tanto, por tanto el cdigo no necesita ser escrito para la derivada. La implementacin de los mtodos es heredada. Puede sobrescribirse en las clases derivadas.

Reutilizacin de la definicin de paquetes/libreras.

Es un conjunto de subprogramas utilizados para desarrollar software. Las bibliotecas contienen cdigo y datos, que proporcionan servicios a programas independientes, es decir, pasan a formar parte de stos. Esto permite que el cdigo y los datos se compartan y puedan modificarse de forma modular. Algunos programas ejecutables pueden ser a la vez programas independientes y bibliotecas, pero la mayora de stas no son ejecutables. Ejecutables y bibliotecas hacen referencias (llamadas enlaces o LINK) entre s a travs de un proceso conocido como enlace (o link), que por lo general es realizado por un software denominado enlazador o linker. La mayora de los sistemas operativos modernos proporcionan bibliotecas que implementan la mayora de los servicios del sistema. De esta manera, estos servicios se convierten en una "materia prima" que cualquier aplicacin moderna espera que el sistema operativo ofrezca. Como tal, la mayor parte del cdigo utilizado por las aplicaciones modernas se ofrece en estas bibliotecas.

Clases genricas (Plantillas).

Plantillas Hemos indicado que en la programacin clsica exista una clara diferenciacin entre los datos y su manipulacin, es decir, entre los datos y el conjunto de algoritmos para manejarlos. Los datos eran tipos muy simples y generalmente los algoritmos estaban

agrupados en funciones orientadas de forma muy especfica a los datos que deban manejar. Posteriormente la POO introdujo nuevas facilidades; la posibilidad de extender el concepto de dato, permitiendo que existiesen tipos ms complejos a los que se poda asociar la operatoria necesaria. Esta nueva habilidad fue perfilada con un par de mejoras adicionales: la posibilidad de ocultacin de determinados detalles internos irrelevantes para el usuario, y la capacidad de herencia simple o mltiple. Observe que las mejoras introducidas por la POO se pueden sintetizar en tres palabras: composicin, ocultacin y herencia. De otro lado, la posibilidad de incluir juntos los datos y su operatoria no era exactamente novedosa. Esta circunstancia ya exista de forma subyacente en todos los lenguajes. Recuerde que el concepto de entero (int en C) ya incluye implcitamente todo un lgebra y reglas de uso para dicho tipo. Observe tambin que la POO mantiene un paradigma de programacin orientado al dato (o estructuras de datos). De hecho los "Objetos" se definen como instancias concretas de las clases y estas representan nuevos tipos-de-datos, de modo que POO es sinnimo de Programacin Orientada a Tipos-de-datos.

Archivos de texto y binarios.

Archivos binarios: Un archivo binario es un archivo informtico que contiene informacin de cualquier tipo codificada en binario para el propsito de almacenamiento y procesamiento en ordenadores. Por ejemplo los archivos informticos que almacenan texto formateado o fotografas, as como los archivos ejecutables que contienen programas. Muchos formatos binarios contienen partes que pueden ser interpretados como texto. Un archivo binario que slo contiene informacin de tipo textual sin informacin sobre el formato del mismo se dice que es un archivo de texto plano. Habitualmente se contraponen los trminos 'archivo binario' y 'archivo de texto' de forma que los primeros no contienen solamente texto. Habitualmente se piensa en los archivos binarios como una secuencia de bytes que es lo que implica que dgitos binarios (bits) se agrupen de ocho en ocho comunmente. Los archivos binarios contienen bytes suelen ser interpretados como alguna cosa que no sean caracteres de texto. Un ejemplo tpico son los programas de ordenador compilados; de hecho, las aplicaciones o programas compilados son conocidos como binarios, especialmente entre los programadores. Pero un archivo binario puede almacenar imgenes, sonido, versiones comprimidas de otros archivos, etc, en pocas palabras, cualquier tipo de informacin.

Archivo de texto: Son aquellos que solo estn compuestos por texto sin formato, solo caracteres, y estos se pueden codificar de distintos modos dependiendo el lenguaje. El manejo de archivos de texto se puede llevar a cabo por medio de dos tipos de flujos: de bytes y de caracteres.

Operaciones bsicas con archivo de texto y binario.

Las operaciones bsicas con archivo son:

-Creacin -Apertura -Lectura -Escritura -Recorrido -Cierre

Manejo de excepciones en archivo.

Es una estructura de control de los lenguajes de programacin diseada para manejar condiciones anormales que pueden ser tratadas por el mismo programa que se desarrolla. Por ejemplo un programa puede admitir un cierto numero de errores en el formato de los datos y puede continuar en proceso para producir el mejor resultado posible en lugar de producir una salida aparatosa llena de mensajes de error. Muchas veces una accin asociada a una excepcin es simplemente producir iun mensaje informativo y terminar, otras veces, es solo indicacin de la necesidad de un cambio en la estrategia de resolucin del problema.

Vous aimerez peut-être aussi