Jak najlepiej nauczyć się koncepcji / zasad OOP? [Zamknięte]

12

Chciałem nauczyć się obiektowego języka programowania, nie chcę go w żadnym celu tylko po to, aby poznać całą koncepcję OOP. Czy ktoś może mi więc powiedzieć, którego języka powinienem się uczyć?

Caffeinatedwolf
źródło
1
Jakie znasz języki?
Mchl,
C, VB.NET i C ++, ale nie część OOP
Caffeinatedwolf
1
następnie wybierz VB.NET
Vinoth Kumar CM
Nie, nie chcę VB.NET Chcę, żebyście pomogli mi wybrać między Java, C ++, Python itp.
Caffeinatedwolf
3
Chcesz praktycznie nauczyć się czegoś bez celu?
JeffO,

Odpowiedzi:

13

Kilka dalszych sugestii:

  • Najlepsza książka, jaką kiedykolwiek czytałem na pasku OOP, to Bertrand Meyer Object Oriented Software Construction . Nie jest to „łatwa” lektura, w której trzeba ciężko myśleć w niektórych miejscach. Ale to najlepsza praca, jaką widziałem, wyjaśniając zasady OO.

  • Jeśli chodzi o języki: trzymałbym się z dala od C ++. Po prostu za duży do celów edukacyjnych. Jeśli chcesz języka, który naprawdę pomoże Ci zrozumieć OO (w przeciwieństwie do tego, w którym pisałbyś aplikacje głównego nurtu / korzystał z pracy), spójrz na smalltalk. Lub Eiffel (język w powyższej książce Meyera).

  • Jeśli chcesz języka, który jest nieco bardziej powszechny, ale nadal wiernie obsługuje zasady OO, Python jest dobrym wyborem. Java i C # są również przyzwoite, jeśli chcesz pisać statycznie.

Jedno słowo ostrzeżenia: język nie nauczy Cię OO. Może jedynie pomóc (lub przeszkodzić) w tym, jak dobrze obsługuje koncepcje OO. Nauka OO naprawdę polega na nauce myślenia w kategoriach OO. W tym celu wrócę do książki Meyera.

hth.

sfinnie
źródło
1
Inne rzeczy w C ++ są ważne . To ważne, aby wiedzieć o wirtualnym dziedziczenia. To ważne, aby wiedzieć o silnym kompilacji generycznego wsparcia, i to jest ważne, aby wiedzieć o wartości vs odniesienia. Poszukiwanie czegoś takiego jak Java to po prostu „LA LA LA LA TO NIE SŁYSZĘ, TO JEDYNY SPOSÓB, ABY TO ZROBIĆ”.
DeadMG,
2
tak i nie. Pytanie PO dotyczyło nauki, która w pierwszej kolejności zakłada podstawy. Nie jestem przekonany, że C ++ jest jednym z pretendentów jako najbardziej odpowiedni język do nauki . To powiedziawszy: Meyer i tak obejmuje generyczne i wartości w porównaniu do referencji, aczkolwiek jako bardziej zaawansowane tematy. W dalszej części książki omawia również wariancję współzależną i przeciwną. Ale najpierw określa podstawy. (A Eiffel jest statycznie wpisany btw).
sfinnie
1
Nie zamierzam się zgodzić ani nie zgodzić z zaleceniem Eiffla, ponieważ nigdy nie korzystałem, ani nawet nie widziałem ani nie czytałem o tym. Jednak absolutnie nie zgodzę się z żadną rekomendacją dla Java i C #, jak powiedziałem.
DeadMG,
12

Możesz nauczyć się dowolnego języka obiektowego, takiego jak C ++, Java, C # itp., Aby wypróbować OOPS.

Jeśli naprawdę chcesz się uczyć OOP, musisz myśleć poza językami i rozumieć, że jest to paradygmat, który pomaga złożoności mangi związanej z programami, tak jak zarządzamy nimi w tym prawdziwym świecie. Następnie naucz się podstawowych pojęć w OO, takich jak polimorfizm, dziedziczenie, enkapsulacja (SROKA) itp

Istnieją dobre książki na temat zbyt zorientowanej obiektowo analizy i projektowania z aplikacjami (2. wydanie) autorstwa Grady Booch

Możesz także wypróbować takie blogi, które według mnie są wystarczająco proste, aby zacząć od - fascinatingoops.com

WinW
źródło
3

Chcesz się nauczyć OOP? Jedna odpowiedź - Smalltalk.

Jest to elegancki język i stanowi rdzeń OO. Nauczysz się OOP od samego początku i nie będą przeszkadzały mu wszystkie inne rozrywki, które inne języki potrafią uwzględnić.

Smalltalk wygrywa. Są też dobre dobre e-książki (patrz: Stephane Ducasse )

Simon Knights
źródło
3

Musisz nauczyć się C ++, a może jednego z przodków, takich jak Smalltalk. C ++ oferuje czysty podział między pojęciami, takimi jak orientacja obiektowa, zarządzanie pamięcią i odniesienie a wartość, i ma silne ogólne wsparcie.

Nie ucz się języka Java ani języka .NET, takiego jak C #. Kiedy uczysz się języka takiego jak Java, uczysz się rzeczy takich jak: „Obiekty są zawsze na stercie i zawsze są referencjami”, co jest prawdziwe tylko w Javie i absolutnie nie w przypadku OOP. To połączenie pojęć (orientacja obiektowa, zarządzanie pamięcią, odniesienie do wartości) jest bardzo niebezpieczne dla pierwszego języka, ponieważ kiedy utkniesz w głowie, bardzo trudno będzie je odzyskać. C # jest nieco lepszy pod tym względem, ale niewiele. Ponadto mogą wykazywać dużą tendencję do nauczania „Dziedziczenie to młotek, a wszystko to gwóźdź” przy słabym wsparciu programowania ogólnego.

DeadMG
źródło
To jest najprawdziwsza prawda. Nigdy wcześniej o tym nie myślałem, właściwie mając do czynienia z językiem, który jest bardzo skoncentrowany na OOP i próbuje rozwiązać wszystko za pomocą OOP, nigdy nie dowiesz się, które problemy tak naprawdę nie są odpowiednie dla OOP.
daramarak
1

Najlepszym sposobem na poznanie koncepcji OOP jest pisanie coraz większej liczby kodów i częste ich sprawdzanie. Praktyka czyni dobrego programistę.

Pomyśl o scenariuszach ze świata rzeczywistego, zdefiniuj opis problemu - rozwiąż go w kodzie i sprawdź. Zawsze możesz uzyskać pomoc na /codereview// dla recenzji :)

Miłego kodowania !!!

karthiks
źródło
0

Kroki

  1. Dowiedz się, co mają na myśli.
  2. Dowiedz się, jak je wdrożyć.
  3. Weź projekt do opracowania, wybierz swój język [który powinien mieć zintegrowaną zasadę OOPS, taką jak VB.NET lub C # lub C ++ lub Java itp.]
  4. Zastanów się, jak uprościć logikę projektu dzięki OOPS. [Uwaga: Nie wdrażaj tylko OOPS, ponieważ chciałeś je mieć, powinny rozwiązać Twój cel]
  5. Nie zapominaj: nauczysz się na własnych błędach .
Chris
źródło
0

Mój pierwszy kontakt ze światem OO to C ++, co nie było złym początkiem. Ale znacznie się poprawiłem, ucząc się języka Python. Różnica polega na językach: wypróbowanie pomysłów („jak mogę rozwiązać ten problem w sposób OO?”) W C ++ wymaga więcej kodu do napisania i zawiera znacznie więcej pułapek niż wypróbowanie tego samego pomysłu w Pythonie. Polecam więc Python.

rocksportrocker
źródło
0

Nie sądzę, że powinieneś szukać innego języka, próbując nauczyć się OOP. Dla mnie łatwiej jest zrozumieć teorię, a następnie nauczyć się ją stosować, jeśli mogę odnosić się do czegoś, co już wiem. Zastanawianie się nad nową składnią właśnie przeszkadza.

Możesz zacząć od dowolnej książki OOP. Znów dostałbym jeden w moim wybranym języku. Czytanie książki o refaktoryzacji (styl OOP) pomogło mi w zastosowaniu OOP. Wziąłem istniejący projekt (brak odwracania uwagi od zbierania wymagań) i znalazłem nowe sposoby na jego ulepszenie. To nie był tylko OOP dla samego OOP. Następnie możesz dowiedzieć się, jak to zrobić od początku do końca w nowym projekcie. Logika jest taka, że ​​nie zawsze dostaniesz ją od samego początku. Jeśli potrafisz rozpoznać, gdzie jest to właściwe, będziesz lepiej. Jak większość rzeczy nie rozwiąże każdego problemu.

Istnieją pewne ograniczenia w niektórych językach. Jeśli Twoim celem jest bycie mistrzem wielopłaszczyznowego dziedziczenia, platforma .NET jest niedostępna.

JeffO
źródło
0

Sprzeciwiam się tutaj konwencjonalnemu myśleniu i sugeruję, że najłatwiejsze języki do korzystania z OOP niekoniecznie są najlepszymi językami do nauki . Po raz pierwszy zetknąłem się z OOP za pomocą C ++, ale nie „dostałem” go, dopóki nie przeczytałem rozdziału książki O wielbłądach Larry'ego Walla o OOP z Perlem. Z jakiegoś powodu miałem problem z uchwyceniem różnicy między klasami a obiektami, dopóki nie musiałem wyraźnie błogosławić obiektu w klasie. Naprawdę nie zrozumiałem podstawowej implementacji OOP, dopóki nie zrobiłem tego w C z GObject, gdzie żaden z tych szczegółów nie jest przed tobą ukryty. Naprawdę nie rozumiałem najlepszych praktyk, dopóki nie wziąłem udziału w zajęciach dla firm, które były niezależne od języka. To bardzo duży temat.

Karl Bielefeldt
źródło