Se trata de un ente abstracto usado en programación que permite separar los
diferentes componentes de un programa, simplificando así su elaboración, depuración y posteriores mejoras. Los objetos integran, a diferencia de los métodos procedurales, tanto los procedimientos como las variables y datos referentes al objeto. A los objetos se les otorga ciertas características en la vida real. Cada parte del programa que se desea realizar es tratado como objeto, siendo así estas partes independientes las unas de las otras. Los objetos se componen de 3 partes fundamentales: métodos, eventos y atributos. Que es un atributo Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. Las variables de instancia también denominados miembros dato, son declaradas en la clase, pero sus valores son fijados y cambiados en el objeto. Mensajes Aunque los objetos se han de diferenciar claramente en una aplicación, estos se han de poder comunicar para poder trabajar en conjunto y construir así aplicaciones. Esto se hace posible a través de lo que se denomina paso de mensajes. Cuando un objeto quiere comunicarse con otro lo que hace es enviarle un mensaje con los datos que desea transmitir. En el símil del coche, al apretar el claxon, el objeto claxon envía un mensaje a la bocina indicándole que haga sonar cierto sonido. La potencia de este sistema radica en que el objeto emisor no necesita saber la forma en que el objeto receptor va a realizar la acción. Simplemente este la ejecuta y el emisor se desentiende del cómo; de hecho, ni le importa, solo tiene conocimiento de que se está realizando. Para que todo esto sea posible es necesario una buena programación de los eventos y de los métodos de cada objeto. El conjunto de mensajes a los que un objeto puede responder se denomina protocolo del objeto. Instancia Una instancia (en inglés, instance) es la particularización, realización específica u ocurrencia de una determinada clase, entidad (modelo entidad-relación) o prototipo. En general, cuando se ejecuta un programa en un computador, se dice que éste se instancia. En los lenguajes de programación orientada a objetos un objeto es una instancia de una clase. Esto es, un miembro de una clase que tiene atributos en lugar de variables. En un contexto del mundo real, podríamos pensar en "Casa" como una clase y en un chalet como una instancia de esta e incluso otro chalet u otro tipo de casa como puede ser un apartamento como otra instancia.1 En este caso no importa el tipo de casa, si fuese de nuestro interés modelarlo y especificarlo, diferenciaríamos entre un chalet y un apartamento con dos clases, entidades o prototipos diferentes, c.f. herencia (informática). Clases: Descripción de objeto. Consta de una serie de métodos y datos que resumen las características de este objeto. Definir clases permite trabajar con código reutilizable. Puesto que desde una clase se puede crear una instancia y así reutilizar el código escrito para este si tener que volver a escribir el código para la instancia. La instancia toma el patrón de la clase padre. Sin embargo, las variables son independientes. Herencia: Mecanismo para compartir automáticamente métodos y datos entre clases, subclases y objetos. Permite crear nuevas clases introduciendo las variaciones con respecto a su clase padre. Herencia simple: una subclase puede heredar datos y métodos de una clase simple así como añadir o sustraer ciertos comportamientos. Herencia múltiple: posibilidad de adquirir métodos y datos de varias clases simultáneamente. Encapsulación: Define el comportamiento de una clase u objeto que tiene dentro de él todo tipo de métodos y datos pero que solo es accesible mediante el paso de mensajes. y los datos a través de los métodos del objeto/clase. Polimorfismo: Los objetos responden a los mensajes que se les envían. Un mismo mensaje puede ser interpretado o dar paso a distintas acciones según qué objeto es el destinatario. Con este sistema el emisor se desentiende de los detalles de la ejecución (aunque el programador ha de saber en todo momento cuales son las consecuencias de ese mensaje). abstracción puede definirse como: las características específicas de un objeto, aquellas que lo distinguen de los demás tipos de objetos y que logran definir límites conceptuales respecto a quien está haciendo dicha abstracción del objeto. Una abstracción se enfoca en la visión externa de un objeto, separa el comportamiento específico de un objeto, a esta división que realiza se le conoce como la barrera de abstracción, la cual se consigue aplicando el principio de mínimo compromiso. Características de POO Es un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase, y cuyas clases son, todas ellas miembros de una jerarquía de clases unidas mediante relaciones de herencia. Un lenguaje es orientado a objetos si cumple con lo siguiente: 1. Soporta objetos que son abstracciones de datos con una interfaz de operaciones con nombre y un estado local oculto. 2. Los objetos tienen un tipo asociado (la clase). 3. Los tipos (clases) pueden heredar atributos de los súper tipos (superclases).
Para todo lo orientado a objetos el marco de referencia conceptual es el MODELO
DE OBJETOS, para ello tenemos 4 elementos FUNDAMENTALES los cuales son: