NOTA: La traducción de esta documentación es un esfuerzo personal y voluntario, no es un documento oficial de Sun Microsystems ni Oracle ni está patrocinado por ninguna de estas empresas. Los documentos originales (en inglés) están disponibles en: http://docs.oracle.com/javase/tutorial/.
Dirija cualquier comentario, petición, felicitación, etc. a tutorialesjava_@RROBA_codexion.com.
Si desea ayudar a mantener en funcionamiento esta web, colaborar con la traducción de estos documentos o necesita que se traduzca algún capítulo en concreto puede realizar una donación directa mediante Paypal:
¿Qué es un objeto? (Los tutoriales Java™ > El lenguaje Java > Conceptos de la programación orientada a objetos)
Ruta: El lenguaje Java
Lección: Conceptos de la programación orientada a objetos
¿Qué es un objeto?
Página inicial > El lenguaje Java > Conceptos de la programación orientada a objetos
¿Qué es un objeto?
Los objetos son la clave para entender la tecnología orientada a objetos. Si mira a su alrededor ahora mismo se encontrará con muchos ejemplos de objetos del mundo real: su perro, su escritorio, su televisor, su bicicleta.

Los objetos del mundo real comparten dos características: Todos tienen estado y comportamiento. Los perros tienen estado (nombre, color, raza, hambriento) y comportamiento (ladrando, buscando, meneando la cola). Las bicicletas también tienen un estado (marcha actual, cadencia de pedaleo actual, velocidad actual) y comportamiento (cambio de marcha, cambio de cadencia de pedaleo, frenar). Identificar el estado y el comportamiento de los objetos del mundo real es una gran ayuda para empezar a pensar en términos de programación orientada a objetos.

Tómese un momento ahora mismo para observar los objetos del mundo real que hay a su alrededor. Para cada uno de los objetos que ve, hágase dos preguntas: «¿En qué posibles estados puede estar este objeto?» y «¿Qué posibles comportamientos puede realizar?»". Asegúrese de escribir sus observaciones. Mientras lo haga, verá que los objetos del mundo real varían en complejidad, su lámpara de escritorio puede tener solo dos estados (encendido y apagado) y dos posibles comportamientos (encender y apagar), pero su radio tendrá más estados (encendido, apagado, volumen actual, emisora actual) y comportamientos (encender, apagar, subir volumen, bajar volumen, buscar y sintonizar). También observará que algunos objetos, a su vez, también contendrán otros objetos. Todas estas observaciones del mundo real son reproducibles en el mundo de la programación orientada a objetos.

A circle with an inner circle filled with items, surrounded by gray wedges representing methods that allow access to the inner circle.

Un objeto software.

Los objetos software son conceptualmente similares a los objetos del mundo real: también consisten de estado y comportamiento. Un objeto almacena su estado en campos («variables» en algunos lenguajes de programación) y muestra su comportamiento a través de métodos («funciones» en algunos lenguajes de programación). Los métodos operan sobre el estado interno del objeto y sirven como el mecanismo principal para la comunicación entre objetos. La ocultación del estado interno y requerir que toda interacción se realice a través de los métodos de un objeto se conoce como encapsulación de datos — un principio fundamental de la programación orientada a objetos.

Piense, por ejemplo, en una bicicleta:

A picture of an object, with bibycle methods and instance variables.

Una bicicleta modelada como un objeto software.

Al atribuir el estado (velocidad actual, cadencia de pedaleo actual y marcha actual) y proporcionar métodos para cambiar ese estado, el objeto mantiene el control sobre cómo se permite al mundo exterior usarlo. Por ejemplo, si la bicicleta solamente tiene 6 marchas, un método que cambie de marcha podrá rechazar cualquier valor que sea inferior a 1 o superior a 6.

Al agrupar código en objetos software individuales se obtienen ciertos beneficios:

  1. Modularidad: El código fuente de un objeto se puede escribir y mantener independientemente del código fuente de otros objetos. Una vez creado, un objeto se puede pasar fácilmente de un lado al otro del sistema.
  2. Ocultación de información: Al interactuar solamente con los métodos de un objeto los detalles de su implementación interna permanecen ocultas al mundo exterior.
  3. Reutilización de código: Si un objeto ya existe (quizás escrito por otro desarrollador de software), puede utilizar ese objeto en su programa. Esto permite que un especialista implemente/compruebe/depure objetos específicos para una tarea, en los que luego podrá confiar en su propio código.
  4. Conectividad y facilidad de depuración: Si un objeto en concreto resulta ser problemático podrá simplemente eliminarlo de su aplicación y «conectar» un objeto distinto para reemplazarlo. Esto es análogo a la reparación de problemas mecánicos en el mundo real. Si rompe un tornillo, reemplaza el tornillo, no la máquina entera.
Pagina anterior: Conceptos de la programación orientada a objetos
Página siguiente: ¿Qué es una clase?