Mecanismos básicos
Los mecanismos básicos de la orientación de objetos son los objetos, mensajes y los métodos, clases y variables de instancia (o modelos) de herencia. Todos los sistemas que merecen la descripción de orientado a objetos contienen estos mecanismos esenciales, aunque los mecanismos pueden no estar realizados (o denominados) exactamente de la misma forma. A continuación, se presentan algunas definiciones que ayudan a entender estos mecanismos.
Objetos
Un programa tradicional consta de procedimientos y datos. Un programa orientado a objetos consta solamente de objetos que contienen tanto los procedimientos como los datos. Por decirlo de otra forma, los objetos son módulos que contienen los datos y las instrucciones que operan sobre esos datos. Así, dentro de los objetos residen los datos de los lenguajes convencionales, como, por ejemplo, números, matrices (arrays o arreglos), cadenas de caracteres y registros, así como cualquier función, instrucción o subrutina que opere sobre ellos. Los objetos, por tanto, son entidades que tienen atributos (datos) y formas de comportamiento (procedimientos) particulares.
Los Objetos llevan los nombres los elementos de interés desde el dominio de la aplicación. Por ejemplo, un automóvil es un objeto, los objetos proporcionan el comportamiento deseado. Un automóvil puede aceptar el ser encendido, acelerar, u otras órdenes que le competen al objeto automóvil.
Desde la perspectiva del programador, los objetos son módulos de una aplicación que funcionan juntos para proporcionar una funcionalidad generalidad.
Las aplicaciones pueden constar de diferentes clases de objetos. Un objeto pasivo es el que actúa solamente bajo petición. Los objetos activos efectúan el seguimiento de los sucesos que ocurren en una aplicación y actúan de forma autónoma. A veces denominados agentes, los objetos activos inician acciones como alerta al usuario sobre la inconsistencia de una factura o recordarle al escritor que grabe los cambios de un documento.
Mensajes y Métodos
A diferencia de los elementos de datos pasivos en los sistemas tradicionales, los objetos tienen la posibilidad de actuar. La acción sucede cuando un objeto recibe un mensaje, que es, una solicitud que pide al objeto que se comporte de alguna forma. Cuando se ejecutan los programas orientados a objetos, los objetos reciben, interpretan y responden a mensajes procedentes de los objetos. Por ejemplo, cuando un usuario solicita a un objeto llamado documento se imprima a sí mismo, el documento puede enviar un mensaje al objeto impresora solicitando un lugar en la cola de impresión; el objeto impresora puede devolver un mensaje al documento solicitando información del formato, y así sucesivamente. Los mensajes pueden contener información de para clarificar una solicitud; por ejemplo, el mensaje solicitando que un objeto se imprima a sí mismo podría incluir el nombre de la impresora. Finalmente, el emisor del mensaje no necesita conocer la forma en que el objeto receptor está llevando a cabo su solicitud. En otras palabras, cuando el objeto documento recibe el mensaje imprimir, documento sabe exactamente lo que tiene que hacer. El objeto que envía el mensaje ni sabe ni le importa como se realiza la impresión, solamente conoce que está sucediendo.
El conjunto de mensajes al que unos objetos pueden responder se llama protocolo (Eventos) del objeto. El protocolo para un icono puede constar de mensajes invocados por la pulsación del botón del ratón cuando el usuario localiza un puntero sobre un icono.

