Gå til innhold

Anbefalte innlegg

Skrevet

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.

Videoannonse
Annonse
Skrevet

Lenge siden jeg har programmert i Java, men tenkte å svare for å få litt fart i tråden om ikke annet! :) Hva om du definerer public Billett[] kjøpBilletter som en virtuell-metode og overrider den i subklassene?

Skrevet

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.

Skrevet

Du kan forsåvidt sjekke hvilken type klasse som kaller funksjonen, med

if (this instanceof Sitte) { ... }

 

Nå er ofte øvinger litt dårlige på å bruke det mest logiske av og til, og fokuserer mest på å forklare et konsept :)

Skrevet

 

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.

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...