Nauka obiektowości, rozwój języka - samokształcenie

1

Witam!

Dziś zwracam sie do was forumowicze z dość nietypowym pytaniem. Otóż od jakiegoś czasu uczę się JAVAy. Niestety do tej pory dane mi było zetknac sie z jezykami takimi jak C lub Pascal i to strukturalnie, stąd pojecie obiektowości, frameworków i bilbiotek jest mi nieco mało przybliżone. Chciałbym się nauczyc obiektowości, wiedzieć kiedy czego używać, po co tak a nie inaczej, a przede wszystkim po co jej używać. Niestety nie wiem w jaki sposób takową wiedze zdobyć.

Może powiecie mi jak wam sie udało dobrnąć do takiego stopnia zaawansowania, ze pisanie programow w waszych ulubionych jezykach nie jest dla was juz tak dużym problemem**? Robiliście jakieś zadania? jesli tak to jakie? opowiedzcie cos ;)

Pozdrawiam! i dziekuję z góry za przeczytanie

**rozumiem, że każde nowe zadanie/projekt jest dla nas dużym wyzwaniem mimo, że wydaje sie proste, ale chodzi o sam fakt rozumowania w danym języku ;)

0

Grunt to zrozumieć założenia paradygmatu programowania obiektowego: abstrakcja, dziedziczenie, polimorfizm ( późne wiązanie ), hermetyzacja. Poćwicz sobie ( przy okazji notacja UML ) i będzie ok. Stawiaj sobie jakieś cele, pisz proste programy i się nauczysz. Ja się uczyłem programowania obiektowego z kilku pozycji z czego żadnej do końca nie przeczytałem, może to i dobrze bo ile autorów tyle przemyśleń i można samemu konstruować jakieś wnioski.

Po co? Tworzysz klasę ( człowiek ) i wewnątrz niej tworzysz metody, które zdefiniują jego zachowanie : Idz(), Stop(). Polimorfizm? Po co pisać 100 razy to samo jak można dziedziczyć klasę abstrakcyjną i przysłaniać metody virtualne będące w niej. W programowaniu jest tak, że jeżeli piszesz kilka razy to samo, to oznacza, że coś jest nie tak.

Krótki wstęp: http://pl.wikipedia.org/wiki/Programowanie_obiektowe <- Zarys. Praktykę znajdziesz w internecie i masę ebook-ów.

Pozdrawiam

0

Moze nie jestem jakis pro, super etc. ale 95% czasu pisalem, a pozostale 5% szukalam na google :)

0
azalut napisał(a)

Chciałbym się nauczyc obiektowości, wiedzieć kiedy czego używać, po co tak a nie inaczej, a przede wszystkim po co jej używać.

Ja też z początku nie bardzo wiedziałem po co mi jakieś dziwaczne obiekty tworzyć, skoro strukturalnie można było rozwiązać dany problem; Ale zastanawiałem się do momentu, w którym zacząłem czytać na temat programowania obiektowego i ćwiczyć - wtedy zrozumiałem, że obiektowość ma wiele zalet; Skoro teraz nie znasz obiektowości, to polecam przeczytać jakikolwiek kurs programowania obiektowego, poćwiczyć, a sam zobaczysz po co obiektowość istnieje i gdzie ją można zastosować; Praktyka i tylko praktyka rozwieje Twoje wątpliwości;

azalut napisał(a)

Niestety nie wiem w jaki sposób takową wiedze zdobyć.

Poszukaj w sieci jakiegokolwiek kursu i przeczytaj go, poćwicz - po prostu naucz się podstaw, a potem wymyśl sobie prosty program i napisz dwa - jeden strukturalnie, drugi wykorzystując OOP, a zobaczysz różnice;

azalut napisał(a)

Może powiecie mi jak wam sie udało dobrnąć do takiego stopnia zaawansowania, ze pisanie programow w waszych ulubionych jezykach nie jest dla was juz tak dużym problemem**? Robiliście jakieś zadania? jesli tak to jakie?

Wiesz, nikt Ci nie wbije tej wiedzy do głowy, więc aby nauczyć się stosowania obiektowości musisz o prostu ją zrozumieć - przeczytać kurs i popełnić wiele małych programów, w których przetestujesz nowo zdobytą wiedzę; Robi się wiele zadań, od prostych po dość trudne, ale najczęściej wymyśla się je samemu; Im więcej różnych projektów - tym lepiej; W ten sposób zdobyta wiedza zostaje utrwalona, dzięki czemu w przyszłości łatwiej dobrać odpowiednie mechanizmy OOP do danego przypadku;

azalut napisał(a)

rozumiem, że każde nowe zadanie/projekt jest dla nas dużym wyzwaniem mimo, że wydaje sie proste, ale chodzi o sam fakt rozumowania w danym języku

O jakim rozumowaniu piszesz? Jeśli się zna język [bo się go uczyło z książek/kursów] to się go rozumie, i patrząc na kod wie się do czego służy i co wykonuje pod warunkiem, że jest przyzwoicie napisany; Praktyka pozwoli Ci zrozumieć każdy kod;

Tak więc najpierw polecam czytać jakąś dobrą książkę czy kurs, przyswoić sobie teorię, a później próbować pisać przykładowe programy i utrwalać zdobytą teorię z danego działu - w ten sposób powinieneś zrozumieć o co tak na prawdę chodzi i jakie jest tego przeznaczenie; Tak było w moim przypadku - zawodowi programiści oczywiście mogą być innego zdania.

0

Ja miałem pierwsze zetknięcie z obiektowością w książce do Pascala 7.0. Stwierdziłem - o ale to fajne i znalazłem zastosowanie w moim kolejnym programie - gra Tank (dawni posiadacze pegazusa wiedzą o co chodzi). Potem przyszło c++ i Symfonia C++ oraz Pasja C++. Po takiej lekturze (od deski do deski) miałem już solidne podstawy do pisania obiektowo programów.

0

Wszystkim wielkie dzięki za odpowiedzi! ;)
@furious programming
Skoro teraz nie znasz obiektowości, to polecam przeczytać jakikolwiek kurs programowania obiektowego, poćwiczyć, a sam zobaczysz po co obiektowość istnieje i gdzie ją można zastosować; Praktyka i tylko praktyka rozwieje Twoje wątpliwości;

Tak też zrobiłem juz ok 2 tygodnie temu :) wziąłem kurs (wlasciwie za 3 kursy w internecie, w tym jeden video + 5 ksiązek JAVA z bilbioteki :) ) i powoli mi sie to zaczyna układać w całość, ale nie wiem czy podążam w dobrym kierunku. Jeśli np wymyśle program jakiś tam i za nic w świecie nie moge go uruchomić bo ciagle jest jakiś błąd. Cięzko mi go znaleźć, bo w javie jest tyle roznych powiązań, że dla nieobeznanego cięzko je wszystkie "ogarniać" i wyłapać :)

O jakim rozumowaniu piszesz? [..]

Chodzi mi o takie ogólne zrozumienie języka, jak co pisać, jaka jest składnia, jak można coś uprościć - czyli takie można powiedzieć doświadczenie zdobyte podczas dłuższej zabawy z językiem czy też programowaniem.

Staram się robić tak właśnie jak mówisz, ale w tym języku (być moze w innych postawionych na obiektowość tez) występuje tyle różnych pojęć ze ciezko je pojąc a co dopiero powiazac jeden z drugim ;) mimo wszystko powoli udaje mi sie to, jednak dalej nie rozumiem na czym polega polimorfizm, albo w jakim celu tworzyc interfejs/klase abstrakcyjna. Po to zeby nie powtarzac danego kodu jak kolega wyzej napisal 100 razy, tylko zaimplementować daną metode z interfejsu/klasy abstrakcyjnej? Ale przeciez w interfejsie nie moze byc metod ktore coś robia. One maja być, ale nie maja mieć zdefiniowanego zadnego kodu.

Tak samo z dziedziczeniem - jakie różnice są jesli rozszerze klase B o klase A, a jakbym stworzył nowy obiekt klasy B w klasie A? Z obu chciałbym pobrać jakąś tam metodę. Czym to się różni?
Cięzko znalezc odpowiedz na każde z tych pytan, bo może pojawić sie ich na prawde ogromna ilość, dla każdego przypadku właściwie nowe. I o takie obeznanie mi właśnie chodzi, żebym sam umiał sobie odpowiedzieć na te pytania ;)

Pozdrawiam i prosze o wypowiedzi jeśli ktoś jeszcze ma ochote ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1