Smalltalk-Initialisierungsvariablen

8

In Sprachen wie Java und C ++ geben wir Konstruktoren Parameter.

Wie machst du das in Pharo Smalltalk?

Ich möchte etwas wie

%Vor%

Oder ist das schlechte Praxis und sollte ich immer tun

%Vor%     
Jeremy Knees 08.01.2013, 21:49
quelle

2 Antworten

12

Die kurze Antwort ist, dass Sie in Smalltalk ziemlich genau dasselbe machen können. Aus dem aufrufenden Code würde es aussehen:

%Vor%

Die lange Antwort ist, dass Sie in Smalltalk keine Konstruktoren haben, zumindest nicht in dem Sinne, dass Sie eine spezielle Nachricht haben, die nach der Klasse benannt ist. Was Sie in Smalltalk tun, ist die Definition von Nachrichten auf Klassenebene (d. H. Nachrichten, die von der Klasse verstanden werden, nicht die Instanz [*]), in denen Sie Ihre Instanzen instanziieren und konfigurieren können. Angenommen, Ihre Color -Klasse hat eine name -Instanzvariable und einen Setter für sie, die #named: -Methode würde wie folgt implementiert:

%Vor%

Einige Dinge zu beachten:

  • Wir verwenden die an die Klasse gesendete Nachricht #new , um eine neue Instanz zu erstellen. Sie können sich die Nachricht #new als primitiven Weg zum Erstellen von Objekten vorstellen (Hinweis: Sie können die Implementierer der Nachricht #new durchsuchen, um zu sehen, wie sie implementiert wird).
  • Wir können so viele Klassenmethoden definieren, wie wir neue "konfigurierte" Instanzen (z. B. Color fromHexa: ) erstellen oder im Voraus erstellte erstellen (z. B. Color blue ).
  • Sie können weiterhin eine nicht initialisierte Instanz erstellen, indem Sie Color new ausführen. Wenn Sie dieses Verhalten verbieten möchten, müssen Sie die #new -Klassennachricht überschreiben.

Es gibt viele gute Bücher, die Sie über Smalltalk-Grundlagen in Stefs kostenlosen Online-Smalltalk-Büchern

lesen können >

[*] Dies ist aufgrund der orthogonalen Natur von Smalltalk ziemlich natürlich, da alles (einschließlich Klassen) ein Objekt ist. Wenn Sie interessiert sind, lesen Sie Kapitel 13 von Pharo by Example oder einen anderen Verweis auf Klassen und Metaklassen in Smalltalk.

HTH

    
Andrés Fortier 08.01.2013, 22:14
quelle
3

In Smalltalk sind alle Mitgliedsfelder streng vertraulich, und um ihnen zuzuweisen, müssen Sie Zuweisungsmethoden definieren.

%Vor%

Dann könnten Sie Ihr Objekt wie folgt erstellen:

%Vor%

Zur Reduzierung der Ausführlichkeit wird häufig die Factory-Methode verwendet:

%Vor%

Damit könnten Sie neue Objekte wie folgt erstellen:

%Vor%     
Nekuromento 08.01.2013 22:03
quelle

Tags und Links