Myślę, że źródłem problemu jest fałszywa dychotomia. Jak można wyodrębnić te 2 modele: bogaty i „anemiczny” i zestawić je ze sobą? Myślę, że jest to możliwe tylko wtedy, gdy masz błędne wyobrażenie o tym, czym jest klasa . Nie jestem pewien, ale wydaje mi się, że znalazłem to w jednym z filmów Bozhidara Bozhanova na Youtube. Klasa nie jest danymi + metodami na tych danych. Jest to całkowicie błędne rozumienie, które prowadzi do podziału klas na dwie kategorie: tylko dane, a więc model anemiczny i dane + metody - tak bogaty model (aby być bardziej poprawnym, istnieje trzecia kategoria: tylko metody).
Prawdą jest, że klasa jest pojęciem w pewnym modelu ontologicznym, słowem, definicją, terminem, ideą, to DENOTAT . I to zrozumienie eliminuje fałszywą dychotomię: nie można mieć TYLKO modelu anemicznego lub TYLKO bogatego modelu, ponieważ oznacza to, że twój model nie jest adekwatny, nie ma związku z rzeczywistością: niektóre pojęcia mają tylko dane, niektóre mają tylko metody, inne z nich są mieszane. Ponieważ staramy się opisać w tym przypadku pewne kategorie, zbiory obiektów, relacje, pojęcia z klasami, a jak wiemy, niektóre pojęcia są tylko procesami (metodami), niektóre z nich są tylko zbiorem atrybutów (danych), niektóre są to relacje z atrybutami (mieszane).
Uważam, że odpowiednia aplikacja powinna obejmować wszystkie rodzaje zajęć i unikać fanatycznego ograniczania się do jednego modelu. Bez względu na to, jak przedstawia się logika: za pomocą kodu lub z interpretowalnymi obiektami danych (takimi jak Free Monady ), w każdym razie: powinniśmy mieć klasy (pojęcia, denotaty) reprezentujące procesy, logikę, relacje, atrybuty, cechy, dane itp., A nie starać się unikać niektórych z nich lub sprowadzać wszystkie tylko do jednego rodzaju.
Możemy więc wyodrębnić logikę do innej klasy i pozostawić dane w oryginalnej, ale nie ma to sensu, ponieważ niektóre pojęcia mogą zawierać atrybuty i relacje / procesy / metody, a ich oddzielenie powieli pojęcie pod 2 nazwami, które mogą być zredukowane do wzorców: „OBJECT-Attributes” i „OBJECT-Logic”. Jest to dobre w językach proceduralnych i funkcjonalnych ze względu na ich ograniczenia, ale jest to nadmierne powściągliwość dla języka, który pozwala opisywać wszelkiego rodzaju koncepcje.