Вы находитесь на странице: 1из 13

Universidad Nacional de Ingeniera

Recinto Universitario Pedro Arauz Palacios


Facultad Tecnologa de la Industria

Programacin II

Herencia y polimorfismo

Docente:
Ing. Cristbal Jaime Garay
Integrantes:
Greivin Steven Leiva
Misael Alejandro Lpez Snchez
Chester Gonzlez Amoretty
Kevin moiss Murillo Ruiz
Marvin Eduardo Muoz Gastn
Iriam Ali Lpez Zniga

Fecha de entrega:
Viernes 12 de septiembre del 2014


Managua, Nicaragua


Introduccin

En este trabajo de investigacin presentamos la herencia y polimorfismo que son
conceptos fundamentales en la programacin orientada a objetos, la POO establece una
manera particular de agrupar los componentes y organizar su estructura para posteriormente
desarrollar aplicaciones. De esta forma estos conceptos sencillos debemos tenerlos muy en
cuenta para el cabal entendimiento de la POO.

Objetivos

Explicar los conceptos de herencia y polimorfismo.
Relacionar la herencia y el polimorfismo con conceptos obtenidos en cursos
anteriores.
Distinguir y examinar ambos conceptos para que los estudiantes comprendan su
importancia.



Desarrollo
Introduccin a la programacin orientada a objetos

"En el transcurso de los ltimos 35 aos, los diseadores de hardware para ordenadores han
pasado del diseo de equipos del tamao de un hangar a ordenadores porttiles basados en
microprocesadores minsculos.

En el mismo perodo, los desarrolladores de software han pasado de escribir programas en
ensamblador y COBOL a escribirlos en C y C++. Podramos denominar a esto progreso
(algunas personas no estaran de acuerdo), pero claramente el mundo del software no
progresa tan rpidamente como el mundo del hardware. Entonces, qu tienen los
diseadores de hardware que los desarrolladores de software no poseen?
La respuesta est en los componentes utilizados. Si los ingenieros de hardware electrnico
tuvieran que comenzar desde un montn de arena cada vez que disean un nuevo
dispositivo de hardware, y el primer paso fuese la extraccin de silicio para fabricar placas
de circuitos integrados, el progreso tampoco sera tan veloz. Sin embargo, un diseador de
hardware siempre construye un sistema que se basa en componentes ya preparados, cada
uno con una funcin especfica y que brinda un conjunto de servicios a travs de interfaces
definidas. La tarea de los diseadores de hardware es considerablemente ms fcil gracias
al trabajo de sus predecesores.
La reutilizacin de los componentes es tambin un mtodo para crear mejores software.
An hoy, los desarrolladores de software comienzan desde un montn de arena y siguen los
mismos pasos que dieron cientos de desarrolladores en el pasado. A menudo el resultado es
sorprendente, pero podra mejorarse. La creacin de nuevas aplicaciones a partir de
componentes ya existentes y que ya han sido probados, tiende siempre a producir cdigos
ms fiables. Adems, se ha demostrado que es ms rpida y econmica, factores no menos
importantes."

Mtodos de objeto
El enfoque modular de objeto implica la creacin de una representacin informtica de los
elementos del mundo real en los que estamos interesados, sin preocuparnos por la
implementacin; es decir, independientemente de un lenguaje de programacin. Por lo
tanto, supone la determinacin de objetos y el aislamiento de sus datos y de las funciones
que usan. Entre 1970 y 1990, varios analistas desarrollaron enfoques orientados a objetos y
hacia 1994 haba ms de 50 mtodos de objetos. Sin embargo, solamente 3 mtodos
realmente alcanzaron popularidad:
El mtodo OMT de Rumbaugh
El mtodo BOOCH'93 de Booch
El mtodo OOSE de Jacobson
En 1994, Rumbaugh y Booch (a quienes luego se uni Jacobson, en 1995) sumaron sus
esfuerzos para desarrollar el lenguaje de definicin UML (Unified Modeling Language),
que define un lenguaje estndar mediante la incorporacin de la ventajas de varios mtodos
precedentes (es decir, los de los otros analistas). Esto permite la programacin completa de
una aplicacin con un lenguaje que utiliza un enfoque modular para todos los componentes
del programa que se est desarrollando.
El concepto de objeto
La programacin orientada a objetos consiste en ordenar datos en conjuntos modulares
de elementos de informacin del mundo real (denominado undominio). Estos elementos de
datos se llaman objetos. Estos datos se agrupan de acuerdo a las caractersticas principales
del mundo real de estos elementos (tamao, color, etc.).
El enfoque de objetos es una idea que se ha probado con creces. Simula fue el primer
lenguaje de programacin en implementar el concepto de clases en 1967. En
1976, Smalltalk implement los conceptos de encapsulacin, agrupacin y herencia (los
conceptos principales de la programacin orientada a objetos). Por otra parte, se han
implementado varios lenguajes de programacin orientada a objetos a escala global
(Eiffel, Objective C, Loops, etc.).
La dificultad que presenta este enfoque es la creacin de una representacin abstracta, en
forma de objetos, de entidades que realmente existen (perro, auto, lmpara elctrica...) o
que existen virtualmente (seguridad social, clima...).
Un objeto se caracteriza por varios conceptos:
Atributos: estos son los datos que caracterizan al objeto. Son variables que almacenan
datos relacionados al estado de un objeto.
Mtodos (usualmente llamados funciones de miembro): Los mtodos de un objeto
caracterizan su comportamiento, es decir, son todas las acciones
(denominadas operaciones) que el objeto puede realizar por s mismo. Estas operaciones
hacen posible que el objeto responda a las solicitudes externas (o que acte sobre otros
objetos). Adems, las operaciones estn estrechamente ligadas a los atributos, ya que sus
acciones pueden depender de, o modificar, los valores de un atributo.
Identidad: El objeto tiene una identidad, que lo distingue de otros objetos, sin
considerar su estado. Por lo general, esta identidad se crea mediante un identificador que
deriva naturalmente de un problema (por ejemplo: un producto puede estar representado
por un cdigo, un automvil, por un nmero de modelo, etc.).

