Gå til innhold

Anbefalte innlegg

Hei!

 

Har følgende Superklasse: Billett, med subklassene: StaaplassBillett og SitteplassBillett

Har videre Superklassen: Tribune, med subklassene: Sitte, Ståå, Vip.

 

Tingen er at jeg vil programmere en metode i klassen Tribune: public Billett[] kjøpBilletter, som kan brukes i alle subklassene av klassen Tribune.

 

Og her kommer problemet, fordi i Sitte(tribunen) skal det jo kjøpes sittebilletter, mens i Staa(tribunen) skal det kjøpes ståbillett. Er det mulig at superklassen sjekker hvilken subklasse som bruker metoden og dermed kan ha ulike if tester og hva som skal skje ettersom hvilken subklasse som kaller metoden?

Om dette ikke er mulig, føler jeg hele poenget med arv forsvinner litt, da jeg må ha egne metoder i subklassene som kjøperbilletter.

Om noe rundt spørsmålet er uklart, shout out!

 

Mvh HeadBlast.

Lenke til kommentar
Videoannonse
Annonse

Om dette ikke er mulig, føler jeg hele poenget med arv forsvinner litt, da jeg må ha egne metoder i subklassene som kjøperbilletter.

 

Som oftest (med fare for at det kommer like mange responser som det er lesere av forumet) så er en subklasse stort sett lik parent klassen, med noen "få" metoder endret . Kanskje har du funksjoner som skrivUtBillett() eller refunderBillett() i parent klassen, og getPrice() getType() i children klassene.

Lenke til kommentar

 

Og her kommer problemet, fordi i Sitte(tribunen) skal det jo kjøpes sittebilletter, mens i Staa(tribunen) skal det kjøpes ståbillett. Er det mulig at superklassen sjekker hvilken subklasse som bruker metoden og dermed kan ha ulike if tester og hva som skal skje ettersom hvilken subklasse som kaller metoden?

Om dette ikke er mulig, føler jeg hele poenget med arv forsvinner litt, da jeg må ha egne metoder i subklassene som kjøperbilletter.

Om noe rundt spørsmålet er uklart, shout out!

 

Mvh HeadBlast.

 

Du kan jo bruke instanceof + if i superklassen Tribune, men det er ikke noen god løsning, det er lissom selve meningen at du skal overstyre oppførselen til bestille-billett-metoden i sub-klassene. Det er jo dét de er til.

 

Dersom du har generell kode for billettkjøp som skal brukes av alle subklassene legger du den i en protected metode i superklassen Tribune (klassen Tribune kan gjerne være abstract), som du f.eks. kan kalle prepareOrderTicket eller noe sånt. Deretter legger du en metode public abstract orderTicket i Tribune, og så implementerer du denne i alle subklassene, med både kall til prepareOrderTicket i superklassen for å få gjort det generelle ifm. billettsalget og i tillegg det som er spesielt for hver enkelt type billettbestilling.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...