Świetny film. Nie spotkałem jeszcze tutorialu z OOP, w któtym ktoś wytłumaczyłby to zagadnienie tak zrozumiale jak Ty. Szczególne słowa uznania za bardzo dobre i zrozumiałe rozgraniczenie Interface'u oraz Klasy Abstrakcyjnej, bo to z mojej perspektywy (i chyba nie tylko mojej) sprawiało największy problem. Tłumaczenie na podstawie jednego spójnego projektu również zrobiło robotę. Liczę na więcej filmików poświęconych Javie, jeszcze raz - dobra robota. Pozdrawiam ;)
Obejrzałem do końca, zarówno ten kurs obiektowej Javy jak i podstawy w 2h. Bardzo ciekawie wytłumaczone, lecz z drugiej strony miałem styczność z programowaniem więc łatwiej to ogarnąć. Fajnie, że poświęciłeś te godziny na przekazanie nam wiedzy o Javy w tak przystępny sposób :)
Genialny kurs taki podjarany jestem tą java wreszcie czuje ze to jest ten język któremu mogę poświecić swoj czas i to czuć a nie jak np próbowałem z frontendem, który uważam za kobiecy albo z c++, który mi nie podpasował z fartem dzieki za poradnik. Czekam na jesień i zobacze twój kursik, choć mam nadzieje że już przeskocze ten poziom do tego czasu i tam zobacze same powtorki pzodrawiam
Przychodzę z C# i bardzo podoba mi się java patrząc na Twój kurs. Dziękuję. Świetnie dobrałeś praktyczne przykłady, dzięki którym można zobaczyć obiektowość w realnym życiu.
Wydałem 20k PLN na kurs Javy a i tak korzystam z Twoich materiałów. Ogólnie polecam wszystkich uczyć się z wielu źródeł i w innych formach. W moim przypadku to wygląda tak, że mam zajęcia z SDA, czytam książkę "Rusz głową Java", oglądam właśnie materiały na YT i wspólnie z Ziomkiem rozwiązujemy różne zadania. Dla mnie jest to świetne rozwiązanie bo np coś co na kursie było średnio zrozumiałe ale jakiś fundament został, to z innego źródła ten sam temat wchodzi juz na miękko.
Ekstra! Dzięki bardzo za Twoje filmy, tłumaczysz wszystko w zrozumiały dla mnie sposób, dzięki Tobie dużo łatwiej jest mi zrozumieć zagadnienia związane z programowaniem. Świetna robota!
Oglądałem, a właściwie słuchałem tego nagrania jadąc autem i niesamowite jest to, że pomimo tego, że nie patrzyłem w ekran potrafiłem sobie wyobrazić o czym mówisz i co robisz, a to wszystko za sprawą ciekawych życiowych przykładów. Słuchając nagrania czułem się jakbym słuchał podcastu, z którego na prawdę wyniosłem dużo. Dzięki!
Mega się cieszę, że trafia do Ciebie ten materiał i w takim razie zapraszam do zapoznania się z innymi filmami na temat Javy :) Tutaj jest cała playlista: ua-cam.com/video/6G19kFcVXTo/v-deo.html
Jestem programistą front-end i nie spotykałem się jeszcze zbyt często z programowaniem obiektowym. Czasem we frameworkach js'a, jednak postanowiłem rozwijać back-end i w przypadku Python + django było już to dla mnie problematyczne. Twój poradnik odpowiedział na moje wszystkie pytania oraz logiczne problemy. Bardzo dobrze tlumaczysz, masz przyjemny głos i wyobraźnię też nie małą. Wielkie propsy za DARMOWY poradnik, który z pewnością można polecić każdemu programiście.
Bardzo łatwe w odbiorze i konkretne w przykładach. Miałem już do czynienia z wieloma kursami Javy dla poczatkujących na UA-cam czy Udemy i Twój jest chyba najlepszym wyborem. Mówisz na temat i nie za wolno (chociaż ustawiłem speed 1.25 ;)). Jedynie przeszkadza, że gadająca głowa jest głośniej niż relacja z InteliiJ, ale bez tragedii.
Dzięki za uwagę o różnicach w głośności! Staram się to zawsze ogarnąć, ale nie jest jeszcze idealnie :) I cieszę się, że podoba Ci się film :D Nie wiem czy miałeś już okazję przejrzeć inne filmy dotyczące Javy na kanale, ale jeżeli nie, to zachęcam do sprawdzenia playlisty: ua-cam.com/play/PLp9WLfHXxbceqs8TV8vGgpnRHihJX0yd-.html
Kamil, dajesz nadzieję, na zrozumienie zasad programowania. Twoje filmy sprawiają, że "w pokoju gdzie jest ciemno" nagle wszystko się rozjaśnia, nie ważne, czy opowiadasz o gicie, RESTapi, czy o Javie. Dzięki!
Rewelacja, świetnie tłumaczone. 3 godziny zleciało bardzo szybko. Miałem kilka błędów ale udało mi się je samemu ogarnąć, chociaż bardzo się pogubiłem w tym wszystkim, ale to chyba normalne u początkujących :).
Super materiał! Jedna uwaga na przyszłość: gdy przerabiam poradniki staram się najpierw sam wykonać zadanie, które jest opisywane na początku a następnie sprawdzam jak zostało wykonane przez autora. W tym filmie opis tego jak powinien działać symulator komputera był tak lakoniczny że wykonałem swój kod wykorzystujący OOP ale projekt, który ja stworzyłem był właściwie zupełnie inny od Twojego :D
Dzieki Kamil za twoj ogromny wklad w nasz rozwoj!!! Wspaniale materialy!!! Super tlumaczysz. Jestes konkretny, otwarty i b. dobrze przygotowany!!! Cenisz nasz czas!!! Zaluje, ze musze spac bo moglbym ogladac twoje filmy na okraglo! Przyklad do dzisiejszej lekcji wybralbym jednak inny... Np. Rent Vehicle. Moim skromnym zdaniem bardziej kontekstowy, mniej abstrakcyjny i spojny. Do tego doszlaby zabawa z datami i czasem. Pozdrawiam i czekam z niecierpliwoscia na kolejne filmy. Jestes SUPER!!!!!
Ale Rent Vehicle to taki trochę już oklepany przykład ;) A daty i czas to bardzo dobry temat na jeden z kolejnych odcinków! Zapisuję i postaram się wrzucić gdzieś do harmonogramu :)
Mam doświadczeni w kursach na Udemy i przyznam szczerze, że nie trafiłem jeszcze na taki w, którym ktoś tak konkretnie i precyzyjnie tłumaczy na czym polega OOP. Nie wyobrażam sobie znalezienie lepszej darmowej lekcji o programowaniu obiektowym, oglądam ten film już któryś raz i z biegiem czasu jak moje umiejętności rosną to ten film jest dla mnie coraz bardziej wartościowy. Świetna robota i szanuje za dzielenie się taką praktyczną wiedzą za darmo.
Materiał super, posiadam podstawy z innych języków, a teraz potrzebna mi Java, sporo skorzystałem, dzięki! Mam tylko małą uwagę, w 2:23:00 nadpisanie metody getName() popsuło wyszukiwanie plików typu MP3MusicFile w klasach HDDDrive i SSDDrive.
A faktycznie, bo w metodach findFile wyszukujemy po nazwie, a teraz getName w MP3MusicFile nie zwraca nazwy tylko tekst "Dla plików MP3 getName nie działa" :) Przy okazji znalazłem jeszcze jeden błąd - w metodzie addFile w klasie SSDDrive robimy files.put(file.toString() , file), a powinniśmy robić files.put(file.getName() , file) :) Dzięki za czujność!
Dzięki Tobie dużo więcej i szybciej zrozumiałem tematykę i metodologię OOP niż przerabiając kurs Buchalki na Udemy. Zajebiście to wyjaśniłeś, pozdro! :)
Jestem zupełnie nowy w tej dziedzinie i uczę się na własną rękę (próba przebranżowienia). Z czystym sumieniem mogę stwierdzić, że ten ten kanał jest prowadzony przez fachowca, który z niebywałą lekkością przekazuje wiedzę w sposób zrozumiały i praktyczny. Dziękuję Ci, że dajesz możliwość ludziom takim jak ja rozwijać się w tym zawodzie
Rok na moich studiach rozłożył się tak, że nie programowałem praktycznie przez semestr w Javie. Twój film odświeżył trochę mi głowę i pomógł mi wrócić do klepania kodu w Javie.
Bardzo dziękuję za ten wspaniały film! Nareszcie programowanie obiektowe zostało wytłumaczone w genialny sposób. Pozdrawiam i już szykuje się do obejrzenia następnych filmów!
Dziękuje Ci za ten film! Przed chwilą skończyłem pierwszą rozmowę kwalifikacyjna i zostałem zapytany praktycznie o wszystko, co usłyszałem w tym filmie!
@@JakNauczycSieProgramowania pytań teoretycznych było dosyć sporo, z tych co pamiętam to: jak działa dziedziczenie w javie, różnice pomiędzy klasa abstrakcyjną a interfejsem, różnice pomiędzy method overloading a overriding, czym jest enkapsulacja, modyfikatory dostepu, keyword super.
Filmik super, jak zresztą cały content na kanale. Jedna rzecz mnie tylko zastanowiła w kwestii konwencji nazewniczej dla pól static. Nie spotkałem się z tym, że nazwy pól statycznych piszemy dużymi literami, zdawało mi się, że ta konwencja dotyczy wyłącznie pól z modyfikatorami static final. (02:34.40)
Oczywiście masz rację, ta konwencja (nie tylko w Javie, ale również w wielu innych językach) dotyczy stałych czyli w przypadku Javy są to pola static final. Mój błąd, że przy MAX_HEIGHT nie dodałem modyfikatora final, to zdecydowanie powinna być stała!
🔥 Sprawdź kurs Java od podstaw - od zera do Junior Developera: javaodpodstaw.pl/ 🔥 🔥 Roadmapa programisty - Czego, kiedy i dlaczego się uczyć, żeby zostać programistą: roadmapaprogramisty.pl/ 🔥 Programista dzisiaj - Sprawdzone źródła do nauki dla początkujących programistów: programistadzisiaj.pl/ 🔥 Kurs Git od podstaw: gitodpodstaw.pl/ 🔥 Platforma Programuj od podstaw: programujodpodstaw.pl/ Pobierz bezpłatnego ebooka "Jak zostać programistą - krok po kroku": www.jaknauczycsieprogramowania.pl/#ebook Dołącz też tutaj: DISCORD: www.jaknauczycsieprogramowania.pl/discord INSTAGRAM: instagram.com/jaknauczycsieprogramowania/ FACEBOOK (GRUPA): facebook.com/groups/jaknauczycsieprogramowania FACEBOOK (STRONA): facebook.com/jaknauczycsieprogramowania ✉ Współpraca: marketing@jaknauczycsieprogramowania.pl
Kurcze jak na początek nie zawsze ogarniam skróty klawiaturowe a to początek, to tego Java to już kilka wersji w górę jak i sam program do pisania. Jak to ogarnąć ? A mój początek to z tym kanałem.
Dzieki za darmowa wiedze,przyklad tego garnka jest swietny! Chcialbym tworzyc skomplikowane mechaniki w grach i widze jaki potencjal drzemie w programowaniu ;d
Akurat w tym semestrze mam podstawy Javy, większość materiału jest. Jakby jeszcze kolejne tematy były to by było super :) Lab1. Wprowadzenie - zapoznanie z IDE, tworzenie prostych programów. Lab2. Składnia języka, instrukcje sterujące, typy danych, klasy, metody, obiekty. Lab3. Tworzenie aplikacji obiektowych do przetwarzania tekstu. Lab4. Tworzenie aplikacji obiektowych wykorzystujących funkcje matematyczne. Lab5. Programowanie obiektowe z wykorzystaniem dziedziczenia i interfejsów. Lab6. Obsługa wyjątków. Lab7. Wykorzystanie kolekcji. Lab8. Wyrażenia lambda w języku Java. Lab9. Operacje wejścia - wyjścia, obsługa plików. Lab10 Współbieżność w języku Java. Lab11. Tworzenie aplikacji z graficznym interfejsem użytkownika z obsługą zdarzeń. Lab12. Tworzenie aplikacji do komunikacji sieciowej. Lab13. Tworzenie aplikacji do obsługi bazy danych.
Część z tych tematów poruszałem, część na pewno jeszcze się pojawi, sprawdź playlistę z filmami dotyczącycymi Javy: ua-cam.com/play/PLp9WLfHXxbceqs8TV8vGgpnRHihJX0yd-.html I wpadaj regularnie na kanał :)
Świetny materiał, bardzo pomaga w mojej nauce programowania, jest wytłumaczone jasno i klarownie na przykładowym projekcie, super. Chciałbym jeszcze zadać pytanie, w 1:54:36 tworzymy klasę abstrakcyjną aby w niej zawrzeć zmienne dotyczące ImageFile, a czemu nie został użyty interfejs zamiast klasy abstrakcyjnej? Chyba muszę powtórzyć materiał dotyczący różnic między klasą abstrakcyjną a interfejsem, bo dalej mi się mylą :/ Edit: W 2:01:49 nie rozumiem czemu rozszerzamy interfejs MusicFile a nie implementujemy jak w poprzednim razie w klasie abstrakcyjnej.
W pierwszym przypadku tworzymy klasę abstrakcyjną, bo w niej implementujemy wspólne metody dla klas, które będą po niej dziedziczyły. W drugim przypadku rozszerzamy interfejs, bo chcemy dodać do istniejącego interfejsu dodatkowe metody, ale nie chcemy ich jeszcze implementować (to zostawiamy już klasom implementującym interfejs).
Mam pytanie. Czemu jakbym dopisal do klasy garnek (30:15) public static void main(String[] args) to potem w klasie main nie moglbym wyswietlic i korzystac z metod klasy garnek?
Możliwe, że w konfiguracji projektu nie podałeś, która klasa zawierająca metodę main jest Twoją główną klasę i IntelliJ nie wie, w jaki sposób wystartować program. Jeżeli napiszesz metodę main w klasie Main i uruchomisz program, IntelliJ sam ogarnie, że główną klasą jest Main. I jeżeli teraz napiszesz metodę main w klasie Garnek wszystko dalej będzie działać. Natomiast jeżeli napiszesz metodę main w klasie Main, nie uruchomisz program i napiszesz metodę main w klasie Garnek, IntelliJ nie będzie w stanie ogarnąć, która metoda main powinna być pierwszą metodą startującą program. W razie wątpliwości wrzuć jeszcze to co robisz na grupę na fb i tam ogarniemy: facebook.com/groups/jaknauczycsieprogramowania
Super materiał, genialnie zrobiony, przemyślany. Pytanie: Zrobiłbyś odcinek związany z procesem myślenia nad zadaniem którego nie umiemy rozwiązać? Jak się zabrać do rzeczy które są trudne? Często się zdarza, że myślimy parę godzin nad rozwiązaniem i nic z tego nie wychodzi (kręcimy się w kółko) Jest jakiś proces, który efektywniej pozwoliłby rozwiązać problem? Jak zabrać się do skomplikowanych algorytmów? Co zrobić kiedy już nie mamy pojęcia jak coś rozwiązać?
Pomyślę nad takim odcinkiem :) Trochę tego typu proces pokazywałem tutaj: ua-cam.com/video/T9UtiKT5AnE/v-deo.html ale nie były to takie problemy, nad którymi musiałbym siedzieć godzinami. Raczej nieznajomość technologii i zadawanie odpowiednich pytań, żeby dowiedzieć się jak daną rzecz można zrobić. To o czym piszesz to trochę bardziej skomplikowana kwestia, muszę to dobrze przemyśleć i postaram się podzielić swoimi doświadczeniami i wskazówkami :)
Podpowie ktoś jaki skrót klawiaturowy został użyty w 1:26:07 odnośnie przypisania do zmiennej? Windows, ATL + Enter nie działa, próbowałem kilku rzeczy ale ebzskutecznie
Wracam sobie to tego filmu co jakiś czas bo jest to ogromna piguła wiedzy, w dodatku bardzo przejrzyście podana. Naprawdę świetny film. Mam tylko jedno pytanie co do zawartości: W geterach czasami zwracasz wartość ze słowem this a czasami bez. Od czego to zależy?
Bardzo mi się podoba styl w jaki przekazujesz wiedzę, częściowo potoczny i profesjonalny. Miło się tego słucha i bardzo dużo rozumiem, jednak zauważyłem (na 2 filmach podstawy i obiektowe), że zaczynam się gubic na ostatnich częściach projektowych. Zaczynasz tam dosyć szybko wdrażać nowe rozwiązania i terminy których nie do końca rozumiem. Wyprzedzasz fakty np. Tutaj zacząłeś robić pełno metod które w projekcie które przydadzą się później i skaczesz, przez co się gubię. Jeśli chciałbyś jeszcze polepszyć jakość kanału skup się na kolejności logicznej i doprowadzaniu metod do końca. Wolę jak odpiszesz coś później niż na zapas. Czasem też stosujesz metodę w której specjalnie popelniasz błąd żeby potem go na0rawiasz i tlukaczysz dlaczego. Super mi się to podoba ale czasami mowisz z góry że to błąd przez co od razu człowiek się zamyka na tą wiedzę. Tak czy inaczej jesteś ponad innych mentorow na YT, po prostu nie chce slodzic tak jak reszta na dole ;) Wolę dać feedback
Dzięki Mateusz, to specjalne popełnianie błędu i jego późniejsze naprawianie jest właśnie po to, żeby uniknąć tych dużych przeskoków, o których piszesz. Wychodzę z założenia, że przedstawienie jedynie właściwego rozwiązania i stwierdzenie "macie robić tak i tak, bo inne podejście jest złe" niewiele uczy. Ktoś doświadczony będzie wiedział, dlaczego jedno rozwiązanie jest ok, a drugie nie, ale osoba początkująca będzie zagubiona. Nie zrozumie tego w wystarczającym stopniu i pewnie też tego właściwego podejścia nie zapamięta. Dlatego tak istotne jest napisanie kodu w taki sposób, w jaki prawdopodobnie napisałaby to osoba początkująca, a następnie wskazanie problemu, który z tak napisanym kodem się wiąże. Wtedy mamy już odpowiedni kontekst, widzimy niedoskonałość naszego rozwiązania i zastanawiamy się, jak możemy zrobić to lepiej. Na to wprowadzanie zbyt dużej ilości metod zwrócę uwagę, postaram się w przyszłych filmach faktycznie robić tylko to, co jest potrzebne na obecną chwilę. To bardzo dobra uwaga! Jeszcze raz dzięki i pozdrawiam!
Obejrzyj sobie na spokojnie, przećwicz całość na spokojnie, poeksperymentuj z projektem, a potem staraj się go odtworzyć samemu :) Zobaczysz, czego jeszcze nie rozumiesz, co jest niejasne i w ten sposób bardzo szybko nauczysz się wszystkich tych konceptów, o których w tym odcinku opowiadam :)
Jestem na 18:06 minucie filmu, i mam problem. Ty wpisujesz new Garnek... i pojawiają Ci się propozycje średnica i wysokość i ja nie mam możliwości wpisać bez string kolor pokazuje mi błąd, a jak usune przecinek po wysokości to znikają mi te propozycje średnica i wysokość i juz w ogóle nic nie działa
Hej, opisz problem i wraz ze screenshotami wrzuć na grupę: facebook.com/groups/jaknauczycsieprogramowania Istotne są screenshoty co dokładnie robisz, bo z samego opisu niestety nie jestem w stanie stwierdzić, co jest nie tak. Na grupie ogarniemy :)
Jea fajny materiał przerobiłem Kod. W pewnym momencie aż złapałem się za głowę ile tu klas jak to wszystko ogarnąć. Jak się ułożyło doszło że właśnie o to chodzi.
Super! Tak właśnie powinno być - na początku poszczególne klocki mogą wydawać się oderwane od całości, ale z czasem wszystko zaczyna się układać i nabierać coraz większego sensu :)
Cześć Kamil, mam pytanie co 2:16:30 Czy losowa kolejność wyświetlania plików za pomocą drive.listFiles(); w stosunku do kolejności dodawania plików drive.addFile(); to błąd czy norma? Pytam bo u mnie wyświetla jeszcze w innej kolejności, a dodając więcej plików różnego typu ta kolejność się zmienia. Świetny materiał! Gratulacje i pozdrawiam
Cześć! Tak, to właściwe zachowanie, ponieważ HashMap nie przechowuje informacji o kolejności dodawanych obiektów. Jeżeli chcesz, żeby obiekty miały określone miejsce w strukturze, powinieneś skorzystać z ArrayListy, a jeżeli potrzebujesz mapy z uporządkowanymi elementami, możesz skorzystać z OrderedMap z biblioteki Apache Commons: www.baeldung.com/apache-commons-ordered-map Zazwyczaj jednak jeżeli korzystasz z mapy, to interesuje Cię tylko pobieranie wartości po kluczu, tak więc nie ma dla Ciebie znaczenia jak to zostało ułożone pod spodem:) Dzięki i pozdrawiam!
1:46 Czy to jak piszesz kod, żeby go po chwili usunąć ma na celu żeby film był dłuższy? Wcześniej w innych momentach, też jest taka taktyka, że piszesz coś aby, by po chwili to usunąć i zrobić inaczej? Dzięki czemu film ma 2:36 ale część polega na usuwaniu kodu...
hej, w lekcji 2:20:32 wspominasz, ze overloading to tworzenie metod o takiej samej sygnaturze, ale z użyciem różnych argumentów. Czy jak w definicji metody (o takiej samej nazwie) podajemy inne parametry, to to nie jest zmiana sygnatury? W IDE o ile sie nie myle jest opcja w refaktoryzacji [change signature], w ktorej chodzi o zmiane (dodanie, zmiana typu) parametrow. Czy moglbys wytlumaczyc, czy to przejezyczenie, czy jednak zle to rozumiem? Filmik rewelacja, dzieki wielkie:)
chat GPT dal mi poniższą odpowiedź, natomiast bardzo często, gdy pytam o rzeczy dotyczące programowania, jego odpowiedzi mijają się z prawdą, dlatego byłbym wdzięczny za odpowiedz: [Chat GPT] "To stwierdzenie jest błędne. Overloading to tworzenie metod o tej samej nazwie, ale różniących się sygnaturami, które obejmują różne typy lub różną liczbę parametrów. Overloading umożliwia tworzenie wielu wersji tej samej metody w jednej klasie, które różnią się sposobem działania w zależności od typów lub ilości argumentów, jakie przyjmuje. Dlatego właściwe stwierdzenie brzmiałoby: "Overloading to tworzenie metod o tej samej nazwie, ale z różnymi sygnaturami, które obejmują różne typy lub różną liczbę parametrów.""
Optional to dobre rozwiązanie w tym przypadku, ale jest to kolejny poziom abstrakcji, który na tym poziomie (podstawy programowania obiektowego w Javie) wprowadzałby niepotrzebne zamieszanie i komplikowałby omawiany problem. Na pewno jednak opowiem kiedyś o Optionalu w osobnym filmie :)
Mam pytanie odnośnie listy List hddFiles = new ArrayList(); z fragmentu 1:12:17 . Dlaczego używasz konstruktora ArrayList a nie List? Oraz Nie lepiej zamiast List dać ArrayList ? Czy to jest jakaś znacząca różnica?
List to interfejs, także nie posiada konstruktora. Zamiast List hddFiles = new ArrayList() możesz dać ArrayList hddFiles = new ArrayList(), ale wtedy kod staje się mniej generyczny (uniwersalny) - w obecnej wersji możesz stworzyć metodę, która przyjmuje List (czyli każdą klasę, która implementuje ten interfejs), gdybyś zmienił deklarację na ArrayList hddFiles = new ArrayList() wtedy w takiej metodzie byłbyś uzależniony już tylko i wyłącznie od ArrayList i nie mógłbyś przekazać innego typu listy. A w programowaniu obiektowym chodzi właśnie o to, żeby jak najmocniej operować na interfejsach i nie być uzależnionym od konkretnej implementacji.
Czesc Kamil, dzieki za filmik. Mam pytanie odnosnie czesci, w ktorej opisujesz interfejs i nawiazujesz do pytania rekrutacyjnego o roznice pomiedzy interfejsem, a klasa abstrakcyjna (54.10 w Twoim filmiku). O ile dobrze, zalapalem, to nie ma tam jasnej odpowiedzi na to pytanie. Czy bylbys w stanie rozwinac ten temat? Wspominasz takze, ze interfejs definiuje co ma zostac zrobione (bez wytycznych w jaki sposob). Czy dobrze rozumiem, ze klasa abstrakcyjna dziala podobnie? Metody w tych klasach sa czesto puste i konkretna definicja/instrukcja, jak cos zostanie wykonane, jest implementowana w przypadku dziedziczenia przez pierwsza klase konkretne, po klasie abstrakcyjnej. Mam nadzieje, ze nic tu nie pomieszalem i rozumiesz o co mi chodzi :) nie jestem w stanie zobaczyc/zrozumiec tych roznic. Bede wdzieczny za dodatkowe informacje, albo naprowaadzenie jezeli tutaj mieszam:) Pozdrawiam!
Cześć! Najważniejsze różnica jest taka, że klasa abstrakcyjna może przechowywać stan a interfejs nie. W praktyce chodzi o to, co mamy w klasie AbstractFile - mamy tam zdefiniowane pola name i size, które możemy modyfikować. W interfejsie jest to niemożliwe. Nagram za jakiś czas dłuższy odcinek na temat tych różnic, gdzie wytłumaczę to wszystko bardzo dokładnie:)
Odcinek rewelacja, tak samo jak przykładowa muzyka! Cool kidsów i Mansona nie słuchałem od lat. Sprawdziłem ten nowy album króla mroku i faktycznie dobry. Podwójne dzięki Kamil!
czsec nwm co sie stalo ale gdy przenosilem tes 3 klasy do pakietu drive to po przeniesieniu nigdzie ich nei ma. sprawdzalem tez w plikach an kompie 1:24:32
Opisz problem i wrzuć screenshoty z tego jak wygląda struktura Twojego projektu na grupę: facebook.com/groups/jaknauczycsieprogramowania Bo tak bez szczegółów to ciężko powiedzieć, co się mogło zdarzyć. Ale spróbujemy ogarnąć :)
Jeden kurs na Udemy, drugi na YT, książka, blogi i co i nic !
W końcu trafiłem na ten film. Dzięki bardzo!
Mega się cieszę Paweł! I trzymam mocno kciuki za dalszą naukę!
Kamil, jestem dopiero na 5 minucie, ale juz mowie, ze kocham Cie za ten film! ❤️❤️❤️ Dokladnie to, czego wlasnie potrzebuje!
Zostałaś programistka?
@@h4wk742 nie, nie poszlam w to, ale zmienilam prace na branze w IT
Duże słowa uznania za to co robisz. Dziekujemy !
Świetny film. Nie spotkałem jeszcze tutorialu z OOP, w któtym ktoś wytłumaczyłby to zagadnienie tak zrozumiale jak Ty. Szczególne słowa uznania za bardzo dobre i zrozumiałe rozgraniczenie Interface'u oraz Klasy Abstrakcyjnej, bo to z mojej perspektywy (i chyba nie tylko mojej) sprawiało największy problem. Tłumaczenie na podstawie jednego spójnego projektu również zrobiło robotę. Liczę na więcej filmików poświęconych Javie, jeszcze raz - dobra robota. Pozdrawiam ;)
Nareszcie, po względnym opanowaniu podstaw mogę zasiąść do tego filmu:) Wielkie dzięki !
Obejrzałem do końca, zarówno ten kurs obiektowej Javy jak i podstawy w 2h. Bardzo ciekawie wytłumaczone, lecz z drugiej strony miałem styczność z programowaniem więc łatwiej to ogarnąć.
Fajnie, że poświęciłeś te godziny na przekazanie nam wiedzy o Javy w tak przystępny sposób :)
Bardzo dziękuję za ten kurs. Obejrzałem bardzo intensywnie i sporo mi pomógł. Muszę samodzielnie, powoli sobie wszystko przećwiczyć. Dziękuję!
3h zlecialy szybciutko, dziekuje za super tlumaczenie javy ! Pelna profeska !
Gratulacje za wytrwałość,ogromną wiedzę i profesjonalny przekaz
Dziękuję za bardzo miły komentarz i wsparcie od początku kanału! :)
Genialny kurs taki podjarany jestem tą java wreszcie czuje ze to jest ten język któremu mogę poświecić swoj czas i to czuć a nie jak np próbowałem z frontendem, który uważam za kobiecy albo z c++, który mi nie podpasował z fartem dzieki za poradnik. Czekam na jesień i zobacze twój kursik, choć mam nadzieje że już przeskocze ten poziom do tego czasu i tam zobacze same powtorki pzodrawiam
Przychodzę z C# i bardzo podoba mi się java patrząc na Twój kurs. Dziękuję.
Świetnie dobrałeś praktyczne przykłady, dzięki którym można zobaczyć obiektowość w realnym życiu.
Wydałem 20k PLN na kurs Javy a i tak korzystam z Twoich materiałów.
Ogólnie polecam wszystkich uczyć się z wielu źródeł i w innych formach.
W moim przypadku to wygląda tak, że mam zajęcia z SDA, czytam książkę "Rusz głową Java", oglądam właśnie materiały na YT i wspólnie z Ziomkiem rozwiązujemy różne zadania. Dla mnie jest to świetne rozwiązanie bo np coś co na kursie było średnio zrozumiałe ale jakiś fundament został, to z innego źródła ten sam temat wchodzi juz na miękko.
Mam dokładnie taką samą sytuację :) Pozdrawiam i powodzenia!
Dziękuję za ten kanał i wkładaną w niego pracę. Mistrzostwo.
Ekstra! Dzięki bardzo za Twoje filmy, tłumaczysz wszystko w zrozumiały dla mnie sposób, dzięki Tobie dużo łatwiej jest mi zrozumieć zagadnienia związane z programowaniem. Świetna robota!
Oglądałem, a właściwie słuchałem tego nagrania jadąc autem i niesamowite jest to, że pomimo tego, że nie patrzyłem w ekran potrafiłem sobie wyobrazić o czym mówisz i co robisz, a to wszystko za sprawą ciekawych życiowych przykładów. Słuchając nagrania czułem się jakbym słuchał podcastu, z którego na prawdę wyniosłem dużo. Dzięki!
Mega się cieszę, że trafia do Ciebie ten materiał i w takim razie zapraszam do zapoznania się z innymi filmami na temat Javy :) Tutaj jest cała playlista: ua-cam.com/video/6G19kFcVXTo/v-deo.html
najlepszy kurs jaki spotkałem. Przykłady i prostota . Wielki szacunek że dzielisz sie tą wiedzą . Czekam na kolejne filmy
Ogromna dawka wiedzy, do tego dobrze wytłumaczonej. Dzięki Kamil! :)
Fenomenalnie wytłumaczone! Dziękuję bardzo :)
Jestem programistą front-end i nie spotykałem się jeszcze zbyt często z programowaniem obiektowym. Czasem we frameworkach js'a, jednak postanowiłem rozwijać back-end i w przypadku Python + django było już to dla mnie problematyczne. Twój poradnik odpowiedział na moje wszystkie pytania oraz logiczne problemy. Bardzo dobrze tlumaczysz, masz przyjemny głos i wyobraźnię też nie małą. Wielkie propsy za DARMOWY poradnik, który z pewnością można polecić każdemu programiście.
A dziękuję za ten odcinek. 3 godziny zarezerwowane na yt 😄
Bardzo łatwe w odbiorze i konkretne w przykładach. Miałem już do czynienia z wieloma kursami Javy dla poczatkujących na UA-cam czy Udemy i Twój jest chyba najlepszym wyborem. Mówisz na temat i nie za wolno (chociaż ustawiłem speed 1.25 ;)). Jedynie przeszkadza, że gadająca głowa jest głośniej niż relacja z InteliiJ, ale bez tragedii.
Dzięki za uwagę o różnicach w głośności! Staram się to zawsze ogarnąć, ale nie jest jeszcze idealnie :) I cieszę się, że podoba Ci się film :D Nie wiem czy miałeś już okazję przejrzeć inne filmy dotyczące Javy na kanale, ale jeżeli nie, to zachęcam do sprawdzenia playlisty: ua-cam.com/play/PLp9WLfHXxbceqs8TV8vGgpnRHihJX0yd-.html
Bardzo wartościowy materiał oparty na świetnym realnym przykładzie. Tego właśnie brakowało ! Świetna robota
Kamil, dajesz nadzieję, na zrozumienie zasad programowania. Twoje filmy sprawiają, że "w pokoju gdzie jest ciemno" nagle wszystko się rozjaśnia, nie ważne, czy opowiadasz o gicie, RESTapi, czy o Javie. Dzięki!
Bardzo profesjonalnie i na temat. Jestem pod wrażeniem
Rewelacja, świetnie tłumaczone. 3 godziny zleciało bardzo szybko. Miałem kilka błędów ale udało mi się je samemu ogarnąć, chociaż bardzo się pogubiłem w tym wszystkim, ale to chyba normalne u początkujących :).
Super materiał! Jedna uwaga na przyszłość: gdy przerabiam poradniki staram się najpierw sam wykonać zadanie, które jest opisywane na początku a następnie sprawdzam jak zostało wykonane przez autora. W tym filmie opis tego jak powinien działać symulator komputera był tak lakoniczny że wykonałem swój kod wykorzystujący OOP ale projekt, który ja stworzyłem był właściwie zupełnie inny od Twojego :D
Miesiąc temu nie zrozumiałam z tego filmu prawie nic, dzisiaj nawet to ogarniam. Wrócę tu za miesiąc sprawdzić moje postępy 😄
Mega, tak to właśnie działa w programowaniu! :) Daj znać niedługo jak dalsze postępy!
Dzieki Kamil za twoj ogromny wklad w nasz rozwoj!!! Wspaniale materialy!!! Super tlumaczysz. Jestes konkretny, otwarty i b. dobrze przygotowany!!! Cenisz nasz czas!!! Zaluje, ze musze spac bo moglbym ogladac twoje filmy na okraglo! Przyklad do dzisiejszej lekcji wybralbym jednak inny... Np. Rent Vehicle. Moim skromnym zdaniem bardziej kontekstowy, mniej abstrakcyjny i spojny. Do tego doszlaby zabawa z datami i czasem. Pozdrawiam i czekam z niecierpliwoscia na kolejne filmy. Jestes SUPER!!!!!
Ale Rent Vehicle to taki trochę już oklepany przykład ;) A daty i czas to bardzo dobry temat na jeden z kolejnych odcinków! Zapisuję i postaram się wrzucić gdzieś do harmonogramu :)
Mam doświadczeni w kursach na Udemy i przyznam szczerze, że nie trafiłem jeszcze na taki w, którym ktoś tak konkretnie i precyzyjnie tłumaczy na czym polega OOP. Nie wyobrażam sobie znalezienie lepszej darmowej lekcji o programowaniu obiektowym, oglądam ten film już któryś raz i z biegiem czasu jak moje umiejętności rosną to ten film jest dla mnie coraz bardziej wartościowy. Świetna robota i szanuje za dzielenie się taką praktyczną wiedzą za darmo.
Zawsze warto zaczynać od darmowych kursów na YT. Takich podstawowych kursów jak na tym kanale lub innych np. na kanale pasja informatyki.
Materiał super, posiadam podstawy z innych języków, a teraz potrzebna mi Java, sporo skorzystałem, dzięki! Mam tylko małą uwagę, w 2:23:00 nadpisanie metody getName() popsuło wyszukiwanie plików typu MP3MusicFile w klasach HDDDrive i SSDDrive.
A faktycznie, bo w metodach findFile wyszukujemy po nazwie, a teraz getName w MP3MusicFile nie zwraca nazwy tylko tekst "Dla plików MP3 getName nie działa" :) Przy okazji znalazłem jeszcze jeden błąd - w metodzie addFile w klasie SSDDrive robimy files.put(file.toString() , file), a powinniśmy robić files.put(file.getName() , file) :)
Dzięki za czujność!
Dzięki Tobie dużo więcej i szybciej zrozumiałem tematykę i metodologię OOP niż przerabiając kurs Buchalki na Udemy. Zajebiście to wyjaśniłeś, pozdro! :)
Bardzo miło mi to słyszeć, dzięki!
Jestem zupełnie nowy w tej dziedzinie i uczę się na własną rękę (próba przebranżowienia). Z czystym sumieniem mogę stwierdzić, że ten ten kanał jest prowadzony przez fachowca, który z niebywałą lekkością przekazuje wiedzę w sposób zrozumiały i praktyczny. Dziękuję Ci, że dajesz możliwość ludziom takim jak ja rozwijać się w tym zawodzie
zgodze sie, z polskich kanalow najlepszy i lepszy od wielu angielsko i niemiecko jezycznych z jakich ja sie ucze
Rok na moich studiach rozłożył się tak, że nie programowałem praktycznie przez semestr w Javie. Twój film odświeżył trochę mi głowę i pomógł mi wrócić do klepania kodu w Javie.
Bardzo dziękuję za ten wspaniały film! Nareszcie programowanie obiektowe zostało wytłumaczone w genialny sposób. Pozdrawiam i już szykuje się do obejrzenia następnych filmów!
Cieszę się, że się podoba :D
Dziękuje Ci za ten film! Przed chwilą skończyłem pierwszą rozmowę kwalifikacyjna i zostałem zapytany praktycznie o wszystko, co usłyszałem w tym filmie!
Ooo mega gratulacje! A o co Cię pytali?
@@JakNauczycSieProgramowania pytań teoretycznych było dosyć sporo, z tych co pamiętam to: jak działa dziedziczenie w javie, różnice pomiędzy klasa abstrakcyjną a interfejsem, różnice pomiędzy method overloading a overriding, czym jest enkapsulacja, modyfikatory dostepu, keyword super.
Materiał wyjaśniony w sposób przyjazny i zrozumiały. Dzięki
Super, dzięki za tą lekcje. Już myślałem, ze się poddam, ale ożywiłeś moje zainteresowanie Javą. :)
W takim razie trzymam kciuki za dalszą naukę!
2:25:04 - najpierw ctrl + n, a następnie ctrl + F12 (inherited members) ;)
Super odcinek. Spora dawka wiedzy.
Filmik super, jak zresztą cały content na kanale. Jedna rzecz mnie tylko zastanowiła w kwestii konwencji nazewniczej dla pól static. Nie spotkałem się z tym, że nazwy pól statycznych piszemy dużymi literami, zdawało mi się, że ta konwencja dotyczy wyłącznie pól z modyfikatorami static final. (02:34.40)
Oczywiście masz rację, ta konwencja (nie tylko w Javie, ale również w wielu innych językach) dotyczy stałych czyli w przypadku Javy są to pola static final.
Mój błąd, że przy MAX_HEIGHT nie dodałem modyfikatora final, to zdecydowanie powinna być stała!
Fajnie wytłumaczone.
Ogromna dawka informacji, dzięki wielkie.
Do materiału będę na pewno jeszcze wracał.
2 kursy na udemy z obiektowania i nie mogłem ogarnąć o co w tym chodzi, twój film w 20 minut wyjaśnił mi podstawy na przykładzie garnka jprd :D
(Array [erej]) Swietny film bardzo pomocny
Wszystko super wytłumaczone. Dzięki!
Naprawdę świetny materiał
Fajnie widać takie zaangażowanie w przygotowanie materiałów. Mało osób robi tak wartościowe materiały ja Ty :)
Dziedziczenie wytłumaczone na podstawie odkurzacza genialne :D
A dziękuję bardzo:)
🔥 Sprawdź kurs Java od podstaw - od zera do Junior Developera: javaodpodstaw.pl/ 🔥
🔥 Roadmapa programisty - Czego, kiedy i dlaczego się uczyć, żeby zostać programistą: roadmapaprogramisty.pl/
🔥 Programista dzisiaj - Sprawdzone źródła do nauki dla początkujących programistów: programistadzisiaj.pl/
🔥 Kurs Git od podstaw: gitodpodstaw.pl/
🔥 Platforma Programuj od podstaw: programujodpodstaw.pl/
Pobierz bezpłatnego ebooka "Jak zostać programistą - krok po kroku": www.jaknauczycsieprogramowania.pl/#ebook
Dołącz też tutaj:
DISCORD: www.jaknauczycsieprogramowania.pl/discord
INSTAGRAM: instagram.com/jaknauczycsieprogramowania/
FACEBOOK (GRUPA): facebook.com/groups/jaknauczycsieprogramowania
FACEBOOK (STRONA): facebook.com/jaknauczycsieprogramowania
✉ Współpraca: marketing@jaknauczycsieprogramowania.pl
Kurcze jak na początek nie zawsze ogarniam skróty klawiaturowe a to początek, to tego Java to już kilka wersji w górę jak i sam program do pisania. Jak to ogarnąć ? A mój początek to z tym kanałem.
Obym dzięki temu zdała kolosa 🙏🙏🙏, dzięki za wytłumaczenie
Powodzenia, trzymam kciuki!
Dzieki za darmowa wiedze,przyklad tego garnka jest swietny! Chcialbym tworzyc skomplikowane mechaniki w grach i widze jaki potencjal drzemie w programowaniu ;d
Programowanie to piękna sprawa, możesz z nim osiągnąć praktycznie wszystko, ogranicza Cię tylko wyobraźnia:)
Ten człowiek to złoto na polskim UA-cam ❤️
Dziękuję bardzo!
Blisko 3h jestem pod wrażeniem. Kawał dobrej roboty, szacun.
Trochę pracy mnie to kosztowało, ale było warto!
@@JakNauczycSieProgramowania myślę że napewno. Wszystkie filmy które oglądałem na kanale trzymają poziom i dużo tłumaczą. Oby tak dalej.
Akurat w tym semestrze mam podstawy Javy, większość materiału jest.
Jakby jeszcze kolejne tematy były to by było super :)
Lab1. Wprowadzenie - zapoznanie z IDE, tworzenie prostych programów.
Lab2. Składnia języka, instrukcje sterujące, typy danych, klasy, metody, obiekty.
Lab3. Tworzenie aplikacji obiektowych do przetwarzania tekstu.
Lab4. Tworzenie aplikacji obiektowych wykorzystujących funkcje matematyczne.
Lab5. Programowanie obiektowe z wykorzystaniem dziedziczenia i interfejsów.
Lab6. Obsługa wyjątków.
Lab7. Wykorzystanie kolekcji.
Lab8. Wyrażenia lambda w języku Java.
Lab9. Operacje wejścia - wyjścia, obsługa plików.
Lab10 Współbieżność w języku Java.
Lab11. Tworzenie aplikacji z graficznym interfejsem użytkownika z obsługą zdarzeń.
Lab12. Tworzenie aplikacji do komunikacji sieciowej.
Lab13. Tworzenie aplikacji do obsługi bazy danych.
Część z tych tematów poruszałem, część na pewno jeszcze się pojawi, sprawdź playlistę z filmami dotyczącycymi Javy: ua-cam.com/play/PLp9WLfHXxbceqs8TV8vGgpnRHihJX0yd-.html
I wpadaj regularnie na kanał :)
Gratulacje, świetna robota, dziękujemy!
Dzięki, miło mi to słyszeć! Takie komentarze zawsze bardzo mocno motywują mnie do dalszej pracy :)
Wielkie dzięki za Twoje filmy!
Wielkie dzięki za ten odcinek Kamil!
Pozdrawiam!
Miłego oglądania i jak najwięcej napisanego kodu! :D
Też pozdrawiam!
Masz talent !
Dzięki za materiał :) Kawał dobrej roboty
Dzięki wielkie za ten film !!!
Cieszę się, że się podoba :D
Dzięki wielkie za kolejny film.
super wyjasnienie i uzupełnienie
Szacunek Kamil! :D
Dzięki Andrzej! 🤗
Powiedziałeś, że za chwilę opowiesz o enumach i widocznie zapomniałeś szkoda, bo świetnie tłumaczysz. Dziękuje za materiał :>
Mówię o enumach :) W 1:48:31 :)
Świetny tutorial! Wszystko bardzo dobrze wytłumaczone! Dzięki!
wtf
@@Rother-bg2mb wtf gościu
super, poradnik mega dzięki :)
Super. Bardzo przydatny materiał
No i jest ten wspaniały film. Coś pięknego.
Dzięki za bardzo fajny i motywujący komentarz!
Świetny materiał, bardzo pomaga w mojej nauce programowania, jest wytłumaczone jasno i klarownie na przykładowym projekcie, super.
Chciałbym jeszcze zadać pytanie, w 1:54:36 tworzymy klasę abstrakcyjną aby w niej zawrzeć zmienne dotyczące ImageFile, a czemu nie został użyty interfejs zamiast klasy abstrakcyjnej? Chyba muszę powtórzyć materiał dotyczący różnic między klasą abstrakcyjną a interfejsem, bo dalej mi się mylą :/
Edit: W 2:01:49 nie rozumiem czemu rozszerzamy interfejs MusicFile a nie implementujemy jak w poprzednim razie w klasie abstrakcyjnej.
W pierwszym przypadku tworzymy klasę abstrakcyjną, bo w niej implementujemy wspólne metody dla klas, które będą po niej dziedziczyły.
W drugim przypadku rozszerzamy interfejs, bo chcemy dodać do istniejącego interfejsu dodatkowe metody, ale nie chcemy ich jeszcze implementować (to zostawiamy już klasom implementującym interfejs).
Super materiał dzk
Więcej tego z JAVY !!!!!
super odcinek !!! dzięki Kamil :D
Ogląda się na tyle przyjemnie że robię sobie 5 godzinne maratony twoich filmów
Bardzo miło mi to słyszeć :D
Mam pytanie. Czemu jakbym dopisal do klasy garnek (30:15) public static void main(String[] args) to potem w klasie main nie moglbym wyswietlic i korzystac z metod klasy garnek?
Możliwe, że w konfiguracji projektu nie podałeś, która klasa zawierająca metodę main jest Twoją główną klasę i IntelliJ nie wie, w jaki sposób wystartować program.
Jeżeli napiszesz metodę main w klasie Main i uruchomisz program, IntelliJ sam ogarnie, że główną klasą jest Main. I jeżeli teraz napiszesz metodę main w klasie Garnek wszystko dalej będzie działać.
Natomiast jeżeli napiszesz metodę main w klasie Main, nie uruchomisz program i napiszesz metodę main w klasie Garnek, IntelliJ nie będzie w stanie ogarnąć, która metoda main powinna być pierwszą metodą startującą program.
W razie wątpliwości wrzuć jeszcze to co robisz na grupę na fb i tam ogarniemy: facebook.com/groups/jaknauczycsieprogramowania
Dzięki, bardzo mi pomogłeś 😄
Super materiał, genialnie zrobiony, przemyślany.
Pytanie: Zrobiłbyś odcinek związany z procesem myślenia nad zadaniem którego nie umiemy rozwiązać? Jak się zabrać do rzeczy które są trudne? Często się zdarza, że myślimy parę godzin nad rozwiązaniem i nic z tego nie wychodzi (kręcimy się w kółko) Jest jakiś proces, który efektywniej pozwoliłby rozwiązać problem? Jak zabrać się do skomplikowanych algorytmów? Co zrobić kiedy już nie mamy pojęcia jak coś rozwiązać?
Pomyślę nad takim odcinkiem :) Trochę tego typu proces pokazywałem tutaj: ua-cam.com/video/T9UtiKT5AnE/v-deo.html ale nie były to takie problemy, nad którymi musiałbym siedzieć godzinami. Raczej nieznajomość technologii i zadawanie odpowiednich pytań, żeby dowiedzieć się jak daną rzecz można zrobić.
To o czym piszesz to trochę bardziej skomplikowana kwestia, muszę to dobrze przemyśleć i postaram się podzielić swoimi doświadczeniami i wskazówkami :)
@@JakNauczycSieProgramowania super czekam na odcinek bo wydaje mi się że to częsty problem
Podpowie ktoś jaki skrót klawiaturowy został użyty w 1:26:07 odnośnie przypisania do zmiennej? Windows, ATL + Enter nie działa, próbowałem kilku rzeczy ale ebzskutecznie
Ten skrót to "extract/introduce variable" czyli Ctrl + Alt + V: www.jetbrains.com/help/idea/extract-variable.html
@@JakNauczycSieProgramowania dzięki bardzo już 3 raz chyba dziękuję :D
@@janwan7682 A ja zawsze chętnie pomogę, także pytaj o wszystko śmiało :D
Świetna robota ❤️
Wracam sobie to tego filmu co jakiś czas bo jest to ogromna piguła wiedzy, w dodatku bardzo przejrzyście podana. Naprawdę świetny film. Mam tylko jedno pytanie co do zawartości:
W geterach czasami zwracasz wartość ze słowem this a czasami bez. Od czego to zależy?
To tylko moja niekonsekwencja, w przypadku getterów this jest opcjonalne, możesz je dodać, ale nie musisz :)
Bardzo mi się podoba styl w jaki przekazujesz wiedzę, częściowo potoczny i profesjonalny. Miło się tego słucha i bardzo dużo rozumiem, jednak zauważyłem (na 2 filmach podstawy i obiektowe), że zaczynam się gubic na ostatnich częściach projektowych. Zaczynasz tam dosyć szybko wdrażać nowe rozwiązania i terminy których nie do końca rozumiem. Wyprzedzasz fakty np. Tutaj zacząłeś robić pełno metod które w projekcie które przydadzą się później i skaczesz, przez co się gubię. Jeśli chciałbyś jeszcze polepszyć jakość kanału skup się na kolejności logicznej i doprowadzaniu metod do końca. Wolę jak odpiszesz coś później niż na zapas. Czasem też stosujesz metodę w której specjalnie popelniasz błąd żeby potem go na0rawiasz i tlukaczysz dlaczego. Super mi się to podoba ale czasami mowisz z góry że to błąd przez co od razu człowiek się zamyka na tą wiedzę.
Tak czy inaczej jesteś ponad innych mentorow na YT, po prostu nie chce slodzic tak jak reszta na dole ;) Wolę dać feedback
Dzięki Mateusz, to specjalne popełnianie błędu i jego późniejsze naprawianie jest właśnie po to, żeby uniknąć tych dużych przeskoków, o których piszesz. Wychodzę z założenia, że przedstawienie jedynie właściwego rozwiązania i stwierdzenie "macie robić tak i tak, bo inne podejście jest złe" niewiele uczy. Ktoś doświadczony będzie wiedział, dlaczego jedno rozwiązanie jest ok, a drugie nie, ale osoba początkująca będzie zagubiona. Nie zrozumie tego w wystarczającym stopniu i pewnie też tego właściwego podejścia nie zapamięta. Dlatego tak istotne jest napisanie kodu w taki sposób, w jaki prawdopodobnie napisałaby to osoba początkująca, a następnie wskazanie problemu, który z tak napisanym kodem się wiąże. Wtedy mamy już odpowiedni kontekst, widzimy niedoskonałość naszego rozwiązania i zastanawiamy się, jak możemy zrobić to lepiej. Na to wprowadzanie zbyt dużej ilości metod zwrócę uwagę, postaram się w przyszłych filmach faktycznie robić tylko to, co jest potrzebne na obecną chwilę. To bardzo dobra uwaga!
Jeszcze raz dzięki i pozdrawiam!
@@JakNauczycSieProgramowania Dzięki! Ułatwi mi to naukę, bo wolę Ciebie niż książke która dostalem
Obiecuje obejrzeć i zrozumieć 😁 oby zrozumieć chodź tyle 🤏
Obejrzyj sobie na spokojnie, przećwicz całość na spokojnie, poeksperymentuj z projektem, a potem staraj się go odtworzyć samemu :) Zobaczysz, czego jeszcze nie rozumiesz, co jest niejasne i w ten sposób bardzo szybko nauczysz się wszystkich tych konceptów, o których w tym odcinku opowiadam :)
Hej! Spróbuj wraz z poszukiwaniem pliku przesłonić tą metodę 2:24:20 :)
Którą metodę? getName?
Jestem na 18:06 minucie filmu, i mam problem. Ty wpisujesz new Garnek... i pojawiają Ci się propozycje średnica i wysokość i ja nie mam możliwości wpisać bez string kolor pokazuje mi błąd, a jak usune przecinek po wysokości to znikają mi te propozycje średnica i wysokość i juz w ogóle nic nie działa
Hej, opisz problem i wraz ze screenshotami wrzuć na grupę: facebook.com/groups/jaknauczycsieprogramowania
Istotne są screenshoty co dokładnie robisz, bo z samego opisu niestety nie jestem w stanie stwierdzić, co jest nie tak.
Na grupie ogarniemy :)
Jea fajny materiał przerobiłem Kod. W pewnym momencie aż złapałem się za głowę ile tu klas jak to wszystko ogarnąć. Jak się ułożyło doszło że właśnie o to chodzi.
Super! Tak właśnie powinno być - na początku poszczególne klocki mogą wydawać się oderwane od całości, ale z czasem wszystko zaczyna się układać i nabierać coraz większego sensu :)
Cześć Kamil, mam pytanie co 2:16:30
Czy losowa kolejność wyświetlania plików za pomocą drive.listFiles(); w stosunku do kolejności dodawania plików drive.addFile(); to błąd czy norma? Pytam bo u mnie wyświetla jeszcze w innej kolejności, a dodając więcej plików różnego typu ta kolejność się zmienia.
Świetny materiał! Gratulacje i pozdrawiam
Cześć! Tak, to właściwe zachowanie, ponieważ HashMap nie przechowuje informacji o kolejności dodawanych obiektów. Jeżeli chcesz, żeby obiekty miały określone miejsce w strukturze, powinieneś skorzystać z ArrayListy, a jeżeli potrzebujesz mapy z uporządkowanymi elementami, możesz skorzystać z OrderedMap z biblioteki Apache Commons: www.baeldung.com/apache-commons-ordered-map
Zazwyczaj jednak jeżeli korzystasz z mapy, to interesuje Cię tylko pobieranie wartości po kluczu, tak więc nie ma dla Ciebie znaczenia jak to zostało ułożone pod spodem:)
Dzięki i pozdrawiam!
Dzięki za błyskawiczną odpowiedź :)@@JakNauczycSieProgramowania
Dziękuje. Dzięki Panu zrozumiałem OOP :D
dobrze tłumaczysz
1:46 Czy to jak piszesz kod, żeby go po chwili usunąć ma na celu żeby film był dłuższy? Wcześniej w innych momentach, też jest taka taktyka, że piszesz coś aby, by po chwili to usunąć i zrobić inaczej? Dzięki czemu film ma 2:36 ale część polega na usuwaniu kodu...
Tutaj znajdziesz ostateczną wersję kodu: github.com/kamilbrzezinski/oop
@@JakNauczycSieProgramowania Dziękuje ci bardzo, znacznie ułatwi mi to przejście do sedna
hej, w lekcji 2:20:32 wspominasz, ze overloading to tworzenie metod o takiej samej sygnaturze, ale z użyciem różnych argumentów. Czy jak w definicji metody (o takiej samej nazwie) podajemy inne parametry, to to nie jest zmiana sygnatury? W IDE o ile sie nie myle jest opcja w refaktoryzacji [change signature], w ktorej chodzi o zmiane (dodanie, zmiana typu) parametrow. Czy moglbys wytlumaczyc, czy to przejezyczenie, czy jednak zle to rozumiem? Filmik rewelacja, dzieki wielkie:)
chat GPT dal mi poniższą odpowiedź, natomiast bardzo często, gdy pytam o rzeczy dotyczące programowania, jego odpowiedzi mijają się z prawdą, dlatego byłbym wdzięczny za odpowiedz:
[Chat GPT] "To stwierdzenie jest błędne. Overloading to tworzenie metod o tej samej nazwie, ale różniących się sygnaturami, które obejmują różne typy lub różną liczbę parametrów. Overloading umożliwia tworzenie wielu wersji tej samej metody w jednej klasie, które różnią się sposobem działania w zależności od typów lub ilości argumentów, jakie przyjmuje.
Dlatego właściwe stwierdzenie brzmiałoby:
"Overloading to tworzenie metod o tej samej nazwie, ale z różnymi sygnaturami, które obejmują różne typy lub różną liczbę parametrów.""
Tak, to przejęzyczenie z mojej strony. Overloading to tworzenie kilku metod o takiej samej nazwie, ale przyjmujących różne argumenty.
@@JakNauczycSieProgramowania dzieki wielkie:)
1:26:30 metoda findFile powinna IMO zwracać Optionala
Optional to dobre rozwiązanie w tym przypadku, ale jest to kolejny poziom abstrakcji, który na tym poziomie (podstawy programowania obiektowego w Javie) wprowadzałby niepotrzebne zamieszanie i komplikowałby omawiany problem. Na pewno jednak opowiem kiedyś o Optionalu w osobnym filmie :)
Mam pytanie odnośnie listy List hddFiles = new ArrayList(); z fragmentu 1:12:17 . Dlaczego używasz konstruktora ArrayList a nie List? Oraz Nie lepiej zamiast List dać ArrayList ? Czy to jest jakaś znacząca różnica?
List to interfejs, także nie posiada konstruktora.
Zamiast List hddFiles = new ArrayList() możesz dać ArrayList hddFiles = new ArrayList(), ale wtedy kod staje się mniej generyczny (uniwersalny) - w obecnej wersji możesz stworzyć metodę, która przyjmuje List (czyli każdą klasę, która implementuje ten interfejs), gdybyś zmienił deklarację na ArrayList hddFiles = new ArrayList() wtedy w takiej metodzie byłbyś uzależniony już tylko i wyłącznie od ArrayList i nie mógłbyś przekazać innego typu listy. A w programowaniu obiektowym chodzi właśnie o to, żeby jak najmocniej operować na interfejsach i nie być uzależnionym od konkretnej implementacji.
Nie No stary 21 minuta ale duży progres od poprzedniego filmu z Javy na tej playliscie. Aż miło się uczyć
Czesc Kamil, dzieki za filmik. Mam pytanie odnosnie czesci, w ktorej opisujesz interfejs i nawiazujesz do pytania rekrutacyjnego o roznice pomiedzy interfejsem, a klasa abstrakcyjna (54.10 w Twoim filmiku). O ile dobrze, zalapalem, to nie ma tam jasnej odpowiedzi na to pytanie. Czy bylbys w stanie rozwinac ten temat? Wspominasz takze, ze interfejs definiuje co ma zostac zrobione (bez wytycznych w jaki sposob). Czy dobrze rozumiem, ze klasa abstrakcyjna dziala podobnie? Metody w tych klasach sa czesto puste i konkretna definicja/instrukcja, jak cos zostanie wykonane, jest implementowana w przypadku dziedziczenia przez pierwsza klase konkretne, po klasie abstrakcyjnej. Mam nadzieje, ze nic tu nie pomieszalem i rozumiesz o co mi chodzi :) nie jestem w stanie zobaczyc/zrozumiec tych roznic. Bede wdzieczny za dodatkowe informacje, albo naprowaadzenie jezeli tutaj mieszam:) Pozdrawiam!
Cześć! Najważniejsze różnica jest taka, że klasa abstrakcyjna może przechowywać stan a interfejs nie. W praktyce chodzi o to, co mamy w klasie AbstractFile - mamy tam zdefiniowane pola name i size, które możemy modyfikować. W interfejsie jest to niemożliwe.
Nagram za jakiś czas dłuższy odcinek na temat tych różnic, gdzie wytłumaczę to wszystko bardzo dokładnie:)
@@JakNauczycSieProgramowania dziekie wielkie za odpowiedz:) będę czekał na film, oraz kurs:)
Odcinek rewelacja, tak samo jak przykładowa muzyka! Cool kidsów i Mansona nie słuchałem od lat. Sprawdziłem ten nowy album króla mroku i faktycznie dobry. Podwójne dzięki Kamil!
Dla mnie najlepszy album od czasu Holy Wood! Od premiery słucham praktycznie codziennie :)
Dzieki
Świetny materiał - wielki szacun. Ale, że nie powiedziałeś o tym: forEach(System.out::println); wcześniej :) Przecież to o niebo łatwiejsze ;)
1:02:49 - Zapisuję sobie :D
czsec nwm co sie stalo ale gdy przenosilem tes 3 klasy do pakietu drive to po przeniesieniu nigdzie ich nei ma. sprawdzalem tez w plikach an kompie 1:24:32
Opisz problem i wrzuć screenshoty z tego jak wygląda struktura Twojego projektu na grupę: facebook.com/groups/jaknauczycsieprogramowania
Bo tak bez szczegółów to ciężko powiedzieć, co się mogło zdarzyć. Ale spróbujemy ogarnąć :)
Świetny film jeszcze lepsza muza :-)
No. I to są podstawy. Teraz już można zacząć programować coś pożytecznego.