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 må 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(); } } |
...