Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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.
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.
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.
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.
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).
HISTORIA DE LA POO
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)
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(
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.
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