PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Duvida com Herança de Classes #408361

08/10/2011

0

Boa tarde, estou fazendo um pequeno programa para renomear arquivos e tenho as seguintes classes:


// *****************************************************************************
// Classe TRenomear - Classe Modelo
// *****************************************************************************

type
  // Classe
  TRenomear = class
  public
    constructor Create; virtual; abstract;
  published
    procedure Executar(PListView: TListView); virtual; abstract;
  end;

  // *****************************************************************************
  // Classe TContador - Adiciona um contador ao nome do arquivo
  // *****************************************************************************
  TContador = class(TRenomear)
  private
    FNumeroInicial: integer;
    FTexto: string;
    FNomeOriginal: boolean;
  public
    constructor Create(PNumeroInicial: integer; PNomeOriginal: boolean; PTexto: string); overload;
  published
    procedure Executar(PListView: TListView); override;
  end;

implementation

// *****************************************************************************
// Classe TContador
// *****************************************************************************

constructor TContador.Create(PNumeroInicial: integer; PNomeOriginal: boolean; PTexto: string);
begin
  // Passando Parâmetros
  FNumeroInicial := PNumeroInicial;
  FTexto := PTexto;
  FNomeOriginal := PNomeOriginal;
end;

procedure TContador.Executar(PListView: TListView);
begin

  // Efetuar as alterações na ListView...

  inherited;
end;

end.


Estou separando cada operação a ser efetuada no nome do arquivo em uma classe separada, assim posso ter uma lista de ações a serem executadas em uma determinada ordem para renomear os arquivos.

Eu declarei a classe TRenomear como um classe base, ja que todos os objetos filhos teram o mesmo método para executar assim poderia chamar o método passando:


TRenomear(ObjectList[0]).executar;



Como vou usar um listview para visualizar as operações executadas, ele vai ser sempre o mesmo em todas as classes filhas, sendo que eu o declarei ele como um parâmetro do método Executar(). Haveria alguma outra solução, para que eu não precise informar a todos os objetos filhos a qual listview aplicar as alterações? E gostaria de saber se essa implementação está correta pois não tenho experiência com OO.

Desde já

Muito Obrigado
Walter Desidera

Walter Desidera

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar