Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klassen Methoden (https://www.delphipraxis.net/15925-klassen-methoden.html)

Luckie 6. Feb 2004 14:29


Klassen Methoden
 
Hallo.

Ich schreibe ja gerade an meinem Klassen Tutorial und da hätte ich mal eine Frage, die mir auch meine Bücher nicht beantworten können. Wie Funktionieren Klassen Methoden und wozu sind sie gut? Ein kleines Beispiel zum Verständnis wäre auch nicht schlecht.

Danke schon mal.

Chewie 6. Feb 2004 15:17

Re: Klassen Methoden
 
Also die erste Frage ist einfach zu beantworten: Wie funktionieren Klassenmethoden?

Klassenmethoden sind Methoden, die nicht im Kontext eines Objektes ausgeführt werden. Eine Klassenmethode gehört zwar zu einer Klasse, kann aber nicht auf Felder und Methoden einer Instanz (@choose: eines Objekts ;)) zugreifen, da der Methode ja kein Objekt zugeordnet ist.

In Sprachen wie C# oder Java macht das ganze Konzept auch viel Sinn, denn dort gibt es auch Klassenfelder. Angenommen, ich habe eine Klasse, die ein Auto beschreibt, dann habe ich Objektfelder und -methoden, die ein konkretes Exemplar eines Autos beschreiben, und die Klasse selbst, die nun allgemeine Informartionen über das Auto darstellt, z.B. die Zahl der gebauten Autos. Dort gibt es dann z.B. auch eine Methode, um die Anzahl der gebauten Autos zu erhöhen. Hier ist jede Klasse auch quasi ein Objekt, vereinfacht gesagt.

In der DL, in der es leider keine Klassenfelder gibt, haben für m ich Klassenmethoden eigentlich nur Sinn gemacht, wenn ich mehrere autonome Prozeduren oder Funktionen hab, die keine gegenseitigen Abhängigkeiten haben, aber doch inhaltlich irgendwie zusammengehören. Die pack ich dann in eine Klasse, die Klasse dient hier aber nur als Container, so wie es die Unit bei normalen Prozeduren täte.

sakura 6. Feb 2004 15:21

Re: Klassen Methoden
 
Zitat:

Zitat von Chewie
In der DL, in der es leider keine Klassenfelder gibt

Na ja, mit DL.NET hat sich das ja glücklicherweise geändert. ;-)

...:cat:...

Luckie 6. Feb 2004 15:22

Re: Klassen Methoden
 
Zitat:

Zitat von Chewie
Klassenmethoden sind Methoden, die nicht im Kontext eines Objektes ausgeführt werden. Eine Klassenmethode gehört zwar zu einer Klasse, kann aber nicht auf Felder und Methoden einer Instanz (@choose: eines Objekts ;)) zugreifen, da der Methode ja kein Objekt zugeordnet ist.
[..]
die Klasse dient hier aber nur als Container, so wie es die Unit bei normalen Prozeduren täte.

Das dürfte wohl die essents deines Postings sein.

Dann hat also der Sinn von Klassen Methoden eigentlich durch ihre halbherzige Implementation von Borland ihren eigentlichen Sinn verloren? Denn wenn ich einen Container brauche, dann kann ich ja auch eine neue Unit nehmen.

Chewie 6. Feb 2004 15:22

Re: Klassen Methoden
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Chewie
In der DL, in der es leider keine Klassenfelder gibt

Na ja, mit DL.NET hat sich das ja glücklicherweise geändert. ;-)

...:cat:...


Echt? Hm, wird mal Zeit, dass es ne D8-Trial gibt, um mal zu auszuprobieren, was jetzt alles möglich ist :-D

Chewie 6. Feb 2004 15:26

Re: Klassen Methoden
 
Zitat:

Zitat von Luckie
Dann hat also der Sinn von Klassen Methoden eigentlich durch ihre halbherzige Implementation von Borland ihren eigentlichen Sinn verloren? Denn wenn ich einen Container brauche, dann kann ich ja auch eine neue Unit nehmen.

Ihren Sinn ganz verloren haben sie meiner Ansicht nach nicht, aber ihre Möglichkeiten sind doch stark eingeschränkt.
Aber mit Sicherheit gibt es noch andere Einsatzzwecke,, die ich nicht kenne, bei denen Klassenmethoden ohne -felder Sinn machen.

sakura 6. Feb 2004 15:31

Re: Klassen Methoden
 
Zitat:

Zitat von Chewie
Aber mit Sicherheit gibt es noch andere Einsatzzwecke,, die ich nicht kenne, bei denen Klassenmethoden ohne -felder Sinn machen.

Im Zweifel kann man ja die Klassenfelder innerhalb des Implementation-Teil als Variablen deklarieren ;-)

...:cat:...

Luckie 6. Feb 2004 15:32

Re: Klassen Methoden
 
Zitat:

Zitat von sakura
Im Zweifel kann man ja die Klassenfelder innerhalb des Implementation-Teil als Variablen deklarieren ;-)

Stellen sich da nur bei mir die Fußnägel hoch? :gruebel:

Chewie 6. Feb 2004 15:42

Re: Klassen Methoden
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von sakura
Im Zweifel kann man ja die Klassenfelder innerhalb des Implementation-Teil als Variablen deklarieren ;-)

Stellen sich da nur bei mir die Fußnägel hoch? :gruebel:

Eine Möglichkeit ist es schon, besonders, wenn sich innerhalb eines Objektes sich ein Zeiger auf diese globale Variable als Klasseninstanz befindet, um wieder halbwegs OO-konform zu werden. Work-arounds sind oft schmutzig, aber manchmal muss die Drecksarbeit halt gemacht werden :zwinker:

Luckie 6. Feb 2004 15:43

Re: Klassen Methoden
 
Zitat:

Zitat von Chewie
Work-arounds sind oft schmutzig, aber manchmal muss die Drecksarbeit halt gemacht werden :zwinker:

Wäre was für eine Signatur. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Seite 1 von 4  1 23     Letzte »    

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