...
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, som så skrives ut. 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(); } } |
...