• Sichtbarkeit in der OOP

    von am 31. August 2008

    Ich hoffe mal, dass jeder hier Sichtbarkeiten kennt. In der OOP werden sie auf Attribute und Methoden angewendet. Als Beispiel kann man eine Funktion public deklarieren und somit kann jeder von außen auf diese zugreifen, bei private kann nur die Klasse selbst und bei protected können auch abgeleitete Klassen damit hantieren. In der Vorstellung vieler oder der meisten Programmierer ist es aber anders, für sie ist es eine Sichtbarkeit auf Objekt Ebene. Das heißt ich habe ein Objekte und kann darin auch auf die Methoden zugreifen, die ich über die Klassenhierarchie geerbt habe. Ein kleines Beispiel wäre:

    class A
    {
      protected function doSth( )
      {
      }
    }
    
    class B extends A
    {
      public function doSthElse( )
      {
        parent::doSth( );
      }
    }
    $b = new B;
    $b->doSth( ); // Fehler
    $b->doSthElse( ); // Funktioniert

    Soweit so gut, hier sind wir ja noch alle auf einem Nenner. Das aber folgendes Konstrukt auch funktioniert, wissen die wenigstens. Zumindest eine repräsentative Umfrage in unserem Team ergab diese Vermutung (2 von 2 nicht gewusst).

    Class B extends A
    {
      public function doSthElse( )
      {
       $a = new A;
       $a->doSth( );
      }
    }

    Obwohl ich hier von außen auf die Methode doSth( ) zugreifen will und diese protected ist, habe ich das Recht sie zu verwenden. Dies liegt natürlich an dem anderen Kontext, in dem wir hier handeln. Aber hier kann man einfach sehen, dass nur die Klassen relevant für die Sichtbarkeiten sind und nicht die Objekte mit denen ich gerade jongliere. Diese Sichtweise auf Klassen wird übrigens in den meisten OO Programmiersprachen geteilt.

    Nils Langner

    Auch wenn Ihr es mir nicht glauben werdet, aber ich habe nichts gegen PHP. Ich rege mich einfach nur gerne auf. Ok so schlimm ist es auch nicht. Eigentlich wollte ich schon immer einen Blog haben und da ...

    Zum Profil von Nils Langner

    Keine Kommentare »

    Noch keine Kommentare

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.