• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmiana klasa w trakcie działania programu.

VPS Starter Arubacloud
0 głosów
147 wizyt
pytanie zadane 30 listopada 2016 w C i C++ przez sh1nen Obywatel (1,570 p.)
Witam, w związku z próbą wykonania projektu z Programowania Obiektowego, natrafiłem na problem z implementacją pewnego warunku zawartego w zadaniu, który brzmi : "Należy także przewidzieć, że można zmieniać typ istniejącego Klienta." , początkowo chciałem utworzyć abstrakcyjną klasę bazową Klient, którą będą rozszerzały kolejne typy Klientów jak Standardowy, Premium itd. Natomiast nie za bardzo mam pomysł jak można by uczynić takową zmianę typu w trakcie działania programu, za wszelką pomoc i nakierowanie będę ogromnie wdzięczny .

1 odpowiedź

0 głosów
odpowiedź 30 listopada 2016 przez criss Mędrzec (172,590 p.)
wybrane 9 grudnia 2016 przez sh1nen
 
Najlepsza
Zrób tak jak mówiłeś z tym dziedziczeniem. Następnie utwórz tablice wskaźników Klient* i wykorzystując polimorfizm spraw żeby każdy wskaźnik wskazywał na obiekt jednej z klas dziedziczacych po klasie Klient. Teraz korzystając z tej tablicy możesz w czasie działania programu wybierać z którego obiektu chcesz korzystać.
komentarz 9 grudnia 2016 przez sh1nen Obywatel (1,570 p.)

Cześć, apropo wcześniejszego zapytania, mam jeszcze jedno pytanie. Czy optymalnym rozwiązaniem byłoby zaimplementowanie czegoś podobnego do tego na diagramie ?

 

Chciałbym w trakcie działania programu, delegować liczenie upustu do danych klas w zależności od typu klienta, natomiast, nie wiem jak to mogło być zaimplementowane.

komentarz 10 grudnia 2016 przez criss Mędrzec (172,590 p.)
Nie bardzo rozumiem co to znaczy, że klasa Client miałaby być kolekcją klientów (już pomijam nieadekwatną nazwe..). Chyba sobie komplikujesz. Powinieneś za podstawe obrać to, że możesz mieć wskaźnik Client* który może wskazywać na każdy typ klienta. Każdy typ klienta ma wirtualną metode setDiscount i dzięki temu zalezne co kryje się pod wskaźnikiem, wywołanie setDiscount będzie działać inaczej (działać będzie metoda odpowiedniej klasy). Jeśli klientów ma być wielu, to stwórz tablice czy jakiś kontener takich wskaźników. Sprawa jest bardzo prosta.
komentarz 10 grudnia 2016 przez sh1nen Obywatel (1,570 p.)
chciałem się tutaj posłużyć delegacją, której być może jednak zbyt dobrze nie rozumiem i dlatego taki wykres, chodzi mi o to że każdy klient jako atrybut zawierał by wskaźnik na ClientType i delegował do odpowiedniego typu Clienta liczenie upustu, prowadzący wymaga aby nie korzystać ze zwykłego dziedziczeniu w tym miejscu, co trochę sprawia mi problem.
komentarz 10 grudnia 2016 przez criss Mędrzec (172,590 p.)
Ah, nie możesz korzystać z dziedziczenia :| Co to za debilny wymóg... No to pewnie najłatwiej będzie jak będziesz miał jedną klase klienta i jakąś zmienną definiującą jego typ. Nie bardzo widze inną możliwość.

To co ty napisałeś - nie wiem czy dobrze cie zrozumiałem, ale myśle, że to dobry pomysł.

Podobne pytania

0 głosów
2 odpowiedzi 148 wizyt
pytanie zadane 5 czerwca 2023 w C i C++ przez p4wix Obywatel (1,040 p.)
0 głosów
2 odpowiedzi 191 wizyt
0 głosów
2 odpowiedzi 218 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...