Sei sulla pagina 1di 20

DEDICATORIA

Este presente trabajo est dedicado a nuestro querido profesor ING quien nos ha enseado
a programar de la manera ms simple y didctica el programa BORLAND C++.
Como todo curso al empiezo nos cost un poco asimilarlo luego poco a poco fuimos
asimilando y adaptndonos al curso.

PRESENTACION
Este trabajo trae consigo algo importante sobre la PROGRAMACION ORIENTADA A OBJETOS
(POO) veremos en qu consiste y los pilares (caractersticas) de POO.
Tambin como lo hemos venido practicando y trabajando semana a semana sobre el
programa BORLAND C++ nos interesara mucho conocer quien fue el que lo creo y con qu
propsito si bien es cierto este programa es un mundo a descubrir.
Como una vez nos dijo nuestro profesor este programa es importante para poder disear un
robot, por eso sera importante saber y empearnos en cmo avanza la tecnologa con este
programa; si bien, creo yo que a nosotros nos falta mucho en aprender ms sobre este
programa.
Para as poder dominarlo y que se nos haga ms prctico y ya no trabajoso como la mayora
de nuestro saln pasa por esa situacin hasta el momento, pero sabemos que lo vamos a
poder dominarlo; porque a cualquiera de nosotros nos emocionara estar diseando un robot
con ese entusiasmo creo que la mayora de todos nosotros lo vamos a dominar.

PROLOGO
En este trabajo intentaremos dar una visin sobre los temas que ya hemos mencionado
anteriormente.
Ya que la POO no es un lenguaje de programacin, puede aplicarse a cualquier lenguaje, y de
hecho hoy en da hay muchos tipos de lenguajes de programacin, cada uno de ellos con su
propia gramtica, su terminologa especial y una sintaxis particular. Por ejemplo, existen
algunos creados especialmente para aplicaciones cientficas o matemticas generales

(BASIC, FORTRAN, PASCAL, etc. ); otros, en cambio, se orientan al campo empresarial y al


manejo de textos y ficheros, es decir, son en realidad fundamentalmente gestores de
informacin (COBOL, PL/1, etc. ), o muy relacionados con el lenguaje mquina del ordenador
(como el C y el ASSEMBLER).
Debemos tener en cuenta que los ordenadores no hablan nuestro idioma, son mquinas y
como tales, necesitan un lenguaje especfico pensado por el hombre para ellas. Adems,
necesitan constantemente interpretar todas las instrucciones que reciben. Dada la dificultad
de comunicacin insalvable entre el computador y el programador, pronto aparecieron
lenguajes de programacin que hacen posible la comunicacin con el microprocesador,
utilizando trminos y smbolos relacionados con el tipo de problema que se debe resolver,
mediante el empleo de herramientas que brinda la informtica.
Estos lenguajes permiten, por un lado, escribir las operaciones que son necesarias realizar
para resolver el problema de un modo parecido a como se escribira convencionalmente (es
decir, redactar adecuadamente el algoritmo de resolucin del problema) y, por el otro, se
encarga de traducir el algoritmo al lenguaje mquina (proceso conocido como compilacin)
con lo que se le confiere al programa la capacidad de correr (ser ejecutado) en el ordenador.
El ordenador es en realidad tan slo una mquina virtual, capaz de resolver todos los
problemas que los usuarios seamos capaces de expresar mediante un algoritmo (programa).
Los ordenadores se programaban en lenguaje mquina pero las dificultades que esto
conllevaba, junto con la enorme facilidad de cometer errores, cuya localizacin era larga y
compleja, hicieron concebir, en la dcada de los 40, la posibilidad de usar lenguajes
simblicos. Los primeros en aparecer fueron los ensambladores, fundamentalmente consista
en dar un nombre (mnemnico) a cada tipo de instruccin y cada direccin (etiqueta). Al
principio s hacia el programa sobre papel y, despus se traduca a mano con la ayuda de
unas tablas, y se introducan en la mquina en forma numrica, pero pronto aparecieron
programas que se ensamblaban automticamente.

INTRODUCCIN A LA PROGRAMACION ORIENTACIN A OBJETOS


En sus comienzos la programacin de computadores era una tarea relegada prcticamente a
los genios de la computacin de aquel entonces; hacer un programa para computador
demandaba miles de horas de tiempo invertido y desde luego miles de miles o millones de
lneas de cdigo para llevar a cabo una tarea determinada. Bien la programacin de ese
entonces tenia un estilo particular llamado hoy da programacin en spaghetti, se llama as
porque todo el cdigo generalmente sigue una lnea secuencial desde la primera instruccin

hasta la ltima, ocasionalmente hay saltos entre instrucciones, pero generalmente se


