Instituto Tecnológico de Tlalnepantla Mondragón Villeda Carlos Echeverría Chan Ivonne Programación Orientada a Objetos Unidad V y VI.

T-22

.1... 5. Manejo de excepciones en archivos Herencia.7. Clases abstractas. 6.2.....5...... Reutilización de la definición de paquetes / librerías. Definición de una clase derivada.. ....... Definición de archivos de texto y archivos binarios.. 6. 5. Definición de herencia múltiple.3... 6..8... 5..... Definición de una clase base. Clases genéricas (Plantillas).6...2... Implementación de herencia múltiple...UNIDAD V.. 5.1. Operaciones básicas en archivos texto y binario..... 5...3.. UNIDAD VI. 5. 5.. Concepto de herencia y polimorfismo.4. 5.

A través de ella los diseñadores pueden crear nuevas clases partiendo de una clase o de una jerarquía de clases preexistente (ya comprobadas y verificadas) evitando con ello el rediseño. Es la relación entre una clase general y otra clase más especifica. La herencia facilita la creación de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (métodos) y eventualmente los atributos (variables) de su superclase. son automáticamente heredados por la subclase párrafo. La herencia es uno de los mecanismos de los lenguajes de programación orientada a objetos basados en clases. clase ancestro (el vocabulario que se utiliza suele depender en gran medida del lenguaje de programación). todos los métodos y variables asociadas con la clase texto. . superclase. después de la agregación o composición. la modificación y verificación de la parte ya implementada.En orientación a objetos la herencia es. Por ejemplo: Si declaramos una clase párrafo derivada de una clase texto. La clase de la que se hereda se suele denominar clase base. clase padre. por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad. el mecanismo más utilizado para alcanzar algunos de los objetivos más preciados en el desarrollo de software como lo son la reutilización y la extensibilidad.

Polimorfismo. también como un contrato que debe cumplir cualquier clase que implemente una cierta interfaz y como una forma de documentación para los desarrolladores. es muy habitual incluso en aquellos lenguajes en los que es posible prescindir de tal . es decir. en un lenguaje de programación que cuenta con un sistema de tipos dinámico (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 polimórfico sean parte de una jerarquía de clases. No obstante. una jerarquía de clases. lo que no concuerda con los conceptos de la programación orientada a objetos porque una clase que implementa una interfaz sólo obtiene su tipo de datos y la obligación de implementar sus métodos. 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 jerarquía) para enviar el mismo mensaje (o un grupo de mensajes) al grupo de objetos que se tratan de manera polimórfica. más allá de las obvias diferencias sintácticas. En programación orientada a objetos el polimorfismo se refiere a la posibilidad de enviar un mensaje a un grupo de objetos cuya naturaleza puede ser heterogénea. no obtiene comportamiento ni de atributos. La apariencia del código puede ser muy diferente dependiendo del lenguaje que se utilice. el uso de una jerarquía de clases como paso previo. en la literatura que refiere específicamente a Java se hace mención a "herencia y polimorfismo de interfaces". es frecuente y profusamente aconsejada la utilización 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. es posible que el único modo de poder utilizar objetos de manera polimórfica sea que compartan una raíz común. A veces. Esto muchas veces resulta paradójico 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 combinación con la agregación (colaboración o composición) permita evitar la necesidad de la herencia múltiple y favorezca una utilización más amplia del polimorfismo. En lenguajes basados en clases y con un sistema de tipos de datos fuerte (independientemente de si la verificación se realiza en tiempo de compilación o de ejecución). En Java. Por ejemplo. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.

