Bazová třída a dědění z interface rubrika: Programování: .Net
Malý páteční kvíz:
Když máme dvě konkrétní třídy, které dědí z (abstract) bázové třídy a mají implementovat stejný interface, tak:
a) bázová třída dědí interface plus obsahuje společnou funkcionalitu
b) naše konkrétní třídy dědí interface a bázová třída obsahuje jen společnou funkcionality
Která je podle Vás lepší verze a proč?
Moje odpověď je 'b'
- zbytečně zesložiťuje implementace děděné z bázové třídy > override, konstruktor parametry
Obecné, ale přesné zadání -> nevidím v odpovědi problém. Zde poskytuji několik pravidel, které kriticky shlédněte, případně přidejte další :
Máme tedy abstraktní třídu A, rozhraní I a třídy C1,C2, které dědí od A.
-
Pokud vyžadujete, aby právě a pouze všechny třídy, které dědí od A měly chování popsané v rozhraní I, pak smažte I a přesuňte ho do A.
-
({C1,C2} dědí od A ^ implementují I ) ^ (∃ C3: C3 nedědí od A ^ implementuje I) => A implementuje I, C3 implementuje I
- ({C1,C2} dědí od A ^ implementují I ) ^ (∃ C3: C3 dědí od A ^ neimplementuje I) => A neimplementuje I, {C1,C2} implementuje I
S rozhodnutím na základě pouček "co se má/nemá dělat" absolutně nesouhlasím. Exaktní řešení problémů takto nefungují. Nemůžete aplikovat pravidla z jiného systému na svůj vlastní a doufat, že míra korelace bude natolik velká, že "to bude pasovat". Místo zdlouhavého přemýšlení si rychle na první volný kus papíru po Vašem boku napište pravdivostní tabulku obsahující alespoň výše zmíněné body, rychle ji vyplňte v závislosti na vlastnostech VAŠEHO systému a řešení dostanete ihned a naprosto přesně.
Proto se učí predikátová logika. Každý to na střední škole dělal. Tohle je místo právě pro ní ! Využijte tohoto skvělého nástroje.
Komentáře
- Honza Břešťan : Vlastne je to tak. Zkondenzovano na samotnou podstatu. — 9.4.2013
Pro zobrazení všech 5 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře