JAVA/쉽게 배우는 자바 프로그래밍

[쉽게 배우는 자바 프로그래밍] 연습문제 chap04

0_hailey_0 2021. 4. 11. 16:44

01. 삼각형을 나타내는 Triangle 클래스를 작성하라. 삼각형의 속성으로는 실수값의 밑변과 높이를, 동작으로는 넓이 구하기와 접근자가 있고 생성자도 포함한다. 작성한 클래스를 다음 코드를사용해 테스트하라.

public class chap0401 {
    public static void main(String[] args) {
        Triangle t = new Triangle(10.0, 5.0);
        System.out.println(t.findArea());
    }
}

 class Triangle {
    private double baseline;
    private double height;

     public Triangle(double baseline, double height) {
         this.baseline = baseline;
         this.height = height;
     }

     public double getBaseline() {
         return baseline;
     }

     public double getHeight() {
         return height;
     }

     public double findArea() {
         return baseline * height * 1/2;
     }
 }

 

02. 01에서 작성한 Triangle 클래스에 2개의 삼각형 넓이가 동일한지 비교하는 isSameArea()메서드를 추가하라. 그리고다음 코드를 사용해 테스트하라.

public class chap0402 {
    public static void main(String[] args) {
        Triangle t1 = new Triangle(10.0, 5.0);
        Triangle t2 = new Triangle(5.0, 10.0);
        Triangle t3 = new Triangle(8.0, 8.0);

        System.out.println(t1.isSameArea(t2));
        System.out.println(t1.isSameArea(t3));
    }
}
class Triangle {
    private double baseLine;
    private double height;

    public Triangle(double baseLine, double height) {
        this.baseLine = baseLine;
        this.height = height;
    }

    public double getBaseLine() {
        return baseLine;
    }

    public double getHeight() {
        return height;
    }

    public double findArea() {
        double result = baseLine * height * 1/2;
        return result;
    }

    public boolean isSameArea(Triangle t) {
       double area1 = findArea();
       double area2 = t.findArea();

       if (area1 == area2)
           return true;
       else
           return false;
    }
}

 

03. 회원을 관리하려고 회원을 모델링한 Member 클래스를 작성하라. 회원 정보로는 이름, 아이디, 암호, 나이가 있다. 외부 객체는 이와 같은 회원 정보에 직접 접근할 수 없고 접근자와 설정자로만 접근할 수 있다. 그리고 모든 회원 정보를 사용해 객체를 생성할 수 있는 생성자도 있다.

 

class Member {
    String name;
    String id;
    String psw;
    int age;

    public Member(String name, String id, String psw, int age) {
        this.name = name;
        this.id = id;
        this.psw = psw;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public String getId() {
        return id;
    }

    public String getPsw() {
        return psw;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setPsw(String psw) {
        this.psw = psw;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 

04. 생산된 모든 자동차와 빨간색 자동차의 개수를 출력하는 Car클래스를 작성하라. 그리고 다음 코드를 사용해 테스트하라.

public class chap0404 {
    public static void main(String[] args) {
        Car c1 = new Car("red");
        Car c2 = new Car("blue");
        Car c3 = new Car("RED");

        System.out.printf("자동차 수 : %d, 빨간색 자동차 수 : %d",
                Car.getNumberOfCar(), Car.getNumberOfRedCar());

    }
}
class Car {
    static int numberOfCar;
    static int numberOfRedCar;
    String color;


    public Car(String color) {
        this.color = color;
        numberOfCar++;

        if(color == "red" || color =="RED")
            numberOfRedCar++;
    }


    public static int getNumberOfCar() {
        return numberOfCar;
    }

    public static int getNumberOfRedCar() {
        return numberOfRedCar;
    }
}

 

05. 길이 속성만 가진 직선을 모델링한 Line 클래스를 작성하고, 다음 프로그램으로 테스트하라.

public class chap0405 {
    public static void main(String[] args) {
        Line a = new Line(1);
        Line b = new Line(1);

        System.out.println(a.isSameLine(b));
        System.out.println(a == b);

    }
}
class Line {
    private int length;

    public Line(int length) {
        this.length = length;
    }

    public boolean isSameLine(Line line1) {
        if (length ==line1.length)
            return true;
        else
            return false;
    }


}

 

06. 복소수를 모델링한 Complex 클래스를 작성하고, 다음 프로그램으로 테스트하라.

public class chap0407 {
    public static void main(String[] args) {
        Complex c1 = new Complex(2.0);
        c1.print();
        Complex c2 = new Complex(1.5, 2.5);
        c2.print();
    }
}
class Complex {
    private double a;
    private double b;

    public Complex(double a) {
        this.a = a;
    }

    public Complex(double a, double b) {
        this.a = a;
        this.b = b;
    }

    public void print() {
        System.out.println(a + "+" + b + "i");
    }

}

 

07. 골프채를 모델링한 GolfClub 클래스를 작성하고, 다음 프로그램으로 테스트하라.

public class chap0407 {
    public static void main(String[] args) {
        GolfClub g1 = new GolfClub();
        g1.print();

        GolfClub g2 = new GolfClub(8);
        g2.print();

        GolfClub g3 = new GolfClub("퍼터");
        g3.print();
    }
}
class GolfClub {
    private int num;
    private String name;

    public GolfClub() {
        this.num = 7;
    }

    public GolfClub(int num) {
        this.num= num;
    }

    public GolfClub(String name) {
        this.name = name;
    }

    void print() {

        if (this.name == null)
            System.out.println(num + "번 아이언입니다.");
        else
            System.out.println(name + "입니다.");
    }

}

 

08. 주사위를 나타내는 Dice 클래스를 작성하고, 다음 코드를 사용해 테스트하라.

(+Dice 클래스에는 6개의 면(face)이라는 속성과 굴리기(roll)라는 동작이 있다. Math.random() 메서드는 0.0이상 1.0미만의 double 타입의 무작위 실수를 반환한다.)

 

public class chap0408{
    public static void main(String[] args) {
        Dice d = new Dice();
        System.out.println("주사위의 숫자 : " + d.roll());
    }
}
class Dice{
    private int face;

    public int roll() {
        this.face =  (int)(Math.random() * 6 + 1);
        return (int)face;
    }