Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

Oppgaven 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 er som 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 vel!

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

Skriv Java-kode for Circle-klassen med oppførsel som er beskrevet over.

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

I tillegg er det greit å lage Lag en passende toString()-metode og et hovedprogram, slik at du en kan sjekke at oppførselen stemmer med oppgavespesifikasjonen 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.

Code Block
package stateandbehavior;

public class Circle {

	public 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;
	}
	// Method for rounding two decimal precision
	public double convertToTwoDecimalPlaces(double input) {
		return Math.round(input * 100) / 100.0;
	}
	public String toString() {
		// First, round to two decimal precision
		double circumference = convertToTwoDecimalPlaces(this.getCircumference()); 
		double area = convertToTwoDecimalPlaces(this.getArea());
		// Then create string
		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;

// Mainhovedprogramklasse program for testing functionalityav of 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(); 
	}
 }

...