Scala Klassen und Objekte

DataCamp hat kürzlich ihr erstes Kurs in Scala gestartet: Einführung in Scala. Schau dir ihn an!

Außerdem kannst du die folgenden Tutorials anschauen:

Einführung

Source

Im allgemeinen besteht objektorientierte Programmierung (OOP) aus Klassen und Objekten und zielt auf die Implementierung von realen Weltentitäten wie Polymorphie und Vererbung ab.

OOP macht die Entwicklung schneller und kostengünstiger mit besserer Softwarewartbarkeit. Der Hauptgrund für diese Magie ist die Anzahl der unterstützten Features; du hast Klassen & Objekte, die leicht für die Zukunft wiederverwendet werden können, basierend auf den Anforderungen, im Gegensatz zu einem Programm, das keine Klassen & Objekte besitzt. Dies führt im Endeffekt zu hochwertigeren Softwareprodukten, die auch mit neuen Methoden und Attributen erweiterbar sind.

Stellen wir uns vor, Sie haben eine Autoshowroom; jedes paar Monate kommt ein neues Auto auf den Markt, und um die interessierte Öffentlichkeit über seinen Namen und seine Merkmale zu informieren, müssen Sie von vornherein neue Methoden und Attribute definieren. Wenn Sie jedoch ein objektorientiertes Programm haben, das eine Klasse Auto hat, werden Sie sich nur um ein Objekt für dieses neue Auto kümmern, das die Methoden und Attribute dieser Klasse mit Informationen über das Fahrzeug aufruft.

Eine Klasse kann als eine Repräsentation oder ein Entwurf für Objekte angesehen werden. Klassen haben in der Regel ihre eigenen Methoden (Verhalten) und Attributen.

Attributen sind Einzelwerte, die jedes Objekt von den anderen unterscheiden und verschiedene Qualitäten eines Objekts bestimmen. Methoden hingegen verhalten sich wie Funktionen in der Programmierung. Sie bestimmen, wie ein Kontext der Klasse funktioniert. Es ist hauptsächlich wegen der Methoden (Verhalten), dass Objekte die Fähigkeit haben, auf sie etwas gemacht zu werden.

Source

Der obenstehende Diagramm gibt Ihnen mehr Intuition bezüglich des Flusses in der objektorientierten Programmierung oder genauer gesagt, was eine Klasse aussehen kann. In dem oben gezeigten Diagramm ist eine Klasse Auto mit Attributen: Treibstoff, Höchstgeschwindigkeit und kann weitere Attribute wie das Modell, das Hersteller usw. haben. Sie haben verschiedene Mengen von Methoden wie tanken(), getFuel(), setSpeed() und einige zusätzliche Methoden könnten Geschwindigkeit ändern, Motor starten, Motor stoppen usw. sein.

Also, wenn Sie über ein bestimmtes Auto sprechen, haben Sie ein Objekt, das eine Instanz einer Klasse ist.

Jetzt lass uns über die objektorientierte Programmierung in Scala sprechen.

Klassen und Objekte in Scala

Wie in C++ und Java folgt die objektorientierte Programmierung in Scala im Wesentlichen denselben Konventionen. Es kennt das Konzept der Definition von Klassen und Objekten sowie KlassenKonstruktoren, und das ist grundsätzlich alles, was objektorientierte Programmierung in Scala ausmacht.

Klassen Deklaration

class Class_name{ // Methoden und Attribute }

In Scala wird eine Klasse durch das Schlüsselwort class gefolgt vom Namen der Klasse definiert, und üblicherweise beginnt der Klassenname mit einem Großbuchstaben. Es gibt einige optionale Schlüsselwörter, die in der Klassendeklaration von Scala verwendet werden können, wie z.B.: Klassenname, er sollte mit einem Großbuchstaben beginnen: Superklasse, der Name der übergeordneten Klasse, gefolgt vom Schlüsselwort extend: Traits, eine durch Kommas getrennte Liste von Eigenschaften, die durch das Schlüsselwort extend implementiert werden.

Eine Klasse kann in Scala nur eine übergeordnete Klasse erben, was bedeutet, dass Scala keine multiple Vererbung unterstützt. Dies kann jedoch mit Hilfe von Traits erreicht werden.

Schließlich ist der Körper einer Klasse in Scala von geschweiften Klammern {} umgeben.

// Der Name der Klasse ist Car class Car { // Klassenvariablen var make: String = "BMW" var model: String = "X7" var fuel: Int = 40 // Klassenmethode def Display() { println("Make of the Car : " + make); println("Model of the Car : " + model); println("Fuel capacity of the Car : " + fuel); } } object Main { // Hauptmethode def main(args: Array[String]) { // Klassenobjekt var obj = new Car(); obj.Display(); } }

Du kannst den oben genannten Code unter dem Namen class.scala speichern und auf dem Terminal als scala class.scala ausführen. Du solltest die Ausgabe wie unten sehen können.

Nun, der oben genannte Code nutzt nicht vollständig die Privilegien, die ein objektorientiertes Programm verfügen kann. Da die Ausgabe des oben genannten Codes unabhängig davon gleich bleibt, wie oft du ihn ausführen kannst. Du hast statische Variablen innerhalb der Klasse definiert und die Werte dieser Variablen bleiben Konstanten, selbst wenn du unendlich viele neue Objekte erstellst. Zusammenfassend kannst du dir nicht erwarten, dass es Details für ein Mercedes-Benz oder ein Ferrari-Auto geben wird.

Konstruktor in Scala

Konstruktoren werden hauptsächlich zur Initialisierung des Zustands eines Objekts verwendet. Diese Objektinitialisierung erfolgt bei der Objekterstellung und es passiert nur einmal.

Es gibt zwei Arten von Konstruktoren in Scala: Primäre und Unterstützende. Für dieses Lehrbuch lernst du über den primären Konstruktor (Quelle: O’Reilly).

class Class_name(Parameter_list){ // Methoden, Attribute }

Der primäre Konstruktor enthält dieselbe Beschreibung wie die Klasse und wird automatisch mit der Klasse definiert. Er beginnt bei der Klasse und erstreckt sich über den kompletten Körper der Klasse. Außerdem ist ein primärer Konstruktor in einem Scala-Programm existent, wenn es nur einen Konstruktor gibt. Ein primärer Konstruktor kann ohne Parameter, mit einem oder mehreren Parametern definiert werden.

Also, nehmen wir den vorhergehenden Beispiel, aber diesmal fügen wir die Funktionalität des primären Konstruktors hinzu und beobachten die Wirkung.

Außerdem werden Sie hier eine neue Eigenschaft einer Klasse lernen, d.h. eine Klasse kann mehrere Objekte oder Instanzen haben, aber beide sind unabhängig voneinander.

// Klasse heißt Auto class Car(make: String, model: String, fuel: Int) { // Klasse Methode def Display() { println("Make of the Car : " + make); println("Model of the Car : " + model); println("Fuel capacity of the Car : " + fuel); } } object Main { // Hauptmethode def main(args: Array[String]) { // Mehrfache Klasse Objekt var obj1 = new Car("BMW", "X7", 40); var obj2 = new Car("Mercedes Benz", "S350D", 50); obj1.Display(); obj2.Display(); } }

Lassen Sie uns schnell das Ergebnis sehen:

Na, ist das nicht großartig? Mit Hilfe eines Konstruktors waren Sie in der Lage, effektivere Ergebnisse zu erhalten.

Aufruf von Objekten in Scala

Der Aufruf von Objekten in Scala kann auch als Instantiation einer Klasse oder Aufruf einer Klasse bezeichnet werden. Ähnlich wie Klassen sind Objekte auch eine grundlegende Einheit der objektorientierten Programmierung.

Ein Objekt kann drei Merkmale aufweisen (Quelle: GeeksforGeeks:

  • Zustand: Attribute eines Objekts repräsentieren es. Es widerspiegelt auch den Eigenschaften eines Objekts.
  • Verhalten: Methoden eines Objekts repräsentieren es. Es widerspiegelt auch die Reaktion eines Objekts auf andere Objekte.
  • Identität: Es gibt einem Objekt einen eindeutigen Namen und ermöglicht es, dass ein Objekt mit anderen Objekten interagieren kann.

Betrachten Sie den Hund als ein Objekt und sehen Sie sich das untenstehende Diagramm bezüglich seiner Identität, seines Zustands und seines Verhaltens an.

(Source)

Alle Instanzen oder Objekte teilen die Klassenattribute und Methoden. Eine einzelne Klasse kann mehrere Objekte haben, wie Sie hier gelernt haben. Allerdings sind der Zustand oder die Werte jedes Objekts einzigartig.

Schließlich werden Sie einen Code schreiben, der Primärkonstruktoren, Klassenvariablen, Attribute und Methoden alle in einem einzigen Code vereint.

Unten sehen Sie eine bildliche Darstellung der Komponenten, die in die Klasse Motorcycle eingefügt wurden.

Der untenstehende Code ist selbsterklärend; auf hoher Ebene jedoch überprüft er, ob der Motorrad-Motor on oder off ist. Anfangs wird der Motor in den ausgeschalteten Zustand versetzt, und er wird Sie über seinen Zustand informieren und ihn einschalten.

class Motorcycle(make:String,color:String) { var engineState: Boolean = false; def startEngine() { if (engineState == true){ println("The engine is already on."); } else { engineState = true println("The engine is now on."); } } def showAtts() { println("This motorcycle is a "+ color + " " + make); if (engineState == true){ println("The engine is on."); } else{ println("The engine is off."); } } } object Main { def main (args: Array[String]) { var m = new Motorcycle("BMW K 1600 GTL","White"); println("Calling showAtts..."); m.showAtts(); println("------"); println("Starting engine..."); m.startEngine(); println("------"); println("Calling showAtts..."); m.showAtts(); println("------"); println("Starting engine..."); m.startEngine(); } }

Herzlichen Glückwunsch!

Herzlichen Glückwunsch zum Abschluss dieses Tutorials.

Sie wissen nun, wie man Klassen und Methoden deklariert, Objekte instanziiert, ihre Attribute setzt und Instanzmethoden in Scala aufruft. Diese Konzepte werden Ihnen nicht nur in Scala, sondern auch in anderen Programmiersprachen nützlich sein.

Objektorientierte Programmierkonzepte sind interessant und gleichzeitig sehr kraftvoll. Sie fügen Ihrer Code eine neue Dimension hinzu, machen ihn wiederverwendbar. Wenn Ihr Programm größer wird, wird Ihr Code in Komplexität wachsen. Es gibt eine Menge von Inhalt in objektorientierten Programmierkonzepten wie Vererbung, Polymorphismus, Instanzmethoden. Weitere leistungsfähige Funktion ist der Singleton. Die Designprinzipien helfen dabei, Ihren Code strukturierter und lesbarer zu halten. Wenn Sie mehr über Designmuster erfahren möchten, erwägen Sie das Lesen dieses Buchs.

Bitte stellen Sie gerne Fragen zu diesem Tutorial in den Kommentaren unten.

Im Abschluss, vergessen Sie nicht, den neuen Scala-Kurs auf DataCamp zu belegen, Einführung in Scala.

Source:
https://www.datacamp.com/tutorial/scala-classes-objects