본문 바로가기

Study/Java

Power Java 8장 LAB

1. 2차원 공간에서 하나의 점을 나타내는 Point클래스를 작성하여 보자.

1) 빈칸을 태우고 실행하여 보자.

2) 필드 y에 대해서도 접근자와 설정자를 추가하여 보자.

3) p1을 통하여 설정자를 호출하여 p1의 x 좌표를 100, y좌표를 200으로 설정하여 보라.

4) 두 번째 객체를 생성하고 (100, 300)으로 설정하라.


import java.util.*;

import java.io.*;


class Point 

{

int x;

int y;

public int getX() // x접근자

{ return x; }

public void setX( int xCoord ) // x설정자

{ x = xCoord; }

public int getY() // y접근자

{ return y; }

public void setY( int yCoord ) // y설정자

{ y = yCoord; }

}


public class test_1 

{

public static void main(String[] args) throws Exception 

{

Point p1 = new Point(); //첫번쨰 객체 생성

Point p2 = new Point(); //두번쨰 객체 생성

p1.setX(100); p1.setY(200);

p2.setX(100); p2.setY(300);

}

}



2. 상자를 나타내는 Box클래스를 작성하자.

1) 먼저 상자의 속성을 나열하여 보라.

2) 상자의 속성 중에서 가로, 세로, 높이를 나태내는 속성만을 선택하고, 

 width, length, height라는 이름을 부여하여 필드로 만들어라.

3) 위의 필드들을 포함하는 ㅁBox클래스를 만들어라.

class Box

{

//필드정의

int ;

int ;

int ;

//메소드 정의

}

4) 각 필드에 대하여 설정자와 접근자 메소드를 작성하여 Box 클래스에 추가하라.

5) 상자의 부피를 계산하는 메소드 getVolume()을 작성하여 Box 클래스에 추가하라.

6) 현재 상자의 속성값을 문자열로 만들어서 반환하는 toString() 메소드를 작성하여 Box 클래스에 추가하라.

7) BoxTest랄는 클래스를 작성하고, main() 메소드를 추가한다. 

main()메소드 안에서 상자 객체를 가리킬 수 있는 참조 변수 box1을 정의하라.

8)상자 객체를 생성하여서 참조 변수 box1이 가리키게 하라.

9) 설정자 메소드를 호출하여서 상자 box1의 가로, 세로, 높이를 100, 100, 100으로 설정하여 보자.

10) 참조 변수 box1을 통하여 getVolume() 메소드를 호출하여 보자.

11) System.out.println(box1); 하면 무엇이 출력되는가?

12) 두 번쨰 객체인 box2를 생성하고, box2의 가로, 세로, 높이를 200, 200, 200으로 설정하여 보자.

13) 참조 변수 box2의 값을 box1에 대힙한 후에 접근자를 통하여 box의 속성값을 출력하여 보자.


import java.util.*;

import java.io.*;


class Box 

{

int width=0, length=0, height=0; //3

//4

public int getwidth() // width접근자

{ return width; }

public void setwidth( int s_width ) // width설정자

{ width = s_width; }

public int getlength() // length접근자

{ return length; }

public void setlength( int s_length ) // length설정자

{ length = s_length; }

public int getheight() // height접근자

{ return height; }

public void setheight( int s_height ) // height설정자

{ height = s_height; }

public int getVolume() { return width*length*height; } // 5

public String toString() // 6

{ return "가로 : " +  width + ", 세로 : " + length + ", 높이 : " + height +"입니다."; }

}


public class test_1 

{

public static void main(String[] args) throws Exception // 7 

{

Box box1 = new Box(); // 8

Box box2 = new Box(); // 12

box1.setheight(100); // 9

box1.setlength(100);

box1.setwidth(100);

box2.setheight(200); // 12

box2.setlength(200);

box2.setwidth(200);

System.out.println( box1.getVolume() ); // 10

System.out.println( box1 ); // 11

box1 = box2;

System.out.println( box1 ); // 13

}

}



3. 본문에 등장하는 은행 계좌를 나타내는 BankAccount 클래스를 입력하고, 다양한 실험을 하여보자.

