Überall protected-Member?



  • Shade Of Mine schrieb:

    Alles protected zu machen ist dumm.

    hustbaer schrieb:

    Alles (oder fast alles) protected machen is plem. Und auch nicht nötig.

    Steffo schrieb:

    - Wie schon erwähnt wurde: Access-Levels so restriktiv wie möglich halten.
    - Delegation und Interfaces Vererbungen vorziehen (hierzu sind Bücher über Software-Patterns oder Software-Architektur empfehlenswert)

    Gut, könnte jemand nochmal auf den Punkt bringen wieso man alle Member nicht einfach aus dem Grund, die ableitende Klasse sollte volle Kontrolle haben, protected macht? Mein Lehrer hält vom Internet nicht viel, da dort auch viel Scheiß steht (ja, ich war dann immer ganz schnell still XD).

    Soll ich mal den Projektcode hochladen?

    hustbaer schrieb:

    Steffo schrieb:

    Einmal redet ihr über access modifier und einmal darüber, wie sinnvoll Ableitungen sind. Da habt ihr/du Sachen vermischt und deswegen ...

    Also nö, ableiten und protected haben schon recht ziemlich ganz viel miteinander zu tun.

    Seine Argumentation war, dass die Klasse volle Kontrolle haben sollte.



  • Sone schrieb:

    Gut, könnte jemand nochmal auf den Punkt bringen wieso man alle Member nicht einfach aus dem Grund, die ableitende Klasse sollte volle Kontrolle haben, protected macht?

    Invarianten und Kapselung -> Bertrand Meyer würde ich ihm hier empfehlen.

    Diese Diskussion bringt aber nichts. Deine korrekte Reaktion wäre "Ja" und "Amen" zu sagen und dich nicht weiter als notwendig mit dem Professor zu befassen. Du wirst seine Meinung nicht ändern können, du wirst nur negativ bei ihm auffallen und dir dadurch das Leben selber schwer machen.



  • Shade Of Mine schrieb:

    Deine korrekte Reaktion wäre "Ja" und "Amen" zu sagen und dich nicht weiter als notwendig mit dem Professor zu befassen. Du wirst seine Meinung nicht ändern können, du wirst nur negativ bei ihm auffallen und dir dadurch das Leben selber schwer machen.

    Mittlerweile habe ich das Gefühl, Professoren geben einem zwei Optionen...

    Vielen Dank für die Bestätigung. Ich werde in Zukunft einfach stumm lächeln wenn er mir (bzw. uns) fragwürdige Sachen vermittelt (und z. T. hier nachfragen ob mein Einwand berechtigt ist 😃 ).

    Edit: Komisch. Der Link oben ist irgendwie tot.



  • Sone schrieb:

    Shade Of Mine schrieb:

    Alles protected zu machen ist dumm.

    hustbaer schrieb:

    Alles (oder fast alles) protected machen is plem. Und auch nicht nötig.

    Steffo schrieb:

    - Wie schon erwähnt wurde: Access-Levels so restriktiv wie möglich halten.
    - Delegation und Interfaces Vererbungen vorziehen (hierzu sind Bücher über Software-Patterns oder Software-Architektur empfehlenswert)

    Gut, könnte jemand nochmal auf den Punkt bringen wieso man alle Member nicht einfach aus dem Grund, die ableitende Klasse sollte volle Kontrolle haben, protected macht?

    Hab ich doch schon begründet...
    Es ist schlecht, weil man dann ableiten und Unfug anstellen kann.
    Und Leute tun das dann auch.
    So entsteht Code wo die Basisklasse und die abgeleitete Klasse bösest gekoppelt sind. Eine minimale harmlos aussehende Änderung in der Basisklasse kann dann dazu führen dass die abgeleitete nimmer funktioniert.
    Davon die Basisklasse zu refactoren kann man dann nur träumen.

    Wenn man dagegen nur ganz selektiv bestimmte Dinge protected macht, und erst wenn es nötig ist, und dabei ganz bewusst darauf achtet nix aufzumachen was einem in Zukunft das Leben zur Hölle machen könnte, dann vermeidet man dieses Problem grösstenteils.

    Klar, manchmal kann man nicht anders als viel aufzumachen und Klassen sehr eng zu koppeln. In C++ gibt es dafür friend. In Java gibt es dafür "default" (=das was man bekommt wenn man weder private noch protected noch public hinschreibt). Damit macht man die Klasse zwar gegenüber dem ganzen Package auf, aber wie gross das Package ist kann man ja kontrollieren. Und man kann sicher sein dass nicht irgend ein Depp in einem anderen Team hergeht und damit Scheisse baut.

    ps: In Java ist protected zusätzlich zu abgeleiteten Klassen auch für das ganze Package offen. D.h. man hat mit "default" keinen Nachteil, wenn es nur darum geht dass eine Klasse im selben Package Zugriff auf viele "Internas" einer anderen braucht.



  • Was mir noch auffällt: Er macht die Koordinaten in einer 3D-Vektor Klasse protected...? Ich meinte, WTF? Die sollten doch erstens public sein, weil solche Vektoren einfache Datenstrukturen sind, und zweitens habe ich noch keine 3D-API gesehen, wo das anders ist (und ich habe schon einige gesehen)... und wer leitet schon von einer Vektor-Klasse ab?

    Edit: Bezüglich zur Vektor-Klasse hab' ich noch mal nachgedacht, und mir scheint, als ob das in C++ anders ist weil da solche Vektor-Klassen viel öfter kopiert werden...

    Und dann sowas:

    for(int n = 1; n<=100000000; n++){
    	try {Thread.sleep(10);} catch (InterruptedException e) {}
            // ....
    

    Ich mein, hä? Wieso nicht einfach eine Endlosschleife?



  • Dein Leerer hat keine Ahnung von dem was er tut. Da brauchen wir nicht lang rumdiskutieren.



  • hustbaer schrieb:

    Hab ich doch schon begründet...
    Es ist schlecht, weil man dann ableiten und Unfug anstellen kann.
    Und Leute tun das dann auch.

    Ja, und dann sagen die Profs: "und genau dafür haben wir das ja auch protected gemacht". Zumindest ist es das, was ich so erlebe. Die Fähigkeit eine Idee spontan innerhalb weniger Minuten in Code umzusetzen wiegt schwerer, als das was softwaretechnisch richtig wäre. Die Annahme ist, dass die Leute wissen, was sie tun uns selbst dafür sorgen, dass die invarianten stimmen. Dafür hat man aber eine einfache Möglichkeit, schnell eine Funktion zu überschreiben. Im Allgeminen macht das keinen Sinn, aber wenn ein Prof das sagt, dann kann das in seiner Anwendung sogar sinn machen.



  • Kurze gesagt, dein Lehrer braucht ne Nachschulung:) Forum kann geschlossen werden 🕶



  • otze schrieb:

    aber wenn ein Prof das sagt, dann kann das in seiner Anwendung sogar sinn machen.

    Gerade dann würde ich sowas mit vorsicht genießen.

    Professoren sind Leute die nicht in der Praxis leben, sondern in der Theorie. Und dort leben sie unreflektiert.



  • Shade Of Mine schrieb:

    Professoren sind Leute die nicht in der Praxis leben, sondern in der Theorie. Und dort leben sie unreflektiert.

    ACK
    Es gibt ein paar Ausnahmen, aber leider sind es eben wirklich nur ein paar Ausnahmen...


Anmelden zum Antworten