regresa al punto donde se origin el salto los lenguajes ms populares en ese entonces
eran desde luego el ASM, el FORTRAN y el COBOL.
Luego los programas se fueron haciendo ms grandes y complejos, as que las cosas se
comenzaron a hacer difciles de manejar (es decir an ms difciles de manejar), all naci
una nueva forma de programacin una nueva metodologa, la programacin estructurada.
1.1.-Programacin estructura:
La solucin a tantos problemas fue bsicamente sencilla, agrupar el cdigo por funcionalidad
de tal forma que cada funcionalidad pueda ser invocada tantas veces como se necesite, esto
permiti reducir las lneas de cdigo necesarias para crear un programa ya que si existe una
rutina compleja que poda ser en algn grado repetitiva, esta se coloca en una funcin que
sea aplicable en uno o ms casos diferentes.
Cualquier lenguaje que permita la definicin de tipos de datos, de operaciones nuevas sobre
esos tipos de datos, y de instanciar el tipo de dato podra ser considerado orientado a
objetos.
1. C + +.
2. Objective C.
3. Java.
4. Smalltalk.
5. Eiffel.
6. Lexico (en castellano).
7. Ruby.
8. Python.
9. Object Pascal.
10.
CLIPS.
11.
Actionscript.
12.
Perl.
13.
Visual Basic.
14.
PHP.
15.
Simula.

1.- C ++: Desde el punto de vista de los lenguajes orientados a objetos, el C ++ es un


lenguaje hbrido.
Posteriormente se aadieron facilidades de programacin genrica, que se sum a los otros
dos paradigmas que ya estaban admitidos (programacin estructurada y la programacin
orientada a objetos).
Por esto se suele decir que el C ++ es un lenguaje de programacin multiparadigma.

2.- OBJETIVE-C: Es un lenguaje de programacin orientado a objetos creado como un


superconjunto de C pero que implementase un modelo de objetos parecido al de Smalltalk.

3.- JAVA: El lenguaje en s mismo toma mucha de su sintaxis de C y C ++, pero tiene un
modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir a
muchos errores, como la manipulacin directa de punteros o memoria.

4.- SMALLTALK: Es un lenguaje de programacin que permite realizar tareas de


computacin mediante la interaccin con un entorno de objetos virtuales. Metafricamente,
se puede considerar que un Smalltalk es un mundo virtual donde viven objetos que se
comunican mediante el envo de mensajes.

5.- EIFFEL: Es un lenguaje de programacin orientado a objetos centrado en la construccin


de software robusto. Su sintaxis es parecida a la del lenguaje de programacin Pascal. Una
caracterstica que lo distingue del resto de los lenguajes es que permite el diseo por
contrato desde la base, con precondiciones, postcondiciones, invariantes y variantes de
bucle, invariantes de clase y aserciones.

6.- LEXICO: Es un lenguaje de programacin didctico en espaol para facilitar el


aprendizaje y la enseanza de la programacin orientada a objetos.

7.- RUBY: Es un lenguaje de programacin con mezclas de programas (Perl, Smalltalk, Eiffel,
Ada y Lisp) para formar un nuevo lenguaje que incorporara tanto la programacin funcional
como la programacin imperativa.

8.- PYTHON: Se trata de un lenguaje de programacin multiparadigma ya que soporta


orientacin a objetos, programacin imperativa y, en menor medida, programacin
funcional.

9.- OBJECT PASCAL: Es un lenguaje con tcnicas de programacin estructurada, dicha


programacin hace programadores disciplinados.

10.- CLIPS: Es una herramienta que provee un ambiente de desarrollo para la produccin y
ejecucin de sistemas expertos. CLIPS probablemente es el sistema experto ms
ampliamente usado debido a que es rpido, eficiente y gratuito.

11.- ACTIONSCRIPT: Es un lenguaje de programacin orientado a objetos (OOP), utilizado


en especial en aplicaciones web animadas realizadas en el entorno Adobe Flash, la
tecnologa de Adobe para aadir dinamismo al panorama web.

12.- PERL: Es un lenguaje de programacin que est basado en un estilo de bloqueos como
los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no
tener ninguna de las limitaciones de los otros lenguajes de script.

13.- VISUAL BASIC: Es una manera sencilla de crear aplicaciones, adems el lenguaje le
ofrece una cantidad de herramientas para simplificar esta labor, como proyectos,
formularios, plantillas de objetos, controles personalizados, add-ins y un gestor de base de
datos.

14.- PHP: Es un lenguaje de programacin interpretado, diseado originalmente para la


creacin de pginas web dinmicas.

15.- SIMULA: Es el primer lenguaje de programacin orientada a objetos. Varios aos


despus de su desarrollo, casi todos los lenguajes modernos comenzaron a utilizar sus
principios de orientacin a objetos. As fue como se popularizaron trminos como clases,
objetos, instancias, herencia, polimorfismo, etc.
La programacin orientada objetos es la base de Java. De hecho, todos los programas en
Java son orientados a objetos, por esta razn es importante entender sus principios bsicos.
La POO parece ser el paradigma de la programacin actual, entrando a reemplazar las
tcnicas de programacin estructurada que se desarrollaron a principios de los 70.
La POO basa su ideologa en la funcionalidad empaquetada. Por ejemplo, para armar una
computadora se adquieren las diferentes piezas con ciertas propiedades (entradas, salidas,
capacidad de almacenamiento, voltaje, etc.) y una cierta funcionalidad (Alimentar Potencia,
almacenar, leer, guardar o desplegar informacin, reproducir o grabar sonidos, etc.). La POO
surge de la misma idea: el programa est compuesto de objetos con ciertas propiedades y
funciones. El usuario depende de los objetos para no interactuar con otros objetos, o con el
cdigo del proyecto, de forma no documentada. No importa si el objeto se construya o se
adquiera, con tal de que el objeto satisfaga sus especificaciones, no le importar demasiado
la forma en que este funcione. En POO, lo que importa es lo que los objetos exponen.
De la misma forma que al armar una computadora no importa el interior de las piezas
siempre que stas hagan lo que de ellas se espera, la mayora de los programadores no
tienen que preocuparse de cmo funcionan internamente los applets, siempre que stos
hagan lo que se espera de ellos. La clave para ser ms productivo en la POO es conseguir

que los objetos sean lo ms completos posible y lograr que los objetos y partes del programa
les indiquen lo ms posible lo que deben hacer.
Como se ver, los objetos integrados de Java encajan perfectamente en este paradigma. Son
ricos en funcionalidad, aunque habr ocasiones que el programador tenga que aadir sus
propios objetos, comprndolos a terceros o crendolos l mismo.

ANTECEDENTES
Hasta el momento, las siguientes son las formas de programacin utilizadas por los
programadores:
La programacin construyendo el programa instruccin a instruccin, utilizando las tres
estructuras bsicas de control (Secuencial, Condicional
e Iterativa): Programacin
Inperativa.
La programacin construyendo un programa mediante un conjunto de funciones de orden
superior, que se han definido previamente (Subprograma) y aplicando posteriormente la
composicin funcional y la recursin: Programacin Funcional.
La programacin construyendo un programa como un conjunto de asertos y reglas lgicas,
que definen relaciones: Programacin Lgica.
La programacin que ve un programa como un conjunto de objetos que se relacionan unos a
otros envindose mensajes: PROGRAMACION ORIENTADA A OBJETOS (POO).

La programacin estructurada tradicional consiste en manipular datos (Procesamiento de


Datos) mediante determinadas maneras tericamente precisas (Algoritmos). A la
organizacin de los datos en el programa se le conoce como estructura de datos. Esta es una
de las razones por las cuales uno de los informticos ms importantes, un profesor suizo
llamado Niklaus Wirth (Diseador del lenguaje Pascal), denomin su famoso libro de
programacin ALGORITMOS + ESTRUCTURAS = PROGRAMAS. Esto representa la forma en
que los programadores utilizan dicha programacin: en primer lugar, el programador decide
como manipular los datos y a continuacin piensa que estructuras imponerles para su
manipulacin. La POO coloca ambos aspectos, algoritmos y estructuras de datos, al mismo
nivel: El programador trabaja con paquetes que contienen datos y funciones para
manipularlos.
Interesa sealar que las Programaciones Estructurada y Orientada a Objetos pertenecen al
mismo tipo de programacin denominada Procedimental u Operacional, porque se
fundamentan en la ejecucin secuencial, paso a paso, de cada instruccin para resolver el
problema.

HISTORIA DE LA POO

Los conceptos de la programacin orientada a objetos tienen origen en simula 67, un


lenguaje diseado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del
centro de cmputo Noruego en Oslo. En este centro, se trabaja en simulaciones de naves,
que fueron confundidas por la explosin combinatoria de como como las diversas cualidades
de diferentes naves podan afectar unas a las otras. La idea surgi al agrupar los diversos
tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de
definir sus propios datos y comportamientos. Fueron refinados ms tarde en Smalltalk,
desarrollado en simula en Xerox PARC( cuya primera versin fue escrita sobre Basic) pero
diseado para ser un sistema completamente dinmico en el cual los objetos se podran
crear y modificar sobre la marcha (en tiempo de ejecucin) en lugar de tener un sistema
basado en programas estticos.
La programacin orientada a objetos se fue convirtiendo en el estilo de programacin
dominante a mediados de los aos ochenta, en gran parte debido a la influencia de c++,
una extensin del lenguaje de programacin c. Su dominacin fue consolidada gracias al
auge de las interfaces graficas de usuario, para las cuales la programacin orientada a
objetos esa particularmente bien adaptada. En este caso, se habla tambin de programacin
dirigida por eventos.

CONCEPTOS BSICOS
En este captulo veremos cules son los principales conceptos relacionados con la OOP.
Estudiaremos los conceptos de Clase, Objeto, Herencia, Encapsulacin y Polimorfismo. Estas
son las ideas ms bsicas que todo aquel que trabaja en OOP debe comprender y manejar
constantemente; es por lo tanto de suma importancia que los entienda claramente. De todos
modos, no se preocupe si al finalizar el presente captulo, no tiene una idea clara de todos o
algunos de ellos: con el tiempo los ir asentando y se ira familiarizando con ellos,
especialmente cuando comience a trabajar creando sus propias clases y jerarquas de clases.
QU ES UNA CLASE?
Una clase es una descripcin de un grupo de objetos con:
- Propiedades en comn (atributos)
- Comportamiento similar (operaciones)

- La misma forma de relacionarse con otros objetos (relaciones)


- Una semntica en comn (significan lo mismo)
Una clase es una abstraccin que:
- Enfatiza las caractersticas relevantes
- Suprime otras caractersticas (simplificacin)
- Un objeto es una instancia de una clase
La forma ms sencilla de entender el concepto de clase es si la vemos como una agrupacin
de objetos con caractersticas similares. Por ejemplo, un auto ES UN tipo particular de
vehculo motorizado, con lo cual dentro de su comportamiento podemos encontrar
arrancar y frenar, entre otros. Ahora bien, una motocicleta tambin ES UN vehculo
motorizado, y tiene dentro de su comportamiento arrancar y frenar. El conjunto de
atributos tambin es compartido entre una motocicleta y un automvil, aunque sus valores
no coincidan necesariamente. Por ejemplo, ambos tienen el atributo cantidad de ruedas,
slo que el auto tiene 4 y la motocicleta 2.
Una clase es una definicin abstracta de un objeto
- Define la estructura y el comportamiento compartidos por los objetos
- Sirve como modelo para la
creacin de objetos
- Los objetos pueden ser
agrupados en clases

QU ES UN OBJETO?
- Informalmente, un objeto representa una entidad del mundo real
- Entidades Fsicas (Ej.: Vehculo, Casa, Producto)
- Entidades Conceptuales (Ej.: Proceso Qumico, Transaccin Bancaria)
- Entidades de Software (Ej.: Lista Enlazada, Interfaz Grfica)
- Definicin Formal (Rumbaugh).
Un objeto es un concepto, abstraccin o cosa con un significado y lmites claros en el
problema en cuestin
Un objeto posee (Booch):
-Estado
-Comportamiento
-Identidad
Segn las definiciones formales de James Rumbaugh y Grady Booch (dos de las principales
autoridades de la orientacin a objetos en la actualidad, y coatores de UML, el lenguaje de
modelado universal para objetos), un objeto es una abstraccin de la realidad que tiene un

significado concreto y claro para el problema que se est modelando. Un ejemplo de una
entidad fsica representada como un objeto conceptual puede ser Un Auto.
Ahora bien, todos los objetos tienen 3 caractersticas principales:
- ESTADO: representa la definicin de atributos internos del objeto, sus caractersticas. Por
ejemplo,
un auto tiene un cierto nmero de puertas, un cierto nmero de ruedas,
un volante, un motor, pedales, etc.
- COMPORTAMIENTO: representa la definicin del comportamiento del objeto, las acciones
que ste puede realizar. Por ejemplo, un auto puede arrancar, frenar, doblar,
acelerar, etc.
-IDENTIDAD: Cada objeto tiene una identidad nica, incluso si su estado es idntico al de
otro objeto
Lo Que El Objeto Sabe (Estado)
- El estado de un objeto es una de las posibles condiciones en que el objeto puede existir
- El estado normalmente cambia en el transcurso del tiempo
- El estado de un objeto es implementado por un conjunto de propiedades (atributos),
adems de las conexiones que puede tener con otros objetos
Lo Que El Objeto Puede Hacer (Comportamiento)
- El comportamiento de un objeto determina cmo ste acta y reacciona frente a las
peticiones de otros objetos
- Es modelado por un conjunto de mensajes a los que el objeto puede responder
(operaciones que puede realizar)
- Se implementa mediante mtodos
Identidad
- Cada objeto tiene una identidad nica, incluso si su estado es idntico al de otro objeto.

El
concepto
de
identidad se refiere
al hecho de que
cada
objeto
es
nico en el mundo,
por ms que su conjunto de atributos y sus valores sean exactamente iguales a los de otros
objetos. Por ejemplo, dos autos del mismo modelo, color, motor, salidos de la misma lnea de
produccin el mismo da no dejan de ser dos autos diferentes, por ms que su conjunto de
atributos
y
sus
valores
sean
iguales.
La nica posibilidad de que dos objetos sean iguales es que sean el mismo objeto.
HERENCIA
La herencia es un mecanismo que permite la definicin de una clase a partir de la definicin
de otra ya existente. La herencia permite compartir automticamente mtodos y datos entre
clases, subclases y objetos.

La herencia est fuertemente ligada a la reutilizacin del cdigo en la POO. Esto es, el cdigo
de cualquiera de las clases puede ser utilizado sin ms que crear una clase derivada de ella,
o bien una subclase.
(Por ejemplo, herencia de la clase C a la clase D) es la facilidad mediante la cual la clase D
hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y
operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos
mtodos y variables pblicas declaradas en C. Los componentes registrados como "privados"
(private) tambin se heredan, pero como no pertenecen a la clase, se mantienen escondidos
al programador y slo pueden ser accedidos a travs de otros mtodos pblicos. Esto es as
para mantener hegemnico el ideal de POO
MTODO
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se desencadena
tras la recepcin de un "mensaje". Desde el punto de vista del comportamiento, es lo que el
objeto puede hacer. Un mtodo puede producir un cambio en las propiedades del objeto, o la
generacin de un "evento" con un nuevo mensaje para otro objeto del sistema.

EVENTO
Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un
mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado
al objeto pertinente. Tambin se puede definir como evento la reaccin que puede
desencadenar un objeto; es decir, la accin que genera.
MENSAJE
Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos con
ciertos parmetros asociados al evento que lo gener.
PROPIEDAD O ATRIBUTO
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace
los datos visibles desde fuera del objeto y esto se define como sus caractersticas
predeterminadas, y cuyo valor puede ser alterado por la ejecucin de algn mtodo.
ESTADO INTERNO
Es una variable que se declara privada, que puede ser nicamente accedida y alterada por
un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el
objeto (o clase de objetos). No es visible al programador que maneja una instancia de la
clase.
IDENTIFICACIN DE UN OBJETO

Un objeto se representa por medio de una tabla o entidad que est compuesta por sus
atributos y funciones correspondientes.
En comparacin con un lenguaje imperativo, una "variable" no es ms que un contenedor
interno del atributo del objeto o de un estado interno, as como la "funcin" es un
procedimiento interno del mtodo del objeto.

CARACTERISTICAS DE POO
Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos". Las
caractersticas siguientes son las ms importantes:
MODULARIDAD
Se denomina modularidad a la propiedad que permite subdividir una aplicacin en partes
ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como
sea posible de la aplicacin en s y de las restantes partes. Estos mdulos se pueden
compilar por separado, pero tienen conexiones con otros mdulos. Al igual que la
encapsulacin, los lenguajes soportan la modularidad de diversas formas.
PRINCIPIO DE OCULTACIN
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone
una interfaz a otros objetos que especifica cmo pueden interactuar con los objetos de la
clase. El aislamiento protege a las propiedades de un objeto contra su modificacin por
quien no tenga derecho a acceder a ellas; solamente los propios mtodos internos del objeto
pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado
interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones
inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos
internos del objeto de una manera controlada y limitando el grado de abstraccin. La
aplicacin entera se reduce a un agregado o rompecabezas de objetos.

ABSTRACCIN
Denota las caractersticas esenciales de un objeto, donde se capturan sus comportamientos.
Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar
trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin
revelar cmo se implementan estas caractersticas. Los procesos, las funciones o los
mtodos pueden tambin ser abstrados, y, cuando lo estn, una variedad de tcnicas son
requeridas para ampliar una abstraccin. El proceso de abstraccin permite seleccionar las
caractersticas relevantes dentro de un conjunto e identificar comportamientos comunes
para definir nuevos tipos de entidades en el mundo real. La abstraccin es clave en el
proceso de anlisis y diseo orientado a objetos, ya que mediante ella podemos llegar a
armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere
atacar.
ENCAPSULACIN
Se refiere a la capacidad de agrupar y condensar en un entorno con lmites bien-definidos
distintos elementos. Cuando hablemos de encapsulacin en general siempre nos
referiremos, pues, a encapsulacin abstracta. De manera informal, primero generalizamos
(la abstraccin) y luego decimos: la generalizacin est bien, pero dentro de un cierto orden:
hay que poner lmites (la encapsulacin), y dentro de esos lmites vamos a meter, a saco,
todo lo relacionado con lo abstrado: no slo datos, sino tambin mtodos, comportamientos,
etc.
Por un lado es una abstraccin pues, de acuerdo con la definicin establecida anteriormente,
es en sta donde se definen las propiedades y atributos genricos de determinados objetos
con caractersticas comunes (recordemos el ejemplo de la sala de cine). La Clase es, por otro
lado, una encapsulacin porque constituye una cpsula o saco que encierra y amalgama de
forma clara tanto los datos de que constan los objetos como los procedimientos que
permiten manipularlos. Las Clases se constituyen, as, en abstracciones encapsuladas.
POLIMORFISMO
Por polimorfismo entendemos aquella cualidad que poseen los objetos para responder de
distinto modo ante el mismo mensaje.
Pongamos por ejemplo las clases hombre, vaca y perro, si a todos les damos la orden
-enviamos el mensaje- Come, cada uno de ellos sabe cmo hacerlo y realizar este
comportamiento a su modo.
Veamos otro ejemplo algo ms ilustrativo. Tomemos las clases barco, avin y coche, todas
ellas derivadas de la clase padre vehculo; si les enviamos el mensaje Desplzate, cada una
de ellas sabe cmo hacerlo.
Realmente, y para ser exactos, los mensaje no se envan a las clases, sino a todos o algunos
de los objetos instanciados de las clases. As, por ejemplo, podemos decirle a los objetos
Juan Sebastin el
Cano y Kontiqui, de la clase barco que se desplacen, con los que el resto de los objetos de
esa clase permanecern inmviles.
Del mismo modo, si tenemos en pantalla cinco recuadros (marcos) y tres textos, podemos
decirle a tres de los recuadros y a dos de los textos que cambien de color y no decrselo a los
dems objetos. Todos estos sabrn cmo hacerlo porque hemos redefinido para cada uno de

ellos su mtodo Pintarse que bien podra estar en la clase padre Visual (conjunto de objetos
que pueden visualizarse en pantalla).
En programacin tradicional, debemos crear un nombre distinto para la accin de pintarse, si
se trata de un texto o de un marco; en OOP el mismo nombre nos sirve para todas las clases
creadas si as lo queremos, lo que suele ser habitual. El mismo nombre suele usarse para
realizar acciones similares en clases diferentes.
Si enviamos el mensaje Imprmete a objetos de distintas clases, cada uno se imprimir como
le corresponda, ya que todos saben cmo hacerlo.
El polimorfismo nos facilita el trabajo, ya que gracias a l, el nmero de nombres de mtodos
que tenemos que recordar disminuye ostensiblemente.
La mayor ventaja la obtendremos en mtodos con igual nombre aplicados a las clases que se
encuentran prximas a la raz del rbol de clases, ya que estos mtodos afectarn a todas
las clases que de ellas se deriven. Hay dos clases:
POLIMORFISMO DINMICO: Es aqul en el que el cdigo no incluye ningn tipo de
especificacin sobre el tipo de datos sobre el que se trabaja. As, puede ser utilizado a todo
tipo de datos compatible. El polimorfismo dinmico unido a la herencia es lo que en
ocasiones se conoce como programacin genrica.
POLIMORFISMO ESTTICO: Es aqul en el que los tipos a los que se aplica el polimorfismo
deben ser explicitados y declarados uno por uno antes de poder ser utilizados.
TIPOS DE POLIMORFISMO:
En general, hay tres tipos de polimorfismo:
1.-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).
El polimorfismo de sobrecarga nos permite definir operadores cuyos comportamientos varan
de acuerdo a los parmetros que se les aplican.
2.-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
basados en el parmetro.
3.-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).
SOBRECARGA
La sobrecarga puede ser considerada como un tipo especial de polimorfismo que casi todos
los lenguajes de OOP incluyen.
Varios mtodos (incluidos los "constructores", de los que se hablar ms adelante) pueden
tener el mismo nombre siempre y cuando el tipo de parmetros que recibe o el nmero de
ellos sea diferente.

De este modo, por ejemplo la clase File puede tener tantos mtodo Write() como tipos de
datos queramos escribir (no se preocupe si no entiende la nomenclatura, cntrese en la
idea):
File::Write(
File::Write(
File::Write(
File::Write(
File::Write(

int i ); Escribe un integer


long l ); Escribe un long
float f ); Escribe un flota
string s ); Escribe una cadena
string s, boolean b ); Escribe una cadena pasndola a maysculas

Existe un tipo especial de sobrecarga llamada sobrecarga de operadores que, de los leguajes
POO conocidos, solo incorpora C++. Es por esto que consideramos que el abordar este tema
escapa a la finalidad del presente curso.
LA HERENCIA
Se aplica sobre las clases. O sea, de alguna forma las clases pueden tener descendencia, y
sta heredar algunas caractersticas de las clases padres. Si disponemos las clases con
un formato de rbol genealgico, tenderemos lo que se denomina una estructura
jerarquizada de clases.
La OOP promueve en gran medida que las relaciones entre objetos se basen en
construcciones jerrquicas. Esto es, las clases pueden heredar diferencialmente de otras
clases (denominadas superclases) determinadas caractersticas, mientras que, a la vez,
pueden definir las suyas propias. Tales clases pasan, as, a denominarse subclases de
aqullas.
La herencia se implementa mediante un mecanismo que se denomina derivacin de clases:
las superclases pasan a llamarse clases base, mientras que las subclases se constituyen en
clases derivadas. El mecanismo de herencia est fuertemente entroncado con la reutilizacin
del cdigo en OOP. Una clase derivada posibilita, el fcil uso de cdigo ya creado en
cualquiera de las clases base ya existentes.
El concepto de herencia constituye un estrato bsico del paradigma de objetos, pero esto no
significa que todas las relaciones entre clases en OOP deban ajustarse siempre a este
modelo jerrquico. Es necesario establecer si la pretendida relacin entre objetos es de
pertenencia o de derivacin. En una relacin tpica de pertenencia un objeto contiene al otro.
Hay dos tipos de herencia:
HERENCIA SIMPLE
Indica que se pueden definir nuevas clases solamente a partir de una clase inicial mientras
que la segunda indica que se pueden definir nuevas clases a partir de dos o ms clases
iniciales. Java slo permite herencia simple
Herencia Simple La herencia en C++ es un mecanismo de abstraccin creado para poder
facilitar, y mejorar el diseo de las clases de un programa. Con ella se pueden crear nuevas
clases a partir de clases ya hechas, siempre y cuando tengan un tipo de relacin especial. En
la herencia, las clases derivadas heredan los datos y la funcin miembro de las clases
base, pudiendo las clases derivadas redefinir estos comportamientos (polimorfismo) y aadir
comportamientos nuevos propios de las clases derivadas. Para no romper el principio de
encapsulamiento (ocultar datos cuyo conocimiento no es necesario para el uso de las
clases), se proporciona un nuevo modo de visibilidad de los datos/funciones: protected.
Cualquier cosa que tenga visibilidad protected se comportar como pblica en la clase Base
y en las que componen la jerarqua de herencia, y como privada en las clases que NO sean
de la jerarqua de la herencia. Antes de utilizar la herencia, nos tenemos que hacer una
pregunta, y si tiene sentido, podemos intentar usar esta jerarqua: Si la frase <claseB> ESUN <claseA> tiene sentido, entonces estamos ante un posible caso de herencia donde clase

