Witam,
zacząłem zgłębiać temat obiektów w Javie i chciałbym się do niego przyłożyć. Nie rozumiem pewnej rzeczy. Otóż mam dwie klasy (w osobnych plikach) - klasa Kolo.java, która zawiera kod:
public class Kolo
{
private double promien;
//definicja akcesora
public double getPromien()
{
return promien;
}
//definicja mutatora
public void setPromien(double r)
{
promien = r;
}
public double obliczObwodKola()
{
double pomocPromien;
pomocPromien = promien;
return 2*Math.PI*pomocPromien;
}
public double obliczPoleKola()
{
double pomocPromien = promien;
return Math.PI*pomocPromien*pomocPromien;
}
}
oraz klasę Main.java która zawiera metodę main oraz korzysta z klasy Kolo:
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Kolo koleczko = new Kolo(); //tworzymy obiekt - instancja do klasy Kolo
Kolo kolko2 = new Kolo(); //tworzymy 2ga taka sama referencje do tego samego obiektu co koleczko
System.out.println("Pole kola (obiekt1): " + koleczko.obliczPoleKola());
System.out.println("Obwod kola (obiekt1): " + koleczko.obliczObwodKola());
System.out.println("Pole kola (obiekt2): " + kolko2.obliczPoleKola());
System.out.println("Obwod kola (obiekt2): " + kolko2.obliczObwodKola());
System.out.println("--- ZMIANA PROMIENIA ---");
koleczko.setPromien(1.0); //mutatorem ustawiam promien
kolko2.setPromien(2.0); //takze ustawiam promien mutatorem
System.out.println("Pole kola (obiekt1): " + koleczko.obliczPoleKola());
System.out.println("Obwod kola (obiekt1): " + koleczko.obliczObwodKola());
System.out.println("Pole kola (obiekt2): " + kolko2.obliczPoleKola());
System.out.println("Obwod kola (obiekt2): " + kolko2.obliczObwodKola());
}
}
Dla testu stworzyłem dwa różne obiekty tego samego typu (Kolo) który zdefiniowałem w klasie Kolo.java. Jakież zdziwienie mnie spotkało, że wynik obliczeń pola koła dla drugiego obiektu daje takie same wyniki co wynik obliczeń dla obwodu! Dlaczego tak się dzieje? Poniżej przedstawiam wynik działania programu:
Pole kola (obiekt1): 0.0
Obwod kola (obiekt1): 0.0
Pole kola (obiekt2): 0.0
Obwod kola (obiekt2): 0.0
--- ZMIANA PROMIENIA ---
Pole kola (obiekt1): 3.141592653589793
Obwod kola (obiekt1): 6.283185307179586
Pole kola (obiekt2): 12.566370614359172
Obwod kola (obiekt2): 12.566370614359172