PDA

Ver la Versión Completa : Duda! donde crear una Classe¿?


kye_z
27-10-2004, 13:20:45
buenas,

mi duda la verdad es que es algo ... simple pero que me trae de cabeza...

estoy mirando lo de POO i me preguntaba que donde creais normalmente las classes i como.

Os dire mi opinion i corregirme si me ekivoco o si acierto o kualkier cosa que os pase por la cabesa...

Yo crearia la clase en un unit a parte sin formulario ni nada. (lo que no se es si las crearia todas alli o cada una en un unit distinto...)

Luego el como crearla esto ya no lo tengo mu claro... si podeis aportar un pequeño ejemplo.. pues me seria de bastante ayuda ( con un par de atributos i un par de funciones me conformaria...)

lo de utilizarla despues en los formularios i en la aplicacion en general.. ya ire investigando.. k poko a poco empiezo a tener las cosas claras...

muchissimas gracias de antemanoooo i por vuestra ayuda desinteressada!!!

delphi.com.ar
27-10-2004, 13:46:19
Os dire mi opinion i corregirme si me ekivoco o si acierto o kualkier cosa que os pase por la cabesa...Tratándose de un foro en español, te recomiendo escribir en este idioma :D

Yo crearia la clase en un unit a parte sin formulario ni nada. (lo que no se es si las crearia todas alli o cada una en un unit distinto...)Donde crear la clase, queda bajo criterio del programador... si es una clase que solo se va a usar dentro de una unit, tenga o no un "formulario", yo la crearía en esa unit. Si la clase va a ser utilizada desde diferentes unit, podría crearla solitaria en otra unit, o una unit que contenga varias clases...

Luego el como crearla esto ya no lo tengo mu claro... si podeis aportar un pequeño ejemplo.. pues me seria de bastante ayuda ( con un par de atributos i un par de funciones me conformaria...)
Con ver cualquiera de las units de Delphi, por ejemplo "classes" tienes unos cuantos ejemplos para observar.

Saludos!

kye_z
27-10-2004, 15:25:51
buenas,

he estado mirando la unit "classes" del delphi i mas o menos ya lo tengo claro...
ahun asi, a parte del codigo de la classe, se tendria que poner algo mas?!..

yo de momento tengo un unit con solo esto i no se si funcionaria.

categoria = class
private
idCategoria: integer;
nomCategoria: string;
maxims: integer;
minims: integer;
sexe: string;
protected
procedure putId (id: integer);
procedure putNom (nom: string);
procedure putMax (max: integer);
procedure putMin (min: integer);
procedure putSexe (sexe: string);
public
constructor categoria(id: integer;nom: string;max: integer;min: integer;sexe: string);
end;


abajo iria implementando cada uno de los procedimientos que consideraria necesarios.

muchas gracias!!

ruina
27-10-2004, 15:55:41
bien, algunos comentarios al código expuesto (pa ayudar, claro):


me estoy imaginando que esos procedimientos putId, put... son para guardar los valores ... pero en delphi tenemos un mecanismo realmente bueno para estos casos que son las propertys , por ejemplo, cuando tu escribes button1.visible := false estas cambiando una propiedad, es decir, lo escribes como si cambiases una variable de la clase, pero resulta que ademas el boton ¡desaparece de la pantalla!
¿como es posible esto?
¿como es que no tengo que escribir otra sentencia para que se oculte? como por ejemplo:
button1.visible := false
button1.Repaint(); ?

Porque en realidad lo que se hace al cambiar una propiedad es llamar a un método de la clase con el valor como parametro, es decir, nosotros escribimos button1.visible := false pero en realidad por debajo se esta escribiendo button1.Setvisible(false);


¿como hacer que funcionen las propertys en nuestras clases?

Sencillisimo:

caracteristica = class
private
FidCategoria: integer;
FnomCategoria: string;
procedure SetidCategoria(const Value: integer);
procedure SetnomCategoria(const Value: string);
...
protected
public
property idCategoria: integer read FidCategoria write SetidCategoria;
property nomCategoria: string read FnomCategoria write SetnomCategoria;
...
end;
implementation
...
procedure caracteristica.SetidCategoria(const Value: integer);
begin
FidCategoria := Value;
end;
procedure caracteristica.SetnomCategoria(const Value: string);
begin
FnomCategoria := Value;
end;



como vemos en este caso para acceder (read) a la propiedad se lee directamente el valor desde la varaible privada FidCategoria y para escribirla se llama a Setxxx, así, si necesitamos hacer mas cosas cuando se cambie el valor de la propiedad tan solo debemos escribir debajo ó encima de FidCategoria := Value;

¿que hay que escribir mucho para poner una propiedad?
bueno, un pequeño truco: si tan solo escribimos

property menu:string;

y pulsamos Shift + Ctrl + C, él solito nos rellenará el resto de código.

si necesitamos una propiedad con Get y Set escribiremos:

property menu:string read Getmenu write Setmenu;

y pulsamos de nuevo Shift + Ctrl + C, para obtener la decinición de la funcion Getmenu y del procedure Setmenu

^_^

bueno, igual me he desviao un poco, pero tarde o temprano llegaras a la definición de propiedades.

kye_z
27-10-2004, 16:14:59
aahora me quedao en blanco.. jejejeanalizare un poco mas lo que me cuentas i a ver que puedo sacar d claro!! muchas gracias por eso!!1

ya ire evolucionando!! :DD jejeje

ta la proxima!!