difícilmente se pueda decir lisa y llanamente que los objetos son polimórficos. en programación orientada a objetos a veces se denomina al polimorfismo como "polimorfismo de subclase (o de subtipo)". Tipo definido por el usuario que tiene la propiedad de heredar los datos y funciones miembro de una o mas clases denominada clases bases. el polimorfismo debe verse como una forma flexible de usar un grupo de objetos (como si fueran sólo uno). como Self. ya que. se asegura la equivalencia semántica de los mensajes que se invocarán de modo polimórfico. Podría decirse que el polimorfismo en esencia refiere al comportamiento de los objetos. se puede decir que al pertenecer los "objetos polimórficos" a subclases de una misma jerarquía. . En resumen. Por esto. Lo anterior se hace aún más evidente en lenguajes de programación orientada a objetos basados en prototipos. Clase base. Clase que tiene uno o más hijos (clase derivadas). en los que las clases no existen. Además. es importante remarcar que si un cierto grupo de objetos pueden utilizarse de manera polimórfica es porque.jerarquía. desde una perspectiva conceptual. todos ellos saben responder a un cierto mensaje (o a varios). en última instancia. en la programación orientada a objetos. es habitual (y en algunos tal vez sea el único modo) que dichos objetos pertenezcan a subclases pertenecientes a una misma jerarquía. pero dado que esos mismos objetos generalmente contendrán otros métodos (que otros objetos en dicho grupo no contienen). en los lenguajes basados en clases. lo correcto es decir que esos objetos se pueden utilizar de modo polimórfico para un cierto conjunto de mensajes. Aun así. no a su pertenencia a una jerarquía de clases (o a sus tipos de datos). la esencia del polimorfismo no atañe a la clase o prototipo de la que provienen los objetos. Clase derivada. Entonces.

una clase "perro" heredaría los atributos y métodos de la clase "mamífero". "delfín" o cualquier otra subclase. Perl y Python. En el ejemplo anterior. Centura SQL Windows. Herencia múltiple. como en el ejemplo de encima: si la clase Músico heredaba de Persona y Trabajador. pero. Sin embargo. Lenguajes que soportan herencia múltiple en su mayor parte son: C++. En ese caso. en ejecución. La ausencia de instancias específicas es su única particularidad. tendría sentido separar la característica "Nombre" de Persona y Músico si los músicos usan un nombre artístico . Trabajador -Trabajador: Persona Si un compilador está mirando la clase Músico Estudiante necesita saber si debe juntar las características iguales o si deben estar separadas. La herencia permite que existan clases que nunca serán instanciadas directamente. Herencia múltiple hace referencia a la característica de los lenguajes de programación orientada a objetos en la que una clase puede heredar comportamientos y características de más de una superclase. En la herencia múltiple aparecen ambigüedades. Object REXX.Clase Abstracta. un Trabajador o un Músico. Esto contrasta con la herencia simple. para todo lo demás es como cualquier otra clase. tendría sentido unir las características "Edad" de Persona para Músico Estudiante. CLOS. Por ejemplo. Existirían las siguientes reglas:: -Músico Estudiante: Persona. a una clase así se la conocería como Clase Abstracta. La edad de una persona no cambia si le consideras una Persona. Trabajador -Músico: Persona. Músico. no habrá ningún objeto "mamífero" que no pertenezca a alguna de las subclases. donde una clase sólo puede heredar de una superclase. y la clase Trabajador heredaba de Persona. así como también "gato". Eiffel.

Esto permite que el código y los datos se compartan y puedan modificarse de forma modular. Los datos eran tipos muy simples y generalmente los algoritmos estaban . Una clase derivada puede heredar comportamientos de una clase. que por lo general es realizado por un software denominado enlazador o linker. Implementación de herencia múltiple. que proporcionan servicios a programas independientes. por tanto el código no necesita ser escrito para la derivada. Plantillas Hemos indicado que en la programación clásica existía una clara diferenciación entre los datos y su manipulación. Puede sobrescribirse en las clases derivadas. Las opciones de juntar y separar son válidas según el contexto. Algunos programas ejecutables pueden ser a la vez programas independientes y bibliotecas. es decir. La implementación de los métodos es heredada. Es un conjunto de subprogramas utilizados para desarrollar software. De esta manera. y sólo el programador sabe qué opción es correcta para la clase que está diseñando. pero la mayoría de éstas no son ejecutables. Las bibliotecas contienen código y datos. Ejecutables y bibliotecas hacen referencias (llamadas enlaces o LINK) entre sí a través de un proceso conocido como enlace (o link). La mayoría de los sistemas operativos modernos proporcionan bibliotecas que implementan la mayoría de los servicios del sistema. Reutilización de la definición de paquetes/librerías. Como tal. pasan a formar parte de éstos.diferente de su nombre real. entre los datos y el conjunto de algoritmos para manejarlos. estos servicios se convierten en una "materia prima" que cualquier aplicación moderna espera que el sistema operativo ofrezca. Clases genéricas (Plantillas). por tanto. la mayor parte del código utilizado por las aplicaciones modernas se ofrece en estas bibliotecas. es decir.

