HeadBlast Skrevet 8. februar 2011 Del Skrevet 8. februar 2011 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
WhiteFire Skrevet 8. februar 2011 Del Skrevet 8. februar 2011 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? Lenke til kommentar
Kiff Skrevet 9. februar 2011 Del Skrevet 9. februar 2011 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
delfin Skrevet 9. februar 2011 Del Skrevet 9. februar 2011 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 Lenke til kommentar
WhiteFire Skrevet 11. februar 2011 Del Skrevet 11. februar 2011 Late-binding kan kanskje også være til hjelp. Lenke til kommentar
quantum Skrevet 12. februar 2011 Del Skrevet 12. februar 2011 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå