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ć?
object-oriented
Caffeinatedwolf
źródło
źródło
Odpowiedzi:
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.
źródło
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
źródło
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 )
źródło
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.
źródło
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 !!!
źródło
Kroki
źródło
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.
źródło
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.
źródło
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.
źródło