El concepto de clases

Una clase es la estructura de un objeto, es decir, la definicin de todos los elementos de que
est hecho un objeto. Un objeto es, por lo tanto, el "resultado" de una clase. En realidad, un
objeto es una instancia de una clase, por lo que se pueden intercambiar los
trminos objeto o instancia (o incluso evento).
Una clase se compone de dos partes:
Atributos (denominados, por lo general, datos miembros): esto es, los datos que se
refieren al estado del objeto
Mtodos (denominados, por lo general, funciones miembros): son funciones que pueden
aplicarse a objetos
Si tenemos una clase llamada auto, los objetos Peugeot y Renault sern instancias de esa
clase. Tambin puede haber otros objetos Peugeot 406, diferenciados por su nmero de
modelo. Asimismo, dos instancias de una clase pueden tener los mismos atributos, pero
considerarse objetos distintos independientes. En un contexto real: dos camisas pueden ser
idnticas, pero no obstante, tambin ser diferentes de alguna manera. Sin embargo, si las
mezclamos es imposible distinguir una de la otra.
El concepto de encapsulacin
La encapsulacin es un mecanismo que consiste en organizar datos y mtodos de una
estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso
a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulacin
garantiza la integridad de los datos que contiene un objeto.
Ocultacin de datos
El usuario de una clase en particular no necesita saber cmo estn estructurados los datos
dentro de ese objeto, es decir, un usuario no necesita conocer la implementacin Al evitar
que el usuario modifique los atributos directamente y forzndolo a utilizar funciones
definidas para modificarlos (llamadas interfaces), se garantiza la integridad de los datos
(por ejemplo, uno puede asegurarse de que el tipo de datos suministrados cumple con
nuestras expectativas bien que los se encuentran dentro del periodo de tiempo esperado).
La encapsulacin define los niveles de acceso para elementos de esa clase. Estos niveles de
acceso definen los derechos de acceso para los datos, permitindonos el acceso a datos a
travs de un mtodo de esa clase en particular, desde una clase heredada o incluso desde
cualquier otra clase. Existen tres niveles de acceso:
pblico: funciones de toda clase pueden acceder a los datos o mtodos de una clase que
se define con el nivel de acceso pblico. Este es el nivel de proteccin de datos ms bajo
protegido: el acceso a los datos est restringido a las funciones de clases heredadas, es
decir, las funciones miembro de esa clase y todas las subclases
privado: el acceso a los datos est restringido a los mtodos de esa clase en particular.
Este es nivel ms alto de proteccin de datos
El concepto de herencia
La herencia es especfica de la programacin orientada a objetos, donde una clase nueva se
crea a partir de una clase existente. La herencia (a la que habitualmente se
denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene
las atributos y mtodos de la clase primaria. La principal ventaja de la herencia es la
capacidad para definir atributos y mtodos nuevos para la subclase, que luego se aplican a
los atributos y mtodos heredados.

Esta particularidad permite crear una estructura jerrquica de clases cada vez ms
especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea
especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases
que ofrecen una base que puede especializarse a voluntad (la compaa que vende estas
clases tiende a proteger las datos miembro usando la encapsulacin).
Jerarqua de clase
La relacin primaria-secundaria entre clases puede representarse desde un punto de vista
jerrquico, denominado vista de clases en rbol. La vista en rbol comienza con una clase
general llamada superclase (a la que algunas veces se hace referencia como clase
primaria, clase padre, clase principal, o clase madre; existen muchas metforas
genealgicas). Las clases derivadas (clase secundaria o subclase) se vuelven cada vez ms
especializadas a medida que van descendiendo el rbol. Por lo tanto, se suele hacer
referencia a la relacin que une a una clase secundaria con una clase primaria mediante la
frase "es una" x o y.

Herencia mltiple
Algunos lenguajes orientados a objetos, como C++ permiten herencias mltiples, lo que
significa que una clase puede heredar los atributos de otras dos superclases. Este mtodo
puede utilizarse para agrupar atributos y mtodos desde varias clases dentro de una sola.

Definicin de polimorfismo

La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes.
Este es uno de los conceptos esenciales de una programacin orientada a objetos. As como
la herencia est relacionada con las clases y su jerarqua, el polimorfismo se relaciona con
los mtodos.
En general, hay tres tipos de polimorfismo:
Polimorfismo de sobrecarga
Polimorfismo paramtrico (tambin llamado polimorfismo de plantillas)
Polimorfismo de inclusin (tambin llamado redefinicin o subtipado)

Trataremos de describir ahora con ms precisin estos tipos de polimorfismo, pero le
sugerimos prestar atencin, ya que muchas personas suelen confundirse al tratar de
comprender las diferencias existentes entre estos tres tipos.
Polimorfismo de sobrecarga

El polimorfismo de sobrecarga ocurre cuando las funciones del mismo nombre existen, con
funcionalidad similar, en clases que son completamente independientes una de otra (stas
no tienen que ser clases secundarias de la clase objeto). Por ejemplo, la clase complex, la
clase image y la clase link pueden todas tener la funcin "display". Esto significa que no
necesitamos preocuparnos sobre el tipo de objeto con el que estamos trabajando si todo lo
que deseamos es verlo en la pantalla.
Por lo tanto, el polimorfismo de sobrecarga nos permite definir operadores cuyos
comportamientos varan de acuerdo a los parmetros que se les aplican. As es posible, por
ejemplo, agregar el operador + y hacer que se comporte de manera distinta cuando est
haciendo referencia a una operacin entre dos nmeros enteros (suma) o bien cuando se
encuentra entre dos cadenas de caracteres (concatenacin).
Polimorfismo paramtrico

El polimorfismo paramtrico es la capacidad para definir varias funciones utilizando el
mismo nombre, pero usando parmetros diferentes (nombre y/o tipo). El
polimorfismo paramtrico selecciona automticamente el mtodo correcto a aplicar en
funcin del tipo de datos pasados en el parmetro.
Por lo tanto, podemos por ejemplo, definir varios mtodos homnimos
deaddition() efectuando una suma de valores.
El mtodo int addition(int,int) devolvera la suma de dos nmeros enteros.
float addition(float, float) devolvera la suma de dos flotantes.
char addition(char, char) dara por resultado la suma de dos caracteres definidos por el
autor.
etc.
Una signature es el nombre y tipo (esttico) que se da a los argumentos de una funcin. Por
esto, una firma de mtodo determina qu elemento se va a llamar.
Polimorfismo de subtipado

La habilidad para redefinir un mtodo en clases que se hereda de una clase base se
llama especializacin. Por lo tanto, se puede llamar un mtodo de objeto sin tener que
conocer su tipo intrnseco: esto es polimorfismo de subtipado. Permite no tomar en cuenta
detalles de las clases especializadas de una familia de objetos, enmascarndolos con una
interfaz comn (siendo esta la clase bsica).
Imagine un juego de ajedrez con los objetos rey, reina, alfil, caballo, torre y pen, cada
uno heredando el objeto pieza.
El mtodo movimiento podra, usando polimorfismo de subtipado, hacer el movimiento
correspondiente de acuerdo a la clase objeto que se llama. Esto permite al programa realizar
el movimiento.de_pieza sin tener que verse conectado con cada tipo de pieza en particular.

Conclusiones

Segn Luis Joyanes (1998), la herencia Es la capacidad para crear nuevas clases de
objetos que se construyen basados en clases existentes. La herencia es una propiedad que
permite a un objeto poseer propiedades de otras clases.Adems, a estos nuevos objetos
creados es posible asignarles nuevos atributos y mtodos. Polimorfismo proviene de dos
races griegas: poli, mltiples y morfismo, formas. Esta caracterstica es la capacidad que
objetos similares tienen para responder de diferentes formas al mismo mensaje, y permite al
programador implementar mltiples formas de un mismo mtodo, dependiendo cada una de
ellas de la clase sobre la que se realice la implementacin. Esto permite acceder a varios
mtodos distintos utilizando el mismo medio de acceso (el mismo nombre). El
polimorfismo est muy relacionado con la herencia.
Bibliografa

Understanding Active X and OLE - David Chappell
http://es.kioskea.net/contents/410-poo-encapsulacion-de-datos.html
Introduccin a la programacin orientada a objetos - VELARDE DE BARRAZA,
OLINDA y cols. PEARSON EDUCACIN, Mxico, 2006

Вам также может понравиться