domingo, 2 de diciembre de 2007

Apuntes .NET (C#) - Chapter 2 - Conceptos basicos sobre la POO

La Programacion Orientada a Objetos, a partir de ahora, POO, es uno de los paradigmas de programacion a los que quizas cueste mas "dar el salto" en un principio, luego vereis que la cosa es coser y cantar. Voy a tomarme la explicacion de este punto bastante mas " a mi manera" y dejar la docencia en manos de profesionales. Vamos, que busqueis en google.

¿Que es un objeto?

Un objeto no es mas que unos datos de informacion, y las acciones que podemos realizar con esos datos, almacenadas en una misma entidad, un objeto. Asi un objeto "Caballo", podria tener datos como Raza, Color, Nombre, Edad, Hambre, Cansancio.....
y Metodos, o "Acciones que podemos efectuar sobre esos datos" como , Comer, Andar, HacerFiletes,... ¿que es muy abstracto? en eso consiste la cosa nenes que el ejemplo del coche esta muy visto xD



Herencia

Es la capacidad de un objeto para heredar datos y metodos de otro. Al que se le denomina objeto padre. En el caso del caballo, la herencia seria como un "es un", asi el caballo "Es Un" animal. Diriamos que el caballo hereda de animal (Si hubiera definido un objeto animal).
Para usar la herencia, es necesario que el objeto del que queremos heredar haya sido diseñado pensando en ello (Aunque no obligatorio, y depende con que lenguajes... xD).

En el entorno de ejecucion .NET todos los objetos heredan de una clase base denominada "Object" y solo existe la herencia simple de objetos (Un objeto solo puede ser derivado desde una clase base). Esto nos impide, lo que yo decia antes de que por ejemplo en C++ podemos heredar de la clase que nos salga de los webs.... a veces malo, a veces bueno. A eso de heredar de la clase que nos salga de los webs, esta gente de palabras finas lo llama "Herencia multiple". En la mayoria de los casos es mas seguro no usar la herencia multiple.

El entorno de ejecucion .NET permite la herencia multiple en forma de interfaces, que no pueden contener implementacion. Ya las trataremos...


Polimorfismo y funciones virtuales

Las funciones abstractas, o virtuales, permiten al programador usar polimorfismo para simplificar el codigo. Cuando hay una funcion virtual, el programador puede pasar una referencia a la clase abstracta en vez de a la derivada y el compilador escribira el codigo para llamar a la version apropiada de la funcion en tiempo de ejecucion.


public abstract class objeto1
{
public abstract void metodo1();
}

Las clases abstractas, se usan basicamente para englobar objetos de un mismo tipo, ya que como veis, no se le puede incluir cuerpo a un metodo abstracto. Aunque si hay otras maneras de que un objeto abstracto, suministre funciones utiles para otras clases, lo trataremos mas adelante.


Encapsulamiento y visibilidad

Cuando se crea un objeto se ha de tener en cuenta que datos queremos que el usuario del objeto "Toque" y cuales no. Los detalles que no son visibles al usuario se consideran Encapsulados. Normalmente intentaremos encapsular todo lo que se pueda por varias razones:

  • Reduce la posibilidad de que el usuario cambie o dependa de esos detalles en su propio codigo, ya que los cambios en el objeto podrian provocar problemas en dicho codigo.
  • Los cambios realizados en las partes publicas de un objeto deben mantenerse compatibles con las versiones anteriores. Cuanto mas visible sea la clase al usuario, mas dificil es conseguir llevar a cabo este punto.
  • Si tenemos muchos campos publicos, la depuracion es mas dificil.
Lo trataremos mas extendidamente cuando demos las clases, espero haber allanado el camino de alguien xD.

No hay comentarios:

Publicar un comentario