Articles

Was ist eine Mutator-Methode in Java?

Erfahren Sie, was eine Mutatormethode in Java ist und welche Vorteile die Verwendung von Mutatoren und Accessor-Methoden hat. Alle Erklärungen enthalten Beispiele zur Veranschaulichung.

Card image cap

In diesem Artikel erfahren Sie, was eine Mutator-Methode in Java und Accessor-Methode. Darüber hinaus werden Sie die Vorteile der Verwendung von Mutator- und Accessor-Methoden verstehen und einige Java-Beispiele sehen.

Die Konzepte der Mutator- und Accessor-Methode sind eng mit der objektorientierten Programmierung und Kapselung verbunden. Falls Sie mit objektorientierter Programmierung nicht vertraut sind. Ich habe unten eine kurze Einführung eingefügt; Wenn Sie jedoch weitere Details wünschen, lesen Sie die Dokumentation.

Inhaltsverzeichnis

Objektorientierte Programmierung Zusammenfassung

Objektorientierte Programmierung bedeutet, dass Sie Probleme lösen, die die Entitäten des Problems als Klassen darstellen. Eine Klasse hat einen Status und Methoden, bei denen der Status eine Menge von Variablen ist, die die relevanten Daten in unserer Darstellung enthalten. Und die Methoden bestimmen die Operationen, die unsere Klasse ausführen kann.

Zum Beispiel können wir die Klasse Circle definieren:

public class Circle {private float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } }

Diese Klasse repräsentiert das Kreiskonzept. Der Status der circle-Klasse hat den Radius und eine Methode namens area() , die den Kreisbereich zurückgibt.

Sie können der Circle Klasse den folgenden Code hinzufügen, um ihn zu testen:

public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.area()); }

Ausgabe:

28.274333882308138

Encapsulation Recap

Wir haben eine Klasse mittels objektorientierter Programmierung definiert und das Objekt circle1 der Klasse Circle erstellt. Was ist, wenn ich den Radius des Objekts ändern möchte circle1. So wie der Code steht, kann ich ihn nicht ändern, da es keine Methode gibt, um auf die Variable radius zuzugreifen. Ich kann nur ein neues Kreisobjekt mit einem anderen Radius erstellen. Was kann ich tun, um dies zu korrigieren?

Sie können zwei Dinge tun; einer führt zu einer gut gestalteten Klasse und der andere zu einem schlechten, schwierig zu pflegenden Design. Eine Möglichkeit besteht darin, das Feld radius als öffentliches Feld zu deklarieren, sodass es außerhalb der Klasse zugänglich ist. Siehe die folgenden Änderungen:

public class Circle {public float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.radius); circle1.radius = 5; System.out.println(circle1.radius); } }

Ausgabe:

3.05.0

Die andere Option besteht darin, Methoden für den Zugriff auf und die Änderung des Radius-Felds zu erstellen, mit denen Sie die Implementierungsdetails ausblenden können. Dieser Mechanismus wird auch als Verkapselung bezeichnet.

Mutator Methodendefinition in Java

Die Mutator-Methode in Java und jeder objektorientierten Programmiersprache ist eine Methode, mit der Sie die Variablen innerhalb der Klasse ändern können. Private ist die Zugriffsebene für die Variablen, dh die einzige Möglichkeit, die Variablen zu ändern, besteht darin, die Mutatormethoden zu verwenden. Auf diese Weise können die Mutatormethoden die Gültigkeit und Qualität der in der Klasse gespeicherten Daten steuern.

Im vorherigen Codeausschnitt ist beispielsweise die setRadius() -Methode eine Mutatormethode. Sie können diese Methode ändern, um eine Datenvalidierung hinzuzufügen. Ein Beispiel für die Datenvalidierung könnte beispielsweise die Überprüfung sein, ob der neue Radius eine negative Zahl ist.

Accessor-Methodendefinition in Java

Accessor-Methoden sind Methoden, die das Lesen der Klassenfelder auf andere Methoden oder Klassen außerhalb der Klasse ermöglichen. Auf diese Weise können Sie steuern, wie der Clientcode auf die Klassenfelder zugreifen kann.

Beispiele für Mutatoren und Accessoren

Sehen wir uns einige Beispiele an, um die Mutator- und Accessor-Methoden zu veranschaulichen. Setter und Getter sind eine weitere Möglichkeit, sich auf Accessor- und Mutatormethoden zu beziehen.

