Содержимое
Кстати, пока готовлю большой пост-продолжение про модели данных: очевидно, что объектно-ориентированный подход совсем не отражает "объекты реального мира", стоит копнуть чуть глубже простого хранения данных. Если взять классическую задачу описания ситуации "человек пьет кофе из кружки" — всё время забываю, кто её предложил, кто-то из великих — то кто кому должен посылать сообщение (вызывать метод)? Кружка вызывает метод человека "пить_из(кружки)", или человек вызывает метод кружки, эээ, "поить(меня) "? И так, и так получается криво. Хорошее решение, которое часто предлагают — сделать отдельный класс-контроллер, который представляет процесс питья. Вот вам и отражение объектов реального мира! Уже спокойно выпить кофе не можем, какой-то внешний контроллер нужен! Паттерны проектирования вообще все полны такими абстракциями, которых в реальном мире нет. Какая-нибудь там абстрактная фабрика сосудов для питья. И ладно бы это был искусственный пример, так в практике такое сплошь и рядом: подписание договора — это метод договора или контрагента? Ах, опять контроллера "процесса подписания" (небось ещё и оформленного в виде паттерна "стратегия", чтобы универсализовать все шаги и все частные случаи подписантов и документов). В общем, очередной миф про удобство и отражение реального мира :)