You are on page 1of 6

1.

1 Elementos del modelo de objetos


1.1.1

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.
1.1.2

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++.

1.1.3

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 (TAD). 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 y Java se puede definir un tipo abstracto de datos utilizando typedef y struct y la implementacin de las operaciones con un conjunto de funciones. Ambos lenguajes tienen 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.

1.1.4

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 y los datos se denominan miembros datos. En Java y 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 se cualquier entidad del mundo real: - 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

1.1.5

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.

1.1.6

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.

1.1.7

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 Java y C++, la notacin utilizada es nombre_del_objeto.funcin_miembro Ejemplo: Se tiene un objeto obj1 con los siguientes miembros dato: nombre_alumno y curso y con las funciones miembro: leer_nombre e imprimir. Si el objeto obj1 recibe el mensaje imprimir, esto se expresa:

obj1.imprimir() La sentencia anterior se lee: "enviar mensaje imprimir al objeto obj1". El objeto obj1 reacciona al mensaje ejecutando la funcin miembro de igual nombre que el mensaje. El mensaje puede llevar parmetros: obj1.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.

1.1.8

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. 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 Caractersticas de la POO

1.1.9

Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos", las caractersticas siguientes son las ms importantes:
1.1.9.1 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.
1.1.9.2 Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse

pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar la cohesin de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultacin, principalmente porque se suelen emplear conjuntamente.
1.1.9.3 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 que se puedan compilar por separado, pero que tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas.
1.1.9.4 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 pueden cambiar el estado interno de un objeto de maneras inesperadas, 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.
1.1.9.5 Herencia: las clases no estn aisladas, sino que se relacionan entre s, formando una

jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reflejan un comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hay herencia mltiple.
1.1.9.6 Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden

compartir el mismo nombre, al llamarlos por ese nombre se utilizar el comportamiento correspondiente al objeto que se est usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocacin de un comportamiento en una referencia producir el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima caracterstica se llama asignacin

tarda o asignacin dinmica. Algunos lenguajes proporcionan medios ms estticos (en "tiempo de compilacin") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
1.1.9.7 Recoleccin de basura: la recoleccin de basura o garbage collector es la tcnica

por la cual el entorno de objetos se encarga de destruir automticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignacin o liberacin de memoria, ya que el entorno la asignar al crear un nuevo objeto y la liberar cuando nadie lo est usando. En la mayora de los lenguajes hbridos que se extendieron para soportar el Paradigma de Programacin Orientada a Objetos como C++ u Object Pascal, esta caracterstica no existe y la memoria debe desasignarse manualmente.

You might also like