Postrzegana funkcjonalność.
Funkcje "użytkowe" różnią się od funkcji, do których cel OO ma służyć.
Pomyśl o przypadku z kolekcjami, we/wy, matematyką i prawie wszystkimi użytecznościami.
Z OO generalnie modelujesz swoją domenę. Żadna z tych rzeczy naprawdę nie pasuje do twojej domeny - to nie jest tak, że kodujesz i mówisz: "Och, musimy zamówić nowy hashtable, nasz jest pełny". Produkty użytkowe często po prostu nie pasują.
Dostajemy się blisko, ale nadal nie jest zbyt dużo, aby przekazać kolekcje (gdzie jest logika biznesowa? Gdzie umieszczasz metody, które manipulują twoją kolekcją i tym innym małym kawałkiem lub dwoma danymi, które zawsze przekazujesz z nim?)
To samo z liczbami i matematyką. Trudno jest mieć Integer.sqrt() i Long.sqrt() i Float.sqrt() - to po prostu nie ma sensu, ani "nowa Math(). Sqrt()". Jest wiele obszarów, których po prostu nie modeluje. Jeśli szukasz modelowania matematycznego, OO może nie być najlepszym rozwiązaniem. (Zrobiłem całkiem kompletną klasę "Complex" i "Matrix" w Javie i uczyniłem je całkiem OO, ale dzięki temu naprawdę nauczyłem się niektórych ograniczeń OO i Java - w końcu skończyłem "Używanie" klas z Groovy)
Nigdy nie widziałem niczego w pobliżu tak dobrze jak OO do modelowania logiki biznesowej, będąc w stanie zademonstrować związki między kodem a zarządzaniem relacjami między danymi i kodem.
Wracamy do innego modelu, gdy ma to więcej sensu.
Pytanie/odpowiedź, z którą się łączyłeś, jest tym, czego szukałem. Dzięki! Kilka minut temu odkryłem "List" i ta klasa działa w sposób, jakiego oczekiwałem. Odpowiedź tam dostaje się, dlaczego Array i List są zaprojektowane inaczej. – dharmatech
W rzeczywistości, jeśli jeden z administratorów chce oznaczyć to jako duplikat pytania, z którym się łączyłeś, byłoby to ze mną w porządku. – dharmatech