Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2006
donki donki is offline
Miembro
 
Registrado: oct 2006
Posts: 24
Poder: 0
donki Va por buen camino
Miraré de explicartelo:

La propiedades son como variables que otras classes pueden ver.

Las propiedades se guardan internamente dentro de la classe por unas variables assignadas en la declaración de la propiedad:

En tu ejemplo FNombrePropiedad es una variable privada (por convenio) de la classe. Tambien en tu ejemplo hay el procedure SetNombrePropiedad. Este procedure asignará el valor a la propiedad y te permitirá hacer más cosas en ese momento. Podrias tener una función GetNombrePropiedad. Esta función te permitiria obtener el valor de la propiedad( por ejemplo si fuera calculada)

Sobre lo del read y el write es bastante trivial, simplemente indicas que se lee (read) con la función o con la variable y se escribe (write) con el procedure o la variable

Espero que te ayude
__________________
Grandes frases de nuestro tiempo:
"La pasta no és para tirarla, es para el Tunning"

"TodoOK=False...."

Enjoy it!!!
Responder Con Cita
  #2  
Antiguo 31-10-2006
Avatar de hector.roma
hector.roma hector.roma is offline
Miembro
 
Registrado: jul 2005
Ubicación: a caballo entre Galicia y Portugal
Posts: 58
Poder: 19
hector.roma Va por buen camino
Las propiedades son útiles en el futuro

A que me refiero con esto... imagínate que tienes dos clases:
Código Delphi [-]
TVariable=class 
public   
  miVariable : string; 
end; 

TPropiedad=class 
private   
  FmiVariable : string 
published   
  property miVariable : string read FmiVariable write FmiVariable;
end;

Como puedes ver las dos clases hacen lo mismo:
Código Delphi [-]
var
  Variable : TVariable;   
  Propiedad : TPropiedad; 
   ... 
begin   
  Variable.miVariable   := 'Hola variable';   
  Propiedad.miVariable := 'Hola propiedad'; 
end;

y podría parecer que es más cómodo al principio usar la clase TVariable en vez de de la clase TPropiedad pues "hay que escribir menos".

Sin embargo dejamos de lado el presente y avanzamos al futuro... ahora nos damos cuenta que queremos mostrar un mensaje de error si el valor del campo miVariable es una cadena vacía.

Desde la primera aproximación tenemos dos formas, bien verificamos fuera de la clase el valor introducido o bien añadimos un método que valide el texto introducido y en ambos casos recorremos nuestro código en busca de todas las veces que modificamos el valor de miVariable para añadir los cambios.
Sin embargo, si hemos usado propiedades el resultado podría quedar algo así:
Código Delphi [-]
TPropiedad=class 
private   
  FmiVariable : string 
published   
  property miVariable : string read FmiVariable write setTexto; 
end;

donde setTexto sería la función que nos valida el texto introducido.

Espero que este ejemplo te ayude a explorar más detenidamente el tema de las propiedades.
Responder Con Cita
  #3  
Antiguo 31-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
sigo con la idea de Hector.

Las propiedades son útiles también para introducir "efectos secundarios".

Supongamos que estas programando una clase:

Código Delphi [-]
TEtiquetaV = class(TObject)
public
  Mensaje : string;
end;

TEtiquetaP = class(TObject)
  FMensaje: string;
public
  property Mensaje: string read FMensaje write FMensaje;

Mas adelante... mientras vas programando el sistema, te das cuenta que queres que el mensaje de la etiqueta se actualice automáticamente en la pantalla cuando el programador lo asigne, de manera que el usuario tenga un retorno de información adecuado.

Entonces, en lugar de escribir el valor de la propiedad directamente en FMensaje, creas un método SetMensaje (o cualquier otro nombre, aunque esta es la convención) y lo implementas algo como:

Código Delphi [-]
TEtiquetaP = class(TObject)
  FMensaje: string;
  procedure SetMensaje(const Value: string);
public
  property Mensaje: string read FMensaje write SetMensaje;
end;

....

procedure TEtiquetaP.SetMensaje(const Value: string);
begin
  FMensaje := Value;
  Repintar();
end;

Luego, te das cuenta que sería de utilidad al programador poder actuar cuando hay un cambio en el valor de la propiedad mensaje de la etiqueta.

Entonces añadis un evento a la clase y lo lanzas cuando cambia el valor:

Código Delphi [-]
procedure TEtiquetaP.SetMensaje(const Value: string);
begin
  FMensaje := Value;
  Repintar();
  DoOnChange;
end;

En fin... usar propiedades te ayuda a mantener una interfaz consistente al programador a medida que tus clases evolucionan, validar automáticamente los valores que la clase acepta en las propiedades (por ejemplo, solo números pares o impares, etc), introducir efectos secundarios "controlados", lanzar eventos.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
pregunta tonta sobre "property" patroclus02 OOP 6 09-10-2006 18:14:31
Interbase/Firebird. Clasic ó Superserver. ¿Cuando usar cada una? Delphius Firebird e Interbase 9 08-08-2006 23:37:30
Ayuda para sobreescribir property Egroc OOP 3 12-11-2005 22:24:09
Excepción "Invalid property value" en botón inexistente melanthea C++ Builder 1 07-07-2004 18:12:39
a proposito de property pickman Varios 2 18-07-2003 04:10:34


La franja horaria es GMT +2. Ahora son las 18:55:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi