AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi OOP - Wie Struktur für verschiedene Objekte erstellen?
Thema durchsuchen
Ansicht
Themen-Optionen

OOP - Wie Struktur für verschiedene Objekte erstellen?

Ein Thema von Andreas L. · begonnen am 19. Okt 2008 · letzter Beitrag vom 21. Okt 2008
Antwort Antwort
Andreas L.
(Gast)

n/a Beiträge
 
#1

OOP - Wie Struktur für verschiedene Objekte erstellen?

  Alt 19. Okt 2008, 20:15
Abend,
ich lese verschiedene Dateien aus. Die gesammelten Daten werden in abgeleiteten TObjects gespeichert (jede ausgelesener Wert entspricht einer Eigenschaft). Die TObjects werden mit einer TList verwaltet. Manche Dateien haben mehr oder weniger Eigenschaften.

Beispiel Datei 1:
Code:
[bla]
wert1=abc
wert2=def
Beispiel Datei2:
XML-Code:
<root>
  <wert1>abc</wert1>
</root>
(Wie man sieht können die Dateien verschiedene Strukturen haben). Ich kann ja jetzt schlecht einfach eine Eigenschaft leer lassen, aber soll ich für jeden Dateityp eine eigene Klasse erstellen? Dann muss wiederrum für jede Klasse eine abgeleitete TList her. Und für jede Liste müssen dann sämtliche Routinen wiederholt implementiert werden. Verfolge ich einen komplett falschen Ansatz? Wie würdet ihr das lösen?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: OOP - Wie Struktur für verschiedene Objekte erstellen?

  Alt 19. Okt 2008, 20:27
Wenn schon, dann würde ich eine TObjectlist nehmen. TObject genau nach Bedarf definieren (quasi wie Record) und diese Objekte in die Liste eintragen. Ich weiß, dass das geht. Ob und wie das mit der TList geht ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: OOP - Wie Struktur für verschiedene Objekte erstellen?

  Alt 19. Okt 2008, 20:32
Zitat von Hansa:
Wenn schon, dann würde ich eine TObjectlist nehmen. TObject genau nach Bedarf definieren (quasi wie Record) und diese Objekte in die Liste eintragen. Ich weiß, dass das geht. Ob und wie das mit der TList geht ?
Ok, das geht. Die Komponente die die ObjectList enthält hat eine Eigenschaft

property Items[Index: Integer]:TMyObject read getObject write SetObject default; Jetzt gibt GetObject halt immer ein TMyObject zurück (sozusagen die Basisklasse). Dann muss der Entwickler aber immer selber Casten.

Delphi-Quellcode:
if Component.Items[0] is TMyObjectNr2 then
  TMyObjectNr2(Component.Items[0]).Wert1 := 'xyz'
else if Component.Items[0] is TMyObjectNr1 then
...
...
Finde ich ziemlich unschön. Gibts da nicht einen besseren weg?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: OOP - Wie Struktur für verschiedene Objekte erstellen?

  Alt 19. Okt 2008, 20:45
Ja. Leite dir eine Klasse von der TObjectList ab, in der du die Property und die Methoden überschreibst. Such mal nach "typensichere Liste".
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

Re: OOP - Wie Struktur für verschiedene Objekte erstellen?

  Alt 19. Okt 2008, 22:24
Zitat von Andreas L.:
Jetzt gibt GetObject halt immer ein TMyObject zurück (sozusagen die Basisklasse). Dann muss der Entwickler aber immer selber Casten.
...
Finde ich ziemlich unschön. Gibts da nicht einen besseren weg?
Ja, auf Delphi 2009 upgraden und Generics verwenden
Uwe Raabe
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#6

Re: OOP - Wie Struktur für verschiedene Objekte erstellen?

  Alt 21. Okt 2008, 13:38
Zitat von Uwe Raabe:
Zitat von Andreas L.:
Jetzt gibt GetObject halt immer ein TMyObject zurück (sozusagen die Basisklasse). Dann muss der Entwickler aber immer selber Casten.
...
Finde ich ziemlich unschön. Gibts da nicht einen besseren weg?
Ja, auf Delphi 2009 upgraden und Generics verwenden
Die Komponente(n) werden OpenSource. Muss also Abwärtskompatibel sein.

So wie es aussieht spar ich mir mit alle dem nur die Deklaration des Constructor und destructors. Sämtliche Routinen wie z. B. das hinzufügen eines Items oder die Filterfunktion muss ich jedesmal neu deklarieren. Gibts nicht doch eine bessere Lösung?

Evtl. eine TCollection anstatt TObjectList?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: OOP - Wie Struktur für verschiedene Objekte erstellen?

  Alt 21. Okt 2008, 15:13
TCollection ist nur für visuelle Komponenten nötig, weil sie (afaik) bestimmte Methoden für die RTTI implementiert. Die Item-Listen von Menüs, Toolbars usw. sind z.B. alle von TCollection abgeleitet.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: OOP - Wie Struktur für verschiedene Objekte erstellen?

  Alt 21. Okt 2008, 16:20
TCollection ist auch für non-visuelle Objekte praktisch

Neben der Tatsahe, dass man das Streaming nicht neu erfinden muss bekommt man sowohl auf- als auch abwärtskompatibilität geschenkt

Such mal nach dpCollectiion http://www.delphipraxis.net/internal...ct.php?t=62023
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz