Avatar billede enurris Nybegynder
14. oktober 2002 - 11:08 Der er 5 kommentarer og
1 løsning

Generalisering af interfaces -design

Jeg er igang med at lave et subsystem, som indeholder 2 klasser, og begge klasser skal tilgås gennem et fælles interface, som tilhører subsystemet.

Problemet er at klasserne tilsyneladende SKAL have implementeret alle metoder i interfacet, selv om de ikke tilbyder disse.

Hvad er designmæssigt pænt/muligt?
-At lave en ny klasse som implementerer interfacet, og kalder/opretter klasserne som implementerer metoderne?
-At lave et interface til hver klasse, som arver fra et fælles generelt interface (og er dette muligt)?

Et svar omkring muligheden for generalisering af interfaces, med kodeeksempel er rigeligt.
Avatar billede disky Nybegynder
14. oktober 2002 - 11:12 #1
Du skal ikke implementere alle metode, dette er kun et krav hvis de er abstracte, ellers bliver din klasse også abstract.
Avatar billede arne_v Ekspert
14. oktober 2002 - 11:20 #2
En klasse som "implements" et interface skal per definition
have implementeret alle metoderne i interfacet - det er ideen
i konstruktionen.

Et interface kan godt "extends" et andet interface.

Du kan også erstatte interfacet med en abstract
basis-klasse, som har implementationer for nogle
af metoderne, så de klasser der arver fra den
kun behøver implementere det specifikke for dem.

Du kan også lave et interface, en abstrakt basis-klasse
som implementer interfacet og leverer implementeringer
af nogle metoder, klasser som arver fra den abstrakte basis-klasse
og implementerer de specifikke metoder.

Der er uendeligt mange måder at gøre det på. For at kunne rådgive
dig bedst muligt må vi have lidt flere oplsyninger om præcis hvad
det er du har brug for.
Avatar billede arne_v Ekspert
14. oktober 2002 - 11:21 #3
Disky - alle metoder i et interface er per definition abstrakte !
Avatar billede disky Nybegynder
14. oktober 2002 - 11:36 #4
Det har du selvfølgelig helt ret i (jeg er smadret oven på weekenden)

Men det jeg tænke på var din 'Du kan også' #2.
Avatar billede enurris Nybegynder
14. oktober 2002 - 11:46 #5
Situationen er, at jeg har 2 subsystemer, hvor en klasse i det ene subsystem skal bruge 2 klasser i det andet subsystem.

De 2 klasser som bliver kaldt, har fuldstændigt forskellige metoder, men det er meningen at der kun skal være ét interface til selve subsystemet.

Jeg ville bare høre hvad der er smartest mht. ændringer fremover (robusthed)
Avatar billede arne_v Ekspert
14. oktober 2002 - 12:04 #6
I det tilfælde ville jeg nok lave:
  - et interface med alle metoder fra begge klasser
  - en klasse som implementerer dette interface og delegerer
    til de to klasser
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows