KamilAdam napisał(a):
Riddle napisał(a):
@KamilAdam: No więc jaki jest Twój input? Strategia jest obiektowa czy nie?
Ale ja już pisałem:
- nie znam się na obiektowości i nawet nie chcę się znać bo swoją przyszłość widzę bardziej w programowaniu funkcyjnym
- IMHO jeśli strategia nie jest wzorcem obiektowy to tym lepiej dla strategii. Pozostaje pytanie czym wzorcem jest strategia, bo PF jej odpowiednikiem jest Higher Order Functions (dla strategii z jedną metodą publiczną, dla strategii z większą ilością metod publicznych trzeba bardziej pokombinować)
BTW wydaje się że jakbyś oczekiwał że każdy obiekt w programowaniu obiektowym będzie enkapsulować, ale dlaczego nie wymagasz spełnienia trzech pozostałych punktów? Np że każdy obiekt będzie dziedziczyć. W Javie jest to oczywiście spełnione, bo każdy obiekt dziedziczy po klasie
Object
, ale np w C++ chyba można stworzyć klase/obiekt tkóry nie dziedziczy po niczym? Czy w takim razie to jest OOP skoro nie ma dziedziczenia?
Z prostego powodu.
Dlatego że część obiektów nie musi dziedziczyć z niczego. W normalnej aplikacji OOP, część obiektów będzie dziedziczyć z czegoś, ale część nie. Więc to jest normalne że obiekty z niczego nie dziedziczą.
Albo czy VO to OOP skoro nie enkapsulują, Albo
Integer
w Javie? Cały stan jest na wierzchu. Albo ArrayList/HashMap? Też cały stan jest na wierzchu?
W programowaniu obiektowym mamy obiekty i nie obiekty. Jeśli coś ma mieć w sobie logikę, to lepiej żeby coś enkapsulowało (żeby było obiektem). Ale takie wartości jak gołe inty, gołe recordy lub gołe kolekcje mogą być sobie (jeśli nie mają w sobie logiki żadnej). Gołe bajty też są spoko.
Na nieszczęscie w większości języków obiekty oraz VO robi się uzywają tej samej konstrukcji class
- co prowadzi do fatalnego niezrozumienia czym jest OOP.