샤브의 블로그 RSS 태그 관리 글쓰기 방명록
2010-08-25 09:00:00
하루하루의 과제를 완성해 가면서 블로그를 만들어가고 있습니다.
오늘의 과제는 Main 함수가 작성되어 있는데 이에 맞는 CellPhone이라는 클래스를 완성하라는 과제입니다.

 CellPhone  
 String model  // 핸드폰 모델 번호
 double battery  // 남은 배터리 양
 CellPhone(String model)  // 모델 번호를 인자로 받는 생성자
 void call(int time)  // 통화 시간(분)을 출력하고, 통화 시간에 따라 배터리 양을 감소시킨다.
// 감소되는 배터리 양 = 통화시간(분) * 0.5
// 배터리 양은 0보다 작아지지 않는다.
// 통화 시간(분)이 0보다 작은 경우에는
IllegalArgumentException(“통화시간입력오류”)을 발생시킨다.
 void charge(int time)  // 충전한 시간(분)을 출력하고, 충전한 시간에 따라 배터리 양을 증가시킨다.
// 충전되는 배터리 양 = 충전시간(분) * 3
// 배터리 양은 100까지만 증가한다.
// 충전 시간(분)이 0보다 작은 경우에는
IllegalArgumentException(“충전시간입력오류”)을 발생시킨다.
 void printBattery()  // 남은 배터리 양을 출력한다.
 boolean equals(Object otherObject) // Object 타입의 객체를 입력받고, 입력받은 객체가CellPhone 타입의 클래스이면서 모델 번호가 같은 경우에 true를 리턴한다.

위와 같은 멤버변수와 메소드를 가지고 있습니다. 실제 실행 되는 쏘스를 한번 보시죠~

public class CellPhoneMain {
   public static void main(String[] args) { 
      CellPhone myPhone = new CellPhone("SCH-600");
  
      myPhone.charge( 20 );  //20분간 충전을 한다.
      myPhone.printBattery();
  
      myPhone.call( 300 );  //300분간 통화를 한다.
      myPhone.printBattery();
  
      myPhone.charge( 50 );  //50분간 충전을 한다.
      myPhone.printBattery();
  
      myPhone.call( 40 );  //40분간 통화를 한다.
      myPhone.printBattery();
  
      try {
         myPhone.call( -20 );  //통화시간이 잘못 입력되었다.
      } catch(IllegalArgumentException e) {
         System.out.println( e.getMessage() ); 
      } 
  
      CellPhone yourPhone = new CellPhone("SCH-600");
  
      if( myPhone.equals(yourPhone) ) {
         System.out.println("동일 모델입니다.");
      } else {
         System.out.println("다른 모델입니다.");
      } 
   }
}

위와 같은 소스를 가지고서 아래와 같은 결과가 나와야 합니다.

충전 시간 : 20분
남은 배터리 양 : 60.0
통화 시간 : 300분
남은 배터리 양 : 0.0
충전 시간 : 50분
남은 배터리 양 : 100.0
통화 시간 : 40분
남은 배터리 양 : 80.0
통화시간입력오류
동일 모델입니다.


이런 결과가 나오도록 해야하는 것입니다. 그래서 나온 녀석이 아래에 있습니다.

public class CellPhone {
   String model;
   double battery;

   public CellPhone(String model) {
      this.model = model;
   }

   void call(int time) {
      if (time < 0) {
         throw new IllegalArgumentException("통화시간입력오류");
      } else {
         System.out.println("통화 시간 : " + time + "분");
         battery = battery - time * 0.5;
         if (battery < 0)
            battery = 0;
      }
   }

   void charge(int time) {
      if (time < 0) {
         throw new IllegalArgumentException("충전시간입력오류");
      } else {
         System.out.println("충전 시간 : " + time + "분");
         battery = battery + time * 3;
         if (battery > 100)
            battery = 100.0;
      }
   }

   void printBattery() {
      System.out.println("남은 배터리 양 :" + battery);
   }

   public boolean equals(Object otherObject) {
      if((otherObject instanceof CellPhone)&&model.equals(((CellPhone) otherObject).model)){
         return true;
      }

      return false;
   }
}

간단한 소스이니 설명은 생략~ ^^;;;

'Device & Language > Java' 카테고리의 다른 글

Java의 연산자(내림차순)  (0) 2010.08.31
배열 원소의 최기값  (0) 2010.08.31
Java StringBuilder vs StringBuffer  (1) 2010.08.23
Java Message Service spec  (0) 2010.08.22
자바를 이용한 부대활동(???)  (0) 2010.08.21