úterý 9. září 2003

Metody set a get v OOP jsou špatným návykem

Allen Holub boří další mýtus, po té co v článku Why extends is evil (Dagblog - Dědičnost vs. implementace) nenechal nit suchou na dědění, se pouští do tzv. accesoru. Accesory jinak též set a get metody nebo setry a getry se používají pro zapouzdření neveřejných proměnných objektu.

Fundamentálním přikázáním v OOP je zapouzdření objektu. Objekt reprezentuje pouze veřejné rozhraní, kterým umožňuje komunikaci s okolním světem. Vše mimo veřejné rozhraní objektu je vnitřní reprezentace objektu, která se skrývá před okolním světem z důvodu, aby jí bylo možné v případě potřeby změnit.

 
   class Bar{
     public int foo = 10;
   }
 

 se zapouzdřuje pomocí set a get metod takto
 
 
   class Bar{
     private int foo = 10;

     public void setFoo(int foo){
        this.foo = foo;
     }

     public int getFoo(){
        return this.foo;
     }
   }
 
	  

Stejný či podobný kód naleznete v 90% materiálu dotýkajících se OOP. Proč použití těchto accesoru není úplně pravé ořechové vysvětluje článek Why getter and setter methods are evil. Odborná kvalita článku je na velice vysoké úrovni a vřele doporučuji si ho prostudovat.