![]() |
OOP Grundsatzfrage Klasse TKunde
Hallo zusammen,
ich habe eine Klasse Kunde, die alles erledigt, was mit dem Kunden an sich zu tun hat. Also speichern in DB, ändern in DB, zugehörige Plausibilitätsprüfungen usw. Jetzt habe ich eine DB-Tabelle "Nummernkreise" in der diverse Nummernkreise definiert sind. In dieser hole ich die letzte kdnr und setze diese,nach dem Speichern des Kunden auch dort entsprechend hoch. Jetz bin ich mir nicht sicher, unter Berücksichtigung irgendwelcher Grundsätze zur OOP, ob ich diese "Arbeit", also das Holen und Speichern des Kd-Nummernkreises die Klasse erledigen lassen soll, oder dies auserhalb der Klasse erledige. Oder ist das eigentlich schnurzegal. Danke für eure Meinungen. Gruss KH |
Re: OOP Grundsatzfrage Klasse TKunde
Gibt es auch andere Nummernkreise?
|
Re: OOP Grundsatzfrage Klasse TKunde
Zitat:
|
Re: OOP Grundsatzfrage Klasse TKunde
Gibt es denn auch eine Nummernkreis-Klasse? Wenn ja, gehört m.E.n. eine Referenz davon in die Kundenklasse, die Nummerkreisverwaltung wird dann von diesem Objekt übernommen.
|
Re: OOP Grundsatzfrage Klasse TKunde
Zitat:
Eine Klasse soll ein eng umrissenes Aufgabengebiet bearbeiten. Zuviel in einer Klasse wäre ein Antipattern ( ![]() Du kannst z.B. die Plausiprüfungen in eine eigene Klasse auslagern:
Delphi-Quellcode:
Dadurch, dass die Klasse TCustomerPlausi im Konstruktor ein TCustomer-Objekt übergeben bekommt,
TCustomerPlausi = class(TPersistent)
private FCustomer : TCustomer; procedure PlausiCheckA; procedure PlausiCheckB; .. public constructor Create(ACustomer:TCustomer); procedure DoAllChecks; end; kann es die Plausiprüfungen durchführen. Das lohnt aber erst dann, wenn die Plausiprüfungen recht umfangreich werden. Ob eine Klasse einen Job selber erledigt oder an eine andere Klasse delegiert, ist immer abhängig von der jeweiligen Aufgabenstellung. Was man aber auf jeden Fall sagen kann, ist dass du eine Klasse für die Nummernkreise benötigst. Ein Objekt von TNummernkreis ist dann in deiner Kundenklasse eingebettet. |
Re: OOP Grundsatzfrage Klasse TKunde
Zitat:
und die Klasse für die Plausibilitätsprüfungen ist nur für die klasse TKunden. Gönnt Ihr eigentlich jeder Klasse eine eigene Datei, oder fasst Ihr mehrere Klassen in einem File zusammen ? Gruss Kh |
Re: OOP Grundsatzfrage Klasse TKunde
Ich würde so großzügig sein
|
Re: OOP Grundsatzfrage Klasse TKunde
hallo zusammen,
also ich habe jetzt eine Klasse: TCustomerPlausi = class(TPersistent) private FCustomer : TCustomer; procedure PlausiCheckA; procedure PlausiCheckB; .. public constructor Create(ACustomer:TCustomer); procedure DoAllChecks; end; der Tcustomer hat eine property die public so deklariert ist: property plz: string read Fplz write Fplz; wen ich jetzt in der procedure PlausiCkeckA auf die property plz mit xy := TCustomer.PLZ ; zugreife bekomme ich eine meldung: Error: Only class methods can be referred with class references. Wie funktioniert das richtig,was mache ich falsch, wie komme ich an die property? danek gruss KH |
Re: OOP Grundsatzfrage Klasse TKunde
Bitte künftig die Delphi-Tags benutzen. Und ändere mal
Zitat:
Delphi-Quellcode:
xy := FCustomer.PLZ ;
|
Re: OOP Grundsatzfrage Klasse TKunde
Zitat:
das hatte ich erst so versucht, da bekomme ich aber eine exception :-( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz