1.- Es por
Encapsulamiento.
2.- Te recomiendo leas el
Estandar de Zend para codificar.
3.- No necesariamente, necesitas pensar en objetos y como utilizarlos y como ellos utilizarse a ellos mismos. Si todavía no tienes claro este concepto te recomiendo que leas un buen libro de Programación Orientada a Objetos, aunque sea en Java o en otro lenguaje. Tienes que tener en claro como trabajar y crear los objetos para poder empezar a programar, ya que de lo contrario vas a terminar programando funcionalmente estilo orientado a objetos, y es una forma incorrecta ya que no estas ni programando funcionalmente ni orientado a objetos.
Saludos.