더북(TheBook)

연습문제



1. Point 클래스를 만들고, public Point(double x, double y) 생성자와 getX, getY 접근자 메서드를 정의하라. 또 Point의 서브클래스인 LabeledPoint를 만들고, public LabeledPoint(String label, double x, double y) 생성자와 getLabel 접근자 메서드를 정의하라.

2. 연습문제 1에서 만든 PointLabeledPoint 클래스에 toString, equals, hashCode 메서드를 정의하라.

3. 연습문제 1에서 만든 Point 클래스의 인스턴스 변수 xyprotected로 바꾸어라. LabeledPoint 클래스는 오직 LabeledPoint 인스턴스에 있는 이 변수에만 접근할 수 있음을 보여라.

4. Shape 추상 클래스를 정의하라. 이 클래스는 Point 클래스에 인스턴스 변수, 생성자, 지정한 양만큼 점을 옮기는 구체적인 public void moveBy(double dx, double dy) 메서드, public Point getCenter() 추상 메서드를 작성해야 한다. Circle, Rectangle, Line 서브클래스를 구체적으로 정의하고 각각 public Circle(Point center, double radius), public Rectangle(Point topLeft, double width, double height), public Line(Point from, Point to) 생성자를 포함하도록 만들어라.

5. 연습문제 4에서 만든 클래스에 clone 메서드를 정의하라.

6. 4.2.2 equals 메서드에서 다룬 Item.equals 메서드가 instanceof 검사를 사용한다고 하자. DiscountedItem.equals를 구현해 otherObjectItem이면 슈퍼클래스만 비교하지만 DiscountedItem이면 할인까지 포함해서 비교하게 하라. 이 메서드가 대칭성은 유지하지만, 추이적(transitive)이지는 않음을 보여라. 다시 말해 x.equals(y)y.equals(z)는 성립하지만, x.equals(z)는 성립하지 않는 아이템과 할인 아이템의 조합을 찾아라.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.