IT/솔루션) Power Java

Power JAVA 9장 ) 생성자와 접근 제어 - LAB

돔찌 2019. 4. 23. 07:46

<2016. 10. 3. 18:58>

 

Power JAVA 9장 ) 생성자와 접근 제어 - LAB

 

/* 
 * 원을 나타내는 클래스 Circle을 단계적으로 작성해보자.
 */
class Circle {
	private double radius;
	static final double PI = 3.141592;
	//PI라는 이름으로 3.141592로 초기화된 정적 변수
	//1. 원의 반지름을 매개 변수로 받는 생성자를 작성하라.
	Circle(double radius) {
		this.radius = radius;
	}
	//2. 설정자 메소드인 setRadius()와 접근자 메소드인 getRadius()를 작성한다.
	void setRadius(double radius) {
		this.radius = radius;
	}
	double getRadius() {
		return radius;
	}
	//3. double형의 값을 제곱하여 반환하는 square() 메소드를 작성한다. 전용 메소드로 선언하라.
	private double square(double n) {
		return n*n;
	}
	//4. 원의 면적을 계산하는 getArea() 메소드를 작성한다. 이때 square() 메소드를 사용하라.
	double getArea() {
		return this.square(radius) * PI;
	}
	//5. 원의 둘레를 계산하는 getPerimeter() 메소드를 작성한다.
	double getPerimeter() {
		return 2 * PI * radius;
	}
	//6. PI값을 반환하는 정적 메소드 getPI를 작성한다.
	static double getPI() {
		return PI;
	}
	//7. Cicle 클래스 안에 main()를 추가하고 다음과 같이 square() 메소드를 호출하여보자. 어떤 결과가 발생하는가?
	//   - 에러가 남. square() 메소드는 인스턴스메소드로 선언되었기 때문에 객체를 통해서만 접근이 된다.
	//8. main() 안에서 정적 메소드인 getPI를 호출하여 보라.
	//  - static으로 정적메소드로 선언하였기 때문에 에러없이 실행됨.
}
/* 9. Circle 클래스를 테스크하기 위하여 별도의 클래스인 CircleTest 클래스를 작성하라.
 * main() 안에서 Circle 객체를 생성하고 getArea()와 getPerimeter()를 호출하여서 원의 면적과 둘레를 구하라. */
public class LAB {
	public static void main(String[] args) {
		Circle myC = new Circle(5);
		// 객체 생성, 생성자 호출시 반지름을 5.0으로 설정
		System.out.println("원의 면적은 : " + myC.getArea());
		System.out.println("원의 둘레는 : " + myC.getPerimeter());
	}
}