Versions Compared

Key

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

...

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. Her brukes this.radius for å referere til attributtet (og "hoppe over" argumentet) og kun radius for å referere til argumentet.

Metodene getCircumference() og getArea() bruker radius-attributtet i de vanlige formlene for omkrets og areal. Her er bruken av this i this.radius strengt tatt ikke nødvendig, siden radius alene også vil blir tolket som en referanse til attributtet, da det ikke er argumenter eller lokale variable "i veien".

toString()-metoden lager en String med ved å skjøte sammen mange deler med +. En alternativ variant med bruk av String.format er også vist. Den tar inn en String med formatteringsdirektiver som forteller hvor de påfølgende argumentene skal spleises inn i teksten. %.2f brukes som direktiv siden verdiene er desimaltall (f for floating point-verdier) og vi bare vil at tallene skal vises med to desimaler.

Code Block
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%.2f, har omkrets %f%.2f og areal %f%.2f]", this.radius, circumference, area);
 	}
}

For å prøve ut koden lager vi en hovedprogramklasse kalt CircleProgram. Det vanlige er å ha en init()- og en run()-metode, men vi utelater init() her, siden programmet er så lite og enkelt. Det er tross alt vi som velger hva de heter, basert på hva som er ryddig og bekvemt.

I run()-metoden opprettes to Circle-objekter med new. Disse er illustrert i figuren til høyre (id'ene #1 og #2 er kun med for å illustrere at dette er forskjellige objekter). Disse objektene skrives så ut med System.out.println-metoden. Dette vil implisitt kalle toString()-metoden, siden System.out.println bruker denne internt, for å gjøre om argumentet til en String, før det skrives ut.

Merk at main-metoden må være deklarert akkurat slik for å bli kalt av Java, når klassen som helhet skal utføres. Den lager en instans av programmet og kaller run()-metoden som gjør "jobben".

Code Block
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(); 
	}
 }
PlantUML Macro
object "#1: Circle" as circle1 {
	radius = 5.0
}

object "#2: Circle" as circle2 {
	radius = 10.0
}

 

 

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

...