Privatisierung in der OOP

Privatisierung spielt in der Objekt orientierten Programmierung eine größere Rolle, gerade wenn es um Singletons und ähnliche Patterns geht. Doch gerade Anfänger, wie die meisten Schüler im Informatik-Unterricht es sind, sehen nicht den Sinn dahinter, ausser dass meist noch sogenannte getter und setter-Methoden erstellt werden müssen. Gerade in kleinen Projekten ist dies in deren Augen nur unnötige Schreibarbeit.

Ein Anwendungsfall, wo das ganze jedoch schnell Sinn macht, ist das Fluent Interface Pattern, welches gerne auch als Method Chaining bezeichnet wird. So kann mit einmaligem Aufführen der Instanzvariable diverse Werte gesetzt werden. Aussehen würde dies bspw. für die Test-Instanzklasse “TestInstanz” in Java folgendermaßen:

TestInstanz.setName("Evan").setLastName("Dexter").setAge(30).setLocation("Exampletown");

Ohne Method Chains wird daraus schnell folgendes:

TestInstanz.name("Evan");
TestInstanz.lastName("Dexter");
TestInstanz.age(30);
TestInstanz.location("Exampletown");

Hierzu mehr in folgendem Artikel von mir: Method Chaining

Ein weiterer Vorteil ist das gezielte Kontrollieren von Werten. So kann beim Beispiel einer Klasse für Brüche direkt im Setter die 0 abgefangen werden und optional auch eine Exception als Error geworfen werden. Ohne Privatisierung kann der Entwickler so einfach direkt als Nenner die 0 setzen und so die Funktionsfähigkeit der Klasse geziehlt angreifen, was auch durch fremde Eindringlinge bei fehlender Kontrolle durch den Entwickler zu einem Problem werden könnte.

Weitere Vorteile sind unter anderem einfach der Überblick in größeren Projekten und dass, wenn später einmal Einschränkungen hinzu kommen sollten, die Kontrollstrukturen schnell und einfach angepasst werden können, ohne eine größere Anzahl von Quelltext-Zeilen ändern zu müssen.



1 Antwort : “Privatisierung in der OOP”

  1. Cobra_Fast sagt:

    TestInstanz.setName(“Evan”).setLastName(“Dexter”).setAge(30).setLocation(“Exampletown”);

    verstehe ich so, dass setName() member von TestInstanz, setLastName() member von setName()s Returntype, setAge() member von setLastName()s Returntype und setLocation() member von setAge()s Returntype ist, und nicht als einfache aneinanderreihung von befehlen.

Einen Kommentar schreiben