You are on page 1of 4

Taller de aplicaciones C++ Leonardo Bascun C.

1.-CONCEPTOS DE PROGRAMACIN ORIENTADA A OBJETOS

Introduccin

Un concepto muy importante introducido por la programacin estructurada es la abstraccin. La abstraccin


se puede definir como la capacidad de examinar algo sin preocuparse de los detalles internos. En un
programa estructurado es suficiente conocer que un procedimiento dado realiza una tarea especfica. El
cmo se realiza la tarea no es importante; mientras el procedimiento sea fiable se puede utilizar sin tener
que conocer cmo funciona su interior. Esto se conoce como abstraccin funcional.
Una debilidad de la programacin estructurada aparece cuando programadores diferentes trabajan en una
aplicacin como un equipo. Dado que programadores diferentes manipulan funciones separadas que
pueden referirse a tipos de datos mutuamente compartidos, los cambios de un programador se deben
reflejar en el trabajo del resto del equipo. Otro problema de la programacin estructurada es que raramente
es posible anticipar el diseo de un sistema completo antes de que se implemente realmente.
En esencia, un defecto de la programacin estructurada, como se acaba de ver, consiste en la separacin
conceptual de datos y cdigo. Este defecto se agrava a medida que el tamao del programa crece.

Abstraccin de datos

La abstraccin de datos permite no preocuparse de los detalles no esenciales. Existe en casi todos los
lenguajes de programacin. Las estructuras de datos y los tipos de datos son un ejemplo de abstraccin.
Los procedimientos y funciones son otro ejemplo. Slo recientemente han emergido lenguajes que soportan
sus propios tipos abstractos de datos (TAD), como Pascal, Ada, Modula-2 y C++.

Qu es la programacin orientada a objetos?

Se puede definir POO como una tcnica o estilo de programacin que utiliza objetos como bloque esencial
de construccin.
Los objetos son en realidad como los tipos abstractos de datos. Un TAD es un tipo definido por el
programador junto con un conjunto de operaciones que se pueden realizar sobre ellos. Se denominan
abstractos para diferenciarlos de los tipos de datos fundamentales o bsicos.
En C se puede definir un tipo abstracto de datos utilizando typedef y struct y la implementacin de las
operaciones con un conjunto de funciones.
C++ tiene muchas facilidades para definir y utilizar un tipo TAD.
Al igual que los tipos de datos definidos por el usuario, un objeto es una coleccin de datos, junto con las
funciones asociadas, utilizadas para operar sobre esos datos. Sin embargo la potencia real de los objetos
reside en las propiedades que soportan: herencia, encapsulacin y polimorfismo, junto con los conceptos
bsicos de objetos, clases, mtodos y mensajes.

Trabajando con objetos

En programacin convencional los programas se dividen en dos componentes: procedimientos y datos.


Este mtodo permite empaquetar cdigo de programa en procedimientos, pero Qu sucede con los datos?
Las estructuras de datos utilizadas en programacin son globales o se pasan como parmetros. En esencia
los datos se tratan separadamente de los procedimientos.
En POO un programa se divide en componentes que contienen procedimientos y datos. Cada componente
se considera un objeto.
Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. A los elementos
de un objeto se les conoce como miembros; las funciones que operan sobre los datos se denominan
mtodos (en C++ tambin se llaman funciones miembro) y los datos se denominan miembros datos. En C+
+ un programa consta de objetos. Los objetos de un programa se comunican entre s mediante el paso o
envo de mensajes (acciones que debe ejecutar el objeto).
En POO los objetos pueden ser cualquier entidad del mundo real:
Taller de aplicaciones C++ Leonardo Bascun C.
- Objetos fsicos
* automviles en una simulacin de trfico
* aviones en un sistema de control de trfico areo
* animales mamferos, etc
- Elementos de interfaces grficos de usuarios
* ventanas
* iconos
* mens
* ratones
- Estructuras de datos
* arrays
* pilas
* rboles binarios
- Tipos de datos definidos por el usuario
* nmeros complejos
* hora del da

Definicin de objetos

Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. Los datos se
denominan miembros dato y las funciones mtodos o funciones miembro.
Los datos y las funciones se encapsulan en una nica entidad. Los datos estn ocultos y slo mediante las
funciones miembro es posible acceder a ellos.

Encapsulamiento

El empaque conjunto de datos y mtodos se llama encapsulamiento. El objeto esconde sus datos de los
dems objetos y permite el acceso a los datos mediante sus propios mtodos. Esto recibe el nombre de
ocultamiento de informacin. El encapsulamiento evita la corrupcin de los datos de un objeto. Si todos
los programas pudieran tener acceso a los datos de cualquier forma que quisieran los usuarios, los datos
se podran corromper o utilizar de mala manera. El encapsulado protege los datos del uso arbitrario y no
pretendido.

El encapsulado oculta los detalles de su implantacin interna a los usuarios de un objeto. Los usuarios
se dan cuenta de las operaciones que puede solicitar del objeto, pero desconocen los detalles de cmo
se lleva a cabo la operacin. Todos los detalles especficos de los datos del objeto y la codificacin de sus
operaciones estn fuera del alcance del usuario.

As, encapsulado es el resultado (o acto) de ocultar los detalles de implantacin de un objeto respecto de
su usuario.

El encapsulado, al separar el comportamiento del objeto de su implantacin, permite la modificacin de


sta sin que se tengan que modificar las aplicaciones que lo utilizan.
Taller de aplicaciones C++ Leonardo Bascun C.

Clases

Una clase es un tipo definido por el usuario que determina las estructuras de datos y las operaciones
asociadas con ese tipo. Cada vez que se construye un objeto de una clase, se crea una instancia de esa
clase. En general, los trminos objetos e instancias de una clase se pueden utilizar indistintamente.
Una clase es una coleccin de objetos similares y un objeto es una instancia de una definicin de una clase.
La comunicacin con el objeto se realiza a travs del paso de mensajes. El envo a una instancia de una
clase produce la ejecucin de un mtodo o funcin miembro. El paso de mensajes es el trmino utilizado
para referirnos a la invocacin o llamada de una funcin miembro de un objeto.

Mensajes: activacin de objetos

Los objetos pueden ser activados mediante la recepcin de mensajes. Un mensaje es simplemente una
peticin para que un objeto se comporte de una determinada manera, ejecutando una de sus funciones
miembro. La tcnica de enviar mensajes se conoce como paso de mensajes.

Estructuralmente un mensaje consta de tres partes:


- la identidad del objeto receptor
- la funcin miembro del receptor cuya ejecucin se ha solicitado
- cualquier otra informacin adicional que el receptor pueda necesitar para ejecutar el mtodo
requerido.
En C++, la notacin utilizada es nombre_del_objeto.funcin_miembro

Ejemplo: Se tiene un objeto o1 con los siguientes miembros dato: nombre_alumno y curso y con las
funciones miembro: leer_nombre e imprimir. Si el objeto o1 recibe el mensaje imprimir, esto se expresa:
o1.imprimir()
La sentencia anterior se lee: "enviar mensaje imprimir al objeto o1". El objeto o1 reacciona al mensaje
ejecutando la funcin miembro de igual nombre que el mensaje.

El mensaje puede llevar parmetros:


o1.leer_nombre("Pedro Prez")
Sin los mensajes los objetos que se definan no podrn comunicarse con otros objetos. Desde un punto de
vista convencional, el paso de mensajes no es ms que el sinnimo de llamada a una funcin.

Programa orientado a objetos

Un programa orientado a objetos es una coleccin de clases. Necesitar una funcin principal que cree
objetos y comience la ejecucin mediante la invocacin de sus funciones miembro.
Taller de aplicaciones C++ Leonardo Bascun C.
Esta organizacin conduce a separar partes diferentes de una aplicacin en distintos archivos. La idea
consiste en poner la descripcin de la clase para cada una de ellas en un archivo separado. La funcin
principal tambin se pone en un archivo independiente. El compilador ensamblar el programa completo a
partir de los archivos independientes en una nica unidad.
En realidad, cuando se ejecuta un programa orientado a objetos, ocurren tres acciones:

1. Se crean los objetos cuando se necesitan


2. Los mensajes se envan desde uno objetos y se reciben en otros
3. Se borran los objetos cuando ya no son necesarios y se recupera la memoria ocupada por ellos

Herencia

La herencia es la propiedad que permite a los objetos construirse a partir de otros objetos.
Una clase se puede dividir en subclases. En C++ la clase original se denomina clase base; las clases que
se definen a partir de la clase base, compartiendo sus caractersticas y aadiendo otras nuevas, se
denominan clases derivadas.
Las clases derivadas pueden heredar cdigo y datos de su clase base aadiendo su propio cdigo y datos
a la misma.
La herencia impone una relacin jerrquica entre clases en la cual una clase hija hereda de su clase padre.
Si una clase slo puede recibir caractersticas de otra clase base, la herencia se denomina herencia simple.
Si una clase recibe propiedades de ms de una clase base, la herencia se denomina herencia mltiple.

Polimorfismo

En un sentido literal, significa la cualidad de tener ms de una forma. En el contexto de POO, el


polimorfismo se refiere al hecho de que una misma operacin puede tener diferente comportamiento en
diferentes objetos. Por ejemplo, consideremos la operacin sumar. El operador + realiza la suma de dos
nmeros de diferente tipo. Adems se puede definir la operacin de sumar dos cadenas mediante el
operador suma.

Reusabilidad

Cualidad que nos indica que partes del programa ( en este caso objetos) pueden ser reutilizados en la
confeccin de otros programas. Ello implica que los objetos definidos en un programa pueden ser
extrados del mismo e implantados en otro sin tener que realizar modificaciones importantes en el cdigo
del objeto. El objeto final es que el programador construya una librera de objetos que le permita realizar
programas basndose en la tcnica de cortar y pegar. Esta extrae (corta) cdigo de otras aplicaciones ya
realizadas y las implementa (pega) en la aplicacin a realizar donde, tras algunos retoques, la nueva
aplicacin estar lista para funcionar. Como podr observar el concepto de reusabilidad, permite reducir
el tiempo de realizacin , ganando en claridad, mantenibilidad y productividad

You might also like