En informtica, un OBJETO es un conjunto de variables que en programacin
orientada a objetos se denominan atributos y de los mtodos relacionados con esas variables o atributos. Un poco ms sencillo: un objeto contiene en s mismo la informacin y los mtodos o funciones necesarios para manipular esa informacin. Lo ms importante de los objetos es que permiten tener un control total sobre 'quin' o 'qu' puede acceder a sus miembros, es decir, los objetos pueden tener miembros pblicos a los que podrn acceder otros objetos o miembros privados a los que slo puede acceder l. Estos miembros pueden ser tanto atributos como mtodos. El gran beneficio de todo esto es la encapsulacin, el cdigo fuente de un objeto puede escribirse y mantenerse de forma independiente a los otros objetos contenidos en la aplicacin.
Clases:
Una Clase es un proyecto, o prototipo, que define los atributos y los mtodos comunes a un cierto tipo de objetos. Un poco ms sencillo: las clases son las matrices de las que luego se pueden crear mltiples objetos del mismo tipo. La clase define las variables y los mtodos comunes a los objetos de ese tipo, pero luego, cada objeto tendr sus propios valores y compartirn los mismos mtodos. Primero debemos crear una clase antes de poder crear objetos o ejemplares de esa clase.
Mensajes:
Para poder crear una aplicacin necesitars ms de un objeto, y estos objetos no pueden estar aislados unos de otros, pues bien, para comunicarse esos objetos se envan mensajes. Los mensajes son simples llamadas a las funciones o mtodos del objeto, con l se quiere comunicar para decirle que haga cualquier cosa. Podramos hacer la representacin de un objeto del mundo real? Por ejemplo el amor? La alegra?. Quiz nos sea difcil en los objetos abstractos, pero de una u otra forma lograramos hacerlo. Desde el punto de vista computacional es posible representar lgicamente cualquier objeto del mundo real. Para una solucin software un objeto es un elemento especial de informacin que se construye a partir de una estructura de datos y una estructura funcional. La estructura funcional opera directamente sobre la estructura de datos y esta a su vez solo puede ser manipulada por la estructura funcional del mismo objeto. En la programacin estructurada la estructura de datos es totalmente independiente de la parte funcional o procedimental; es mas podramos afirmar que lo nico estructurado en la programacin estructurada son los procedimientos pero los datos estn muy aislados. La programacin orientada a objetos se acerca mas al mundo real estructurando en un mismo elemento de informacin datos y procedimientos. Caractersticas de datos: Por ejemplo hora, minutos y segundos Caractersticas funcionales: Por ejemplo mostrar la hora, actualizar la hora y siendo mas ambiciosos mostrar la hora en segundos, mostrar la hora en minutos o sumar y restar horas.
INTRODUCCIN Y ELEMENTOS BSICOS DE PROGRAMACIN ORIENTADA A OBJETOS (POO) Introduccin
Actualmente una de las reas ms importantes en la industria y el mbito acadmico es la orientacin a objetos. La orientacin a objetos promete mejoras de amplio alcance en la forma de diseo, desarrollo y mantenimiento del software ofreciendo una solucin a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo del software: la falta de portabilidad del cdigo y reusabilidad, cdigo que es difcil de modificar, ciclos de desarrollo largos y tcnicas de codificacin no intuitivas. Un lenguaje orientado a objetos ataca estos problemas. Tiene tres caractersticas bsicas: debe estar basado en objetos, basado en clases y capaz de tener herencia de clases. Muchos de los lenguajes pueden cumplir uno o dos de estos puntos, pero es muy difcil que se cumplan los tres, el inconveniente ms complicado de disear es la herencia. El concepto de programacin orientada a objetos (POO) no es nuevo, lenguajes clsicos como SmallTalk se basan en ella. Dado que la POO, se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolucin del problema se realiza en trminos de objetos. Un lenguaje se dice que est basado en objetos si soporta como una caracterstica fundamental del mismo. Ventajas de POO
La OOP proporciona las siguientes ventajas sobre otros lenguajes de programacin Uniformidad. Ya que la representacin de los objetos lleva implica tanto el anlisis como el diseo y la codificacin de los mismos. Comprensin. Tanto los datos que componen los objetos, como los procedimientos que los manipulan, estn agrupados en clases, que se corresponden con las estructuras de informacin que el programa trata. Flexibilidad. Al tener relacionados los procedimientos que manipulan los datos con los datos a tratar, cualquier cambio que se realice sobre ellos quedar reflejado automticamente en cualquier lugar donde estos datos aparezcan. Estabilidad. Dado que permite un tratamiento diferenciado de aquellos objetos que permanecen constantes en el tiempo sobre aquellos que cambian con frecuencia permite aislar las partes del programa que permanecen inalterables en el tiempo. Reusabilidad. La nocin de objeto permite que programas que traten las mismas estructuras de informacin reutilicen las definiciones de objetos empleadas en otros programas e incluso los procedimientos que los manipulan. De esta forma, el desarrollo de un programa puede llegar a ser una simple combinacin de objetos ya definidos donde estos estn relacionados de una manera particular.
Desventajas de la tecnologa orientada a objetos.
A pesar de que las ventajas de la programacin orientada a objetos superan a las limitaciones de la misma, podemos encontrar algunas caractersticas no deseables en sta. Limitaciones para el programador. No obstante que la tecnologa orientada a objetos no es nueva, un gran porcentaje de programadores no estn familiarizados con los conceptos de dicha tecnologa. En otras palabras, la lgica de la programacin estructurada sigue siendo predominante en la mayora de los desarrolladores de software, despus de haber revisado de forma breve los principios de la programacin orientada a objetos, nos es claro que en sta se requiere una lgica de pensamiento totalmente diferente a la lgica comnmente utilizada para la programacin estructurada. Tamao excesivo en las aplicaciones resultantes. La gran mayora de los equipos de cmputo cuentan con capacidades tanto de almacenamiento como de memoria lo suficientemente buena como para ejecutar la mayora de las aplicaciones que puedan desarrollarse con la tecnologa orientada a objetos, sin embargo existen casos en los que lo anterior no se cumple. Una de las desventajas de la programacin orientada a objetos es que cuando se heredan clases a partir de clases existentes se heredan de forma implcita todos los miembros de dicha clase aun cuando no todos se necesiten, lo que produce aplicaciones muy grandes que no siempre encajan en los sistemas con los que se disponga. Velocidad de ejecucin. Esto tiene que ver, en cierto modo, con el punto anterior, una aplicacin innecesariamente pesada en muchas ocasiones es ms lenta de ejecutar que una aplicacin conformada nicamente por los mdulos necesarios. Evolucin de la programacin POO (Programacin Orientada a Objetos)es un importante conjunto de tcnicas que se pueden utilizar para hacer el desarrollo de programas ms eficientes mientras se mejora la facilidad de los programas resultantes. En esencia, POO es un nuevo medio de enfocar el trabajo de programacin. Sin embargo, a fin de comprender lo que es la POO, es necesario comprender sus races. As pues, comenzaremos por examinar la historia del proceso de programacin analizada cmo evolucin POO y deduciendo, en consecuencia, por qu es tan importante este concepto. Comparacin entre la Programacin orientada a Objetos y la programacin estructurada. Paradigma Estructurado La Programacin estructurada fija su atencin en el conjunto de acciones que manipulan el flujo de datos, mientras que la POO se fija en la interrelacin que existe entre los datos y las acciones a realizar con ellos.
PROPIEDADES BSICAS DE LA PROGRAMACIN ORIENTADA A OBJETOS Abstraccin
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 los estn, una variedad de tcnicas son requeridas para ampliar una abstraccin. La abstraccin es una especificacin del sistema que enfatiza sobre algunos de los detalles o propiedades del mismo mientras suprime a otros. Una buena abstraccin es aquella que enfatiza sobre detalles significativos al lector y al usuario y suprime detalles que son al menos por el momento irrelevantes o que causan distraccin. Encapsulacin Tambin llamada "ocultacin de la informacin", esto asegura que los objetos no pueden cambiar el estado interno de otros objetos de maneras inesperadas; solamente los propios mtodos internos del objeto pueden acceder a su estado.
Cada tipo de objeto expone una interfaz a otros objetos que especifica cmo otros objetos pueden interactuar con l. Algunos lenguajes resaltan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstraccin. Para el caso del termmetro tal vez slo se requieren 3 mtodos: activarlo, desactivarlo y pedirle la temperatura. Un objeto es la abstraccin de algo que forma parte del dominio del problema reflejando las posibilidades de un sistema para mantener la informacin sobre l. Representa una entidad real o abstracta con un papel bien definido dentro de nuestro mundo y con dos caractersticas que son sus atributos y su comportamiento. Modularidad
Proceso de crear partes de un todo que se integran perfectamente entre s para que funcionen por un objetivo general, y a las cuales se les pueden agregar ms componentes que se acoplen perfectamente al todo, o extraerle componentes sin afectar su funcionamiento. En el caso que se requiera actualizar un mdulo, no hay necesidad de hacer cambios en otras partes del todo. Un ejemplo clsico es un conjunto de mdulos que, al integrarlos conforman un armario, el cual puede agregarle ms funcionalidad si se le agregan ms mdulos, o al contrario. Tambin se puede cambiar su finalidad si se acomodan esos mdulos para darle otro objetivo: volverlo una mesa. Jerarqua La mayora de las personas ve de manera natural nuestro mundo como objetos que se relacionan entre s de una manera jerrquica. Por ejemplo, un perro es un mamfero, y los mamferos son animales, y los animales seres vivos... Del mismo modo, las distintas clases de un programa se organizan mediante la jerarqua. La representacin de dicha organizacin da lugar a los denominados rboles de herencia:
Mediante la herencia una clase hija puede tomar determinadas propiedades de una clase padre. As se simplifican los diseos y se evita la duplicacin de cdigo al no tener que volver a codificar mtodos ya implementados. Polimorfismo
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 referente. 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++. En programacin orientada a objetos se denomina polimorfismo a la capacidad del cdigo de un programa para ser utilizado con diferentes tipos de datos u objetos. Tambin se puede aplicar a la propiedad que poseen algunas operaciones de tener un comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican.