Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie OOP lernen ? (https://www.delphipraxis.net/56375-wie-oop-lernen.html)

Neutral General 4. Nov 2005 18:34


Wie OOP lernen ?
 
Hi,

also ich habe letztens mal mit Hilfe eines Freundes "richtig" OOP programmiert. Das hat mir Spaß gemacht und ich glaube es bringt noch mehr als Spaß ^^
Die Frage ist : Wie lernt man OOP am besten ?
Wahrscheinlich wird mir zumindest einmal gesagt "Learning by doing". Ok aber welches Art von Programm eigenet sich da am besten für den Anfang ?

tigerman33 4. Nov 2005 18:47

Re: Wie OOP lernen ?
 
Der beste Weg ist learning by doing. :mrgreen:

Im Ernst, da es sich bei OOP um einen Programmieransatz handelt (quasi eine Strategie) ist IMHO jedes Projekt dafür geeignet. Bei extrem kleinen, übersichtlichen Projekten muss es nicht unbedingt effizient sein (der Aufwand mag dann größer sein als gerechtfertigt), aber funktionieren wird es auf jeden Fall. Und wann immer du mit der VCL arbeitest, ist das ja im Prinzip schon OOP.

Ein gutes Kapitel in der OH für den Anfang wäre auch mit Sicherheit Vererbung.

Viel Spaß und Erfolg bei dem Ganzen.

Luckie 4. Nov 2005 18:49

Re: Wie OOP lernen ?
 
Vieleicht hilft ja das Klassen-Tutorial: http://www.luckie-online.de/Developer/Delphi/Tutorials/

Neutral General 4. Nov 2005 19:28

Re: Wie OOP lernen ?
 
Ok danke Luckie. Ich schau mir deine Tutorials mal morgen an.
Mein Problem ist das man in OOP alles so relativ programmieren muss :mrgreen:

sniper_w 4. Nov 2005 20:20

Re: Wie OOP lernen ?
 
Zitat:

Mein Problem ist das man in OOP alles so relativ programmieren muss
Na ja. Alles ist relativ.

OOP ist nicht so schwer wenn man sich daran gewöhnt hat. ;)

Im Grunde mache ich es immer so: Alles ist ein "objekt". Das hat seine Eigenschaften, die des Objekt beschrieben, und auch Methoden, die diese Eigenschaften verändern. Das sind die Schnittschtellen nach "aussen". Aussen ist alles was nicht zum Objekt gehört.
Wenn es 2 verschiedene Objekten gibt die miteinander "interakten" müssen, dann definierst du ein weiteres Objekt die dies macht. :)

Neutral General 5. Nov 2005 11:46

Re: Wie OOP lernen ?
 
Also nachdem ich den Thread "OOP und RPG" gelesen hab, hab ich auch mal alleine was angefangen. So als Grundgerüst finde ichs schon sehr gut. Da ich mit DelphiX arbeite habe ich mal eine Klasse von TImageSprite abgeleitet. Ich wollte jetzt die Create Methode überschreiben weil ich in beim Createn noch das Bild des Sprites direkt übergeben wollte. Nur wenn ich override benutze dann müssen die Parameter bei dem Constructor genauso sein wie die vom Parent. Das wusste ich schon. Früher hab ich dann noch einen Constructor namens TKlasse.ACreate hinzugefügt die dann alle Parameter hatte die ich wollte. Aber das war halt unschön. Und dann habe ich mir mal die Unit von DelphiX angeschaut wo TSprite definiert ist. Und da ist die Create Methode virtual; Und ich hab mir gedacht : Der Constructor hat auch andere Parameter als der vom normalen TObject und ist damit auch überschrieben. So dann hab ich halt auch ne Klasse abgeleitet von TImageSprite :

Delphi-Quellcode:
type
 TRPGSprite = class(TImageSprite)
  private
  public
   constructor Create(AParent: TSprite; SImage: TPictureCollectionItem); virtual;
 end;
Zitat:

[Warnung] uOther.pas(11): Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TImageSprite'
Also erstmal : TObject->TSprite (Create virtual)-> TImageSprite (Create override)-> TRPGSprite (Create virtual)

und dann bekomme ich diese Warnung. Also es funktioniert alles perfekt. Ist die Warnung berechtigt ?
Und ich sehe virtual im Moment als eine flexibles override mit dem ich sogar neue Parameter hinzufügen kann.

Also ich habe jetzt erfahren das man das so machen muss :

Delphi-Quellcode:
type
 TRPGSprite = class(TImageSprite)
  private
  public
   constructor Create(AParent: TSprite; SImage: TPictureCollectionItem); reintroduce;
 end;
auch wenn ich den Begriff reintroduce noch nie gehört hab - es funktioniert :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 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