No ale vtip OOP je přece v tom, že objekty svůj stav nekomunikují ven. A algoritmus na nich postavený se nemůže rozhodovat na základě znalosti stavů objektů, ale pouze na základě jimi zasílaných zpráv.
To máš pravdu, ale dnes je v módě udělat anemický objekt (což je vlastně obyčejná struktura "obohacená" o gettery a settery) a k tomu několik servisních tříd, které s touto strukturou pracují. Sám nevím, co ty programátory k oddělování programu a datových struktur vede, když OOP je hlavně o tom, že algoritmy a datové struktury jsou zapouzdřeny uvnitř objektu a s okolím komunikují co nejméně prostřednictvím zmíněných zpráv.
Pretoze niektore "objekty" su proste surove data, napriklad vytiahnute z databazy. Bolo by neprakticke a tazko udraziavatelne, napriklad povedat dokumentu, aby sa natiahol z databazy a zobrazil. A este neviem ako bez pomoci "structov". Ide o to, ze OOP nie je nikdy cisto objektove, ale je vzdy multiparadigmove.
Nesouhlasím, právě, že surová data mají zpracovávaná v rám objektu a nemají být tahaná ven.
customer = Customer().findByName(customer_name)
cart = Cart().findByCustomerName(customer_name)
order = Order().create(customer, order)
customer.sendOrder(order)
A sendOrder bude:
order.sendByMail(self._record['email'])
A žádná surová data z databáze nepotřebujete