Programowanie obiektowe to po prostu modelowanie świata za pomocą obiektów ;) Weźmy za przykład to co masz (prawdopodobnie) przed oczami: biurko, monitor, komputer itd.
Każdy z tych przedmiotów jest obiektem - np. twój monitor Dell jest instancją (obiektem) klasy Monitor. Posiada pewne własności (wysokość, rozdzielczość itd.) oraz metody (wyświetl obraz, pokaż menu). Z kolei twój konkretny komputer (który jest instancją klasy Komputer) również posiada swoje własności oraz metody.
Zatem mamy dwa obiektu i teraz wypadałoby wymodelować relacje między nimi. Np. aby wyświetlić jakiś obraz na monitorze (czyli wywołać metodę wyświetlObraz - display) należy najpierw podłączyć go do komputera. Mogłoby to wyglądać mniej więcej tak:
class Monitor
{
private $computer;
public function connect(Computer $computer)
{
$this->computer = $computer;
}
public function display()
{
// aby wyświetlić obraz potrzebujemy połączonego kompa
if (!$this->computer instanceof Computer) {
return;
}
// ...
}
}
Bardziej łopatologicznie się nie da ;) Najważniejsze, aby zrozumieć samą ideę tego podejścia, bardziej zaawansowane zagadnienia same przyjdą z czasem i praktyką.
BTW tablice nie są elementem programowania obiektowego i wywodzą się z programowania strukturalnego. Nie są one klasami (czy ich rodzajami), tylko typem generycznym składującym pewne dane.