You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Dette eksemplet handler om en Circle-klasse, som har en radius og kan regne ut omkrets og areal.

Tilstand og metoder

For å beregne omkretsen og arealet til en sirkel må objektet ihvertfall vite om radiusen. Hvis objektet også skal kunne vises som grafikk, vil en også trenge posisjon, men dette utelater vi her.

Tilstanden i Circle-objekter blir dasom følger:

  • radius - et desimaltall som angir radiusen til sirkelen. Denne være satt når en sirkel opprettes - en sirkel kan ikke eksistere uten å ha en radius!

Circle-klassen har to metoder, getCircumference() og getArea(), med følgende oppførsel:

  • double getCircumference() - beregner omkretsen til sirkelen, basert på radius og returnerer denne
  • double getArea() - beregner arealet til sirkelen basert på radius og returnerer denne

Begge disse metodene gjør en beregning basert på innholdet i objektet, men endrer ikke objektet.

I tillegg er det greit å lage en passende toString()-metode og et hovedprogram, slik at en kan sjekke at oppførselen stemmer med spesifikasjonen, altså beskrivelsen over.

JExercise-testkode for denne oppgaven finner du her: stateandbehavior/CircleTest.java.

Eksempelløsning for Circle-klassen

Klassen lagrer radiusen i et attributt (kalt felt i Java) av typen double. Dette feltet initialiseres av konstruktøren, som tar inn et double-argumentet og setter radius-feltet til denne verdien.

package stateandbehavior;

public class Circle {

	double radius; // radiusen lagres i et dette attributtet

	// konstruktøren brukes til å initialisere objektet
	public Circle(double radius) {
		// radius-attributtet settes til argumentet
		this.radius = radius;
	}
	
	public double getCircumference() {
		return 2 * this.radius * Math.PI;
	}
	public double getArea() {
		return this.radius * this.radius * Math.PI;
	}

	public String toString() {
		double circumference = getCircumference(); 
		double area = getArea();
		return "[En sirkel med radius " + this.radius + ", har omkrets " + circumference + " og areal " + area + "]";
		// alternativ: formattert String
		// return String.format("[En sirkel med radius %f, har omkrets %f og areal %f]", this.radius, circumference, area);
 	}
}

package stateandbehavior;

// hovedprogramklasse for testing av Circle

public class CircleProgram {

	public void run() {
		Circle circle1 = new Circle(5);
		System.out.println(circle1);
		Circle circle2 = new Circle(10);
		System.out.println(circle2);
	}

 	public static void main(String[] args) {
		CircleProgram program = new CircleProgram();
		program.run(); 
	}
 }

 


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