AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Was macht dieses "class"-Konstrukt

Ein Thema von kalmi01 · begonnen am 15. Sep 2005 · letzter Beitrag vom 15. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
kalmi01
(Gast)

n/a Beiträge
 
#1

Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 12:17
Hallo,

bin auf dieses class-Konstrukt gestossen.
Delphi-Quellcode:
type
  TOperator_Add = class(TFunction)
  published
    class function Float(Param1, Param2: TVariable; _R: TVariable): TVariable; override;
  end;

.....

class function TOperator_Add.Float(Param1, Param2: TVariable; _R: TVariable): TVariable;
begin
  ...
end;
Der Sinn ist mir aber nicht ersichtlich, was passiert da ?
Warum "class" vor "function" ?


So ein Konstrukt hab ich noch nie vorher gesehen und die OH war nicht besonders hilfreich.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 12:23
Hast Du on der OH unter "Klassenmethoden" nachgesehen?
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#3

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 12:24
Wenn du das "Class" wegläßt, dann kann diese Funltio/Prozedur nor von einem instantiiertem Objekt verwendet werden.

mit diesem Class kannst du diese Funktion/Prozedur auch verwenden, wenn du von der entsprechenden Klasse noch kein Objekt erzeugt hast.
Also es muß zum ausführen der Klassenfunktion vorher keine .Create und nachher natürlich auch kein .Free vorhanden sein.


Was es aber ganz genau damit auf sich hat, kann ich dir auch noch nicht mit Sicherheit sagen -.-''
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 12:26
Die Suchfunktion schon bemüht
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#5

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 12:30
diese "class of typ" und das hier gemeinte "class function/procedure" in einer Klasse sind aber was unterschiedliches
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#6

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 12:36
choose: Macht das Ganze nicht unbedingt klarer

himitsu: danke
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 12:41
Eine normale Methode wird an einer Instanz einer Klasse ausgeführt.
Delphi-Quellcode:
Miep := TMiep.Create();
Miep.DoSomething();
Klassenmethoden werden direkt an der Klasse ausgeführt.
TMiep.DoSomething(); Während du in einer Instanzmethode auf die Instanz Member deiner Klasse zu greifen kannst, geht das mit Klassenmethoden natürlich nicht.

Aber sage jetzt bitte nicht, dass du beruflich mit Delphi zu tun hast.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 12:52
Eine normale Methode bekommt als ersten Parameter Self uebergeben das auf die Instanz des Objektes zeigt fuer das die Methode aufgerufen wurde.
Eine class-Methode bekommt in Self die Klasse selbst uebergeben. Das ist nichts anderes als wieder ein Objekt das die Klasse beschreibt.
Da keine Objektinstanz uebergeben wird, kann die class-Methode auch ohne ein instanziiertes Objekt aufgerufen werden.

Die Einsatzmoeglichkeiten sind vielfaeltig.
Man kann Funktionen als Methoden implementieren, ohne je eine Objektinstanz zu benoetigen.

Viel wichtiger ist es aber as man Objekte der Klasse instanziieren kann (die betrachtete Klasse heisse TMyClass).
Man ruft einfach Self.Create auf und da dies ja ein instanziiertes Klassenobjekt TMyClass ist, bekommt man ein instanziiertes Objekt.
Dazu hat TMyClass einfach eine Methode Create statt eines Konstruktors.
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#9

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 13:03
Hallo "Robert Marquardt",

danke, jetzt ist's klar.

Zitat:
Man kann Funktionen als Methoden implementieren, ohne je eine Objektinstanz zu benoetigen.
Ich dachte immer, der Vorteil von OOP sei, dass Objekte instanziiert werden und nach "Gebrauch" wieder frei gegeben werden und man zwischenzeitlich quasi alles mit den Instanzen anstellen kann, was man will.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Was macht dieses "class"-Konstrukt

  Alt 15. Sep 2005, 13:21
Tja in Object Pascal können die Klassen selbst auch als Objekte verwendet werden.
Mit virtuellen Klassenmethoden hat man somit auch Polymorphy zur Verfügung.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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