AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Grosse Programme "übersichtlich" programmieren

Grosse Programme "übersichtlich" programmieren

Ein Thema von taaktaak · begonnen am 4. Nov 2007 · letzter Beitrag vom 7. Nov 2007
Antwort Antwort
Seite 3 von 5     123 45   
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#21

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 10:19
Ich hätte da gerne mal ein Beispiel.

Also wir haben eine DB Programm.

1. DBGrid ein paar Edit Felder (für Eingabe).

So jetzt kann ich die Eingabe und Lese Routinen für die Edit Felder in eine Andere Klasse legen aber wie die DBGrid ???
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.604 Beiträge
 
#22

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 10:28
Also GUI <> Daten-Entzerrung?

Im Prinzip gehört die Steuerung der Controls aufs Formular.
Nur die Zugriffe auf die Daten (also erstellen und Verwalten des DataSets, Operationen auf den Daten etc.), das gehört in eine andere Klasse.

Dazwischen setzt Du einen Controller (nochmals eine Klasse), der die Datenklasse und das Formular kennt, und dann das ganze miteinander verdrahtet (also Dataset and Controls / Grid hängen etc).
Sebastian Gingter
Phoenix - 不死鳥
Mein Blog: http://gingter.org
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#23

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 10:53
Zitat von Phoenix:
Also GUI <> Daten-Entzerrung?

Im Prinzip gehört die Steuerung der Controls aufs Formular.
Nur die Zugriffe auf die Daten (also erstellen und Verwalten des DataSets, Operationen auf den Daten etc.), das gehört in eine andere Klasse.

Dazwischen setzt Du einen Controller (nochmals eine Klasse), der die Datenklasse und das Formular kennt, und dann das ganze miteinander verdrahtet (also Dataset and Controls / Grid hängen etc).
Ja und wie ich hab da gar keine idee.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#24

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 11:05
Es ist doch ganz einfach:

Jeder Löffel (=Aktion, Prozedur) gehört in den Topf (=Unit bzw. Klasse), in dem er rühren soll.

Die Kontrolle, wie sich die GUI verhält (Knöpfe aktivieren, wenn Daten verändert wurden etc.), gehört nunmal in die Formularklasse, aber was dann mit den Daten passiert, in die Datenklasse.

Aber wir wären ja schön blöd, wenn wir das konsequent und ohne Rücksicht auf Verluste jedesmal durchziehen würden. Also gibt es natürlich Ausnahmen. Die bleiben aber wirklich Ausnahmen.

Andererseits macht man sich später mehr Arbeit, die Funktionalität dann doch auszulagern.

Beispiel: Wir basteln uns einen Logindialog.

Wir fangen an mit zwei Eingabefeldern, OK- und Abbruch-Knopf. Bei OK wird kurz in einer Tabelle nach dem User und dem Passwort gefragt und im Modal entweder mrOK, mrCancel oder mrNo zurückgeliefert (egal jetzt, ob das so toll ist).

Drei Zeilen Logik. Und dafür ne Klasse? Quatsch mit Soße!

Oh, nun soll das Passwort doch verschlüsselt abgelegt werden. Na und, suchen wir halt nach dem verschlüsselten Passwort. Wupps, eben eingebaut. Fertig.

Oh, nun sollen noch Benutzerrechte eingelesen werden. Oh, hmm. Egal, reingebepselt. Fettig.

Spätestens jetzt darf man ordendlich in die Team-Kaffekasse zahlen, weil man zu frickeln anfängt und anderen das Leben schwermacht. Als Strafarbeit muss man nun den Code nochmals entwirren und allen Beteiligten zusätzlich einen ausgeben.

Also dann doch lieber gleich von Anfang an eine TBenutzer- und vielleicht eine TBenutzerlist-Klasse in einer separate Unit 'uBenutzerverwaltung', und schon ist das ordendlich entkoppelt. Die TBenutzerliste hat dann eben nur eine Methode 'PrüfeBenutzerLogin', und die besteht aus drei Zeilen. Der TBenutzer kommt gänzlich ohne Logik aus. Na und?