Habitualmente se piensa en los archivos binarios como una secuencia de bytes que es lo que implica que dígitos binarios (bits) se agrupen de ocho en ocho comunmente. Posteriormente la POO introdujo nuevas facilidades. en pocas palabras.agrupados en funciones orientadas de forma muy específica a los datos que debían manejar. cualquier tipo de información. Habitualmente se contraponen los términos 'archivo binario' y 'archivo de texto' de forma que los primeros no contienen solamente texto. versiones comprimidas de otros archivos. ocultación y herencia. Un archivo binario que sólo contiene información de tipo textual sin información sobre el formato del mismo se dice que es un archivo de texto plano. . de hecho. y la capacidad de herencia simple o múltiple. la posibilidad de extender el concepto de dato. Los archivos binarios contienen bytes suelen ser interpretados como alguna cosa que no sean caracteres de texto. Archivos binarios: Un archivo binario es un archivo informático que contiene información de cualquier tipo codificada en binario para el propósito de almacenamiento y procesamiento en ordenadores. Archivos de texto y binarios. Observe que las mejoras introducidas por la POO se pueden sintetizar en tres palabras: composición. Esta circunstancia ya existía de forma subyacente en todos los lenguajes. permitiendo que existiesen tipos más complejos a los que se podía asociar la operatoria necesaria. Por ejemplo los archivos informáticos que almacenan texto formateado o fotografías. así como los archivos ejecutables que contienen programas. sonido. Pero un archivo binario puede almacenar imágenes. De hecho los "Objetos" se definen como instancias concretas de las clases y estas representan nuevos tipos-de-datos. Esta nueva habilidad fue perfilada con un par de mejoras adicionales: la posibilidad de ocultación de determinados detalles internos irrelevantes para el usuario. de modo que POO es sinónimo de Programación Orientada a Tipos-de-datos. De otro lado. especialmente entre los programadores. Un ejemplo típico son los programas de ordenador compilados. etc. Observe también que la POO mantiene un paradigma de programación orientado al dato (o estructuras de datos). las aplicaciones o programas compilados son conocidos como binarios. Recuerde que el concepto de entero (int en C) ya incluye implícitamente todo un álgebra y reglas de uso para dicho tipo. la posibilidad de incluir juntos los datos y su operatoria no era exactamente novedosa. Muchos formatos binarios contienen partes que pueden ser interpretados como texto.

solo caracteres. Muchas veces una acción asociada a una excepción es simplemente producir iun mensaje informativo y terminar. Es una estructura de control de los lenguajes de programación diseñada para manejar condiciones anormales que pueden ser tratadas por el mismo programa que se desarrolla. Las operaciones básicas con archivo son: -Creación -Apertura -Lectura -Escritura -Recorrido -Cierre Manejo de excepciones en archivo. . Operaciones básicas con archivo de texto y binario.Archivo de texto: Son aquellos que solo están compuestos por texto sin formato. El manejo de archivos de texto se puede llevar a cabo por medio de dos tipos de flujos: de bytes y de caracteres. otras veces. 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. y estos se pueden codificar de distintos modos dependiendo el lenguaje. es solo indicación de la necesidad de un cambio en la estrategia de resolución del problema.

Sign up to vote on this title
UsefulNot useful