Obiektowy C++ odc. 5: Dziedziczenie. Klasy pochodne

  Рет қаралды 256,736

Pasja informatyki

Pasja informatyki

Күн бұрын

Jeżeli masz ochotę zobaczyć więcej naszych filmów, podcastów i artykułów w coraz lepszej jakości, to zachęcamy do pozostawienia subskrypcji, a także do odwiedzenia prowadzonych przez nas witryn oraz do polubienia fanpage'u Pasji informatyki na Facebooku.
🔔 Subskrybuj - bit.ly/pasja-sub
Jeśli masz ochotę wesprzeć to co robimy, to możesz:
🖐 Zostać Patronem - patronite.pl/p...
☕️ Ufundować nam wirtualną kawę - buycoffee.to/p...
👉 Fanpage na Facebooku - bit.ly/pasja-fb
👉 Profil Patronite - patronite.pl/p...
👉 Lista Patronów - pasja-informaty...
👉 Donacje na blogu - miroslawzelent....
👉 Harmonogram publikacji - bit.ly/pasja-ha...
👉 Kontakt z nami - pasja-informaty...
👉 Współpraca reklamowa - bit.ly/pasja-ws...
👉 Kursy video dla technikum - pasja-informaty...
👉 Blog informatyczny - miroslawzelent.pl
👉 Trenażer egzaminacyjny - egzamin-informa...
👉 Egzamin-E13.pl - egzamin-e13.pl
👉 Forum dyskusyjne - forum.pasja-in...
👉 Witryna podcastowa - podcast.pasja-i...
👉 Twitter MZ - / miroslawzelent
👉 Twitter DS - / stelmach_damian
Dziedziczenie - wiemy doskonale co to słowo oznacza. Dziedziczenie jest w biologii procesem przekazywania swoich cech potomstwu. I podobnie będzie w programowaniu obiektowym - dziedziczenie będzie przekazywaniem swoich atrybutów i metod dzieciom, czyli nowym klasom, które są oparte na klasach już istniejących, czyli jakby rodzicach (klasach podstawowych). Pytanie, na które poszukamy odpowiedzi w tym odcinku brzmi: po co nam taki mechanizm dziedziczenia, czyli tworzenia potomków (klas pochodnych) wg cech rodziców?
💾 POBIERZ PLIKI Z ODCINKA:
miroslawzelent....
📑 CODE REVIEW NA FORUM:
bit.ly/code-rev...
🎵 MUZYKA:
SDDx & Cresce - Acceptance: • Video
/ mmmontagemusic
Na licencji Creative Commons:
A Creative Commons Attribution license states that a track can be shared, copied, distributed, transmitted, remixed, adapted and used commercially (bit.ly/CCAttrib....
#pasjainformatyki #cplusplus #programowanie

Пікірлер: 187
@PatrickStritch
@PatrickStritch 10 жыл бұрын
Takich nauczycieli jak Pan brakuje w wielu szkołach :)
@mikemg4554
@mikemg4554 6 жыл бұрын
Zadanie wykonane. Ulepszyłem nieco program i sprawiłem, aby automatycznie pokazywał: dane jakiegoś punktu, dane jakiegoś koła, a następnie - dane jakiejś kuli. Myślę, że pojąłem. :) Dziękuję za ten świetny poradnik. Polecam wszystkim wkleić do siebie i zobaczyć, jak działa. #include #include #include using namespace std; class Punkt { float x,y; string nazwa; public: void wyswietl() { cout
@sanctipaprichio
@sanctipaprichio 10 жыл бұрын
A ja myślałem że głos Krystiana Karczyńskiego będzie mi się śnił po nocach... :D
@coprzyniesieprzyszlosc
@coprzyniesieprzyszlosc 4 жыл бұрын
Cześć z tej strony Krystian Karczyński
@marcinlesniewski4571
@marcinlesniewski4571 4 жыл бұрын
Elegancko
@pawelg993
@pawelg993 9 жыл бұрын
4 razy przerabiałem ten filmik i udało się zrozumieć oraz zrobić zadanie domowe ! Można jechać dalej. Dziękujemy za zrobienie tak dobrego kursu.
@maciejkmieciak2551
@maciejkmieciak2551 9 жыл бұрын
+Pawel Giza dasz kod tego zadania?
@667kamil
@667kamil 8 жыл бұрын
+Maciej Kmieciak ta napisz sobie
@adam2430
@adam2430 7 жыл бұрын
bardzo nam milo ze dzielisz sie z nami owa wiadomoscia :D:D:
@KoW
@KoW 7 жыл бұрын
Zadanie domowe zrobione po pierwszym obejrzeniu :D
@PawelixonChalange
@PawelixonChalange 4 жыл бұрын
@@KoW nie wiedziałem że napiszesz tutaj komęndarz?
@yeeezooo
@yeeezooo 7 жыл бұрын
Naprawdę świetny odcinek i bardzo dydaktyczny wyciskający esencję bez potrzeby długiego kodowania przykład. Majstersztyk! Dużo lepsze zrozumienie zagadnienia podanego w formie takiej pigułki niż czytanie czasem ok 100 lub więcej stron o tym zagadnieniu chodzi mi o możliwość skupienia się na całości problemu w tak krótkim czasie. Wielki szacun.
@Bartekdex
@Bartekdex 9 жыл бұрын
Panie Mirosławie, czy pojawi się odcinek o przeładowaniu operatorów :)?
@paka075
@paka075 7 жыл бұрын
Dziękuje bardzo Panu za naprawdę dobre wyjaśnienie. Nie dość że interesuje mnie programowanie to jeszcze jest to przekazane w inteligentny sposób.Dużo się nauczyłem dzięki Pana filmiką. Pozdrawiam i biorę się za ogarnięcie obiektowego c++
@lufl2
@lufl2 10 жыл бұрын
zajebiscie sie ciesze ,że wyszedł ten odcinek bo mam problem z dziedziczeniami w moim programie a jutro musze go oddac do oceny. Dziekuje
@pawe8713
@pawe8713 Жыл бұрын
i jak, oddałeś ? :D
@pawetuzinowski4177
@pawetuzinowski4177 5 жыл бұрын
Masz talent ;)
@damianwysocki9753
@damianwysocki9753 7 жыл бұрын
Dziś chyba nie udźwignę kolejnego odcinka. Ale dzięki za ten. :)
@somepersonfrommars2612
@somepersonfrommars2612 6 жыл бұрын
Heh, a ja akurat oglądam to dzień przed Wigilią. Btw Super film, bardzo jasno wytlumaczone! Lecę do zadania domowego!
@elektrotomasz
@elektrotomasz 7 жыл бұрын
Panie mirosławie czy doda pan odcinki o SFML i c++ oraz SDL2 i c++ lub ASIO z c++ bo pan potrafi dobrze wytłumaczyć.
@szymik512
@szymik512 8 жыл бұрын
Jedyne co mnie w tym odcinku uderzyło, to traktowanie po macoszemu listy inicjalizacyjnej. Gdy nie ma potrzeby, powinno używać się tylko i wyłącznie niej, która jest szybsza i wydajniejsza i jak sama nazwa wskazuje służy do inicjalizacj. Ma możliwość robić to nawet ze stałymi ! Chociaż poza tym ciężko wyobrazić sobie prostsze wytłumaczenie tematu. Pozdrawiam i dobrze, że zarażasz pasją programowania.
@pe29pe20
@pe29pe20 Жыл бұрын
23:51 ten żart chyba najlepszy ze wszystkich🤣
@goldPL123
@goldPL123 3 жыл бұрын
troche smutne że filmik z 2014, a słowa z 23:46 nadal się sprawdzają w 2021 XD ahh ta Słowacja...
@beosreuploady6923
@beosreuploady6923 3 жыл бұрын
o ktos tu jeszcze jest
@izabelaach2695
@izabelaach2695 7 жыл бұрын
Zdecydowanie bardziej podeszło mi to programowanie obiektowe, niż proceduralne. Jakoś łatwiej je zrozumieć.
@qubsonxd9397
@qubsonxd9397 6 жыл бұрын
no chyba nie
@HighRollersLounge
@HighRollersLounge 10 жыл бұрын
Z tym użyciem M_PI to trochę ryzykowna sprawa, bo na kompilatorze Dev-C++ nie chce się uruchomić. Ściągnąłem plik źródłowy z bloga, uruchomiłem... i ta sama historia. Pomaga dodanie #define M_PI 3.14159265358979323846 na samym początku pliku, ale nie jestem pewny, czy o to właśnie chodziło...
@twobyfour2468
@twobyfour2468 4 жыл бұрын
Zrobiłem zadanie, teraz tylko zrozumiec i zapamietac jak xd
@Scroull
@Scroull 6 жыл бұрын
Zapomniałeś o jednym fakcie w którym to się przyda ... Kolokwium z obiektówki ... :D
@count_of_pizza
@count_of_pizza 9 жыл бұрын
Żeby to głupio nie wyglądało, trzeba też dodać trzecią współrzędną... Może by tak jakiś kurs z 3D? :) :) :)
@TheHabera
@TheHabera 8 жыл бұрын
+enk1du Nie potrzebujesz trzech wymiarów by liczyć objętość trójwymiarowych figur.
@WhiteWolfIron
@WhiteWolfIron 9 жыл бұрын
Witam Będę wdzięczny za wytłumaczenie jednej rzeczy. Zakładam, że brak zrozumienia związany jest z wciąż kulawym opanowaniem klas, mam jednak nadzieję że rozwieje Pan moje wątpliwości:) Nie za bardzo rozumiem, po co używać konstruktora klasy Punkt w konstruktorze klasy Kolo, skoro i tak w "Kolo" deklarujemy wartości domyślne. Usunięcie linii " :Punkt( np, a, b )" nie zmienia w żaden sposób wyniku, a jeśli chciałbym na potrzeby nowego obiektu zmienić np. "b", to i tak muszę najpierw podać "np" i "a" Pozdrawiam
@orbitdev9627
@orbitdev9627 8 жыл бұрын
Pewnie gdzieś to Pan powiedział albo napisał, niestety nie oglądam całego materiału mimo to parę razy trafiłem na fragmenty z tego samego filmu. Mam na myśli takie klimatycznie maniakalne scenki z jakimiś wykresami, obliczeniami itp. co to za film ??
@robertrutkowski2968
@robertrutkowski2968 3 жыл бұрын
Witam, Męczę się od 4 dni i zachodzę w głowę nad problemem: jak zrobić to samo co w filmie, ale z deklaracją i definicją w osobnych plikach tak jak to było we wcześniejszych filmach. Przeszukałem pół internetu, spędziłem jakiś 40 godzin na czytaniu wypocin tuzinów ludzi z różnych forów i nic. Nie rozumiem jednego: skoro obiektówka to porządek w plikach to po co pisać program z dziedziczeniem w jednym main.cpp? Czy ktokolwiek mógłby po prostu podać kod w którym klasa "Kolo" dzidziczy faktycznie składowe x oraz y z klasy "Punkt"??? Ale jedno żeby faktycznie to było dziedziczenie, bez wpisywania w listę inicjalizacyjną WARTOŚCI X oraz Y, bo to to sam sobie mogę zrobić i proszę wybaczyć, ale według mnie wpisywanie takich wartości do preambuły konstruktora to nie jest żadne dziedziczenie, tylko ręczne przepisywanie. Rozpisałem się, przepraszam. Zatem krótko: TO SAMO CO W FILMIE, ALE W PLIKACH MAIN.CPP, HEADERS ORAZ CPP. Bardzo proszę o pomoc, bo ja już siły nie mam.
@goldPL123
@goldPL123 3 жыл бұрын
Cześć! minął już miesiąc od twojego komentarza, ale jeśli nadal potrzebujesz to mogę Ci pomóc - zrobiłem to zadanie w osobnych plikach (main.cpp, dziedzieczenie.cpp, dziedziczenie.h), napisz tylko czy potrzebujesz pomocy, a dam jakiś kontakt!
@robertrutkowski2968
@robertrutkowski2968 3 жыл бұрын
@@goldPL123 witaj. Dzięki za zainteresowanie tematem. Wiesz, ja już sobie poradziłem z problemem, ale ciekawi mnie jak Ty to zrobiłeś. Możesz wkleić w komentarzu swoje rozwiązanie nadając podtytuł dla pliku. .h oraz cpp. i dla maina.
@grzesupel
@grzesupel 8 жыл бұрын
Czy nazwa środka koła musiała być nadpisana w klasie Kolo, czy mogła pozostać oznaczona jako "n" (a nie jako "np"), czyli jak to było w konstruktorze dla klasy Punkt?
@andrzejsotysik6272
@andrzejsotysik6272 10 жыл бұрын
Witam! Mam takie pytanko, trochę nie na temat. Jeżeli pisze się grę i jest menu np. takie: ######### 1. Graj 2. Jak grać 3. Dodatki ######### Chciałbym zrobić coś takiego, że jeżeli wejdę w dodatki, to będzie można wrócić do menu, a w kodzie, nie będzie trzeba pisać tego menu kolejny raz.
@honzo4204
@honzo4204 7 жыл бұрын
Wiem że minęły już 3 lata i pewnie znalazłeś już odpowiedź, ale napiszę to dla potomnych: wyświetlanie menu można spokojnie zamknąć w funkcję, którą w razie potrzeby będzie można wyświetlić na ekranie ponownie kiedy wejdziemy w dodatki :)
@Hubertoom
@Hubertoom 6 жыл бұрын
Ogólnie ja znam odpowiedz na pytanie zadane przez andrzeja ale dobrze, że odgrzewasz tego starego kotleta, osobiście nienawidzę tego uczucia kiedy ktoś zadał pytanie ale nikt mu nie odpisuje, bo było to lata temu i każdy boi się, że otrzyma złotą łopatę :) Czasem jak czytam jakieś forum to mnie to wkurza, jak się kogoś czepiają o odgrzewanie tematu, a przecież to powinno zostać dla potomnych i nawet po długim czasie jak ktoś dorzuci cegiełkę to za kilka lat ktoś może tego skorzystać. PEACE!
@Anomander_Rake
@Anomander_Rake 10 жыл бұрын
Witam. Jak zwykle bardzo dobry odcinek. Co do zadania domowego to czy można ingerować w gotowe klasy (Kolo, Punkt) - mam tu na myśli wprowadzenie trzeciej współrzędnej punktu? Pozdrawiam
@Anomander_Rake
@Anomander_Rake 10 жыл бұрын
***** Dzięki za szybką odpowiedź.
@polskiobywatel553
@polskiobywatel553 4 жыл бұрын
Uważajcie na nawiasy! Przez godzinę nie wiedziałem, że nawiasów się używa TYLKO przy zmienianiu ustawień domyślnych konstruktora XD
@Huberator
@Huberator 7 жыл бұрын
Nie rozumiem dlaczego wewnątrz konstruktora gdy dziedziczymy zatrybuty innego konstruktora to -niektóre atrybuty muszą się pojawić inne nie muszą -te które nie muszą się pojawić muszą być w odpowiedniej kolejności. Dlaczego tak?
@elektrotomasz
@elektrotomasz 7 жыл бұрын
paski zielone Zgadnij
@pawelg993
@pawelg993 9 жыл бұрын
dobra chyba coś słabo ogarniam co się działo na tym chyba potrzebne drugie podejście ...
@damian0914
@damian0914 8 жыл бұрын
Z jakiego filmu fragment z tym Panem co chodzi i mocno myśli?
@kamilesgseg2193
@kamilesgseg2193 8 жыл бұрын
"Pi" :)
@WinnnerSS
@WinnnerSS 3 жыл бұрын
To Robert Kubica przed wyścigami w F1
@damianwysocki9753
@damianwysocki9753 7 жыл бұрын
Jeszcze chwila i okienkowe! :D
@quetzalcoatl5781
@quetzalcoatl5781 8 жыл бұрын
Czy może ktoś mi wyjaśnić, po co do klasy Kolo wpisujemy atrybut nazwa, skoro on go przecież odziedziczył po klasie Punkt? Czy to nie o to właśnie chodzi w dziedziczeniu, żeby już wykorzystać to co napisaliśmy? Skoro tak, to po co znowu dajemy tam drugi raz nazwę, skoro Kolo odziedziczył już taki atrybut po klasie Punkt?
@Mikolaj_u
@Mikolaj_u 8 жыл бұрын
Jezeli nie przeslonisz w klasie Kolo zmiennej nazwa to jezeli wywolasz na obiekcie Kolo zmienna nazwa, to wskaze ona na miejsce w pamieci gdzie zapisana jest nazwa przypisana obiektowi Punkt. A chcesz nadac obiektowi Kolo nowa nazwe (tj. przeslonic nazwe punktu)
@dagna6117
@dagna6117 10 жыл бұрын
Mam jeszcze pytanie - co jeśli chcę klasy umieścić w osobnych plikach. Co z nagłówkami? co muszę umieścić w nagłówku biblioteki klasy 'dziecka' a co w jej pliku cpp? Będę bardzo wdzięczna za odpowiedź, próbuję coś wykombinować, ale niestety albo jakiś error winmain albo powtórna definicja klasy 'rodzica' :( Beę bardzo wdzięczna za pomoc :)
@dagna6117
@dagna6117 10 жыл бұрын
Dziękuję, pomogło (: Niestety pojawia się błąd nie związany, tak mi się przynajmniej wydaje, z kodem. winmain@16, można temu jakoś zaradzić ? niestety wyświetla się przy każdej kompilacji
@dagna6117
@dagna6117 10 жыл бұрын
***** Chyba odkryłam zagadkę! Odinstalowałam avasta i błąd się nie pojawia (:
@karolg631
@karolg631 7 жыл бұрын
Po pierwszym obejrzeniu sie udalo, jak zwykle Pan Miroslaw rządzi :) #include #include using namespace std; class Punkt { float x,y; string nazwa; public: void wyswietl() { cout
@marcinlesniewski4571
@marcinlesniewski4571 4 жыл бұрын
no wlasnie i to mnie zastanawia bo caly czas wyrzucalo mi blad przy :Kolo(nko,npkt,a,b,pr) kiedy nie bralem nko. Uważam, że :Kolo(nko,npkt,a,b,pr)- niepotrzenie zawiera nazwe kola. Dlatego lepiej by bylo stworzyc Kule jako klassa ktora jest spokrewniona z Punktem i z Kolem, a nie do konca potomkiem Kola.
@Dawidtkm
@Dawidtkm 8 жыл бұрын
W c# dziedziczenie wielokrotne nie jest obsługiwane, prawda? Dlaczego ?
@Hubertoom
@Hubertoom 5 жыл бұрын
W javie też nie jest, bo to nie jest bezpieczna forma tworzenia programu i powoduje kupę bałaganu i błędy. Wiem, że pytanie padło dwa lata temu ale nawet za rok może zajrzeć, ktoś nowy i przeczytać ;)
@Dominik-ll9ik
@Dominik-ll9ik 5 жыл бұрын
@@Hubertoom Zajrzałem, przeczytałem
@Hubertoom
@Hubertoom 5 жыл бұрын
@@Dominik-ll9ik i już znasz odpowiedź? 😏
@nabuchadonozor9949
@nabuchadonozor9949 4 жыл бұрын
@@Hubertoom nawet za dwa ;)
@Hubertoom
@Hubertoom 4 жыл бұрын
@@nabuchadonozor9949 :)
@CrunkFun1
@CrunkFun1 9 жыл бұрын
Może mi coś umknęło i nie zobaczyłem ale czy w C++ jest możliwe wielokrotne dziedziczenie ? tzn: Okrąg dziedziczy z Koło Koło dziedziczy z kształt ?
@Ronie19821905
@Ronie19821905 4 жыл бұрын
Tak, mozliwe.
@michateos4179
@michateos4179 10 жыл бұрын
Ktoś powie czy to jest dobrze zrobione według tego co jest w zadaniu "domowym" ? #include #include using namespace std; class Punkt { float x,y; string nazwa; public: void wyswietl() { cout
@Ganhexo
@Ganhexo 10 жыл бұрын
Dobrze według mnie, zgodne z wytycznymi prowadzącego, Dobra robota :) . Jak bym miał się do czegoś przyczepić: funkcja wyświetl() dla kuli wyświetla napisy "Środek koła" i "pole koła". Zamiast tego mogłoby być "Środek kuli" "powierzchnia koła". Ale tu wystarczy rozdzielić te funkcje na dwie.
@KrzysztofKorpik
@KrzysztofKorpik 8 жыл бұрын
+Michał Teoś Świetna robota. Ja jedynie wzór na objętość zapisałem w ten sposób: (4/3)*M_PI*pow(r,3) , bo chciałem uniknąć nieeleganckiego r*r*r no i przećwiczyć POWER. Mimo wszystko uważam swoje zadanie domowe za niezaliczone, ponieważ wyłożyłem się na prostej rzeczy. Dzielenie 4/3 uparcie zwraca mi wynik 1, a to jest przecież nieprawda. W rezultacie program pokazuje nieprawidłową objętość kuli.
@michateos4179
@michateos4179 8 жыл бұрын
Już dwa lata minęły od tego posta, a ja o nim zapomniałem, dzięki wielkie za odpowiedzi :)
@konradmuzyka7404
@konradmuzyka7404 6 жыл бұрын
Dzięki twojemu komentarzowi, po 4 latach od umieszczenia go, znalazłem błąd w liście inicjalizacyjnej, którego nie mogłem się doszukać w swoim programie przez godzinę. Wielkie dzięki!
@jacekkk7047
@jacekkk7047 6 жыл бұрын
Czy ktoś mi może wyjaśnić dlaczego w liście inicjalizacyjnej musimy umieścić nk skoro i tak potem znajduje się zapis nazwa=nk
@Arvydas1987
@Arvydas1987 10 жыл бұрын
Prosiłbym, aby pan wyjaśnij takie coś: typedef struct jakasNAZWA{ /*jakies argumenty*/ }NAZWA; nie mogę tego pojąć, z góry dziękuje .
@Arvydas1987
@Arvydas1987 10 жыл бұрын
chodzilo mi o to dlaczego jest nazwa jakasNAZWA oraz NAZWA w tej strukturze :)
@Arvydas1987
@Arvydas1987 10 жыл бұрын
***** Dziękuję serdecznie, już rozumiem.
@wuchta7812
@wuchta7812 7 жыл бұрын
*Bibliotekach
@michaeel4701
@michaeel4701 2 жыл бұрын
Szanuję za żart o jakże chujowej reprezentacji polskiej piłki nożnej
@ZieluPawel
@ZieluPawel 7 жыл бұрын
Uczucie gdy włączasz nowy odcinek i czujesz się jak dziecko, które dowiaduje się, że ziemia jest okrągłą -Bezcenne!
@Martunia59
@Martunia59 5 жыл бұрын
@Electrical Pro Gamer xDDDDDD
@Ronie19821905
@Ronie19821905 5 жыл бұрын
@Electrical Pro Gamer masz dowody ze plaska?
@okrutnygrubas
@okrutnygrubas 4 жыл бұрын
Problem: Visual Studio 2019 - M_PI undefined Rozwiazanie: #define _USE_MATH_DEFINES
@MinecraftWP2001
@MinecraftWP2001 2 жыл бұрын
Ktoś zrobił zadanie z tego filmiku i chciałby podzielić się kodem?
@adrianzyskowski1989
@adrianzyskowski1989 9 жыл бұрын
jest bardzo ciekawa zależność pomiędzy numerami odcinka i ilością oglądnięć :P
@adrianzyskowski1989
@adrianzyskowski1989 8 жыл бұрын
To oczywiste. Komentarz to satyra na widzów, którzy rezygnują z każdym kolejnym odcinkiem (słomiany zapał). Pozdrawiam.
@arbuzykol
@arbuzykol 8 жыл бұрын
+Adrian Zyskowski Z drugiej strony taka zależność by występowała nawet jak nikt by nie rezygnował :P Zanim np. 10 osób skończy oglądać kurs (bo nie każdy może sobie pozwolić go przerobić w parę dni) to kolejne osoby mogą go zacząć i w takiej sytuacji może być przykładowo kolejno wyświetlenia 23,10,10,5,3 ale rozumiem o co ci chodzi i wiadomo, że nie każdy kończy. Czasem może ktoś odtworzy żeby konkretny problem zrozumieć bo nie załapał itp.
@jakubkleban369
@jakubkleban369 8 жыл бұрын
niektórzy jak w moim przypadku mogą obejrzeć pare odcinków po czym stwierdzić ze przerobią to jeszcze raz, stąd też taka zależność
@adam2430
@adam2430 7 жыл бұрын
Chlopcze z wioski a co tu dla ciebie jest oczywistego.... najwyrazniej niektorzy potrzebuja trudniejsze odcinki obejrzec wiecej razy .... Doszukujecie sie logiki w nielogicznych przykladach
@blekfut5763
@blekfut5763 4 жыл бұрын
"Oglądnięć", jezus, oczy mi wypadły...Z Krakowa jesteś, nie? :)))
@shikamaru4271
@shikamaru4271 4 жыл бұрын
Kolejny odcinek i kolejny raz wszystko świetnie wytłumaczone :D
@JiuTiup
@JiuTiup 7 жыл бұрын
Jak dotąd obejrzałem wszystkie Pana odcinki z C++. Kawał dobrej roboty, ale nie jestem pewien czy przykład dziedziczenia z użyciem klasy Punkt i Prostokąt do dobry pomysł. Dziedziczenie powinno się stosować tam gdzie możemy powiedzieć, że klasa pochodna JEST klasą bazową. Np. Pies JEST Zwierzęciem. Pracownik JEST Człowiekiem, Skrzypce SĄ Instrumentem muzycznym, a Prostokąt JEST Figurą Geometryczną(która jak najbardziej może mieć nazwę) a nie punktem. Tutaj raczej należałoby użyć zwykłego zawierania, Prostokąt ZAWIERA Punkt, a nie jest Punktem. No i te nieczytelne argumenty formalne w konstruktorze, które nic nie mówią. Np nk, np, a, b, pr. Tutaj można by po prostu użyć słowa kluczowego this np. this.promien = promien i kompilator a także programista już by wiedział o co chodzi. Ogólnie jednak to bardzo dobry kurs. Przydałyby się nowe odcinki. Np. o funkcjach inline, słowach kluczowych const, static itd.
@andrzejmacieja4563
@andrzejmacieja4563 10 жыл бұрын
No , no robi się coraz ciekawiej . Mirek twój kurs jest tak dobry , że zaraziłeś mnie OOP . Pozdrawiam .
@Xenox_dev
@Xenox_dev 10 жыл бұрын
"Prawdziwa, hardcorowa abstrakcja to czeka na nas tak naprawdę w następnym odcinku" - święte słowa. Polimorfizm to dopiero niesamowita rzecz.
@wscamel226
@wscamel226 Жыл бұрын
4:56 - jak tylko zobaczyłem to to pomyślałem sobie "próbuje spredać jakiś produkt"
@maciejjurczynski5887
@maciejjurczynski5887 8 жыл бұрын
Bardzo dobry kurs
@66sebolek
@66sebolek 10 жыл бұрын
Visual C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Klasy_cz; namespace Klasy_cz._2 { class Program { static void Main(string[] args) { //Punkt P1 = new Punkt("A",12,4); //P1.wyswietl(); kolo k1 = new kolo("Kolo","S",0,0,1); k1.wyswietl_kolo(); Console.ReadLine(); } } } class Punkt { private float x=0, y=0; private string nazwa="Oś wsp."; public void wyswietl_punkt() { Console.WriteLine("{0}({1},{2})",nazwa,x,y); } public Punkt() { } public Punkt(string n, float a, float b) { nazwa = n; x = a; y = b; } } class kolo:Punkt { private float r; private string nazwa; public void wyswietl_kolo() { Console.WriteLine("{0}{1}", "kolo o nazwie: ",nazwa); Console.Write("{0}", "Srodek koła: "); wyswietl_punkt(); Console.WriteLine("{0}{1}", "Promiń: ", r); Console.WriteLine("{0}{1}", "Promien kola: ", Math.PI * r * r); } public kolo(string nk, string np, float a, float b, float pr)//:base("A",2,4) // klasa bazowa z atrybutami { nazwa = nk; r = pr; } }
@artmasterpl
@artmasterpl 7 жыл бұрын
ucze sie c# ale dopiero ten poradnik mi pomogl , bardzo Dziekuje ;) ma pan u mnie zdrowaske ;)
@wikiFord
@wikiFord 7 жыл бұрын
Żarcik z kadrą już trochę nieaktualny :D
@urbix0166
@urbix0166 6 жыл бұрын
Twój komentarz nieaktualny ;)
@adrianseven9605
@adrianseven9605 6 жыл бұрын
ale moze byc aktualny w lipcu
@radslaw8598
@radslaw8598 6 жыл бұрын
heh, jednak dalej aktualny
@m.g.1250
@m.g.1250 6 жыл бұрын
Radozlaus bardzo aktualny :D
@maju1991
@maju1991 5 жыл бұрын
Niby 30min a ogladniecie +napisanie kodu+ zadanie, zajelo prawie 2h XD
@katons2320
@katons2320 8 жыл бұрын
Dlaczego dzielenie 4/3 zwraca 1? Jak to obejść? Znaczy się obszedłem to wpisując ręcznie 1.3, ale chciałbym się dowiedzieć dlaczego program zwraca jeden przy dzieleniu.
@Han124
@Han124 8 жыл бұрын
+Dominik S spróbuj 4.0/3.0
@katons2320
@katons2320 8 жыл бұрын
Dzięki
@pijawa2000
@pijawa2000 8 жыл бұрын
Bo jest to dzielenie całkowite. 4/3 = 1 gdyż program przy tym dzieleniu obcina część ułamkową. 4.0/3.0 działa jak należy, bo program operuje na wartościach typu double
@NazoFruciak
@NazoFruciak 7 жыл бұрын
A czy taki zapis będzie wporządku , bo wynik jest prawidłowy czyli okolo 1,3. cout
@mrfishpl277
@mrfishpl277 6 жыл бұрын
Możeużyłeś typu int?
@tonnys1337
@tonnys1337 4 жыл бұрын
Po co w konstruktorze "Kolo" dodajeby te 'a' i 'b'? Przecież te dwie zmienne nie są nam już chyba potrzebne...
@jakubr.3986
@jakubr.3986 4 жыл бұрын
Witam od kilku miesięcy jest Pan moim zdalnym nauczycielem programowania, mam zamiar zmienić pracę na programiste front-endowego dlatego uczę się programowania od podstaw na początku był c++ , a teraz c++ obiektowy. Strony internetowe zacząłem robić 20 Lat temu ale wtedy była w ogóle inna technologia, strony były robione w tabelach A ja używałem programów typu:What you see is what you get . Mam nadzieje że Pana filmy nauczą mnie robienie nowoczesnych stron w dzisiejszych czasach. Pozdrawiam i dziękuję Jakub.R
@atodocatolico4904
@atodocatolico4904 4 жыл бұрын
Ogladam na 1,5 bo che juz okienka
@grzesieknowak1663
@grzesieknowak1663 8 жыл бұрын
21:47 albo Niech Ktoś :D
@chocholatemilkshake4799
@chocholatemilkshake4799 4 жыл бұрын
Musiałem wygooglować co to Preambuła :)
@dominikkubacki1395
@dominikkubacki1395 5 жыл бұрын
Witam. Mam pytanie do pana Mirosława Zelenta. Chciałbym się dowiedzieć ile odcinków z kursu języka html i kursu języka css jeszcze będzie na kanale i mniej więcej kiedy one się pojawią? Domyślam się, że gdyby weszły np. jakieś nowe znaczniki to odcinek może nagle się pojawić, ale chodzi mi o odcinki, które są już zaplanowane. Z góry dziękuję za odpowiedź. ;)
@grzesiek1x
@grzesiek1x 3 жыл бұрын
Błąd (aktywny) E0020 identyfikator "M_PI" jest niezdefiniowany ConsoleApplication58
@MRCN49
@MRCN49 3 жыл бұрын
dodaj biblioteke #include jak jestes na codeblocksie a jak na visual studio to przed dodaniem biblioteki #define _USE_MATH_DEFINES
@grzesiek1x
@grzesiek1x 3 жыл бұрын
@@MRCN49 dzieki ! dziala! Ja korzystam z Visual Studio 2019. Dziala, ale tego nie rozumiem czemu tego nie ma odrazu w bibliotece? Czy tu chodzi o jakies specjalne nazwy stosowane w matematyce , ktore sa jakos inaczej zdefioniowane czy jak? Nie rozumie mtego. Mimo wszystko dzieki , bo dziala :) (zawsze to mniej pisania niz manualne przypisanie do jakiejs zmiennej liczby Pi ;) )
@MRCN49
@MRCN49 3 жыл бұрын
@@grzesiek1x dokładnie o to chodzi, po prostu biblioteka #define _USE_MATH_DEFINES pozwala ci na uzywanie stałych matematycznych, ich po prostu nie ma w zwykłym iostreamie
@Ev3r0x
@Ev3r0x 3 жыл бұрын
@@MRCN49 _USE_MATH_DEFINES to nie jest żadna biblioteka tylko definicja preprocesora, która dołącza bibliotekę "corecrt_math_defines.h", w niej są definicje stałych matematycznych. Więc zamiast pisać #define _USE_MATH_DEFINES można też napisać #include
@MRCN49
@MRCN49 3 жыл бұрын
@@Ev3r0x A to o tym nie wiedziałem, tez początkujący jestem, dziękuję za doprecyzowanie!
@pawenowak2766
@pawenowak2766 Жыл бұрын
3:40 Ta żółta strzałka reprezentująca dziedziczenie powinna mieć przeciwny zwrot według mnie. Według mnie powinno być class punkt -------dziedziczenie------->>>>> class prostokąt.
@kepler4190
@kepler4190 Жыл бұрын
23:50 potwierdzam po przegranej z mołdawią i albanią
@dawidpodziewski4157
@dawidpodziewski4157 9 ай бұрын
Lista inicjalizująca podczas tworzenia obiektu Kolo inicjalizuje (nie inicjuje) wsp i nazwe punktu, jednak robi to niejawnie, na obiekcie ktory powstal z klasy Punkt, lecz nie ma nazwy, dlatego odniesc sie mozna do niego tylko wskaznikiem na klase Punkt: Kolo k; Punkt &referencjaNaPunkt = k; faktycznie dane z kola przechodza na punkt; jezeli chcemy stworzyć sami obiekt punkt w mainie to uruchomiony zostanie konstruktor z punktu i bedzie mial domyslnie wsp 0,0. Gdy tworzymy obiekt Kolo to automatycznie jest tworzony obiekt Punkt ktory jest czescia Kola. No, dobra, rozkminione. co do 24:35, oczywiscie obiekt kolo wymaga niejawnego (lub jawnego) stworzenia obiektu punkt. Jesli ktos chce sprawdzic wystarczy ze napisze w ciele konstruktora klasy Punkt: cout
@piotrkulig4284
@piotrkulig4284 10 жыл бұрын
Wspaniały i prosty odcinek.Dzięki tej serii naprawdę wciągnąłem się w programowanie.Podejście obiektowe jest po prostu niesamowite :D
@SlenderMan4466
@SlenderMan4466 5 жыл бұрын
2:08
@MadMrQ
@MadMrQ 3 жыл бұрын
W końcu ktoś w przystępny sposób to wszystko tłumaczy.
@Mati-ch9tf
@Mati-ch9tf 4 жыл бұрын
"Źle dziewiczysz"
@franciszekkania2540
@franciszekkania2540 9 ай бұрын
Prostokąt dziedziczący po punkt xD Prostokąt powinien mieć pole PunktPoczatkowy a nie dziedziczyc po klasie punkt.
@werxia
@werxia Жыл бұрын
A co jakbym chciała utworzyc obiekt punkt o wspolrzednych (5,6) i potem obiekt kolo o takich samych wspolrzednych, ale juz bez przepisywania ich. Jak to zrobic?
@krerk815
@krerk815 4 жыл бұрын
12:50 yhy zajebiście
@ukaszsmigielski8648
@ukaszsmigielski8648 9 жыл бұрын
Oby tym razem Pan się mylił! Co do polskiej kadry.
@KoW
@KoW 7 жыл бұрын
Pomylił się :D
@123Fabixd123
@123Fabixd123 6 жыл бұрын
No nie do końca ;P
@bartlomiejlakomski3598
@bartlomiejlakomski3598 11 ай бұрын
Dobry odcinek! Znowu troche nowej wiedzy wplynelo do mojego mozgu :D Lecimy dalej z kursem!
@filipkoscielniak7564
@filipkoscielniak7564 6 жыл бұрын
Troszkę ulepszyłem program o możliwość wpisania własnych zmiennych x,y,z oraz r. Napotkałem jednak problem dublowania kodu przy void'ach wczytaj(), jeżeli ktoś zna sposób na skrócenie ich zapisu (bez niepotrzebnego powtórnego wczytywania zmiennych) to proszę o podpowiedź. Próbowałem z listą inicjalizacyjną ale wyskakuje błąd w debbugerze, że jest to zarezerwowane tylko dla konstruktorów... A oto kod: #include #include using namespace std; class Punkt { protected: float x,y; string nazwa; public: void wczytaj () { coutx; couty; } void wyswietl () { cout
@micha915
@micha915 10 жыл бұрын
Dobry odcinek i dobry kurs panie Mirku. Niby wszystko już to znam, ale wciąż dowiaduje się ciekawych rzeczy. Wszystko przystępnie wytłumaczone. Czekam na aplikacje okienkowe, bo czas się i tego nauczyć. Bardzo dobra powtórka i przygotowanie teoretyczne pod programowanie obiektowe. Tak trzymać!
@Ganhexo
@Ganhexo 10 жыл бұрын
24:00 Dwa razy przypisujemy do string nazwa, raz w konstruktorze punktu "nazwa=n" (po dziedziczeniu to bedzie "nazwa=np") punktu a drugi raz kola nazwa=nk. Znaczy program tworzy dwa stringi nazwa, jeden z konstruktora punkt (podstawowej) a drugi z konstruktora kolo(pochodnej)? Bo z tego by wynikało, że możemy zrobić dużo zmiennych o takiej samej nazwie, a program je odróżni w zależności od wykorzystanego konstruktora. String nazwa dla obu jest prywatny. i dlatego każdy konstruktor "wie" jak te zmienne ma odróżniać? Musi pan to jakoś objaśnić dopiskiem na prezentacji. Więcej problemów nie zauważyłem. A prezentacje puki co jasne :)
@fabianpodlecki
@fabianpodlecki 10 жыл бұрын
Świetny kurs. Już dawno nie programowałem w C++ i fajnie odświeża informacje o tym języku. Z niecierpliwością czekam na dalsze odcinki. Pozdrawiam.
@ukasz8532
@ukasz8532 7 жыл бұрын
Mam pytanko. Nie wiem czy coś się zmieniło w c++ ale teraz jak robię jakieś testy to konstruktor z jednej klasy jest również dziedziczony do innej klasay. Przykładowo jak wpiszę coś do konstruktora z pierwszej klasy to przy wywołaniu obiektu innej klasy również działa. Dopiero jak zastąpie innym konstruktorem w klasie pochodnej to się przysłania. Mógłby ktoś wytłumaczyć ? :)
@Directer20
@Directer20 6 жыл бұрын
Wie ktoś może dlaczego w zadaniu domowym nie można przenieść promienia "r" do klasy Kula za pomocą konstruktora z klasy kolo? Bo z jakiegoś powodu x,y udało się przenieść bez wpisywania protected, a w tym przypadku coś nie wychodzi. xd
@robertdanielkiewicz7851
@robertdanielkiewicz7851 6 жыл бұрын
Trochę trwało zanim rozkminiłem o co chodzi, jednak i tak uważam, że doskonałe tłumaczenie, czego u w książce ciężko złapać. Dzięki za pomoc - świetna robota. Z pozdrowieniami...
@pcmania5710
@pcmania5710 6 жыл бұрын
Moja reakcja kiedy po drugim obejrzeniu w końcu zrozumiałem o co chodzi z dziedziczeniem: ,,O kurde... Jakie to jest zaje****e :)''
@vejmal9517
@vejmal9517 5 жыл бұрын
23:30 jeden z nielicznie zacnych sucharów Zelenta :P
@januszewskijanuszek6634
@januszewskijanuszek6634 4 жыл бұрын
Polecam do klas dziedzicznych taki zapis class Kolo :public Punkt {...}; z doświadczenia wiem że to jest bardziej czytelne i jak jest więcej rodziców to o wiele łatwiej ich wyszukać. Po tym jest porzędek
@GrubelloGaming
@GrubelloGaming 7 жыл бұрын
#include #include using namespace std; string login, haslo, decyzja, rzecz; int PIN=2005; float srodki=2000, cena [7]; int main() { cout
@michala7975
@michala7975 7 жыл бұрын
Poczytaj o wprowadzaniu danych - cin.get() cin.getline(string,lngth) getline(cin, string), po tym znajdziesz błąd.
@Rei-x
@Rei-x 7 жыл бұрын
Ale namieszałeś w tym kodzie. Po pierwsze nie stawiaj średników po if'ach (na samym końcu to zrobiłeś). Po drugie, dlaczego ciągle sprawdzasz czy użytkownik jest zalogowany? Nie łatwiej by było zrobić coś takiego? if ((login=="lumpowanie")&&(haslo=="komputer")) { CAŁY KOD } else { cout
@kris7453
@kris7453 10 жыл бұрын
Jak dobrze to zrozumiałem, to można uznać, że funkcja wirtualna działa jakby hiperłącze. To tak jakbym w PHP ustawił w zmiennej GET "?view" np. "main" lub "login" i w zależności od wartości dodał za pomocą include odpowiednią zawartość strony. Tak samo jakby hiperłącze funkcja wirtualna odsyła do właściwej funkcji obiektu. Czy można tak podsumować działanie funkcji wirtualnej czy jeszcze zbytnio nie rozumiem tego tematu ?
@kris7453
@kris7453 10 жыл бұрын
***** Więc jednak zrozumiałem, bardzo dziękuję za odpowiedź. Wytłumaczenia w Pańskich filmach są bardzo zrozumiałe, nawet nie wiem czy można w łatwiejszy sposób wytłumaczyć programowanie obiektowe. Przy okazji jeszcze czytam "Symfonia C++" Jerzego Grębosza, którą wcześniej poleciło mi kilku nauczycieli w szkole. Mam nadzieję, że z obecną wiedzą będzie łatwiej na studiach, gdyż w tym roku dopiero zaczynam pierwszy rok studiów. Z pewnością gdy będę w stanie Pana wspomóc to się o to postaram, gdyż czas poświęcony na nagranie tak dobrego materiału jest godzien wynagrodzenia. Zdolność programowania jest obecnie bardzo pożyteczna, a obiektowe programowanie jest bardzo dobrym rozwiązaniem. Bardzo przepraszam za tak obszerny komentarz i oczywiście również Pana pozdrawiam.
@Revusek
@Revusek 9 жыл бұрын
Panie Mirosławie, strasznie mnie ciekawi jedna rzecz. Czy nie łatwiej jest np. w tej klasie Koło stworzyć obiekt Punkt, zamiast dziedziczyć całą jego klasę? Chciałbym wiedzieć czy są jakieś różnice między tym a tym sposobem, i który jest lepszy. Chociaż bardzo podejrzewam, że zrobił to Pan w ten sposób tylko dlatego, aby pokazać mechanizm dziedziczenia. Czekam na odpowiedź!
@Revusek
@Revusek 9 жыл бұрын
***** Mh, chyba Pana wprowadziłem w błąd źle formując pytanie (albo ja sam źle zrozumiałem, za co z góry przepraszam). Sytuacja wygląda tak: mamy klasę Punkt, oraz klasę Koło, i jako element składowy klasy Koło, dodaje tam obiekt klasy Punkt. Pan we wcześniejszych filmach mówił, że dla każdego nowego powstałego obiektu (rozumiem że klasa to szablon a obiekt jest jej "produktem") powstaje oddzielny zestaw danych składowych tej klasy, bodajże parametrów jak Pan wspomina w filmach. I w ten sposób każdy nowy obiekt klasy Koło miałby własny element składowy w postaci obiektu Punkt. Czy coś takiego jest możliwe czy coś pomieszałem? Klasa Kolo by tak wyglądała: wklej.org/id/1580286/ . Pozdrawiam.
@krokodylfred
@krokodylfred 9 жыл бұрын
Skoro operator zasięgu to :: to w jaki sposób kompilator wie, przy wielokrotnym dziedziczeniu, do którego pokolenia to się odnosi? A co jeśli chcemy dostać się do powiedzmy drugiego pokolenia a jesteśmy w piątym? Bo jak powiedzmy w ciele funkcji używam operatora zasięgu aby zobaczyć przysłoniętą zmienną, to nie ma takiego problemu.
@szymik512
@szymik512 8 жыл бұрын
+krokodylfred Wtedy używamy operatora kropki
@alicjajurasik6518
@alicjajurasik6518 8 жыл бұрын
Jednak Polska kadra piłki nożnej robi więcej niż "dziedziczony" konstruktor i nie tylko bierze udział ;)
@pawe708
@pawe708 8 жыл бұрын
Pytanie: jeśli tworzę klasę dla Kuli i przy tworzeniu konstruktora z wykorzystaniem listy inicjalizacyjnej do Kola jest jakiś sposób aby nie odwoływać się do nazwy Kola??? Chodzi mi o to, że ok wszystko usprawnia cały proces tworzenia nowych kul ale za każdym razem przy tworzeniu takiego obiektu i chęci nadania mu swoich parametrów muszę nadawać nazwę koła, które w przypadku kuli jest mi już zbędne. Poniżej przykład z nazwami dłuższymi dla przykładu: Kula (string nazwa_kuli="Kula", string nazwa_kola="Kolo", string nazwa_punktu="S", int a=0, int b=0, int r=1) :Kolo(nazwa_kola, nazwa_punktu, ,a, b, r)
@piciakk
@piciakk 8 жыл бұрын
+Paweł Milecki W jednym z odcinków było powiedziane aby parametry konstruktora które za rzadko używane przenosić na prawo i wywoływać konstruktor z listy inicjalizacyjnej bez jakiegoś parametru. Kolo( string np="S",float a=0, float b=0, float pr=1,string nk="Kolko") <-- zmieniona kolejność :Punkt(np,a,b) { nazwa=nk; r=pr; } I wywołanie: Kula(string nkuli="Kula", string np="S",float a=0, float b=0, float pr=1) :Kolo(np,a,b,pr) { nazwa=nkuli; } Koło dostanie domyślnie nazwę ze swojego konstruktora.
@grzegorz8900
@grzegorz8900 8 жыл бұрын
Nie na lewo, lecz na prawo.
@Lucyfer6
@Lucyfer6 10 жыл бұрын
Mała subiektywna uwaga, c++ nie jest w pełni obiektowym językiem, C# i java są w pełni zorientowanymi językami obiektowymi. Z tego co pamiętam c++ nie można uznać za obiektowy przez to dziedziczenie po wielu rodzicach bo to w konsekwencjach przeszkadza w czymś.(nie pamiętam a nie mogę znaleźć notatek ze studiów) Chyba że się mylę.
@Hubertoom
@Hubertoom 6 жыл бұрын
Lucek wiem, że minęły trzy lata ale może już znalazłeś te notatki, bo trochę jestem ciekawy jak to jest z tym C++ (:
@funnyfamilyguy6982
@funnyfamilyguy6982 6 жыл бұрын
@@Hubertoom zobacz "diamond problem c++"
@Atexor
@Atexor 10 жыл бұрын
Witam. Odcinek bardzo mi się przydał do nauczenia się tworzenia dziedziczenia klas :). W internecie jest dużo tutoriali, ale ich sposób przekazu jest często niejasny, a u Pana wszystko jak na tacy (od teraz zawsze klasę będę kojarzył z Diablo II). Jednakże mam takie pytanie: jak mogę w klasie pochodnej korzystać od zmiennej rodzica zmieniając ją? Wspomniał Pan o tym w 9:55, jednak nie chce mi to działać (dalej mam kopię zmiennej). Mój problem polega na tym, że mam kilka obiektów klas (A,B,C), dziedziczących z głównej instancji X zmienną np. "liczba=5". W funkcji main pozmieniam wartość "liczba" i będzie wynosić 15. Chciałbym aby w pochodnych też tak było. W drugą stronę także. Zmienię wartość "liczba" dzięki obiektowi B i chciałbym, aby klasa podstawowa X także miała tą wartość. Głównie chodzi mi o to, aby była jedna zmienna w głównej klasie i wszystkie klasy pochodne (wraz z główną) mogłyby ją zmieniać. Jak to rozwiązać? Próbowałem Pana sposobem z 9:55, zaprzyjaźnić funkcje, stworzyć pola statyczne, czy zrobić metody wirtualne i zmienne w klasie abstrakcyjnej i nic nie chce działać :/ Pozdrawiam
@Atexor
@Atexor 10 жыл бұрын
Dziękuję Panu za szybką odpowiedź, jednakże wyżej już wspomniałem że próbowałem użyć zmiennej statycznej w klasie podstawowej i abstrakcyjnej, ale bezskutecznie. Mam do wykonania program oparty na dziedziczeniu - system bankowości (bankomaty i wypłacanie z nich, wyświetlanie salda itp.). Miałem klasę abstrakcyjną, która ma publiczną zmienną statyczną: static int saldo_konta; W metodach klas bankomatów A i B odpowiedzialnych za wypłacanie pieniędzy (gdzie B jest pochodną A) chciałbym "nadpisać" wartość salda (odpowiednie pliki .h dołączyłem). Robiłem to m.in. tak: abstrakcyjna_klasa::saldo - =kwota abstrakcyjna_klasa.saldo - =kwota Czyli chciałem pomniejszyć saldo o wypłacaną kwotę, ale kompilator daje np. taki błąd: error LNK2001: unresolved external symbol "public: static int abstrakcyjna_klasa::saldo_konta" (?saldo_konta@abstrakcyjna_klasa@@2HA) Analogicznie miałem, gdy ta zmienna klasyczna była w klasie A. W międzyczasie jeszcze próbowałem użyć wskaźnika this. Może można to jakoś zrobić, że saldo będzie w osobnej, głównej klasie i będę się do niej odwoływał przez referencję, tylko jeśli - to jak? Czy mógłby Pan poradzić?
@Atexor
@Atexor 10 жыл бұрын
To, że Pan odpowiada w komentarzach naprawdę dobrze świadczy o Panu, za co w imieniu wszystkich szukających u Pana pomocy szczerze dziękuję :) Jak sprawdzałem Pana kod i postanowilem to zaimplementować u siebie, to miałem takie błędy: wklej.org/id/1506468/ Stwierdziłem, że może to mój kod jest za skomplikowany i coś tam jest winne (mam kilka metod w bazowej klasie, kilkadziesiąt linijek w jej cpp i ~200 w main). Dlatego też postanowiłem Pana kod trochę zmodyfikować aby było to "w uproszczonej formie" tego, której potrzebuję do swojego zadania, tzn. klasa A ma wypłacanie, a klasa B tylko odziedziczy tę metodę oraz ma wyświetlanie salda. Wszystko działało poprawnie dopóki wszystko było umieszczone main.cpp. Problem pojawił się, gdy postanowiłem potem to podzielić na pliki nagłówkowe i cpp : wklej.org/id/1506466/ Z racji, że sądziłem że "może coś źle zrobiłem" to bez znacznej ingerencji w kod po prostu podzieliłem definicje klas i rozwinięcie metod na main, .h i .cpp: wklej.org/id/1506461/ Za każdym razem mam powtarzające się te same błędy LNK2005 (i w ostatnim 2x LNK2019 i w drugim LNK2001, ale to chyba należy do jednej rodziny błędów). Czy mógłby Pan powiedzieć co jest za nie odpowiedzialne, gdyż googlując nie natrafiłem na winowajcę? Jeszcze raz dziękuję za zainteresowanie moim problemem. Pozdrawiam :)
@Atexor
@Atexor 10 жыл бұрын
***** Dziękuję Panu bardzo. Akurat w trakcie pisania maila do Pana postanowiłem jedną rzecz zmienić w kodzie (int A::saldo = 1000; przenieść do .cpp) i teraz wszystko działa idealnie. Nawet gdy pozmieniałem trochę rzeczy i dodałem klasę jeszcze jednego "bankomatu" to nadal działa wszystko bardzo dobrze. A ja kombinowałem przez X godzin z dziedziczeniem, wskaźnikami, referencjami, klasami abstrakcyjnymi czy przyjaźnią klas :) Jednakże jeśli mogę jeszcze spytać: dlaczego w Pana kodzie (tutaj wklej.org/id/1506229/) w klasie B zmienna saldo jest "const"? Myślałem, że oznacza to "stałą niemodyfikowalną" analogiczną do #define, a u Pana mogę ją zmieniać. Bez "consta" też działa tak samo. Naprawdę nie wiem jak mogę Panu dziękować za pomoc :) Pozdrawiam serdecznie, Kamil P.S. Piękne te Kajmany
@Xenox_dev
@Xenox_dev 10 жыл бұрын
Co do okienek to będzie Pan używał QT Creator czy starego VS 2010, bo raczej nie czyste WinApi?
@Xenox_dev
@Xenox_dev 10 жыл бұрын
nigdy nie korzystałem a ma to wbudowany designer?
@Xenox_dev
@Xenox_dev 10 жыл бұрын
nie wiem ja c++ builder ale qt dziala na Linuksie (tam w końcu też są swego rodzaju okienka)
@pawegorka8589
@pawegorka8589 8 жыл бұрын
jak dobrze zrozumiałem taki framework to jak "edytor map" w grze ?
@Mikolaj_u
@Mikolaj_u 8 жыл бұрын
Nie do końca. Trzeba zaznaczy,ć że edytor map nie pozwala "konstruować" nowych klas tylko zmusza do korzystania z gotowej puli. (przynajmniej ja sie nie spotkałem z edytorem map ktory by na to pozwalał). Framework daje pule klas do wykorzystania plus można tworzyć własne klasy.
@erer6143
@erer6143 8 жыл бұрын
Zadanie odrobione: wklej.org/id/2269553/ Mam pytanie. W konstruktorze Kuli musiałem przepisać wszystkie atrybuty (ze zmienioną nazwą) instruktora Kolo. Zawsze trzeba tak robic? Kolejne dziecko miałoby co najmniej 8 atrybutów. Da się to jakoś obejść?
@jacobemaci
@jacobemaci 8 жыл бұрын
Da się to odkręcić - sam się zastanawiałem, jak to zrobić, ponieważ użyłem Twojego kawałka kodu, właśnie z konstruktora kuli u siebie. Kombinowałem z podmianą parametrów, ale nie szło ani trochę. Zadziałało przy użyciu operatora podwójnego dziedziczenia. Ponieważ nie chcemy dziedziczyć całego voida z klasy Koło, a jedynie wyswietl() czy też wczytaj() należące do klasy Punkt, dziedziczymy to samo jeszcze raz. Wygląda to tak: Kolo::Punkt::wczytaj() albo wyswietl(), jak to było w tutorialu. Wówczas nie musisz przewalać atrybutów koła do kuli, bo to w tym momencie jest do niczego niepotrzebne. Poza tym przy poprzednim zapisie w momencie uruchomienia programu "środkiem kuli" była "nazwa koła", jego punkt itd. Dla pewności całość dostępna tutaj: pastebin.com/mgzuJiUZ
@bulserf
@bulserf 7 жыл бұрын
+Jakub Górczyński Mam takie małe pytanie, skąd Kula dziedziczy, lub posiada r? Deklaracja w klasie kula to jedynie nazwa, a r nie ma w klasie punkt? Pozdrawiam
@jacobemaci
@jacobemaci 7 жыл бұрын
W klasie Kolo, z której dziedziczy Kula owszem, początkowo jest tylko deklaracja, jednak przy tworzeniu konstruktora w Kole (patrz linie 44-49 w Pastebin) definiujemy wartość domyślną pr=3. Przy ustawianiu nazw koła i promienia widać zapis r = pr. Promień jest zdefiniowany w klasie Kolo, a Kula pobiera go właśnie stamtąd. Analogicznie później przy tworzeniu konstruktora kuli występują zapisy r = prr, prr = 4
@bulserf
@bulserf 7 жыл бұрын
Jakub Górczyński dzięki wielkie za wyjaśnienie :)
@Hubertoom
@Hubertoom 6 жыл бұрын
Jakub wydaje mi się, że coś przekombinowałeś z tym podwójnym dziedziczeniem. void wyświetl(); w klasie class Punkt jest określony jako Public: zatem używając operatora zasięgu :: dostajesz się do tej metody w kasie Punkt i to poprostu działa po "zredukowaniu" dziedziczenia w twoim kodzie - Punkt::wyswietl(); zamiast Kolo::Punkt::wyswietl(); To mniej pisania i mniej zawiłości w kodzie dla potomnych moim skromnym zdaniem. Nie wiem czy dobrze rozumuję, bo dopiero zgłębiam meandry tajników C++, może ktoś mądrzejszy oceni nasze punkty widzenia :)
@p0p0s
@p0p0s 9 жыл бұрын
Witam, Mam pytanie, czy da się wyciągnąć "r" z Koło ale z tej części Public? Np z konstruktora albo void'a?
@olafpolok2582
@olafpolok2582 7 жыл бұрын
Ja skasowalem Public i nad "r" dalem protected, dziala ale nwm czy o to chodzilo
@robertrutkowski2968
@robertrutkowski2968 2 жыл бұрын
Przykro mi ale dziedziczenia nie ma tu w ogóle. Wartości atrybutu mogą byc przypisane wyłącznie "na sztywno" w kontruktorze obiektu klasy Punkt i tylko atrybut wpisany w kontruktor domyślny może potem zostać odczytany poleceniem cout
@kenayv6196
@kenayv6196 2 жыл бұрын
Nawet lajka nie dostales pod komentarzem. Po co sie produkujesz na 8 lat po wypuszczeniu kursu video?
@robertrutkowski2968
@robertrutkowski2968 2 жыл бұрын
@@kenayv6196 bo mogę i chcę. A ty czemu komentujesz coś co się odnosi do filmu sprzed 8 lat?
@kenayv6196
@kenayv6196 2 жыл бұрын
@@robertrutkowski2968 bo moge i chce
Obiektowy C++ odc. 6: Funkcje wirtualne. Polimorfizm
26:04
Pasja informatyki
Рет қаралды 239 М.
Как подписать? 😂 #shorts
00:10
Денис Кукояка
Рет қаралды 7 МЛН
Worst flight ever
00:55
Adam W
Рет қаралды 26 МЛН
ПРИКОЛЫ НАД БРАТОМ #shorts
00:23
Паша Осадчий
Рет қаралды 6 МЛН
Being Competent With Coding Is More Fun
11:13
TheVimeagen
Рет қаралды 81 М.
Vector w C++ - jak z niego korzystać? Po co używać vector?
15:05
Obiektowy C++ odc. 4: Funkcje zaprzyjaźnione
28:39
Pasja informatyki
Рет қаралды 257 М.
Premature Optimization
12:39
CodeAesthetic
Рет қаралды 810 М.
How computer processors run conditions and loops
17:03
Core Dumped
Рет қаралды 104 М.
Kurs C++ odc. 10: Wskaźniki. Dynamiczne alokowanie pamięci
27:31
Pasja informatyki
Рет қаралды 611 М.
Obiektowy C++ odc. 1: Podejście obiektowe. Klasy. Metody
30:43
Pasja informatyki
Рет қаралды 843 М.
God-Tier Developer Roadmap
16:42
Fireship
Рет қаралды 7 МЛН
Как подписать? 😂 #shorts
00:10
Денис Кукояка
Рет қаралды 7 МЛН