[쉽게 배우는 자바 프로그래밍] 연습문제 chap04
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;
}