A ser la clase base y clase B la derivada. Ejemplo: clases Barco, Acorazado, Carguero, etc
un Acorazado ES-UN Barco, un Carguero ES-UN Barco, un Trasatlntico ES-UN Barco, etc.
Por ltimo, hay que mencionar que existen 3 clases de herencia que se diferencian en el
modo de manejar la visibilidad de los componentes de la clase resultante:
HERENCIA PUBLICA (class Derivada: public Base): Con este tipo de herencia se respetan los
comportamientos originales de las visibilidades de la clase Base en la clase Derivada.
HERENCIA PRIVADA (clase Derivada: private Base): Con este tipo de herencia todo
componente de la clase Base, ser privado en la clase Derivada (ojo! siempre ser privado
aunque ese dato fuese pblico en la clase Base)
HERENCIA PROTEGIDA (clase Derivada: protected Base): Con este tipo de herencia, todo
componente pblico y protegido de la clase Base, ser protegido en la clase Derivada, y los
componentes privados, siguen siendo privados.
VISIBLES EN LA SUBCLASE, pero no visibles para el exterior.
HERENCIA MLTIPLE
La herencia mltiple es el mecanismo que permite al programador hacer clases derivadas a
partir, no de una sola clase base, sino de varias. Para entender esto mejor, pongamos un
ejemplo: Cuando ves a quien te atiende en una tienda, como persona que es, podrs
suponer que puede hablar, comer, andar, pero, por otro lado, como empleado que es,
tambin podrs suponer que tiene un jefe, que puede cobrarte dinero por la compra, que
puede devolverte el cambio, etc.
Por tanto, es posible utilizar ms de una clase para que otra herede sus caractersticas.

DIFERENCIAS DE LOS ERRORE MS COMUNES


DIFERENTES ENTRE POLIMORFISMO Y SOBRECARGA:
El polimorfismo suele ser bastante ventajoso aplicado desde las interfaces, ya que permite
crear nuevos tipos sin necesidad de tocar las clases ya existentes, basta con recompilar todo
el cdigo que incluye los nuevos tipos aadidos.
La sobrecarga se da siempre dentro de una sola clase, mientras que el polimorfismo se da
entre clases distintas.
Un mtodo est sobrecargado si dentro de una clase existen dos o ms declaraciones de
dicho mtodo con el mismo nombre pero con parmetros distintos, por lo que no hay que
confundirlo con polimorfismo.
La sobrecarga se resuelve en tiempo de enlazado (cuando se est construyendo el
ejecutable) utilizando los nombres de los mtodos y los tipos de sus parmetros; el
polimorfismo se resuelve en tiempo de ejecucin del programa, esto es, mientras se ejecuta,
en funcin de que clase pertenece un objeto.

DIFERENCIA ENTRE CLASE Y OBJETO


Una clase verdaderamente describe una familia de elementos similares En realidad, una
clase es una plantilla para un tipo particular de objetos Si se tienen muchos objetos del
mismo tipo, slo se tienen que definir las caractersticas generales de ese tipo una vez, en
lugar de en cada objeto A partir de una clase se puede definir un nmero de objetos Cada
uno de estos objetos tendr generalmente un estado peculiar propio (una pluma puede estar
rellenada, otra puede estar medio-vaca y otra estar totalmente vaca) y otras caractersticas
(como su color), aunque compartirn operaciones comunes (como <<escribir, llenar,
poner el capuchn, etc) En resumen, un objeto es una instancia de una clase

RAZONES FUNDAMENTALES QUE ESTAN INFLUYENDO


