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


JExercise lar deg sjekke din egen kode vha. forhåndslagde JUnit-tester og JExercise-panelet

Bruk av JExercise:

  1. Sørg for at jexercise-standalone.jar er lagt til i ditt prosjekts Build Path. Dette må gjøres hver gang du oppretter et nytt prosjekt, og det er derfor lurt å gjenbruke samme prosjekt til alle oppgaver.
  2. JExercise-tillegget må være installert. Installer tillegget fra følgende oppdateringsadresse: http://folk.ntnu.no/hal/dev/updatesite.
  3. Åpne JExercise-panelet via Window -> Show View -> Other, og navigere deg fram til JExercise i vinduet som kommer opp, velge det og klikke OK.
  4. Klikke og dra oppgavens testklasse, <oppgavenavn>Test.java fra pakkeoversikten og slippe den i JExercise panelet. 
  5. Testene kan så kjøres ved å dobbeltklikke på testen som ønskes kjørt.

Ved trøbbel, se først om du finner løsningen i Løsninger på trøbbel med JExercise.

Unknown macro: {html}

Twitre gjerne om oppgaven når du er ferdig: <a href="https://twitter.com/share" class="twitter-share-button" data-hashtags="jexercise">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

  • No labels