Los procedimientos llamados métodos residen dentro del objeto y determinan cómo actúa el objeto cuando recibe un mensaje. Además, las variables modelo o de instancia almacenan información o datos locales del objeto. Los métodos se ejecutan en respuesta a mensajes y manipulan los valores de las variables de modelo. De hecho, los métodos proporcionan el único mecanismo para cambiar los valores de las variables modelo. Los métodos pueden enviar también mensajes a otros objetos solicitando acción o información.
Los mensajes que recibe un objeto son los únicos conductos que conectan al objeto al objeto con el mundo exterior. Solamente un método del propio objeto puede disponer de los datos del interior del mismo para su manipulación . Estas características de los objetos confieren a la orientación a objetos su ventajas: La orientación a objetos fomenta la modularidad haciendo muy claras las fronteras entre objetos, explícita la comunicación entre los mismos y oculta los detalles de la realización.
Cuando se ejecuta un programa orientado a objetos , ocurren tres sucesos. En primer lugar, se crean los objetos cuando se necesitan.
Segundo, los mensajes se mueven de un objeto a otro (o desde el usuario a un objeto) a medida que el programa procesa internamente información o responde a la entrada del usuario. Finalmente, se borran los objetos cuando ya no son necesarios y se recupera memoria.
Clases, Subclases y objetos
Muchos objetos diferentes pueden actuar de formas muy similares. Una clase es una descripción de un conjunto de objetos casi idénticos. Una clase consta de métodos y datos que resumen las características comunes de un conjunto de objetos. La posibilidad de abstraer métodos y descripciones de datos comunes de un conjunto de objetos y almacenarlos en una clase es esencial para la potencia de la orientación de objetos. Definir clases significa situar código reutilizable en un depósito común en lugar de volver expresarlo otra vez y otra. En otras palabras, las clases contienen los anteproyectos para crear objetos. Finalmente, la definición una clase ayuda a clarificar la definición de un objeto : un objeto es un modelo o instancia de una clase.

Los objetos se crean cuando se recibe un mensaje solicitando creación por la clase padre. El nuevo objeto toma los métodos y datos de su clase padre. Los datos son de formas , variables de clase y variables modelo de instancia. Las variables de clase tienen valores asociados únicamente con cada instancia u objeto creado a partir de una clase.
Este ejemplo muestra la definición de una clase y el ejemplo siguiente (herencia) ilustra la esta jerarquía de las clases del automóvil. Utilizando subclases, los programadores orientados a objetos describen las aplicaciones como un conjunto de módulos generales o abstractos. Los métodos y datos comunes se elevan tan alto como sea posible de forma que sean accesibles a todas las subclases relacionadas.
A veces se denomina a la subclases como clases derivadas . En otras ocasiones los términos padre e hija se utilizan para indicar la relación entre una clase y una subclase. Las clases padre están localizadas por encima de las clases hijas en la jerarquía. Las clases más altas en jerarquías se denominan las superclases.
Herencia
La herencia es el mecanismo para compartir automáticamente métodos y datos entre clases, subclases y objetos. Un mecanismo potente que no se encuentra en sistemas procedimentales. La herencia permite a los programadores crear nuevas clases programando solamente las diferencias con la clase padre. Cuando un programador declara que automóvil es una subclase de vehículo, todos los métodos y variables modelo asociados con texto son heredados automáticamente por automóvil. Si la clase contiene métodos que son inadecuados para la subclase automóvil, entonces el programador puede obviar estos métodos escribiendo unos nuevos y almacenándolos como parte de la clase automóvil. Debido a la herencia, los programas orientados a objetos constan de taxonomías, árboles o jerarquías de clase que , por medio la subclasificación, llegan a ser más específicas.
Herencia simple y herencia múltiple son dos tipos de mecanismos de herencia utilizados normalmente en la programación orientada a objetos. Con la herencia simple, una subclase puede heredar datos y métodos de una clase simple así como añadir o sustraer comportamiento por sí misma. La herencia múltiple se refiere a la posibilidad de una subclase de adquirir los datos y métodos de más una clase. La herencia múltiple es útil al construir comportamiento compuesto a partir de más de una rama de una jerarquía de clases.
En resumen, los mecanismos básicos de la orientación a objetos conducen a una particular visión sobre el concepto de dar forma al mundo. Los elementos y su comportamiento se identifican como objetos. El comportamiento se realiza con métodos y datos almacenados en el objeto. Los mensajes obtienen el comportamiento de un objeto invocado a un método del mismo.
Los objetos con métodos y variables modelo comunes se reúnen en una clase. Las clases se organizan en jerarquías y los mecanismos de herencia proporcionan automáticamente a cada subclase los métodos y datos de la clases padre. Las subclases se crean programando las diferencias entre las clases disponibles en una librería y los requisitos particulares de la aplicación.
