Entwickler-Ecke
Sonstiges (Delphi) - Bücher über OOP
ForenHeini - Mi 15.11.06 16:17
Titel: Bücher über OOP
Hi !
Suche ein Buch, was mir die OOP anhand von Delphi beibringt.
Dazu muß ich sagen, dass ich einige Bücher zu Delphi besitze
(z.B. Bücher von Elmar Warken und andere dicke Wälzer :wink: )
Programmiere eigentlich auch schon lange (erste eigene Proggies auf C 116 -
dann Turbo-Pascal 3.0 bis 7 und schließlich Delphi - aber eben als Power-Hobby),
merke aber, dass es an der einen oder anderen Stelle an den Grundlagen in OOP fehlt.
Hab auch schon die üblichen Einführungen in die OOP der obigen Bücher gelesen.
Aber irgendwie werde ich da an manchen Stellen nicht so schlau draus.
Beispiel: z.B. kapiere ich nicht wie das mit TSender im Prozedurkopf funktioniert.
Ich bin sozusagen von Turbo-Pascal 3.0 bzw. 7.0 auf Delphi umgestiegen und dabei
sind einige Informationen der OOP nicht richtig angekommen :shock: :D 8).
Suche jetzt Büchertips wo die OOP anhand von Delphi erklärt wird.
Suche jetzt nicht die 100. Anleitung zu Schleifen in Delphi.
Ich weiß nicht ob ihr versteht welche Art von Buch ich meine.
Schreibt doch mal über eure Erfahrungen, wie ihr OOP gelernt habt
(ich meine jetzt nicht die einzelnen Befehle Schleifen etc. sondern das Konzept)
Gibt es vielleicht sogar interessante Links zu diesem Thema?
Marco D. - Mi 15.11.06 16:54
Crashkurs von Christian (hab den Link gerade nicht da) :(
hansa - Mi 15.11.06 18:52
Geht es speziell nur um Delphi oder allgemein um OOP im Pascal-Umfeld ? Ich meine : sind die Grundlagen nun klar oder nicht ?
ForenHeini - Do 16.11.06 12:45
Ähm hab zwar wie gesagt schon etwas darüber gelesen aber man kann darüber ja nie genug Infos kriegen :roll: deswegen sag ich mal nein 8)
hansa - Do 16.11.06 16:39
Du hast also schon eine gewisse Ahnung davon. Denkste zumindest ? :mrgreen: Dann ist Delphi wohl erst mal zweitrangig. Um das von der Pike an im Zusammenhang zu lernen/lesen empfehle ich immer das Turbo Pascal 5.5 Handbuch. War da nicht sogar ein extra OOP-Handbuch dabei ? :gruebel: Zumindest sind es einige Kapitel. Sind die klar, dann gucke weiter, was in Delphi dazukam. Das steht ja dann auch in aktuelleren Handbüchern/OH. Das alte erschlägt Dich nicht von Anfang an so mit Begriffen, wie die neueren. Finde das zum Einstieg immer noch besser.
Google mal nach "Borland Museum" da ist das TP 5.5 Handbuch. Dürfte aber auf englisch sein.
ForenHeini - Fr 17.11.06 11:03
Englisch ist kein Problem 8). Da werde ich dann mal nachschauen, ob es das ist was ich suche.
Quake User - Sa 18.11.06 13:03
Titel: Re: Bücher über OOP
ForenHeini hat folgendes geschrieben: |
Hi !
Suche ein Buch, was mir die OOP anhand von Delphi beibringt.
|
Interessant dazu ist ggf.:
http://www.schule.de/schulen/oszhdl/gymnasium/faecher/informatik/softwareprojekte/warum_oop.htm
Es gab eine Demo von Michael Puff (
http://www.luckie-online.de) "Klassen in Delphi", die einen sehr einfachen Einstieg bietet. Wie Bspw.:
Zu Vererbung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70:
|
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) btnParents: TButton; btnSon: TButton; procedure btnParentsClick(Sender: TObject); procedure btnSonClick(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
uses Family;
procedure TForm1.btnParentsClick(Sender: TObject); var Parents: TParent; begin Parents := TParent.Create; try ShowMessage(Parents.GetType + #13#10 + Parents.GetFamilyName + #13#10 + IntToStr(Parents.GetChildrenCount)); finally FreeAndNil(Parents); end; end;
procedure TForm1.btnSonClick(Sender: TObject); var Son: TSon; begin Son := TSon.Create; try ShowMessage(Son.GetType + #13#10 + Son.GetFamilyName + ', ' + Son.GetChristianName + #13#10 + IntToStr(Son.GetChildrenCount)); finally FreeAndNil(Son); end; end;
end. |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109:
| unit Family;
interface
type TParent = class(TObject) private FFamilyName: String; FChildrenCount: Cardinal; public constructor Create; function GetType: String; function GetFamilyName: String; function GetChildrenCount: Cardinal; end;
type TSon = class(TParent) public constructor Create; function GetType: String; function GetChristianName: String; end;
implementation
constructor TParent.Create; begin FFamilyName := 'Müller'; FChildrenCount := 1; end;
function TParent.GetType: String; begin result := 'Eltern'; end;
function TParent.GetFamilyName: String; begin result := FFamilyName; end;
function TParent.GetChildrenCount: Cardinal; begin result := FChildrenCount; end;
constructor TSon.Create; begin inherited; FChildrenCount := 0; end;
function TSon.GetType: String; begin result := 'Sohn'; end;
function TSon.GetChristianName: String; begin result := 'Otto'; end;
end. |
Quake User - Sa 18.11.06 13:23
Titel: Re: Bücher über OOP
ForenHeini hat folgendes geschrieben: |
Hi !
Schreibt doch mal über eure Erfahrungen, wie ihr OOP gelernt habt
(ich meine jetzt nicht die einzelnen Befehle Schleifen etc. sondern das Konzept)
|
Die entscheidende Frage ist: Wann lohnt sich der erhebliche Mehraufwand, den OOP,OOD... mit sich bringt?
Darauf habe ich keine eindeutige Antwort. Generell: in großen Projekten mit mehreren Teammitgliedern oder in langfristigen Projekten.
Zudem halte ich es für sehr wichtig die Gefahren nicht zu unterschätzen. Alle die Mechanismen, die Dir helfen sollen, werden Dir das fürchten lehren wenn dein Modell sich bei wachsendem Projekt als untauglich erweist. Eine Objekthierarchie umzubauen ist dann nicht trivial. (eine Objekthierarchie zu konzipieren ebenfalls nicht)
Wie macht Ihr das?
1. immer, konsequent OOP
2. mal so, mal so, wie es eben kommt
3. folgende Projekte fange ich konsequent OO an...
..
9. was ist OOP?
hansa - Sa 18.11.06 19:19
Quake User hat folgendes geschrieben: |
ForenHeini hat folgendes geschrieben: | Hi !
Schreibt doch mal über eure Erfahrungen, wie ihr OOP gelernt habt
(ich meine jetzt nicht die einzelnen Befehle Schleifen etc. sondern das Konzept)
|
Die entscheidende Frage ist: Wann lohnt sich der erhebliche Mehraufwand, den OOP,OOD... mit sich bringt?
... |
Ich habe das gelernt bzw. benutze OOP seit es das gibt. Wer hätte es geahnt : seit Turbo Pascal 5.5. Deshalb ja die Empfehlung mit dem alten Handbuch.
Jetzt zu Quake User. Wo liegt der erhebliche Mehraufwand ? :shock: Know-How Beschaffung zählt zumindest bei mir nicht als Mehraufwand, der eventuell auf einer Rechnung auftaucht.
Vielleicht mal ein konretes Praxis-Beispiel :
Ein NICHT-OOP Programmierer braucht in seinem Programm 50 Edits für Zahlen. Was macht der ? Nicht viel. Er nimmt Exceptions wegen falscher Eingaben einfach in Kauf oder baut sich 50 Try-Blöcke drumrum. Mehr fällt mir jetzt nicht ein.
Der OOP-Programmierer denkt ganz anders. Denn er weiß : 50 Edits werden gebraucht. Ein irgendwann geplantes Zusatzmodul braucht wieder 50 Edits. Also baut er sich lieber einmalig sein eigenes TZahlEdit. Was ich hier schreibe ist keine Theorie, sondern das, was ich auch selber mache ! Hierzu nimmt er das TEdit als Vorfahr.
TZahlEdit = class (TEdit); Also ist alles vom TEdit schon vererbt. Er muß aber noch was ändern und knöpft sich deshalb das OnKeyPress-Ereignis vor. Da besteht der Aufwand in folgender Zeile :
if not key in ['0'..'9'] then key := #0; Und jetzt ? Es KANN keiner mehr Buchstaben in ein Zahlenfeld eingeben ! Der User muß nicht mal für einen Fehler bestraft werden, weil er eben keinen machen kann. Dann wird noch gleich eine rechtsbündige Eingabe dazugemacht usw.
Da er nun schon ein TZahlEdit hat : was liegt näher, auch gleich die Reals zu erledigen ? Nichts leichter als das :
TRealEdit = class (TZahlEdit)
OnKeyPress :
Delphi-Quelltext
1: 2: 3:
| if not key in ['0'..'9',DecimalSeparator] then key := #0; |
Er muss dann also noch das mit dem DecimalSeparator einbauen. Die Rechtsbündigkeit ist aber bereits vorher abgehakt worden. Wie wärs vielleicht noch mit einem Feld "NachKommaStellen" gleich im OI ? Wird mit published erledigt.
@Anfänger : nicht nachmachen ! Das Beispiel bezieht sich auf OOP und Komponentenentwicklung. Das geht zwar echt so einfach, aber nicht von alleine. 8)
digi_c - So 19.11.06 16:54
Hast du dir schon mal meinen langen Artikel zu OOx durchgelesen? Da sind auch gute Buchtipps drin.
OOA,OOD,OOP JETZT MAL ERSTHAFT
Quake User - Mo 20.11.06 00:35
| Zitat: |
Jetzt zu Quake User. Wo liegt der erhebliche Mehraufwand ? :shock: Know-How Beschaffung zählt zumindest bei mir nicht als Mehraufwand, der eventuell auf einer Rechnung auftaucht.
|
ACK
| Zitat: |
Vielleicht mal ein konretes Praxis-Beispiel :
Ein NICHT-OOP Programmierer braucht in seinem Programm 50 Edits für Zahlen. Was macht der ? Nicht viel. Er nimmt Exceptions wegen falscher Eingaben einfach in Kauf oder baut sich 50 Try-Blöcke drumrum. Mehr fällt mir jetzt nicht ein.
|
Ok - um bei Deinem Bsp. zu bleiben:
Wann weißt Du, dass nur Zahlen eingegeben werden sollen? Zu Begin des Projekts? Nein, Du erfährst das mitten im Projekt. Baust Du dann alles um oder leitest Du Dir prinzipiel IMMER deine Edits erst ab? (das eben ist Mehraufwand)
Realitätsnah ist bsp.:
Ich muss Daten auslesen (Kunden) Also nehme ich Variablen und schreibe die Daten dort rein. ODER ich baue eine Klasse Kunde oder nein besser eine Klasse Person (ggf. sind ja nicht alle Kunden) also muss ich erst noch mal mit meinem Auftraggeber reden. (Mehraufwand) Und ganz am Ende stellt sich raus: ich brauche eine Klasse "Kontakte" und es gibt dann abgeleitete Klassen für Person (Kontakte müssen nicht immer Personen sein) und davon abgeleitet eine Klasse Kunden.
Habe ich also alles 3x umgebaut. (Mehraufwand)
Oder ich habe das perfekte Projekt und kläre ALLES vor Projektstart. (Das klappt natürlich auch mit allen Kunden :-) )
DEIN Bsp. war natürlich ein gutes Bsp. Hier macht das Sinn. Ich denke, solche Bsp. suchen wir auch. Also weiter so.
hansa - Mo 20.11.06 01:31
Quake User hat folgendes geschrieben: |
| Wann weißt Du, dass nur Zahlen eingegeben werden sollen? Zu Begin des Projekts?... |
Natürlich weiß man, wo man anfangen muß. Alles andere ist Unsinn. Wenn nicht mal klar ist, ob es sich bi einem Feld um eine Zahl oder einen string handelt, dann fange besser gar nicht erst an damit, ein Hellseher-Programm zu schreiben.
Quake User - Di 21.11.06 01:32
| Zitat: |
... Wenn nicht mal klar ist, ob es sich bi einem Feld um eine Zahl oder einen string handelt, dann fange besser gar nicht erst an damit... |
Hast Du Kontakt zu echten Kunden? Das sind Nichtprogrammierer und die überlegen sich Dinge oft neu und anderst.
Deine Anforderung ist unrealistisch. Gute Programme müssen isch an neue Bedingungen anpassen lassen.
| Zitat: |
dann fange besser gar nicht erst an damit...
|
Wenn man damit NICHT sein Geld verdienen muß, kann man so denken.
hansa - Di 21.11.06 02:02
Quake User hat folgendes geschrieben: |
| Zitat: |
... Wenn nicht mal klar ist, ob es sich bi einem Feld um eine Zahl oder einen string handelt, dann fange besser gar nicht erst an damit... |
..Deine Anforderung ist unrealistisch. Gute Programme müssen isch an neue Bedingungen anpassen lassen.
|
Ja sicher muß ein Programm wartungsfreundlich sein. Deshalb ja auch OOP ! Man kann aber doch nicht sein Programm für jeden anders machen. Wie wärs mit 365 Windows-Versionen pro Jahr ? Wünsche von Nicht-Programmierern sind IMMER mit Vorsicht zu genießen. :mrgreen: Wenn ich sage : "Gut, das könnte sinnvoll sein, mal sehen ob das in die nächste Version eingebaut werden kann" das ist was ganz anderes als lapidar zu sagen "wird morgen eingebaut". Und dann stellt sich im Nachhinein der dahintersteckende Irrtum heraus und der muss noch dem mit der "grandiosen Idee" tagelang erklärt werden. So was habe ich mir längst abgewöhnt.
Quake User - So 26.11.06 16:33
Titel: Re: Bücher über OOP
ForenHeini hat folgendes geschrieben: |
Hi !
Suche ein Buch, was mir die OOP anhand von Delphi beibringt.
... |
Hat Dir einer der Hinweise weiter geholfen? Und Welcher?
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!