15ELEM~3 - Servidor de Apoyo al Sistema Escolarizado

Anuncio
Polimorfismo
En la POO el polimorfismo se refiere al hecho de que una misma operación puede tener diferente
comportamiento en diferentes objetos. En otras palabras, diferentes objetos reaccionan al mismo mensaje de
manera diferente.
Por ejemplo, supongamos un número de figuras geométricas que responden todas al mensaje Dibujar. Cada
objeto reacciona a este mensaje visualizando su figura en la pantalla. Obviamente, el mecanismo real para
dibujar los objetos difiere de una figura a otra, pero todas las figuras realizan esta tarea en respuesta al mismo
mensaje.
Polimorfismo se define como la calidad o estado de ser capaz de asumir formas diferentes. En la solución de
un problema orientado a objetos, polimorfismo puede aplicarse a cualquier objetos u operaciones. El uso más
común es la operación polimorfismo, que es representada por enviar el mismo mensaje, imprimirlo, a objetos
diferentes y cada uno puede ser responder en su propia manera.
Polimorfismo puede examinarse desde el punto de vista de sus propiedades suplementarias. Una primera
propiedad del polimorfismo es el sobrecarga de identificadores de mensaje y operadores. Polimorfismo es
apoyado por la ligadura de un método particular al identificador del mensaje durante la ejecución de un
sistema de software. Esta ligadura lenta, o ligadura dinámica, es un aspecto importante de la solución de un
problema orientado a objetos.
Una de las características más importantes de la programación orientada a objetos es la capacidad de que
diferentes objetos responden a órdenes similares de modo diferentes.
Identificador de mensaje y operadores sobrecargados. El identificador de mensaje y operador invocan una
operación específica sobre un objeto. Cada uno establece la selección del significado uniforme de la
operación en particular que se desea realizar, es decir, son utilizados para representar el concepto de una
operación e identificar que se ejecutara o realizará.
Herencia
Es la propiedad que permite a los objetos construirse a partir de otros objetos. Este principio consiste en que
cada clase puede dividirse en subclases, es decir, a partir de una clase base se pueden derivar otras clases
(clases derivadas) que comparten características comunes con la clase de la que se derivan, además de tener
sus propias características particulares.
La Herencia permite definir nuevas clase a partir de clases ya existentes. Si una clase sólo recibe
características de una clase base, la herencia es simple.
Si una clase recibe propiedades de más de una clase base, la herencia es múltiple.
Las instancias heredan (usualmente) todas, y únicamente, las características de las clases a las que pertenecen,
pero, también, es posible, en un sistema orientado a objetos, que se permita que las clases hereden
características de superclases más generales. En ese caso, las características heredadas pueden ser ignoradas
(overriden) y se pueden agregar características adicionales para tratar excepciones.
La herencia es el acto de adquirir una posesión, condición, o característica de generaciones pasadas. En la
solución de un problema de computadora se habla de componentes de software que heredan propiedades que
describen otros componentes de software. En la solución de un problema orientado a objetos un tipo de objeto
hereda propiedades que caracterizan otro tipo de objeto. Desde las propiedades de objetos son dadas por la
descripción de la clase, esto implica una jerarquía de clases, donde una clase es un subclase de otra, la clase
padre. Los objetos que son los instancias de las subclases tienen propiedades dadas dentro de la descripción
de la subclase así como también propiedades heredadas dadas dentro de la clase padre y todas las clases
antecesoras.
Así la herencia provee la potencialidad para construir soluciones nuevas a problemas agregando el incremento
de la capacidad a soluciones existentes del problema mediante subclases.
Las instancias de una subclase representan una especialización de instancias descritas por una clase padre. La
instancia de la subclase tiene todos los atributos dados por la clase padre, más los atributos adicionales o
agregados de la subclase. La instancia de la subclase responde al mismo conjunto de mensajes dados en la
clase padre, los mensajes adicionales se dan en la descripción de la subclase.
La respuesta de la instancia de la subclase a los mensajes en la clase padre puede ser diferente de la respuesta
de una clase padre de una instancia al mismo mensaje. No es valido considerar subclases de objetos que
tengan menos atributos que los objetos descritos por la clase padre.
Concepturalización de la herencia
Una clase utilizada para derivar nuevas clases se conoce como clase base (padre, ascendiente), y una clase
creada de otra clase se llama clase derivada (hija, descendiente, subclase).
En un lenguaje Orientado a Objetos la herencia se manifiesta con la creación de un tipo definido por el
usuario (Clase), que puede heredar las características de otra clase ya existente o derivar las suyas a otra
nueva clase. Cuando se hereda, las clases derivadas reciben las características (estructuras de datos y
funciones) de la clase original , a las que se pueden añadir nuevas características o modificar las
características heredadas.
La herencia se aplica para extender y reutilizar el código existente:


Los objetos se pueden construir de modo incremental a partir de otros objetos y pueden compartir
código y estructuras de datos
Los algoritmos generales se pueden escribir de modo que se pueden reutilizar para nuevos tipos de
objetos, incluso después que los algoritmos originales se han compilado.
Herencia simple :
Se realiza tomando una clase existente y derivando nuevas clases de ella (Figura 2.5 ). La clase derivada
hereda las estructuras de datos y funciones de la clase original, Además, se pueden añadir nuevos miembros a
las clases derivadas y los miembros heredados pueden ser modificados. Una clase utilizada para derivar
nuevas clases se denomina clase base (padre, superclase, ascendiente). una clase creada de otra clase se
denomina clase derivada o subclase. A su vez una clase derivada puede ser utilizada como una clase base para
derivar más clases. Por consiguiente, se pueden construir jerarquías de clases, en las que cada clase sirve
como padre o raíz de una nueva clase
Herencia Múltiple :
Es aquella en la cual una clase derivada tiene más de una clase base. Aunque el concepto de herencia múltiple
es muy útil, el diseño de clases suele ser más complejo, y en ocasiones es preferible realizar la aplicación con
herencia múltiple mediante emulación de herencia simple.
Encapsulamiento
Las estructuras de datos y los detalles de la realización de un objeto se hallan ocultos de otros objetos del
sistema. La única forma de acceder al estado de un objeto es enviar un mensaje que haga que uno de los
métodos se ejecute. Estrictamente hablando, los atributos son escrituras taquigráficas para los métodos que
obtienen y colocan valores. Esto hace que los tipos de objetos sean equivalentes a los tipos de datos abstractos
en programación, en términos generales.
El resultado de encapsulación es una entidad con fronteras distintas, una interface bien definida, y una
representación interna protegida. Para el software de computadora, una encapsulación es un componente de
software. La integridad del componente de software como una encapsulación es dependiente de aspectos del
lenguaje de computadora en el que se implementa el componente.
Encapsulación es un concepto importante para el desarrollo de soluciones del problema que son menos
susceptibles a los errores. Un problema es particionado en un número de componentes. Cada componente es
encapsulado para interactuar recíprocamente con los otros componentes únicos de manera cuidadosamente
prescribidas, como definidas por su interface.
En un problema orientado a objetos que resuelve la unidad de encapsulación es el objeto. Los objetos son
abstracciones encapsuladas.
Combinación de principios
La encapsulación es la combinación de los principios de ingeniería de software de modularidad, localización,
y ocultamiento de información. Cada una de estas es muy importante para el desarrollo de un sistema
eficiente, formal y sostenible.

Modularidad - El propósito determinado es particionar requerimientos, el diseño, y software en
colecciones o grupos de complejidad y tamaño apropiado, uniforme con las metas de ingeniería de
software. Modularidad se usa para construir componentes más grandes y operaciones más pequeñas
en el diseño orientado a objetos que cuando se usan métodos funcionales debido a que:
- Los módulos - Son creados para abstracciones del objeto más que abstracciones
funcionales
- Las operaciones - Se deben asignarse y encapsularse dentro del objeto y clase.

Localización - El propósito determinado es particionar requerimientos, el diseño y software así que
los recursos lógicamente ligados son físicamente agrupados para aumentar la cohesión y para
decrecer el acoplamiento. Es más importante localizar una abstracción completa que crear un módulo
pequeño.

Ocultamiento de Información - Es la consideración del ocultamiento de información (p. ej. diseño, la
decisión, los detalles de implementación) a fin de promover la abstracción, soporte al desarrollo
ascendente/descendente (top-down) , protege contra la corrupción accidental, y promociona el logro
de metas de ingeniería de software. Los recursos de un componente deberían ocultarse a menos que
específicamente se necesiten por otro componente. Los datos globales comunes no son usados, pero
más bien los atributos se ocultan dentro de objetos y las clases. Cada componente debería dividirse
en 2 partes desarrolladas separadamente (y compilables): la especificación (o interface) y el cuerpo
(o implementación)
Fuente: http://www.itq.edu.mx/vidatec/maestros/sis/mlopez/Tutorial/poo2.htm
Descargar