Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einstieg in die OOP (https://www.delphipraxis.net/39388-einstieg-die-oop.html)

sveno2k5 1. Feb 2005 23:07


Einstieg in die OOP
 
Hallo.

Versuche inzwischen seid heute Mittag die OOP zu verstehen. Also der Aufbau von Klassen, Objekten, Instanzen usw. Habe dabei gegoogelt und mir die Grundlagen auf www.delphi-source durchgelesen, aber das einzige was ich bisher verstehe ist, das Klassen nur Baugerüste darstellen für beliebig viele Objekte(Instanzen) und das diese irgendwie durch create oder destroy oder free und was weiss ich initialisiert werden müssen. Hat jemand eine Seite oder einen Link wo das so erklärt wird das selbst ein blutiger Anfänger wie ich das bin das gut versteht? Nutze Delphi 6.

Gruss Sven

Luckie 2. Feb 2005 00:27

Re: Einstieg in die OOP
 
Versuch mal: http://tutorials.luckie-online.de .

Hansa 2. Feb 2005 00:57

Re: Einstieg in die OOP
 
Wo ist da OOP zu finden ? :shock:

Luckie 2. Feb 2005 01:05

Re: Einstieg in die OOP
 
Das Klassen-Tu´torial vielleicht? :roll:

Hansa 2. Feb 2005 02:52

Re: Einstieg in die OOP
 
ja, das Tuto ist gut. Zweck voll erfüllt ! :thumb:

sveno2k5 2. Feb 2005 10:26

Re: Einstieg in die OOP
 
Oh man, das sieht ja klasse aus "Wortwitz hehe :stupid: "
Vielen Dank, werd mich gleich heute Mittag mal einlesen.:)

Gruss Sven

pajofego 2. Feb 2005 11:01

Re: Einstieg in die OOP
 
Kurz, kompakt, verständlich mit sehr guten Beispielen! :thumb:

Es gibt Delphi Bücher, die können das überhaupt nicht richtig erklären, teilweise viel zu umständlich!

Von mir gibt's dafür eine glatte EINS!

Gruss pajofego

sveno2k5 2. Feb 2005 19:26

Re: Einstieg in die OOP
 
Habe gerade mal angefangen zu lesen, und den Anfang hab ichs ehr gut verstanden:)
Bei den Destruktoren hab ich aber ein paar Fragen noch.

Ist "ein Objekt aus dem Speicher löschen" gleichbedeutend mit "Die Objektreferenz auf nil setzen"? Wenn ja, warum löscht man die Objektreferenz nicht einfach?

Warum ist es nötig Objekte aus dem Speicher zu löschen? Sie nehmen ja nicht Unmengen an Ressourcen ein.

"Da der Destruktor in der Lage sein muss,Objekte freizugeben,die unvollständig erstellt wurden und deshalb
nil sind,sollte beim Freigeben eines solchen Objektes unbedingt vorher auf nil getestet werden.Wird ein
Objekt mit der Methode Free freigegeben,wird die Prüfung automatisch durchgeführt."

Warum funktioniert destroy nicht wenn die Referenz nil ist? Was macht free wenn die Referenz nil ist?

"Nach dem Aufruf von Free wurde das Objekt zwar aus dem Speicher entfernt,der Zeiger enthält aber
immer noch die Adresse des Objektes.Eine Abfrage mit Assigned liefert also nach einem Aufruf von
Free immer noch True .Entweder setzt man den Zeiger explizit auf nil oder man verwendet die Prozedur
FreeAndNil ."

Auch hier wieder, warum löscht man den Zeiger nicht einfach (Der Zeiger ist doch die Objektreferenz oder?)

Gruss Sven:)

jfheins 2. Feb 2005 19:37

Re: Einstieg in die OOP
 
Eigendlich gilt neue Frage, neuer Thread und eine Frage pro Thread, aber ichb will mal so frei sein ...

Zitat:

Zitat von sveno2k5
Ist "ein Objekt aus dem Speicher löschen" gleichbedeutend mit "Die Objektreferenz auf nil setzen"?

Nein. Der Objektzeiger ist ein Pointer (4 Bytes), das Objekt ist überallhin zerstreut.
Wenn du den Zeiger auf nil stzt, zeigt der Zeiger halt nirgendwohin, aber die Daten sind noch da.

Zitat:

Wenn ja, warum löscht man die Objektreferenz nicht einfach?
Wenn du das objekt an sich löschst, zeigt der Zeiger immernoch dorthin, es ist nur nichts (sinnvolles) mehr da.

Zitat:

Warum ist es nötig Objekte aus dem Speicher zu löschen? Sie nehmen ja nicht Unmengen an Ressourcen ein.
Wenn das alle machen würden, könntest du alle paar Stunden dein System rebooten. Wenn du Objekte erstellst (Speicher reservierst) und ihn danach nicht mehr freigibst, steht der Speicher nicht mehr zur Verfügung. Irgendwann ist der ganze RAM reserviert ...

Zitat:

Warum funktioniert destroy nicht wenn die Referenz nil ist?
Wo ist denn das Objekt, dass du löschen möchtest ?

Zitat:

Was macht free wenn die Referenz nil ist?
Nichts.

Zitat:

Auch hier wieder, warum löscht man den Zeiger nicht einfach (Der Zeiger ist doch die Objektreferenz oder?
Weil dann der Speicher immernoch reserviert ist.

Wenn du ein Objekt nichtmehr brauchst, nehme am besten immer FreeAndNil() ...

Hansa 2. Feb 2005 20:05

Re: Einstieg in die OOP
 
Vorab : der Thread ist mittlerweile Off-Topic. Und ich glaube es wird Zeit, etwas mit Legenden aufzuräumen. Was mit freigeben von Speicher, ob Variable oder sonstwas zu tun hat, das bezieht sich lediglich auf die Laufzeit des Programmes. Nicht mehr und nicht weniger. Ist das Programm korrekt beendet, also "terminiert" wie es in der Informatik heißt, dann ist davon nichts mehr übrig. Zumindest ist es äußerst schwierig, so etwas irgendwie hinzukriegen, daß Speicher blockiert wird.

Was in der Hauptsache wichtig ist : während der Laufzeit sollte nicht jedes mal irgendein Speicherbereich neu belegt werden und das immer wieder, ohne ihn irgendwann wieder freizugeben. Unendlich ist de Speicher nämlich nicht.

Wie gesagt, das ganze hat mit OOP nichts mehr zu tun.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz