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

Projektowanie klas do playera

Object Storage Arubacloud
0 głosów
161 wizyt
pytanie zadane 5 kwietnia 2016 w C i C++ przez chomek Gaduła (4,500 p.)

Witam,

piszę odtwarzacz muzyki i mam klase stworzoną przeze mnie Player i klase z Qt QMediaPlayer i mam 2 pomysły:

1.Odziedziczyć klasą Player z QMediaPlayer

2.Stworzyć obiekt QMediaPlayer wewnątrz  klasy Player i za pomocą interfejsu publicznego operować na tym obiekcie.

Która metoda jest lepsza, bardziej poprawna ? Czy można jakoś uniemożliwić korzystanie z niektórych metod odziedziczonych z QMediaPlayer ?

1 odpowiedź

0 głosów
odpowiedź 5 kwietnia 2016 przez Ehlert Ekspert (212,670 p.)
Pod względem technicznym kodu lepsze jest zawieranie. Jeśli popełnisz błąd w klasie z której potem będziesz dziedziczyć możesz się troszkę zakopać.
komentarz 5 kwietnia 2016 przez chomek Gaduła (4,500 p.)

tylko martwi mnie to że w tym przypadku musze zrobić dużo metod tego typu:

void Player::play()
{
    m_mediaPlayer->play();
}

void Player::pause()
{
   m_mediaPlayer->pause();
}
komentarz 5 kwietnia 2016 przez Ehlert Ekspert (212,670 p.)

To często zadawane pytanie. Jest czy zawiera. Zrób to tak aby było:

  1. Mniej kodu
  2. Zachowany logiczny porządek OOP
  3. Hermetyzacja 
komentarz 5 kwietnia 2016 przez chomek Gaduła (4,500 p.)
chyba bym się zdecydował na dziedziczenie no bo Player jest MediaPlayerem będzie mniej kodu bo nie będe musiał robić tego typu metod co na górze. Hermetyzacja będzie tylko czy da się uniemożliwić korzystania z niektórych metod odziedziczonych ? Klasa QMediaPlayer zawiera metody związane z wideo, którego nie chce by Player obsługiwał ale chciałbym dodać do klasy Player metody umożliwiające np zapętlenie muzyki.
komentarz 5 kwietnia 2016 przez Ehlert Ekspert (212,670 p.)
Powiem Ci na przykładzie Androida. Kiedy robiłem player to obiekt klasy MediaPlayer był akurat zawierany, ponieważ znajdował się w innym procesie. Ciężko bazować na klasie która dziedziczy i po Thread, i po MediaPlayer. Niefunkcjonalna kupa.

Podobne pytania

0 głosów
0 odpowiedzi 175 wizyt
pytanie zadane 8 lutego 2017 w C i C++ przez L33TT12 Gaduła (3,950 p.)
+2 głosów
3 odpowiedzi 817 wizyt

92,555 zapytań

141,402 odpowiedzi

319,553 komentarzy

61,939 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...