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

Nauka obiektowości, rozwój języka - samokształcenie
azalut
  • Rejestracja:około 12 lat
  • Ostatnio:ponad rok
  • Postów:1129
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 ;)

edytowany 2x, ostatnio: azalut
CI
  • Rejestracja:około 12 lat
  • Ostatnio:prawie 11 lat
  • Postów:184
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

n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:2412
0

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

CI
Wnioskuje, że gdy podchodziłeś do programowania obiektowego to już je znałeś skoro 95% pisałeś, a 5% czytałeś. Nie dość, że n0name to jeszcze n0sex.
n0name_l
Kiepskie masz te wnioski, a do tego nie jestes taki ciekawski jakby nick na to wskazywal ;)
CI
"Kiepskie masz te wnioski" Nie wiem gdzie je wyciągałem. "a do tego nie jestes taki ciekawski jakby nick na to wskazywal ;)" bardzo szybko wyciągasz wnioski ;)
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 13 godzin
  • Lokalizacja:Tuchów
  • Postów:12166
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.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 17 godzin
  • Postów:2512
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.

edytowany 1x, ostatnio: Sarrus
azalut
  • Rejestracja:około 12 lat
  • Ostatnio:ponad rok
  • Postów:1129
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 ;)

edytowany 4x, ostatnio: azalut
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)