Entwickler-Ecke
Sonstiges (Delphi) - [OOP]Konzeptproblem
Marco D. - So 21.01.07 22:31
Titel: [OOP]Konzeptproblem
Also ich habe einen Fehler in meinem Konzept entdeckt. Ich möchte z.B. folgendes machen können:
Delphi-Quelltext
1:
| MyClass.Attributes[index].DataType := 'bool'; |
Ich hatte mir schon die Klassen TParameter, TParameterlist, TAttribute und TAttributelist entwickelt. In Planung waren noch TMethod, TMethodlist und TObjectClass.
Nun jedoch habe ich ein Problem:
Laut meinem Konzept würde der Code von oben so lauten:
Delphi-Quelltext
1:
| MyClass.Attributes.Attributes[index].DataType := 'bool'; |
Ich war erst der Meinung, ich könnte z.B. die Verwaltung der Attribute (TAttribute) in die Unit Attributelist (TAttributelist) auslagern. Wenn ich nun aber TObjectClass definiere:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| unit ObjectClass;
interface
type
TObjectClass = class private public property Attributes: TAttributelist end;
implementation
end. |
dann habe ich ein Problem, weil:
Delphi-Quelltext
1: 2: 3: 4: 5:
| property Attribute[index: integer]: TAttribute read GetAttribute write SetAttribute;
MyClass.Attributes.Attributes[index].DataType := 'bool'; |
Da ich aber nicht zweimal Attributes haben will, müsste die Verwaltung von TAttribute, die eigentlich TAttributelist übernehmen sollte, direkt in TObjectClass implementiert werden. Da es aber auch noch MyClass.Methods[index] geben soll, kann ich das nicht so machen, da die Verwaltung auf einer verketteten Liste basiert und ich diese nicht zweimal in die gleiche Klasse einbauen will.
Was kann man jetzt tun?
BenBE - So 21.01.07 22:39
Du kannst Array-Properties als Default deklarieren ... Dann würde das 2. Attributes implizit von Delphi ergänzt werden.
tommie-lie - So 21.01.07 22:41
Ich bin mir nicht sicher, ob ich verstanden habe, wie deine Klassen aussehen. Ist TAttributeList.Attributes ein Array Property (property Attributs[index: Integer]: TAttribute;)? Wenn ja, dann interessierst du dich vielleicht für den Modifier default.
Marco D. - So 21.01.07 22:43
BenBE hat folgendes geschrieben: |
| Du kannst Array-Properties als Default deklarieren ... Dann würde das 2. Attributes implizit von Delphi ergänzt werden. |
Öhm wie würde das im Code genau aussehen? So?
Delphi-Quelltext
1:
| property Attribute[index: integer]: TAttribute read GetAttribute write SetAttribute; default; |
Oder muss das in TObjectClass?
tommie-lie hat folgendes geschrieben: |
| Ich bin mir nicht sicher, ob ich verstanden habe, wie deine Klassen aussehen. Ist TAttributeList.Attributes ein Array Property (property Attributs[index: Integer]: TAttribute;)? Wenn ja, dann interessierst du dich vielleicht für den Modifier default. |
BenBe war schneller. :P Du hast aber Recht! :zustimm:
tommie-lie - So 21.01.07 22:46
Jo.
Marco D. - Di 23.01.07 18:31
Ich habe jetzt das gleiche Problem, nur analog mit TMethod in das die Property Parameters hinein soll. :P
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| unit Method;
interface
uses Parameterlist,main,Objectclass;
type
TMethod = class
property Parameters: TParameterlist
property Parameter[index: integer]: TParameter read GetParameter write SetParameter; default; |
Was muss ich in der Unit Method hinzufügen?
tommie-lie - Di 23.01.07 20:17
Marco D. hat folgendes geschrieben: |
| Was muss ich in der Unit Method hinzufügen? |
Das gleiche, was du auch in der Unit ObjectClass hinzugefügt hast. Wenn mich meine Erinnerungen nicht im Stich lassen war das exakt "nichts".
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!