OOP stosuje "zorientowane na problem" podejście do programowania w przeciwieństwie do tradycyjnego podejścia "maszynowego" używanego w językach takich jak C i Pascal. Nauka OOP może być dość trudna, jeśli dobrze programujesz w językach proceduralnych/funkcjonalnych. To dla tych programistów rzeczy wydają się być bardziej zagmatwane. Jeśli jesteś nowy w programowaniu, prawdopodobnie uznasz rzeczy za mniej dezorientujące, ponieważ zaczynasz od świeżego umysłu.
Powiedziałem, że widziałem wielu programistów, którzy pracowali intensywnie z językami takimi jak Java i twierdzą, że są dobrymi programistami OOP, kiedy byli daleko od tego. Oczywiście używają one funkcji języka Java, takich jak interfejsy, dziedziczenie itp., I tworzą obiekty "będące instancjami klas" oraz "wysyłają wiadomość do obiektu". Większość ludzi używa dużo żargonu OOP, ponieważ są na nie narażeni. Ale kiedy sprowadza się do napisania prostej aplikacji, ich wynikowy kod ujawnia ich słabe zrozumienie.
Moja rada dla ciebie, nie daj się złapać w samym żargonie. Zadawaj pytania i ucz się rzetelnie podstawowych pojęć. Możesz mieć swoją pierwszą pół-nirwanę (tak jak ja), gdy nauczysz się polimorfizmu i korzyści, jakie przynosi to, aby zakodować ponowne użycie. Kolejna pół-nirwana, gdy zrozumiesz kompromisy między ponownym użyciem przez dziedziczenie i ponowne użycie przez kompozycję. W końcu będziesz wiedział, że dobrze zrozumiałeś OOP, jeśli jesteś w stanie dobrze zaprojektować, a raczej dobry projekt OO jest łatwo miarą tego, jak dobrze rozumiesz OOP.
Jeśli poważnie myślisz o OOP, powinieneś przeczytać dwa pierwsze rozdziały GOF book on Design Patterns. Może to być trochę trudne dla nowych programistów, ale stanowi sedno myślenia za OOP. Ta książka jest ważnym punktem odniesienia, który powinien mieć każdy poważny programista OOP. Jeśli dobrze rozumiesz koncepcje w tej książce, uważaj się za dobrego programistę OO.
Czy mógłbyś wyjaśnić, co uważasz za mylące? – Rik
+1 do Rik. Czy możesz powiedzieć nam coś więcej? –
Jaka jest główna idea w OOP i dlaczego uważasz ją za mylącą? Dla mnie "klasy powinny być jedynymi modułami" i nie jest to mylące. –