martes, 9 de diciembre de 2008

Conceptos Básicos de la Orientación a Objetos

La orientación a objetos se basa en conceptos como clase, objeto, herencia y polimorfismo, pero también en otros muchos. En esta sección se intenta, sin entrar en detalles, realizar una breve descripción de los conceptos más importantes que existen en el modelado orientado a objetos.


  • Clase: Es una descripción de un conjunto de objetos similares. Por ejemplo la clase Coches. Una clase contiene los atributos y las operaciones sobre esos atributos que hacen que una clase tenga la entidad que se desea.
  • Objeto: Un objeto es una cosa, generalmente extraída del vocabulario del espacio del problema o del espacio de la solución. Todo objeto tiene un nombre (se le puede identificar), un estado (generalmente hay algunos datos asociados a él) y un comportamiento (se le pueden hacer cosas a objeto y él puede hacer cosas a otros objetos). Un objeto de la clase Coches puede ser un Ford Focus.
  • Atributo: Es una característica concreta de una clase. Por ejemplo atributos de la clase Coches pueden ser el Color, el Numero de Puertas...
  • Método: Es una operación concreta de una determinada clase. Por ejemplo de la clase Coches podríamos tener un método arrancar() que lo que hace es poner en marcha el coche.
  • Instancia: Es una manifestación concreta de una clase (un objeto con valores concretos). También se le suele llamar ocurrencia. Por ejemplo una instancia de la clase Coches puede ser: Un Ford Focus, de color Gris con 3 puertas
  • Polimorfismo: Hace referencia a la posibilidad de que dos métodos implementen distintas acciones, aun teniendo el mismo nombre, dependiendo del objeto que lo ejecuta o de los parámetros que recibe
  • Herencia: Es un mecanismo mediante el cual se puede crear una nueva clase partiendo de una existente, se dice entonces que la nueva clase hereda las características de la clase existentes aunque se le puede añadir más capacidades (añadiendo datos o capacidades) o modificar las que tiene. Por ejemplo supongamos que tenemos la VehiculosDeMotor. En esta clase tenemos los siguientes atributos: Cilindrada y Numero de Ruedas, y el método acelerar(). Mediante el mecanismo de herencia podemos definir la clase Coches y la clase Motos. Estas dos clases heredan los atributos Cilindrada y Numero de Ruedas de la clase VehículosDeMotor pero a su vez tendrán atributos propios (como hemos dicho antes el Numero de Puertas es un atributo propio de la clase Coches que no tienen sentido en la clase Motos). Se puede decir que Coches extiende la clase VehículosDeMotor, o que VehículosDeMotor es una generalización de las clases Coches y Moto