Unten gibt es ein Beispiel, wie man Getter zu einer Klasse hinzufügt. Die Klasse heißt Product und hat zwei Getter: getPrice() und getName(). Mit diesen Methoden kann jeder Clientcode auf die Klassenvariable price und name zugreifen.

import java.math.BigDecimal;public class Product { private BigDecimal price; private String name;// getter or accessor methods public BigDecimal getPrice() { return price; } public String getName() { return name; }}

Und jetzt werde ich die Mutatoren hinzufügen, damit ich auf die Klassenvariable zugreifen und sie ändern kann.

import java.math.BigDecimal;public class Product { private BigDecimal price; private String name; public BigDecimal getPrice() { return price; } public String getName() { return name; } // mutator or setter methods public void setPrice(BigDecimal price) { if(price.compareTo(BigDecimal.ZERO)<0 )throw new IllegalArgumentException("Empty product name"); this.price = price; } public void setName(String name) { if(name.isEmpty()) throw new IllegalArgumentException("Empty product name"); this.name = name; }}

Wie Sie oben sehen können, enthalten die Setter-Methoden setPrice() und setName() auch eine Validierung, um sicherzustellen, dass die übergebenen Daten einige Kriterien erfüllen. Eine der Anforderungen ist beispielsweise, dass ein Preis immer über Null liegen sollte. Falls der Parameter ungültig ist, löst der Code eine Ausnahme aus. Andernfalls wird der neue Wert zugewiesen.

Namenskonventionen für Mutatoren

In Java sollten die Namen dieser Methoden, Accessoren und Mutatoren bestimmten Namenskonventionen folgen. Diese Regeln sind vollständig stabilisiert, weshalb sie unbedingt befolgt werden müssen. Wenn Sie diese Konventionen nicht befolgen, kann dies zu Frustration und Verwirrung führen, wenn andere Personen Ihren Code lesen.

Beginnen wir mit den Namenskonventionen für Mutatoren. Die Methode sollte als public deklariert werden und void zurückgeben. Außerdem sollte der Methodenname mit dem Wort set in Kleinbuchstaben beginnen. Gefolgt vom Namen der Klassenvariablen mit einem Anfangsbuchstaben. Wenn unsere Klasse beispielsweise eine Variable mit dem Namen age , sollte die Mutatormethode wie folgt aussehen:

public void setAge(int age){...}

Namenskonventionen für Accessoren

Zusammen mit Mutatoren haben wir die Accessoren gesehen, die ebenfalls einer ähnlichen Namenskonvention folgen. Die Regeln sind, dass die Methode als öffentlich deklariert werden sollte. Zusätzlich sollte der Methodenname mit get beginnen, gefolgt vom Namen der Klassenvariablen mit einem Anfangsbuchstaben. Die Methode hat keine Parameter und gibt den Typ der Instanzvariablen zurück. Nach dem vorherigen Beispiel erstellen wir eine Accessor-Methode für die Variable age:

public int getAge(){...}

Vorteile von Mutatoren und Accessoren

Bisher haben wir die Accessor- und Mutator-Methoden in Java mit einigen Beispielen gesehen. Und machen Sie sich mit den Namenskonventionen vertraut, die Sie beim Deklarieren dieser Methoden befolgen sollten. Wie sind diese Methoden jedoch nützlich? Der Hauptvorteil ist die Kapselung. Dies bedeutet im Grunde, dass Sie durch das Erstellen dieser Methoden die internen Details Ihrer Klasse vor anderen Komponenten verbergen. Andere Komponenten können nur über die API kommunizieren.

Folglich werden Klassen entkoppelt; sie sind nicht voneinander abhängig, sodass Sie isoliert entwickeln können, was zu schnelleren Entwicklungen führt, da Teammitglieder verschiedene Klassen und Komponenten parallel erstellen können. Neben der Erleichterung der Wartung, da Komponenten modifiziert werden können, mit geringen Auswirkungen auf andere abhängige Komponenten.

Fazit

Zusammenfassend haben wir in diesem Artikel gesehen, dass Mutator-Methoden und Accessors-Methoden in Java Methoden sind, die es uns ermöglichen, Klassenvariablen zu lesen und zu schreiben. Ihr Hauptzweck ist es, uns zu helfen, Klassen zu entwerfen, die gut gekapselt und voneinander entkoppelt sind.

Ich hoffe, Sie finden den Artikel nützlich und vielen Dank, dass Sie diesen Blog gelesen und unterstützt haben! Glückliche Codierung!