Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

gates22

[C++]Dziedziczenie - pomysł :)

Rekomendowane odpowiedzi

Witam wszystkich :) piszę tutaj, ponieważ nie mogę wymyślić, jaki mógłbym napisać program, w którym wykorzystam i poćwiczę dziedziczenie + przeładowania operatorów + konstruktory :) Ale najbardziej zależy mi na dziedziczeniu :) Może ktoś mi podsunie pomysł na jakiś programik ? :) Z góry dzięki :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jakikolwiek program, w którym występuje np kilku użytkowników o różnych uprawnieniach i to właśnie te uprawnienia mogą być dziedziczone lub nie. Pamiętam, że pisałem baze danych z samochodami i do tego właśnie kilka poziomów dostępu. Mocniejszy user dziedziczy po słabszym jeszcze mocniejszy dalej dziedziczy itd...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ooo faktycznie świetny pomysł :) wcześniej nie pomyślałem, że w ten sposób można wykorzystać dziedziczenie :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jesli chcesz zrobic cos graficznego to :

-zrob sobie klase okienko ktora bedzie wyswietlac i zachowywac sie jak normalne okienko w windows(zamknij/przesun/wyswietl zawartosc w srodku/wyswietl) i klase ktora bedzie tym shitem zarzadzac(bedzie umiala przesunac np okienko ktore jest na spodzie na wierzch).

 

Gdzie cwiczenie operatorow ?

-W klasie systemu okienek dodajemy operatory dodawania(ew usuwania) okienek.

Dziedziczenie :

-Sprobuj zdefiniowac klase ktora dziedziczy okno i dziala tak samo dobrze jak klasa podstawowa(posiadajac cos tam dodatkowego).

 

Mysle ze to bedzie ciekawe :) (przynajmniej ja teraz nad czyms takim pracuje)

(jak chcesz to napisz mi na PW to pokaze ci co wykodzilem(niestety jescze bez dziedziczenia :/) w allegro(bibliteka graficzna))

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
jesli chcesz zrobic cos graficznego to :

-zrob sobie klase okienko ktora bedzie wyswietlac i zachowywac sie jak normalne okienko w windows(zamknij/przesun/wyswietl zawartosc w srodku/wyswietl) i klase ktora bedzie tym shitem zarzadzac(bedzie umiala przesunac np okienko ktore jest na spodzie na wierzch).

 

Gdzie cwiczenie operatorow ?

-W klasie systemu okienek dodajemy operatory dodawania(ew usuwania) okienek.

Dziedziczenie :

-Sprobuj zdefiniowac klase ktora dziedziczy okno i dziala tak samo dobrze jak klasa podstawowa(posiadajac cos tam dodatkowego).

 

Mysle ze to bedzie ciekawe :) (przynajmniej ja teraz nad czyms takim pracuje)

(jak chcesz to napisz mi na PW to pokaze ci co wykodzilem(niestety jescze bez dziedziczenia :/) w allegro(bibliteka graficzna))

też fajny pomysł, ale najpierw wezmę się za to, co Punisher zaproponował :) Lubię pisać takie programiki :) Jeśli chodzi o graficzne sprawy, to używam QT :) Ale ja skończę ten projekt, to może spróbuję ten eksperyment :)

dziedziczenie to zlo i powinno sie je omijac szerokim lukiem.

Można wiedzieć czemu tak uważasz? Ja osobiście uważam, że dziedziczenie to wspaniałe narzędzie :) pozwala pisać faktycznie techniką OO, a ja osobiście lubię pisać coś, co może mieć swoje zobrazowanie w świecie :) Ale rozwiń swoją wypowiedź, proszę :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Witam wszystkich :) piszę tutaj, ponieważ nie mogę wymyślić, jaki mógłbym napisać program, w którym wykorzystam i poćwiczę ...

biblioteka prymitywów geometrycznych?

dziedziczenie ...

punkt, linia, wielolinia, wielokąt, pierścień, prostokąt, elipsa, ...

przeładowania operatorów ...

+, +=, -, -= - translacja

*, /, *=, /= - skalowanie

rotacja

Może ktoś mi podsunie pomysł na jakiś programik ? :)

paint.gates22?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Bardzo wdzięcznym tematem do dziedziczenia są gry planszowe: rożne rodzaje graczy, pionków, pól (nie koniecznie wszystko na raz), ich zachowania, rozbicie logiki gry na metody itp.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
+, +=, -, -= - translacja

*, /, *=, /= - skalowanie

rotacja

Takie używanie operatorów jest mocno nielogiczne i mylące - imo nie powinno się tego robić. Skoro figura *= 2 powiększy obiekt 2 razy, to figura += powinna zwiększyć pole o 2 jednostki, a nie przesunąć. Nawet jeśli to miałoby być tylko ćwiczenie, to lepiej nie przeciążać operatorów w ogóle, niż uczyć się ich w taki sposób że utrudnia to odczytanie kodu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Można wiedzieć czemu tak uważasz? Ja osobiście uważam, że dziedziczenie to wspaniałe narzędzie :) pozwala pisać faktycznie techniką OO, a ja osobiście lubię pisać coś, co może mieć swoje zobrazowanie w świecie :) Ale rozwiń swoją wypowiedź, proszę :)

 

Nie uważam, żeby dziedziczenie było złem samem w sobie (w sumie to uważam, że jest spoko :P ), ale NIE UMIEJĘTNE korzystanie z mechanizmów dziedziczenia (oczywiście jak każdej innej techniki -ale akurat pytanie jest o dziedziczenie) potrafi być kulą u nogi -zwłaszcza jeżeli program będzie miał być w przyszłości rozwijany, bo dziedziczenie czasami potrafi bardzo mocno wiązać ze sobą pewne partie kodu -czasem dobrze jest się zastanowić, czy nie lepiej spróbować nieco ograniczyć wykorzystanie mechanizmu dziedziczenia, na rzecz innych mechanizmów -np. wzorca projektowego strategy -w którym oczywiście też jest wykorzystywane dziedziczenie, jednak tak zastosowane, żeby zmniejszyć zależności między fragmentami kodu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
dziedziczenie to zlo i powinno sie je omijac szerokim lukiem.
Co proponujesz w zamian? Wolisz programować strukturalnie? ;-)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Temacik trochę ostygł ale nie mogłem się powstrzymać :)

 

Jeśli autor dalej szuka pomysłów na operatory polecam napisanie klasy wektorowej, np wektor 3D. Przeładować odpowiednio operatory dodawania, odejmowania, mnożenia (zarówno przez skalar jak i wektor), operator przypisania, operatory logiczne (==, !=, <, >, <=, >=, podpowiem że implementacja czterech ostatnich może się opierać na funkcji składowej Length() zwracającej długość wektora, przy czym względy wydajnościowe w sposób oczywisty skłaniają do uczynienia tych funkcji funkcjami typu inline). Świetne ćwiczenie również na dziedziczenie - wektor 3D może dziedziczyć po wektorze 2D bo KAŻDY wektor 3D jest przecież TAKŻE wektorem 2D o dodatkowej współrzędnej z. i Każde operacje dostępne dla wektora 2D POWINNY być dostępne dla wektora 3D, przy czym wektor 3D powinien implementować dodatkowe funkcje takie jak iloczyn wektorowy czy normalizacja. Możesz także stworzyć abstrakcyjną klasę protokołu definiującą interfejs wspólny dla wszystkich rodzajów wektorów (czytaj: możemy określić długość zarówno wektora 2D jak i 3D, ale w nieco inny sposób (3D ma o jedną współrzędną więcej) co sugeruje, że klasa protokołu powinna zawierać czysto wirtualną funkcję Length(), którą klasy potomne POWINNY implementować w sposób charakterystyczny i właściwy dla siebie).

 

Dlaczego akurat taki pomysł? BO na codzień piszę w OpenGLu i często to wykorzystuję w swoich programach:-)

 

Odnośnie wypowiedzi kilka postów wyżej: dziedziczenie to jedno z najpotężniejszych narzędzi dostarczanych przez C++ i uwierz mi że dobra znajomość tej techniki i umiejętność jej zastosowania daje Ci niemal nieograniczone możliwości - sam się nieraz o tym przekonałem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...