AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OOP Grundsatzfrage Klasse TKunde

Ein Thema von khh · begonnen am 29. Nov 2008 · letzter Beitrag vom 1. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

OOP Grundsatzfrage Klasse TKunde

  Alt 29. Nov 2008, 17:02
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
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 29. Nov 2008, 17:05
Gibt es auch andere Nummernkreise?
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#3

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 29. Nov 2008, 17:08
Zitat von mkinzler:
Gibt es auch andere Nummernkreise?
ja, diese sind alle in der Tabelle nummernkreise.
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.539 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 29. Nov 2008, 17:14
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 29. Nov 2008, 20:52
Zitat von khh:
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.
Das ist zuviel Arbeit für eine Klasse.
Eine Klasse soll ein eng umrissenes Aufgabengebiet bearbeiten.
Zuviel in einer Klasse wäre ein Antipattern (God-Object).
Du kannst z.B. die Plausiprüfungen in eine eigene Klasse auslagern:
Delphi-Quellcode:
TCustomerPlausi = class(TPersistent)
private
  FCustomer : TCustomer;
  procedure PlausiCheckA;
  procedure PlausiCheckB;
  ..
public
  constructor Create(ACustomer:TCustomer);
  procedure DoAllChecks;
end;
Dadurch, dass die Klasse TCustomerPlausi im Konstruktor ein TCustomer-Objekt übergeben bekommt,
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.
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#6

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 29. Nov 2008, 21:22
Zitat von sx2008:
Dadurch, dass die Klasse TCustomerPlausi im Konstruktor ein TCustomer-Objekt übergeben bekommt,
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.
ok, also eine eigene Klasse für die Nummernkreise.
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
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 30. Nov 2008, 10:13
Ich würde so großzügig sein
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#8

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 1. Dez 2008, 13:13
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
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.539 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 1. Dez 2008, 13:15
Bitte künftig die Delphi-Tags benutzen. Und ändere mal
Zitat:
xy := TCustomer.PLZ ;
inxy := FCustomer.PLZ ;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#10

Re: OOP Grundsatzfrage Klasse TKunde

  Alt 1. Dez 2008, 13:17
Zitat von DeddyH:
Bitte künftig die Delphi-Tags benutzen. Und ändere mal
Zitat:
xy := TCustomer.PLZ ;
inxy := FCustomer.PLZ ;

das hatte ich erst so versucht, da bekomme ich aber eine exception
Karl-Heinz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:42 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