Objeto es el concepto clave de la Programación Orientada a Objetos, la idea de objeto es similar a la del mundo real, un objeto puede ser una silla, una mesa. Tu perro es un objeto.
Los objetos tienen dos caracterÃsticas: Un estado y un comportamiento. Fijate que por ejemplo tu perro tiene un estado: nombre, color, raza, altura, etc. y un comportamiento: ladrar, cavar pozo, llorar, dormir, comer, etc.
Un auto es un objeto. También tiene un estado: Cantidad de puertas, color, tamaño, etc. y un comportamiento: acelerar, frenar, subir cambio, bajar cambio, girar izq., girar der., etc.
Entonces podemos definir a un objeto en POO, como un conjunto de datos y funciones relacionadas. A las funciones de los objetos, tales como acelerar en el caso del auto, de aquà en más las llamaremos métodos, a los datos los llamaremos atributos.
Los objetos en programación, son modelados observando objetos del mundo real, por ejemplo implementamos el objeto "perro" dentro de nuestro programa definiendo los atributos y métodos del objeto perro real.
El objeto "Auto" se puede representar gráficamente como sigue:
Un ejemplo mas complicado de un objeto podrÃa ser el siguiente:
Objeto: Cuenta bancaria
Atributos: tipo, titular, saldo.
Métodos: Depositar, Extraer.
Aquà se ve la necesidad de que el atributo "saldo" sea solo accesible a través de los métodos "Depositar" y "Extraer" por una cuestión de seguridad, encapsulamiento y para evitar comportamientos indeseados.
¿Qué es una clase?
Una clase es algo abstracto que define la "forma" del objeto, se podrÃa hablar de la clase como el molde de los objetos.
En el mundo real existen objetos del mismo tipo, por ejemplo tu bicicleta es solo una mas de todas las bicicletas del mundo. Entonces dirÃamos que tu bicicleta es una instancia de la clase "Bicicleta". Todas las bicicletas tienen los atributos: color, cantidad de cambios, dueño y métodos: acelerar, frenar, pasar cambio, volver cambio.
Las fabricas de bicicletas utilizan moldes para producir sus productos en serie, de la misma forma en POO utilizaremos la clase bicicleta (molde) para producir sus instancias (objetos).
Los objetos son instancias de clases.
Ejemplo: PodrÃamos tener la clase Perro, una instancia de esta clase podrÃa ser el objeto perro llamado "Chicho". La clase Perro especificarÃa que todos los perros tendrÃan un nombre, color de pelo, una altura. Mientras que la instancia "Chicho" contendrá valores especÃficos para cada uno de estos atributos.
Podemos definir a una clase como una plantilla que define variables y métodos comunes para todos los objetos de cierto tipo.
Existe un lenguaje de modelado llamado UML mediante el cual podemos representar gráficamente todo un sistema orientado a objetos utilizando rectángulos, lÃneas y otro tipo de sÃmbolos gráficos. Según UML, la clase "Cuenta Bancaria" antes mencionada se representará gráficamente como sigue:
Mensajes
Un objeto por si solo no tiene mucho significado. Ejemplo: el objeto "bicicleta" no tiene mucho sentido si no interactúa con un objeto "persona" que pedalee.
La interacción entre objetos se produce mediante mensajes. Los mensajes son llamados a métodos de un objeto en particular.
Podemos decir que el objeto persona envÃa el mensaje "girar a la izquierda" al objeto bicicleta.
Los mensajes pueden contener parámetros. Por ejemplo teniendo un método en la clase bicicleta llamado "Girar" que recibe como parámetro la dirección (derecha o izquierda).
Un mensaje esta compuesto por los siguientes tres elementos:
- El objeto destino, hacia el cual el mensaje es enviado
- El nombre del método a llamar
- Los parámetros solicitados por el método
Beneficios de los mensajes
Como todo lo que un objeto puede hacer esta expresado mediante métodos, el envÃo de mensajes soporta todas las posibles interacciones entre objetos.
Para enviar o recibir mensajes, los objetos no necesitan formar parte del mismo proceso, ni siquiera de la misma máquina.
Herencia
Los sistemas orientados a objetos permiten definir clases en término de otras clases. Por ejemplo ovejero alemán y caniche son diferentes razas de perros. En la terminologÃa orientada a objetos "Ovejero Alemán" y "Caniche" son subclases de la clase perro. De forma similar Perro es la superclase de "Ovejero Alemán".
Entonces tenemos la siguiente jerarquÃa de clases:
En UML se representa la relación de herencia mediante una flecha.
Cada subclase hereda los atributos de la superclase. Tanto la clase "Ovejero Alemán" como "Caniche" tendrán los atributos nombre, color de pelo, altura definidos en la clase Perro.
Una subclase no esta limitada únicamente a los atributos de su superclase, también puede tener atributos propios, o redefinir algunos definidos anteriormente en la superclase.
No se esta limitado tampoco a un solo nivel de herencia, se pueden tener todos los que se consideren necesarios.
Ejemplo:
Clase Empleado hereda de clase Persona, y esta a su vez hereda de clase Animal.
Las subclases proveen un comportamiento especializado sobre los elementos comunes provistos por las superclases. Gracias a la herencia, los programadores pueden rehusar código una y otra vez.
Enlaces
Estos son los conceptos básicos de un programa orientado a objetos. Para profundizar en el tema, visitar los siguientes links: