![]() |
Erläuterungen zu einem Delphi Programm ..
Hey Leute,
ich bin ein absoluter Informatik Neuling und möchte mir so einige Grundsachen selbst beibringen. Momentan versuche ich mit Delphi 2005 (Turbo Pascal) und UML zu arbeiten. Von einem Freund habe ich mir einige seiner teilweise unvollständigen Programme zuschicken lassen, die ich dann nach und nach selbst vervollständige. Allerdings blicke ich bei folgendem Programm absolut nicht durch und weiß nicht was zu tun ist...
Delphi-Quellcode:
ich hoffe ihr bringt ein wenig licht in diese Sache;)
UNIT Literaturliste;
interface //-------------------- ggf Uses-Liste anpassen ! -------------------- uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mTLiteratur, mListe, msum, mTLiteraturliste; //uses mTForm ?? type TForm1 = class(TForm) // published Attribute BtnHinzufuegen : TButton; EdAutor : TEdit; EdISBN : TEdit; EdJahr : TEdit; EdOrt : TEdit; EdTitel : TEdit; EdVerlag : TEdit; Label1 : TLabel; Label2 : TLabel; Label3 : TLabel; Label4 : TLabel; Label5 : TLabel; Label6 : TLabel; Memo1 : TMemo; procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); // published Methoden procedure BtnHinzufuegenClick (Sender: TObject); // nicht überschreibbar private //Attribute hatBuch : TLiteratur; hatLiteraturliste : TLiteraturliste; //Objektbeziehungen: // hatTLiteraturliste : TLiteraturliste; end; var Form1: TForm1; implementation {$R *.DFM} //+--------------------------------------------------------------------- //| TForm1: Methodendefinition //+--------------------------------------------------------------------- //-------- BtnHinzufuegenClick (published) -------------------------------- procedure TForm1.BtnHinzufuegenClick (Sender: TObject); begin hatBuch:=TLiteratur.init(edAutor.Text,edTitel.Text,edVerlag.Text,edOrt.Text,edISBN.Text,edJahr.Text); hatLiteraturliste.ZumEnde; hatLiteraturliste.haengeAn(hatBuch); edOrt.Clear; edAutor.Clear; edJahr.Clear; edISBN.Clear; edTitel.Clear; edVerlag.Clear; hatLiteraturliste.anzeigen; end; //-------- FormActivate (published) --------------------------------------- procedure TForm1.FormActivate(Sender: TObject); begin hatLiteraturliste:=TLiteraturliste.init; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin hatLiteraturliste.gibFrei; end; end. ----------------------------- if self.istLeer then begin kenntMemoAnzeige.Lines.Add('-- leer --') end else begin while not self.istLeer do begin kenntMemoAnzeige.Lines.Add(self.MemoAlsLiteratur.autor+' '+self.MemoAlsLiteratur.titel+' '+self.MemoAlsLiteratur.Ort+' '+self.MemoAlsLiteratur.Jahr+' '+self.MemoAlsLiteratur.isbn+' '+self.MemoAlsLiteratur.verlag+' ') ;//(self.KopfAlsPatient.Name + ' ' lListe.haengeAn(self.MemoAlslIteratur); lLISTE.haengeAn(self.memoalsliteratur); self.entferneaktuelles end; while not lLiSTE.istLeer do begin self.haengeAn(lListe.MemoAlsLiteratur); lListe.entferneAKTUELLES ; end; lListe.gibfrei; end; end; //-------- lerneMemoKennen (public) ------------------------------------ procedure TLiteraturliste.lerneMemoKennen (pMemo: TMemo); begin kenntMemoAnzeige:= pMemo; end; //-------- MemoAlsLiteratur (public) ----------------------------------- function TLiteraturliste.MemoAlsLiteratur : TLiteratur; begin self.zumAnfang; result:=TLiteratur(self.aktuelles); end; end. -------------------------- UNIT mTLiteratur; interface //-------------------- ggf Uses-Liste einfügen ! -------------------- uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TLiteratur = class private //Attribute zAutor : String; zISBN : String; zJahr : String; zOrt : String; zTitel : String; zVerlag : String; public //Methoden constructor init (pTitel: String; pAutor: String; pVerlag: String; pJahr: String; pOrt: String; pISBN: String); virtual; procedure gibFrei; virtual; function autor : String; virtual; function isbn : String; virtual; function jahr : String; virtual; function ort : String; virtual; function titel : String; virtual; function verlag : String; virtual; end; implementation //+--------------------------------------------------------------------- //| TLiteratur: Methodendefinition //+--------------------------------------------------------------------- //-------- init (public) ----------------------------------------------- constructor TLiteratur.init (pTitel: String; pAutor: String; pVerlag: String; pJahr: String; pOrt: String; pISBN: String); begin zAutor:= pAutor; zTitel:= pTitel; zVerlag:= pVerlag; zJahr:= pJahr; zOrt:= pOrt; zISBN:= pISBN; end; //-------- gibFrei (public) -------------------------------------------- procedure TLiteratur.gibFrei; begin end; //-------- autor (public) ---------------------------------------------- function TLiteratur.autor : String; begin autor:= zAutor; end; //-------- isbn (public) ----------------------------------------------- function TLiteratur.isbn : String; begin isbn:= zISBN; end; //-------- jahr (public) ----------------------------------------------- function TLiteratur.jahr : String; begin jahr:= zJahr; end; //-------- ort (public) ------------------------------------------------ function TLiteratur.ort : String; begin ort:= zOrt end; //-------- titel (public) ---------------------------------------------- function TLiteratur.titel : String; begin titel:= zTitel; end; //-------- verlag (public) --------------------------------------------- function TLiteratur.verlag : String; begin verlag:= zVerlag; end; end. --------------------------- UNIT mTListe; interface //-------------------- ggf Uses-Liste einfügen ! -------------------- //uses ....; type TListe = class end; implementation //+--------------------------------------------------------------------- //| TListe: Methodendefinition //+--------------------------------------------------------------------- end. mfg [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
Re: Erläuterungen zu einem Delphi Programm ..
Vielleicht wäre es besser dich zuerst etwas mit den Grundlagen (Theorie) zu beschäftigen
|
Re: Erläuterungen zu einem Delphi Programm ..
ja also einiges habe ich schon über die OOP gelesen und gelernt...hier möchte ich eigentlich nur wissen wie dieses Programm abläuft und was ggf fehlt oder falsch ist. :wink:
oder sag doch einfach mal was dir zu diesem Programm relevantes einfällt;) |
Re: Erläuterungen zu einem Delphi Programm ..
Zitat:
Sag deinem Freund er soll mal seinen Code anständig formatieren. Und lern selber deinen eigenen Code schön zu formatieren. Dann blickt man viel schneller durch. |
Re: Erläuterungen zu einem Delphi Programm ..
Ehrlich gesagt habe ich das so durcheinander gebracht :oops: , weil das Programm mehrere Klassen (so heißt das doch oder ) besitzt und ich nicht wußte wie ich sonst hätte alle zeigen sollen. sorry :oops:
|
Re: Erläuterungen zu einem Delphi Programm ..
Es geht nicht darum, dass du 2 Units auf einmal gepostet hast...
Delphi-Quellcode:
Dieser Quelltext ist formatiert. Auch wenn es noch ein paar andere Regeln gibt. Z.B. ist es (normalerweise) nicht üblich deutsche Bezeichner für Variablen und Methoden zu nehmen. Und "entferneAKTUELLES" würde man auch eher "EntferneAktuelles" nennen bzw schreiben. Oder eben "RemoveCurrent" oder so.
if istLeer then
kenntMemoAnzeige.Lines.Add('-- leer --') else begin while not self.istLeer do begin kenntMemoAnzeige.Lines.Add(MemoAlsLiteratur.autor + ' ' + MemoAlsLiteratur.titel + ' ' + MemoAlsLiteratur.Ort + ' ' + MemoAlsLiteratur.Jahr + ' ' + MemoAlsLiteratur.isbn + ' ' + MemoAlsLiteratur.verlag + ' '); lListe.haengeAn(MemoAlslIteratur); lLISTE.haengeAn(memoalsliteratur); entferneaktuelles end; while not lLiSTE.istLeer do begin haengeAn(lListe.MemoAlsLiteratur); lListe.entferneAKTUELLES; end; lListe.gibfrei; end |
Re: Erläuterungen zu einem Delphi Programm ..
ja ok verstehe ;)....aber abgesehen davon was verstehst du denn überhaupt schon von dem programm?
also ich habe den Programmsinn darin gesehen,dass in einem Memofeld mehrere Eigenschaften nebeneinander angezeigt werden sollen oder? Ginge sowas nicht auch einfacher ? |
Re: Erläuterungen zu einem Delphi Programm ..
Hi,
Es gibt die Klasse TLiteratur. Darin werden Bücher gespeichert. Der Benutzer kann Dann in Edits alle Eigenschaften eines Buches eingeben und dieses Buch dann zu einer "Literaturliste" hinzufügen. Die Literaturliste kann dann soweit ich das sehe in einem Memo ausgegeben werden. Aber eventuell sollte dein Freund selbst mal ein paar Grundlagen lernen.
Delphi-Quellcode:
Man nennt Construktoren "Create". Alles andere ist mehr als Unüblich. Was "virtual" bedeutet weiß dein Freund wahrscheinlich auch nicht, weil er einfach so damit rumwirft hab ich das Gefühl. Ich glaube jedenfalls nicht, dass virtual in diesem Programm und gebraucht wird, da es keine Vererbung gibt.
public
constructor init (pTitel: String; pAutor: String; pVerlag: String; pJahr: String; pOrt: String; pISBN: String); virtual; procedure gibFrei; virtual; function autor : String; virtual; function isbn : String; virtual; function jahr : String; virtual; function ort : String; virtual; function titel : String; virtual; function verlag : String; virtual; end; Abgesehen davon würde man Properties benutzen. Und zwar in der Art hier:
Delphi-Quellcode:
Den Sinn von "gibFrei" habe ich auch nicht verstanden. 1. Tut diese Methode nichts und selbts wenn du sie noch ausfüllen sollst so ist sie mehr als unnötig..
private
FAutor: String; public property Autor: String read FAutor write FAutor; // etc end; |
Re: Erläuterungen zu einem Delphi Programm ..
eventuell ist diese Funktion mal so gedacht gewesen? :gruebel:
Aber dann hätt man sie besser Clear nennen sollen. :stupid:
Delphi-Quellcode:
procedure TLiteratur.gibFrei;
begin zAutor := ''; zTitel := ''; zVerlag := ''; zJahr := ''; zOrt := ''; zISBN := ''; end; |
Re: Erläuterungen zu einem Delphi Programm ..
könnte es sein , dass virtual durch den delphi export durch uml automatisch entsteht?
Könntest du noch einig genauen Einzelheiten zu diesem Programm nennen oder gar verbesserungsvorschläge geben, denn ich möchte es nämlich möglichst effizient und einfach lernen und verstehen;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 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 by Thomas Breitkreuz