EN LA IMPORTANCIA DE LA POO
Algunas de las causas que estn influyendo considerablemente en el notable desarrollo de
las tcnicas orientadas a objetos son:
La 00 (Orientacin a Objetos) es especialmente adecuada para idealizar determinadas
aplicaciones, sobre todo realizacin de prototipos y simulacin de programas
Los mecanismos de encapsulacin de PO0 soportan un alto grado de reutilizacin de
cdigo, que se incrementa por sus mecanismos de herencia
En el entorno de las bases de datos, la 00 se adjunta bien a los modelos semnticos de
datos para solucionar las limitaciones de los modelos tradicionales, incluido el modelo
relacional.
Aumento espectacular de L.POO (Lenguajes de Programacin Orientados a Objetos)
Interfaces de usuario grficos (por iconos) y visuales Los interfaces de usuario de una
aplicacin manipulan la entrada y salida del usuario Por consiguiente, su funcin
principal es la comunicacin con el usuario final. La entrada al sistema se puede
controlas a travs de lneas de rdenes (enfoque utilizado por DOS y UNIX), o
alternativamente el usuario puede interactuar con el sistema, con construcciones de
programacin visuales, tales como iconos de mens, Windows, Macintosh, etc.

LIMITACIONES E INCONVENIENTES DE LA POO


La POO, como todo en este mundo, tambin tiene sus limitaciones e inconvenientes. De las
primeras, no cabe ni hablar, porque, aun cuando sea el sistema ms apropiado del que
disponemos para programar, todava los programadores tenemos que dejarnos los sesos
para hacer que una mquina boba diga:

Mucha fuerza bruta, pero poca inteligencia.


De los inconvenientes vamos a tratar ahora.
Como ya comentbamos antes, una aplicacin
realizada desde la perspectiva de la POO, conlleva un anlisis mucho ms riguroso y tedioso.
Sin embargo, que lo vemos como un inconveniente, tambin, una vez realizado nos permitir
implementar nuestra aplicacin en un tiempo mucho menor.
El mayor inconveniente real proviene de un "error" de planteamiento; y como casi siempre,
estos son de mucha mayor dificultad a la hora de solucionarlos. El problema, segn comenta
uno de los mejores analistas de hoy en da, Jeff Dunteman, en un artculo de la revista Dr.
Dobbs, es que "La encapsulacin y la herencia se hallan en esquinas opuestas de la casa".
Es decir, la encapsulacin choca frontalmente con la herencia, y sin embargo, son dos
piedras angulares de la POO.
Por un lado decimos que los objetos deben ser totalmente independientes y autnomos, y
por otro, al heredar unas clases de otras, estamos dejando fuera de un objeto perteneciente
a una clase hija gran parte de la informacin que ste necesita para poder comportarse.

A juicio del autor, existe otro problema ms inmediato, ms real y menos terico: el que
estriba en la imposibilidad de utilizacin conjunta de objetos de distintos programadores.
Veamos un ejemplo simple, supongamos que estoy montndome un coche en mi garaje,
puedo comprar un carburador Fiat y montarlo en un coche Opel, unos asientos Volvo y
montarlo en una carrocera Citron; esto mismo no puedo hacerlo en POO.
Si Microsoft fabrica la clase Menu, que deriva de la clase Visual y Borland fabrica la clase
Ventana aunque tambin derive de la clase Visual, yo no puedo coger el men de una y la
ventana de la otra, a menos que todas las clases superiores (en este caso solo una) sean
exactamente iguales: tengan el mismo nombre, contengan los mismos datos y los mismos
mtodos y en estos, todos los parmetros deben coincidir en orden y en tipo.
Este problema por ahora no tiene solucin, y lo peor es que no se vislumbra que la tenga en
un futuro prximo, ya que para ello sera necesario normalizar las clases (al menos las ms
habituales), pero si no nos ponemos de acuerdo para utilizar un mismo HTML Cmo nos
vamos a poner de acuerdo para esto?

BIBLIOGRAFIA

Tutorial de C++: o el diario de Peter Class por Peter Class y Pello Xabier Altadill Izura
Introduccin a la OOP Grupo EIDOS
Introduccin a la Programacin Orientada a Objetos
MTODO DE LAS 6D modelamiento algoritmo programacin (Enfoque orientado a
las estructuras de datos) 2da Edicin
Programacin Orientada a Objetos- Roberto Rodrguez Echeverra- Encarna Sosa
Snchez- lvaro Prieto Ramos
Programacin Orientada a Objetos- Luis Joyanes Aguilar
http://es.scribd.com/doc/9838303/Ceballos-Programacion-orientada-a-objetos-con-C4Ed
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B
%2B/Desarrollo_Orientado_a_Objetos
C++/OOP un enfoque prctico- Ricardo Devis Botella
http://es.wikipedia.org/wiki/Objeto_(programaci%C3%B3n)
http://www.capacinet.gob.mx/Cursos/Tecnologia
%20amiga/desarrolladordesoftware/POO_SE.pdf
Programacin Orientada a Objetos- David J. Bames

Potrebbero piacerti anche