Zacznę o zastrzeżenia, że nie zamierzam, tu wszczynać wojny ideologicznej. Jak piszę, że czegoś nie rozumiem, oznacza to, że czegoś nie rozumiem, a nie że rzucam formalne wyzwanie wyznawcom odmiennego paradygmatu ;) Poza tym wiem też, że jestem po prostu hobbystką i zdaję sobie z tego sprawę, więc nie trzeba mi ani przypominać ani udowadniać ;)
Teraz w ramach wprowadzenia: mam ze 20 lat praktyki w rzeźbieniu czegoś tam w necie, ale zawsze robiłam to sobie na własny rachunek i bardzo "po swojemu", co tłumaczy, że:
Nie kumam sensu obiektówki :/ Rozumiem sensowność takiego podejścia w sytuacji, kiedy faktycznie mam manipulować na jakichś obiektach (np. elementach strony internetowej czy symulacji floty statków różnej klasy od czego podobno zaczęła się cała idea). Nie mam natomiast pojęcia do czego mi to w sytuacji typowych zastosowań, do których używam kodu:
- policzyć coś i wyświetlić / zapisać,
- wczytać dane z pliku, policzyć i wyświetlić / zapisać,
- obsłużyć formularz / cms na stronie www.
W ciągu ostatnich kilkunastu lat robiłam do sprawy kilka podejść. Oglądałam jakieś przykłady prezentujące definiowanie klas zwierzątek albo samochodów, ich właściwości, metod, dziedziczenia i wszystko to rozumiem. Nie rozumiem natomiast po ch... mi to :/ jak niby i po co mam tego użyć w wymienionych powyżej zastosowaniach. Tymczasem autorzy po dojściu do tego etapu, wychodzą z założenia, że już wszystko wytłumaczyli. Więc kończy się zawsze tak, że po prostu wzruszam ramionami i piszę sobie dalej "po swojemu".
Rozumiem celowość tworzenia programu jako hierarchii pudełek przekazujących sobie parametry, ale (w moim mniemaniu) podobny efekt daje się uzyskać programowaniem proceduralnym, tworząc odpowiednią strukturę funkcji.
W dyskusjach odnośnie pojawia się dosyć często kwestia dziedziczenia i argument, że to ułatwia utrzymanie dużych projektów. Być może, nie będę się spierać, nie mając praktyki w dodawaniu kolejnych cegiełek do cudzych, rozległych systemów.
I teraz pytania:
Czy komuś chciałoby się poświęcić czas na ukazanie kilku elementarnych, praktycznych (nie zaś zwierzątkowo-abstrakcyjnyc) przykładów zastosowania programowania obiektowego z wytłumaczeniem dlaczego akurat tak?
Czy paradygmat obiektowy jest czymś uniwersalnym? Bo mam wrażenie, że to co może faktycznie się sprawdzać przy dużych projektach zastosowane dla zrobienia zwykłego "Witaj świecie" albo czegoś podobnego, to zwykłe przeinżynierowanie?
Ew. wszelkie inne uwagi odnośnie moich lamerskich wywodów.