Interfaces, Objetos amp; OO - Problemas
Caros amigos, estou tendo um problema: necessito urgentemente de criar uma estrutura de interface e sua implementacao, algo bem parecido com o que o XMLDatabind faz, mas dirigido a um BD.
Abaixo segue a estrutura da qual preciso ´interfacear´:
Na verdade essa estrutura armazenara os dados dos diversos alias com os quais trabalhamos hj aqui, tanto em paradox quanto em IB/FB, tendo uma ´indentacao´ +- assim:
Databases
|
+Database1
|
+Tabelas
|
+Tabela1
|
+Campos
| |
| +Campo1
| +Campo2
| +Campo3
|
+Indices
|
+Indice1
Meu problema consiste em como farei para lidar com essas listas de campos e indices dentro da interface IoTabela e a IoTabelas dentro da IoDatabase, como adicionar e excluir.
Se alguem souber de qquer coisa para me ajudar, fique a vontade!
Desde ja valeu, pessoal!
Abaixo segue a estrutura da qual preciso ´interfacear´:
type IoDataBases = interface; IoDatabase = interface; IoTabelas = interface; IoTabela = interface; IoCampos = interface; IoCampo = interface; IoIndices = interface; IoIndice = interface;
Na verdade essa estrutura armazenara os dados dos diversos alias com os quais trabalhamos hj aqui, tanto em paradox quanto em IB/FB, tendo uma ´indentacao´ +- assim:
Databases
|
+Database1
|
+Tabelas
|
+Tabela1
|
+Campos
| |
| +Campo1
| +Campo2
| +Campo3
|
+Indices
|
+Indice1
Meu problema consiste em como farei para lidar com essas listas de campos e indices dentro da interface IoTabela e a IoTabelas dentro da IoDatabase, como adicionar e excluir.
Se alguem souber de qquer coisa para me ajudar, fique a vontade!
Desde ja valeu, pessoal!
Wanx
Curtidas 0
Respostas
Massuda
17/06/2005
...como farei para lidar com essas listas de campos e indices dentro da interface IoTabela e a IoTabelas dentro da IoDatabase, como adicionar e excluir.
Não ficou claro para mim... o problema é gerar o XML ou gerenciar a lista de itens contidos na implementação de IoCampos e IoIndices?No segundo caso, acho que a implementação de IoCampos/IoIndices pode conter uma lista TInterfaceList (essa lista é derivada de TInterfacedObject, o que torna ela também uma implementação de IUnknown).
GOSTEI 0
Wanx
17/06/2005
Massuda, novamente gratissimo pela atencao!
Na verdade, seria a segunda alternativa, pois o XML eu apenas tomei por base, pois seria como um ´XMLDatabinding´ para DB....
Tenho essa estrutura em XML e num banco de dados firebird, usei o XMLDatabinding para me dar uma ideia de como poderia gerar os objetos, ao inves de trabalhar diretamente com o banco, acho que seria um ´framework´ bem primario, mas seria o ideal para meu caso.
No caso de gerenciar a lista de itens contidos na implementação de IoCampos, IoIndices (e tb IoDatabases e IoTabelas) como deveria proceder com a implementação da lista TInterfaceList? Desculpe, mas eh um assunto totalmente novo para mim, e igualmente importante...
Na verdade, seria a segunda alternativa, pois o XML eu apenas tomei por base, pois seria como um ´XMLDatabinding´ para DB....
Tenho essa estrutura em XML e num banco de dados firebird, usei o XMLDatabinding para me dar uma ideia de como poderia gerar os objetos, ao inves de trabalhar diretamente com o banco, acho que seria um ´framework´ bem primario, mas seria o ideal para meu caso.
No caso de gerenciar a lista de itens contidos na implementação de IoCampos, IoIndices (e tb IoDatabases e IoTabelas) como deveria proceder com a implementação da lista TInterfaceList? Desculpe, mas eh um assunto totalmente novo para mim, e igualmente importante...
GOSTEI 0
Wanx
17/06/2005
???
GOSTEI 0
Massuda
17/06/2005
No caso de gerenciar a lista de itens contidos na implementação de IoCampos, IoIndices (e tb IoDatabases e IoTabelas) como deveria proceder com a implementação da lista TInterfaceList? Desculpe, mas eh um assunto totalmente novo para mim, e igualmente importante...
Imagino que as classes que implementam essas interfaces que envolvem o conceito de ser uma coleção/lista utilizarão internamente uma lista do tipo TInterfaceList. Por exemplo (não testei):type IoCampos = interface(... function GetLista: IInterfaceList; property Lista: IInterfaceList read GetLista; ... ToCampos = class(TInterfacedObject, IoCampos) private FLista: TInterfaceList; ... public constructor Create; override; destructor Destroy; override; function GetLista: IInterfaceList; ... constructor ToCampos.Create; begin inherited; FLista := TInterfaceList.Create; ... end; destructor ToCampos.Destroy; begin FLista.Free; ... inherited; end; function ToCampos.GetLista: IInterfaceList; begin Result := FLista as IInterfaceList; end;
GOSTEI 0