Avatar billede mickni33 Nybegynder
16. januar 2008 - 15:53 Der er 14 kommentarer og
1 løsning

Multiple arv

Jeg har en payer og en owner class som arver fra en CustomerClass... Nu har jeg et problem, nemlig at jeg også har en PayOwner Klasse som både kan være Payer og Owner,dvs at en person kan enten være en Owner eller en Payer men også en person der er begge dele altså arve fra Payer og Owner.... Hvordan kan man bedst håndtere dette rent design mæssig...


CustomerClass{

}


Payer:CustomerClass{

}


Owner:CustomerClass{

}


PayOwner:Payer:Owner{


}
Avatar billede arne_v Ekspert
16. januar 2008 - 15:58 #1
Det kan du ikke i C#.

Ingen Diamond of Death.

Du bliver noedt til at lave et workaround.

De 2 vaerktoejer du har er:
- du kan implementere multiple interfaces
- brug af composition og delegation
Avatar billede mickni33 Nybegynder
16. januar 2008 - 16:05 #2
hmmm kan du vise et eksempel i pseudokode
Avatar billede mickni33 Nybegynder
16. januar 2008 - 16:08 #3
Payer og owner kan ikke være interfaces da man skal kunne oprette objekter af hver type
Avatar billede arne_v Ekspert
16. januar 2008 - 16:16 #4
Noget med at have et IPayer og et IOwner, Payer implementerer IPayer, Owner implementer
IOwner, PayOwner implementerer baade IPayer og IOwner, PayOwner har saa en reference til
baade et Payer og et Owner objekt, relevante metode kald bliver forwarded til de objekter.
Avatar billede mickni33 Nybegynder
16. januar 2008 - 16:21 #5
er det så interface IPayer,IOwner der arver fra Customer eller vil du lade Owner og Payer arve fra Customer
Avatar billede bennytordrup Nybegynder
16. januar 2008 - 16:21 #6
Alternativet er C++ (så vidt jeg husker understøttes multiple arv i C++)
Avatar billede arne_v Ekspert
16. januar 2008 - 16:22 #7
Det sidste. Et interface kan ikke arve fra en klasse.
Avatar billede mickni33 Nybegynder
16. januar 2008 - 16:22 #8
heheheheh ja
Avatar billede arne_v Ekspert
16. januar 2008 - 16:22 #9
Jep. C++ kan lave DoD.
Avatar billede mickni33 Nybegynder
16. januar 2008 - 16:22 #10
ok fiiiint
Avatar billede mickni33 Nybegynder
16. januar 2008 - 16:24 #11
heheheh arne_v det er sku den rigtige løsning... ser bare grimt ud tegnet i en model :-)

læg et svar
Avatar billede mickni33 Nybegynder
16. januar 2008 - 16:27 #12
Skal PayOwner så arve fra Customer og 2 interfaces ?
Avatar billede arne_v Ekspert
16. januar 2008 - 16:31 #13
svar
Avatar billede arne_v Ekspert
16. januar 2008 - 16:33 #14
Ihvertfald for fra de 2 interfaces. Muligvis fra klassen.

Nej - det er ikke paent, men problem stillingen er nok lidt grumset.
Avatar billede arne_v Ekspert
16. januar 2008 - 16:34 #15
Jeg ville overveje at redesigne hele modellen til noget med en base identity som kan have flere roller.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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