Klasy - dziwne wyniki przy obliczaniu

0

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

2

Ehm, przelicz to na kartce - nie ma tutaj żadnej magii.

Btw, po co Ci zmienne pomocPromien?

0

Sorry! D:D Temat do usunięcia :)

PS. Patryk wiem że nie jest potrzebna, tylko sobie testowałem :)

0

Bo 2 * 2 == 2 ^ 2 :P
Do tego promień powinieneś ustawiać w konstruktorze, albo przynajmniej dać taką możliwość. No i tak jak @2up napisał - nie potrzebujesz zmiennej pomocPromien, użyj po prostu this.promien, czy po prostu promien.

1 użytkowników online, w tym zalogowanych: 0, gości: 1