Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Derivar una funcion (https://www.clubdelphi.com/foros/showthread.php?t=50766)

fedelphi 27-11-2007 23:33:07

Derivar una funcion
 
Hola foro, despues de estar investigando un rato logre utilizar una funcion derivada de su clase padre, paso a explicar; tengo un form con una funcion que verifica que el ingreso de los datos en los distintos campos sean correctos(por ejemplo que tenga letras el precio, que no se extienda un campostring mas de n caracteres, etc)mi objetivo es utilizar esta funcion en las clases derivadas. Lo que hice fue lo siguiente:
form principal
Código Delphi [-]
TFModifProductos = class(TForm)
.
.
.

public
    function verifica:boolean;
  end;
en la clase derivada
Código Delphi [-]
 TFAltaProducto = class(TFModifProductos)
    .
.
.

  private

  public
    function verifica:boolean;
  end;

implementation

function TFAltaProducto.verifica: boolean;
begin
  inherited verifica;
end;


Es correcta esta manera de realizarlo? ya que he visto metodos de sobreescritura de metodos (con virtual y override) y demas pero no entendi muy bien. Gracias
Fede

Chris 27-11-2007 23:47:37

si no implementas en la clase padre el procedimiento "verifica" entonces tienes que agregar virtual y en todos los casos, si vas a escribir nuevo código en las clases decendientes siempre tienes que utilizar override.

Saludos.

Lepe 28-11-2007 00:12:21

Cita:

Empezado por D&W (Mensaje 248856)
si no implementas en la clase padre el procedimiento "verifica" entonces tienes que agregar virtual y en todos los casos, si vas a escribir nuevo código en las clases decendientes siempre tienes que utilizar override.

Saludos.

Unos matices:

Virtual se añade a la clase padre, permite que en clases hijas sobreescribas (override) ese método.
abstract se usa en la clase padre y no tiene implementación (no permite que en el apartado de implementación escribas código para ese método). Normalmente se usa con virtual
Override en una clase hija, permite modificar un método de la clase padre virtual y abstract

Saludos

Al González 28-11-2007 07:20:11

Cita:

Empezado por Lepe (Mensaje 248864)
...permite que en clases hijas sobreescribas (override) ese método...

Como el verbo override no tiene una traducción tajante y sólidamente acuñada, tratándose de métodos virtuales, algunos preferirían usar sobrescribir o sustituir, pero otros preferimos la palabra redefinir.

Un abrazo polimórfico.

Al González. :)

fedelphi 28-11-2007 12:42:03

Muchisimas gracias por sus respuestas, realmente me han aclarado el panorama ahora lo pondre en practica. A ver si entendi bien, si yo quisiera modificar la funcion el la clase derivada tendria que utilizar virtual en la clase padre y override en la clase hijo, pero de la forma que lo implemente en el ejemplo de arriba estaria bien ya que a esta funcion la utilizo en todas las clases derivadas tal cual esta en la clase padre. Es asi?
Muchisimas gracias nuevamente.
Fede


La franja horaria es GMT +2. Ahora son las 01:30:22.

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