Ano, priznavam, ze puvodni OOP neznam (aktualni prakticky pouzivane OOP ano). Ale nejak se mi nepozdava, ze treba zapouzdreni by tam chybelo, coz snad ty modifikatory pristupu zajistuji.
Původní OOP spočívalo v tom, že data i algoritmy jsou zapouzdřeny v objektu. Metody měly bezproblémový přístup k instančním proměnným, které zvenku přístupné nebyly. Perfektně zapouzdřeno. Postupně se to však zdeformovalo do podoby, kdy data jsou zvlášť a servisní služby také zvlášť v samostatných třídách. Často statických. Aby bylo možné se k těm datům dostat zvenčí, tak se na to naroubovaly gettery a settery. Prostě z toho vznikl paskvil.
Je pekne, ze sis vsiml existence design patternu ModelViewController (opet Gang of Four), lec tento OOP pattern opravdu na OOP pranic neboura ani nedeformuje.
MVC je uroven abstrakce nad OOP.
Pokud servisni class primo potrebuje nejake svoje atributy, napr URL na WebService nebo JDBC konexi, no tak je ma hezky u sebe.
Data modelu jsou v jinych objektech, obvykle nejaka collection/shluk Beanu. Beany uz ze sve definice nejsou nic jineho nez datova stuktura, tam opravdu jine metody nez gettery a settery nenajdes.
MVC design pattern oddeluje business logiku aplikace (controller) od statove/datove prezentace (model) a prezentace uzivateli (view)
Zkracene view zobrazuje userovi aktualni stav modelu, user klepe na buttonky, cimz controller meni model a ten se zase zobrazuje uzivateli.
Na MVC patternu ostatne funguje Django.