SWEN6 - Objektorientierte Modellierung - Vorteile/Nachteile von Sichtbarkeiten

  • Hallo!


    Ich sitze gerade an der Einsendeaufgabe für SWEN06 und finde keine klaren Antworter zur Aufgabe 1. Ich hoffe ihr könnt mir da helfen :)


    Die Aufgabenstellung lautet:


    1. Ein Bekannter erzählt Ihnen, er mache sich nicht die Mühe, lange über die Sichtbar- keiten von Methoden und Attributen einer Klasse nachzudenken. Er setze die Sicht- barkeit kurzer Hand immer auf public.

      Was halten Sie von diesem Vorgehen? Begründen Sie bitte Ihre Antwort.


    Im Heft steht dazu leider gar nichts. Es werden schlicht nur die unterschiedlichen Sichtbarkeiten erklärt aber nicht genau was überhaupt die Vorteile oder Nachteile sind die eine Argumentation rechtfertigen würden .:/ oder zumindest, und das trifft die Frage wsl. am Besten, WIESO es wichtig ist die Sichtbarkeiten nicht einfach nur auf public zu lassen.


    Bisher dachte ich mir folgendes:

    Sichtbarkeitseinstellungen sind wichtig da:

    - ansonsten alle Klassen auf alle Methoden zugreifen könnten ungeachtet dessen ob ein Zugriff überhaupt Sinn machen würde oder zu Problemen führt

    - Bei Fehlern ist die Fehlersuche aufgrund der Möglichkeit aller Klassen auf diese Methoden/Attribute zugreifen zu können ungleich aufwendiger als wenn nur spezielle Zugriffsberechtigungen (private, protected, package) vorliegen würden. Können z.b. nur abgeleitete Klassen auf die fehlerbehaftete Methode zugreifen (protected), erschließt sich die Fehlersuche weit schneller und unkomplizierter aufgrund der eingeschränkten Möglichkeiten.


    edit (was mir noch eingefallen ist):

    - wenn Code geändert werden muss, jedoch alles einfach auf public gestellt ist, kann man nicht so leicht nachvollziehen wo jetzt eigentlich tatsächliche Abhängigkeiten sind, die man betrachten muss um nicht bei einer Änderung in 100 Fehler rein zu laufen. Wird z.B. ein Teil eines Codes verändert was andere, abhängige Klassen davon abhält auf die Methode der geänderten Klasse sauber zuzugreifen, entsteht ein Fehler, welcher schlimmstenfalls aufgrund der nicht definierten Sichtbarkeiten an mehreren, für den Programmierer nicht so klaren, stellen für Probleme sorgt.


    Es wäre super, wenn ihr vielleicht noch den ein oder anderen Grund wüsstet an den ich noch nicht gedacht habe. Bin mir sicher, dass es dazu mehr gibt als nur das :S


    Danke im Voraus!


    leduke

  • nun . .. habe es nun selbst lösen können. für alle die das selbe Problem haben, hier die Lösung (volle Punktzahl):



    Die Aussage ist kritisch anzusehen. Sichtbarkeitseinstellungen sind wichtig, da:


    - ansonsten alle Klassen auf alle Methoden zugreifen könnten ungeachtet dessen ob ein Zugriff überhaupt Sinn machen würde oder zu Problemen führt (Methoden können zwar zunächst alle auf public gestellt werden, sodass eine Kommunikation aller Klassen möglich ist; jedoch sollte das auf Hinblick auf unnötige/ungenutzte Datenzugriffe, Fehlerbehebung und Fehlersuche im weiteren Verlauf verfeinert werden


    Die Regel sollte sein: So privat wie möglich, so öffentlich wie nötig


    Zudem sollten Attribute niemals von anderen Klassen außer der eigenen aufgerufen werden können. Hier ist besonders darauf zu achten, dass sie nicht auf public gestellt sind, denn: Attribute sind nie öffentlich sichtbar


    - bei Fehlern ist die Fehlersuche aufgrund der Möglichkeit aller Klassen auf diese Methoden/Attribute zugreifen zu können ungleich aufwendiger als wenn nur spezielle Zugriffsberechtigungen (private, protected, package) vorliegen würden. Können z.b. nur abgeleitete Klassen auf die fehlerbehaftete Methode zugreifen (protected), erschließt sich die Fehlersuche weit schneller und unkomplizierter aufgrund der eingeschränkten Möglichkeiten.


    - wenn Code geändert werden muss, jedoch alles einfach auf public gestellt ist, kann man nicht so leicht nachvollziehen wo jetzt eigentlich tatsächliche Abhängigkeiten sind, die man betrachten muss um nicht bei einer Änderung in 100 Fehler rein zu laufen. Wird z.B. ein Teil eines Codes verändert was andere, abhängige Klassen davon abhält auf die Methode der geänderten Klasse sauber zuzugreifen, entsteht ein Fehler, welcher schlimmstenfalls aufgrund der nicht definierten Sichtbarkeiten an mehreren, für den Programmierer nicht so klaren, stellen für Probleme sorgt.