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:
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:
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
// *****************************************************************************
// 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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)