BankAccount는 잔고를 나타내는 정수형 멤버 변수(balance)를 가지고 있고, 예금 인출 메소드(draw)와 예입 메소드(deposit),

현재의 잔고를 반환하는 메소드(getBalance)를 가지고 있다.

1) 설정자 메소드와 접근자 메소드를 정의하라.

2) main() 메소드안에서 a1, a2 두 개의 BankAccount 객체를 생성하고 다음과 같은 순서로 메소드를 호출한다.

- a1의 잔고를 100으로 한다.

- a2의 잔고를 50으로 한다.

- a1에서 60을 인출한다.

- a2에서 30을 인출한다.

- a1의 현재 잔고를 얻어서 화면에 출력한다.

- a2의 현재 잔고를 얻어서 화면에 출력한다.

3) 현재 잔액을 출력하는 printBalance() 메소드를 구현하고 테스트하라.

4) 현제 잔액에 대하여 연 7.5%의 이자를 계산하여 추가하는 addInterest() 메소드를 구현하고 테스트하라.

5) BankAccount 클래스의 예금 인출 메소드인 withdraw()를 현재 잔고가 음수이면 예금 인출이 일어나지 않도록 변경하라.

이러한 BankAccount클래스의 변경으로 BankAccountTest클래스를 변경하여야 하는가?

6) BankAccount 클래스의 잔고를 나타내는 ㄴbalance 멤버 변수의 자료형을 int형에서 double 형으로 변경하라.

BankAccount 클래스의 변경으로 BankAccountTest 클래스를 변경하여야 하는가?

7) BankAccount 클래스 앞에 public을 추가하고 프로그램을 컴파일해보자.

어떤 오류가 발생하는가? public을 붙이는 것과 붙이지 않는 것의 차이는 무엇인가?

8) BankAccount 클래스 안에도 public static void main(String args[]){}를 추가하여 보라.

컴파일 오류가 발생하는가? 만약 컴파일 오류가 발생하지 않으면 BankAccount클래스의 BankAccountTest 클래스의 main() 메소드에 

각각 println() 문장을 넣어서 어떤 main메소드가 수행되는지를 확인하라.

9) 7번 문제와 8번 문제의 실험결과를 토대로 public클래스와 main() 메소드에 대하여 어떤 결론을 내릴 수 있는가?


import java.util.*;

import java.io.*;


class BankAccount // 은행계좌, 7 : public 시 오류발생

{

double balance=0; // 잔액, 6

void deposit(int amount) // 저금

{

balance += amount; // 1

}


String withdraw(int amount) // 인출

{

if ( balance >= amount ) // 5

{

balance -= amount; // 1

return "인출이 완료되었습니다.";

}

return "잔액이 부족합니다.";

}

String printBalance()

{

return "고객님의 잔액은 " + balance + "원 입니다."; //3

}

double addInterest()

{

return balance *= 1.075; // 4

}

}


public class test_1 

{

public static void main(String[] args) throws Exception

{

BankAccount acc_1 = new BankAccount();

BankAccount acc_2 = new BankAccount();

acc_1.balance = 100; // 2

acc_2.balance = 50; // 2

acc_1.withdraw( 60 ); // 2

acc_2.withdraw( 30 ); // 2

System.out.println( "고객님의 잔액은 " + acc_1.balance + "원 입니다." ); // 2

System.out.println( "고객님의 잔액은 " + acc_2.balance + "원 입니다." ); // 2

System.out.println( acc_1.printBalance() ); // 3

System.out.println( acc_2.printBalance() ); // 3

System.out.println( "이자가 포함된 금액은 " + acc_1.addInterest() + "원 입니다." ); // 4

System.out.println( "이자가 포함된 금액은 " + acc_2.addInterest() + "원 입니다." ); // 4

}

}

'Study > Java' 카테고리의 다른 글

Power Java 9장 프로그래밍  (0) 2012.06.28
Power Java 9장 연습문제  (0) 2012.06.28
Power Java 8장 프로그래밍  (0) 2012.06.28
Power Java 8장 연습문제  (0) 2012.06.28
Power Java 7장 LAB  (0) 2012.06.28