Study/Java

Power Java 8장 프로그래밍

Houkibosi 2012. 6. 28. 15:01

1. 사각형을 나타내는 Rectangle이라고 이름 붙여진 클래스를 설계하여 보자.

Rectangle은 사격형의 가로를 나타내는 width와 length를 필드로 가진다.

또한 사각형의 넓이를 계산하여서 반환하는 calcArea()를 메소드로 가진다.

Rectangle 클래스를 UML로 그려고 접근자, 설정자를 추가하여서 자바로 구현하여 보라.


class Rectangle
{
 int width=0;
 int length=0;
 
 // 면적 구하는 메소드
 public int CalcArea()
 { return width * length; }
 
 // Width Get, Set 메소드
 public int GetWidth()
 { return width; }
 
 public void SetWidth( int set_wid )
 { width = set_wid; }
 
 // length Get, Set 메소드
 public int GetLength()
 { return length ; }
 
 public void SetLength( int set_len )
 { length = set_len; }
}


public class test_1
{
 public static void main(String[] args)
 {
  Rectangle rect = new Rectangle();
 
  System.out.println( rect.length );
  System.out.println( rect.width );
  System.out.println( "====================================\n" );
 
  rect.SetLength( 10 );
  rect.SetWidth( 20 );
 
  System.out.println( rect.length );
  System.out.println( rect.width );
  System.out.println( "====================================\n" );
 
  System.out.println( rect.CalcArea() );

 }

}

 

2. 책을 나타내는 Book 클래스를 정의하여 보자.

Book 클래스는 제목(title)과 저자(author)를 나타내는 필드를 가진다.


2_1) 각 필드를 직접 접근하여서 제목에 "Great Java"를 대입하고, 저자에 "bob"을 대입하여 보자.

2_2) 접근자와 설정자 메소드를 정의하고, 이것을 통하여 제목과 저자를 설정하여 보자.


class Book
{
 String title = "No_Data";
 String auther = "No_Data";
 
  // title Get, Set 메소드
  public String Gettitle()
  { return title; }
 
  public void Settitle( String set_title )
  { title = set_title; }
 
  // auther Get, Set 메소드
  public String Getauther()
  { return auther ; }
 
  public void Setauther( String set_auther )
  { auther = set_auther; }

}


public class test_1
{
 public static void main(String[] args)
 {
  Book book = new Book();
 
  System.out.println( book.Gettitle() );
  System.out.println( book.Getauther() );
 
  // 2_1번 문제
  book.title = "Greate Java";
  book.auther = "bob";
 
  System.out.println( book.Gettitle() );
  System.out.println( book.Getauther() );

  // 2_2번 문제
  book.Settitle( "Greate Java_1" );
  book.Setauther( "bob_1" );
 
  System.out.println( book.Gettitle() );
  System.out.println( book.Getauther() );
 }

}

 

3. 주사위를 나타내는 클래스인 Dice를 작성하여 보자.

Dice 클래스에 필요한 필드와 메소드를 생각하여 보자.

메소드에 주사위를 굴리는 메소드인 roll()을 포함하라.

roll() 메소드를 작성할 때 난수를 얻는 다음 문장을 참조하라.   ( 이 문제를 이렇게 푸는게 맞는지;;;)


class Dice
{
 int face=0;
 
 int roll()
 {
  return face = (int) (Math.random() * 6) + 1; 
 }

}


public class test_1
{
 public static void main(String[] args)
 {
  Dice dice = new Dice();
 
  System.out.println( dice.roll() );
 }

}

 

4. 상자를 나타내는 클래스인 Box를 작성하여 보자.

Box 클래스는 가로, 세로, 높이를 나타내는 필드를 가진다.

또한 박스의 체적을 계산하는 calcvolume() 메소드를 가진다.

Box의 객체를 생성하여서 테스트하여 보자.


import java.util.*;

class Box
{
 int width=0, length=0, height=0;
 
 // width get,set 메소드
 int Get_wid() { return width; }
 void Set_wid( int s_wid ) { width = s_wid; }
 
 // length get,set 메소드
 int Get_len() { return length; }
 void Set_len( int s_len ) { length = s_len; }
 
 // height get,set 메소드
 int Get_hei() { return height; }
 void Set_hei( int s_hei ) { height = s_hei; }
 
 // 부티 구하는 메소드
 int calcVolume() { return width * length * height; }
}

public class test_1
{
 public static void main(String[] args)
 {
  Scanner scan = new Scanner(System.in);
  Box box = new Box();
 
  System.out.print( "가로를 입력하세요. : " );
  box.Set_wid( scan.nextInt() );
 
  System.out.print( "세로를 입력하세요. : " );
  box.Set_len( scan.nextInt() );
 
  System.out.print( "높이를 입력하세요. : " );
  box.Set_hei( scan.nextInt() );
 
  System.out.print( "이 박스의 부피는 " + box.calcVolume() + "m³입니다." ); 
 }

}

 

5. 직원을 나타내는 Employee 클래스를 작성하여 보자.

직원은 이름, 전화번호, 연봉을 필드로 가지고 있다.

각 필드에 대하여 접근자와 설정자는 작성하라.

EmployeeTest 클래스를 작성하여서 Employee 객체를 생성하고 테스트하라.


import java.util.*;

class Employee
{
 String name="", Phone="", money="";
 
 // name Get, Set 메소드
 String Get_name() { return name; }
 void Set_name( String s_name )  { name = s_name; }
 
 // Phone Get, Set 메소드
 String Get_Phone() { return Phone; }
 void Set_Phone( String s_Phone )  { Phone = s_Phone; }
 
 // money Get, Set 메소드
 String Get_money() { return money; }
 void Set_money( String s_money )  { money = s_money; }
}

public class test_1
{
 public static void main(String[] args)
 {
  Scanner scan = new Scanner(System.in);
  Employee emp = new Employee();
 
  System.out.print( "사용자 이름을 입력하세요. : " );
  emp.Set_name( scan.next() );
 
  System.out.print( "사용자 핸드폰 번호를 입력하세요. : " );
  emp.Set_Phone( scan.next() );
 
  System.out.print( "연봉을 입력하세요. : " );
  emp.Set_money( scan.next() );
 
  System.out.print( emp.name + "님의 전화번호는 " + emp.Phone + "이고, 연봉은 " + emp.money + "입니다." );
 }

}

 

6. 핸드폰을 나타내는 CellPhone 클래스를 작성하여 보자.

핸드폰의 상태는 모델명, 제조 회사, 색상, 전원, 카메라 장착 여부로 나타낸다.

이것들을 필드로 정의하고, 각 필드에 대하여 접근자와 설정자를 작성한다.

전원을 끄고 켜는 메소드도 추가하여보자.

CellPhoneTest 클래스를 작성하여서 CellPhone 객체를 생성하고, 테스트하라.


import java.util.*;

class CellPhone
{
 String Model="", maker="", color="",  camera="";
 boolean power=false;
 
 // Model Get, Set 메소드
 String Get_Model() { return Model; }
 void Set_Model( String s_Model )  { Model = s_Model; }
 
 // maker Get, Set 메소드
 String Get_maker() { return maker; }
 void Set_maker( String s_maker )  { maker = s_maker; }
 
 // color Get, Set 메소드
 String Get_color() { return color; }
 void Set_color( String s_color )  { color = s_color; }
 
 // camera Get, Set 메소드
 String Get_camera() { return camera; }
 void Set_camera( String s_camera )  { camera = s_camera; }
 
 String power()
 {
  if( power == false )
   { power = true; return "핸드폰을 시작합니다.";}
  else
   { power = false; return "핸드폰을 종료합니다.";}
 }
}

public class test_1
{
 public static void main(String[] args)
 {
  Scanner scan = new Scanner(System.in);
  CellPhone phone = new CellPhone();
 
  System.out.print( "모델명을 입력하세요. : " );
  phone.Set_Model( scan.next() );

  System.out.print( "제조사를 입력하세요. : " );
  phone.Set_maker( scan.next() );

  System.out.print( "색생을 입력하세요. : " );
  phone.Set_color( scan.next() );

  System.out.print( "카메라의 유뮤를  입력하세요. : " );
  phone.Set_camera( scan.next() );
 
  System.out.println( phone.power() );
  System.out.println( "고객님의 핸드폰은 " + phone.Model + "이고, " + phone.maker + "사에서 만들었으며, 색상은 " + phone.color + "이고, 카메라는 " + phone.camera + "니다." );
  System.out.print( phone.power() );

 }

}

 

7. 복소수를 나타내는 complex 클래스를 작성하라. 복소수는 실수부와 허수부로 이루어진다.

필요한 필드와 접근자와 설정자 메소드를 정의하라. 복소수를 12.0 + 17.9i 같이 출력하는 toString()

메소드를 정의하라. 복소수에 대한 덧셈연산과 뺄셈연산을 정의하라.


import java.util.*;

class complex
{
 String num_1="", num_2="";

 // num_1 Get, Set 메소드
 String Get_num_1() { return num_1; }
 void Set_num_1(String s_maker) { num_1 = s_maker; }

 // num_2 Get, Set 메소드
 String Get_num_2() { return num_2; }
 void Set_num_2(String s_color) { num_2 = s_color; }

 String toString(String buho) { return num_1 + buho + num_2; }

}

public class test_1
{
 public static void main(String[] args)
 {
  Scanner scan = new Scanner(System.in);
  complex com = new complex();
 
  System.out.println("실수부를 입력해 주세요.");
  com.Set_num_1(scan.next());
 
  System.out.println("허수부를 입력해 주세요.");
  com.Set_num_2(scan.next());
 
  System.out.println("+ 또는 -를 입력하세요");
  System.out.println("입력하신 값은 " + com.toString(scan.next()));
 }
}

 

8. 삼각형을 나타내는 Triangle 클래스를 정의하여 보자

Triangle 클래스는 밑변과 높이, 면적을 나타내는 필드를 가진다.

각 필드에 대하여 접근자와 설정자를 작성한다.

삼각형의 면적을 구하는 메소드 getArea()를 추가하라.

TriangleTest 클래스를 작성하여서 Triangle 객체를 생성하고 테스트하라.


 import java.util.*;

class Triangle
{
 int bottom=0, height=0, area=0;

 // Bottom Get, Set 메소드
 int Get_bottom() { return bottom; }
 void Set_bottom(int s_bottom) { bottom = s_bottom; }

 // height Get, Set 메소드
 int Get_height() { return height; }
 void Set_height(int s_height) { height = s_height; }

 int getArea() { return (bottom*height)/2; }
}

public class test_1
{
 public static void main(String[] args)
 {
  Scanner scan = new Scanner(System.in);
  Triangle tri = new Triangle();
 
  System.out.println("밑변을 입력해 주세요.");
  tri.Set_bottom(scan.nextInt());
 
  System.out.println("높이를 입력해 주세요.");
  tri.Set_height(scan.nextInt());
 
  System.out.println("삼각형의 면적은 " + tri.getArea() + "m² 입니다.");
 }
}

 

9. 본문에 등장하는 은생 계좌를 나타내는 BankAccount 클래스에
다음과 같은 기능을 하는 메소드를 추가하고 테스트하라.

// 현제 객체의 잔액게서 amount만큼을 otherAccount 계좌로 송금한다.
public int transfer(int amount, BankAccount otherAccount)
{

}


import java.util.*;

class BankAccount
{
 int Account=100000;
 
 String transfer(int amount, BankAccount otherAccount) 
 { 
  if(Account >= amount)
   {
    Account -= amount;
    otherAccount.Account += amount;
    return amount + "원이 송금되었습니다.";
   }
  else
   return "잔액이 부족합니다.";
 }
}

public class test_1
{
 public static void main(String[] args)
 {
  Scanner scan = new Scanner(System.in);
  BankAccount acc_1 = new BankAccount();
  BankAccount acc_2 = new BankAccount();
  
  System.out.println("보내실 금액을 입력해 주세요.");
  System.out.println(acc_1.transfer(scan.nextInt(), acc_2)); 
  
  System.out.println("잔액 : " + acc_1.Account);
  System.out.println("상대방 잔액 : " + acc_2.Account);
 }
}