Jemand kann sich am Login-Dialog blöd designen (dass das nicht so schwer ist, sieht man an den ganzen grenzdebilen Designern ), und die Coderecke kann sich an der Benutzerverwaltung unter Vermeidung von natürlichem Licht einen Wolf programmieren (Benutzergruppen, Zugriffsrechte, sichere Passwörter, automatisch ablaufende Passwörter, Backdoors, yippie!)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#25

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 11:14
Das ist mir schon klar ist auch nicht das Problem,
aber wie mach ich das wenn die Design-Schicht DB Kombos nutzt (also DBGrid) dann muss ich ja im Design eine DB Abfrage machen wie kann man das über die DB Schicht machen, oder lohnt das nicht.

Um meine Fragen zu begründen, ich muss demnächst eine Software Komplett neu schreiben und will das gleicher vernünftig machen.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.604 Beiträge
 
#26

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 11:18
Hrm. Dilemma, Dilemma.

'Ordentliches' Anwendungsdesign hat mit RAD in unserem Sinne nicht viel Gemeinsam. Du schmeisst zwar noch die Grid auf das Form, aber mit den Daten verbinden, die Daten in den Fachklassen selektieren, bearbeiten etc., das passiert in der Regel alles im Code.

Für so eine Datenschicht gibts nunmal keinen Designer (ob Leider oder zum Glück sei mal dahingestellt).
Sebastian Gingter
Phoenix - 不死鳥
Mein Blog: http://gingter.org
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#27

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 11:24
Also um das mal einfach zu sagen.

1 Form (Design)
1 DatenModule mit DB Klasse wo dann auch die DBGrid angedockt wird. ?
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#28

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 11:28
Zitat von Phoenix:
'Ordentliches' Anwendungsdesign hat mit RAD in unserem Sinne nicht viel Gemeinsam.
Einspruch: Das beste Werkzeug verkommt zum Faustkeil, wenn man es nicht richtig anwendet.

RAD / Delphi bietet uns mit Datenmodulen doch eine Möglichkeit an, um GUI und Logik zu trennen. Datenmodule sind klassisch gesehen doch nur Datencontainer, um sich das ewige hin- und hertransportieren der Daten zu ersparen. Mit der Delphi-Toolleiste können wir derzeit 'nur' Tabellen, Imagelists etc. dort ablegen, um sie im Code gemeinsam zu nutzen. Nichts hindert uns, weitere Funktionen dort zu hinterlegen.

Und mit dem Modeldesigner haben wir auch noch eine erste Metapher, um Klassen visuell zu gestalten. Ob das effektiv ist, sei mal dahingestellt...

@franktron: Genau so. TDataset-Derivate gehören ins Datenmodul und *nicht* auf die Form. Die Logik der berechneten Felder hat doch im Formular nix zu suchen, oder?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#29

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 11:41
Bei der heutigen Softwareherstellung sind die Werkzeuge das geringste Problem.
Die Probleme, die zur Aufgabe von SW-Projekten führen sind meist die nur schwer erfassbaren Faktoren, wie Teamfähigkeit und besonders Kommunikation.

Besonders die Kommunikation zwischen Auftraggeber und -nehmer ist das Problem. Hier laufen oftmals das Gewollte und das Erbrachte auseinander.

Dies gilt besonders für Projekte, die bereits mit der ganzen Kunst des Sofwareprojektmanagments überwacht werden.
Die meisten Projekte werden heutzutage jedoch immer noch ohne Dokumentation und Managment hergestellt. Ich spreche dabei jedoch nicht von Hobbyprojekten!
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#30

Re: Grosse Programme "übersichtlich" programmieren

  Alt 6. Nov 2007, 12:21
Hallo zusammen.

Zitat von Pfoto:
Bezüge auf die GUI gibt es dann nicht mehr, sondern die Klasse gibt
Events ab, auf die ich in der GUI individuell Reagieren kann.
Das würde mich mal genauer interessieren. Könntest du dazu mal ein kurzen Beispielcode posten?

Vielen Dank
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:21 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