Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-07-2003
pickman pickman is offline
Registrado
 
Registrado: may 2003
Ubicación: Asturias
Posts: 3
Poder: 0
pickman Va por buen camino
a proposito de property

Hola, quería saber para que sirve property, pues lo he visto en un código que me pasaron y la verdad que nunca me habían hablado de ello. Gracias y saludos
Responder Con Cita
  #2  
Antiguo 18-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Hola Pickman, te recomiendo leer un poco de la teoría de programación orientada a objetos en Object Pascal. Property es para definir las propiedades de las clases, básicamente tiene dos métodos aplicados, uno de lectura y otro de escritura, aunque puedes prescindir de uno de estos si quieres que tu propiedad sea de solo lectura o solo escritura. En lugar de métodos muchas veces vas a ver que se refiere directamente a una variable, internamente es como si tuviera un método que retorna esa variable.

Código:
TMiClase = class
  private
    function GetCantidad: integer;
    procedure SetCantidad(const Value: integer);
  public
    property Cantidad: integer read GetCantidad write SetCantidad;
  end;
Insisto que te busques algún libro, o te ensañes con la ayuda, yo solo te comenté algo básico.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 18-07-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Property es una forma de introducir efectos colaterales "controlados" en un objeto.

Como no soy muy bueno para explicar, trataré de hacerlo con un ejemplo.

Digamos que vos tenes un objeto TDatabase llamado miDB. Podes hacer

MiDB.Active := True;

La VCL no solo cambia el valor de la propiedad Active a True, sino que en efecto abre la base de datos, pidiendo un nombre de usuario y contraseña si es necesario. Eso es un efecto colateral.

pues bien. Ese efecto colateral esta controlado por una propiedad que en su implementación se veria algo asi como:

Código:
Type
  TDatabase = Class (TComponent)
    ...
    Private
      FActive : Boolean;
    ...
      Procedure SetActive(Value : Boolean);
    ...
    Published
      Property Active : Boolean read FActive write SetActive;
    ...
    End;

Implementation
  
// aqui se hace la implementación del método

Procedure TDatabase.SetActive(Value : Boolean);

Begin
  if Value Then
    AbrirLaBaseDeDatosPidiendoUsuarioSiEsNecesario;
  Else
    CerrarLaBaseDeDatos;
  FActive := True;
End;
Tratare de explicarte lo que ocurre, y es que en realidad las propiedades son, digamos, una forma de encapsular la implementación real de los objetos y brindar una interfaz consistente al programador.

Podes definir una propiedad de Lectura/Escritura, solo lectura o solo escritura.

Para ello te vales de las palabras reservadas read y write.

delante de cada una, colocas el nombre de un método o de un miembro de la clase, que será de donde provendran los datos.

Si usas métodos, el de escritura debe tener la forma:

NombreMetodo(Parametro : TipoDeLaPropiedad);

Y el de lectura debe ser una función

NombreMetodo : TipoDeLaPropiedad;

También podes declarar propiedades indexadas, pero eso lo dejaremos para el curso avanzado...

Si exploras el código que te he escrito, verás que la clase TDatabase no tiene un miembro Active, sino una propiedad de ese nombre.

Se ha definido de lectura/escritura, utilizando para la lectura el miembro FActive y para escritura el método SetActive. Cuando vos haces la llamada de la forma:

MiDB.Active := True;

Delphi en realidad genera una llamada al método SetActive pasandole como parámetro el valor True.

De esa forma, vos como diseñador de clases o componentes, podes ejecutar acciones tal como abrir efectivamente la base de datos, mientras el usuario de las clases únicamente cambia valores de propiedades, lo cual es muy conveniente para él.

Personalmente a mi me parece que el mecanismo ideado por el equipo de Borland para implementar las propiedades es algo impresionante y muy bueno. En mi opinión es una de las características mas poderosas de Object Pascal, y por supuesto, de Delphi.

Espero no haberte liado con la explicación. 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


La franja horaria es GMT +2. Ahora son las 10:34:54.


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