Ver Mensaje Individual
  #7  
Antiguo 24-04-2006
Avatar de Alcolea
Alcolea Alcolea is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santiago de Cuba, Cuba
Posts: 100
Reputación: 19
Alcolea Va por buen camino
Lightbulb Las clases y los objetos en Delphi

Hola a atodos:

Me entusiasma el tema y voy a meter mi cuchareta. Te recomiendo encarecidamente que leas "La Cara oculta de Delphi 4" a partir de la página 127 donde comienza a explicar todo lo relacionado con la POO, o sea, la creación de clases, las relaciones que existen entre unas y otras a través de la herencia y todo un conjunto de cuestiones que es preciso dominar para enredarse con el tema de manera apropiada.

Como ya alguien te explicó las clases las pudieras ver como "moldes" que definen el comportamiento de todos los objetos que se instansien de ella, puedes ver a todos los botones de tu aplicación como "variables" pertenecientes al tipo TButton.

Un ejemplo sencillo:

Una clase para manejar empleados (esto lo vi en un libroy lo modifiqué, no está completo pero te ayudará)


TEmpleado = Class;
private
Nombre : String;
Cargo : String;
FechaIng : Date;
Salario : Real;

{En la sección private he declarado los atributos de la clase, algo así como las propiedades que caracterizarían a cada empleado, si piensas hacer una clase para manejar gráficos quizás debas declarar como uno de los atributos de esta un objeto Canvas. Todo lo que se declare en la sección private no podrá ser accedido desde otra Unit, a no ser a través de algún método de la clase destinado al efecto}

public
constructor CreaEmpleado(ANombre, ACargo : String; AFechaIng : Date; Salario : Real);

{El constructor, como te explicaron es un "método especial" que hace lo que ya te dijeron, y que puede haber varios dentro de una clase ya que un objeto puede crearse de varias formas, digamos que puedes cargarlo desde los datos guardados en el disco duro o crearlo desde cero en tiempo de ejecución, o puedes no implementar un constructor si no es necesario ya que todas las clases tiene uno predefinido llamado create el cual inicializa todos los valores ,de la clase que sea que estés creando, desde cero, es decir, si es un valor lógico comienza como false; si es entero, en cero; una enumeración, por el primer valor de la enumeración; una string, con la cadena vacía; etc.}

procedure SetNombre(ANombre : String);
procedure SetNombre(ACargo : String);
procedure EliminarEmpleado;
procedure CalcularAumento;

end;

{Además del constructor tendrás que declarar los métodos de tu clase, y esto una de las cosas que marca la diferencia entre un registro y un objeto, los objetos llevan encapsulados dentro de si las funciones que hacen, quiero decir que donde quiera que lo llames le puedes aplicar al empleado que sea el método para calcular el aumento de la misma manera que al objeto Edit1 le aplicas el método Clear para borrar el texto (Edit1.Clear) ( Empleado1.Calcular Aumento ) , no sabemos que líneas de código tiene el método Clear pero funciona, después que hagas tu clase no te acordarás que fue lo que pusiste a cada método pero si la hiciste bien no te hará falta recordarlo, solo lamas el método y ya está }

implementation

{Acá en la implementación es donde se pone a cada método declarado el código ejecutable que tendrá. Observa que delante del nombre de cada método se pone el nombre de la clase a la que pertenece, pues si implementas mas de una clase en la Unit no indicar a que clase pertenece el método puede traer problemas por lo que esto es obligatorio}

procedure TEmpleado.SetNombre(ANombre : String);
begin
Nombre := ANombre
end;

procedure TEmpleado.SetNombre(ACargo : String);
begin
Cargo := ACargo
end;

////////////////////////////////////////////////////////////////////

¿Cómo utilizar la clase?... de la misma manera que utilizas las clases que ya existen, declarar los objetos instancias de la clase de las variadas maneras que ya te explicaron y no olvidar llamar a alguno de los constructores posibles para darle vida a los objetos, solo después de creados podrás aplicar algunos de los métodos.

Espero que te pueda servir de algo mi explicación

Mi correo ruben06175@scu.jovenclub.cu
Responder Con Cita