Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Excerpt

Denne oppgaven innfører et grensesnitt med utgangspunkt i en tidligere oppgave om mobilbruk og -abonnement.

I denne oppgaven tar vi utgangspunkt i oppgave om MobileUsage og MobileSubscription. I den oppgaven var MobileSubscription en vanlig klassen, som inneholdt data om pris for ulike typer forbruk og en metode for å beregne kostnad basert på registrert forbruk (lagret i MobileUsage-objekt). MobileSubscription var ment å være generell, men hadde likevel begrensningen at kostnadsberegningen var basert på en enkel lineær formel, og vil f.eks. ikke kunne håndtere at prisen øker hvis en går over en viss grense, eller det motsatte, at en får rabatt ved høyt forbruk.

I denne oppgaven skal MobileSubscription gjøres om til et grensesnitt som kun inneholder metoden for å beregne kostnad. Ulike formler for å beregne kostnad og parametrene som trengs for disse implementeres i spesifikk klasser som implementerer dette grensesnittet.

Del 1

Definer grensesnittet MobileSubscription, basert på beskrivelsen over. Definer en ny klasse StandardMobileSubscription som implementerer dette grensesnittet, basert på formelen og koden fra den tidligere oppgaven.

Del 2

Definer en ny klasse som implementerer MobileSubscription og beregner kostnad basert på følgende regel:

  • Samtaler har en fast pris uavhengig av antall og lengde. Denne fastprisen angis og leses med setter/getter-paret setStaticCallCost og getStaticCallCost.
  • Tekstmeldinger har en fast pris pr. melding, som angis med setMessageCost og leses med getMessageCost (som for den tidligere oppgaven).
  • Kostnaden for internett-bruk beregnes basert på summen av mengde mottatt og sendt og styres av tre verdier: pris pr. megabyte under en viss grense, pris pr. megabyte over en viss grense og selve grensen. Disse kalles henholdsvis costBytesBelow, costBytesAbove og costBytesThreshold og har hvert sitt getter/setter-par. Ved å justere på de to første, kan en gi rabatt (den andre er minst) eller straff (den andre er størst) for forbruket.

 

JExercise-testkode for oppgavene finner du her: interfaces/MobileSubscriptionTest.java. jexkoden for testen finner du her:  interfaces/MobileSubscription.jextest

Include Page
Bunntekst for JExercise-oppgaver
Bunntekst for JExercise-oppgaver