실습 7.3 BankAccount

반응형
반응형

//  실습 7.3 : BankAccount.java
//  입금, 출금, 계좌 이체와 잔고 확인과 같은 기본 서비스들을 제공하는
//  은행 계좌를 나타낸다.
public class BankAccount
{
 //                        변수 선언
 // 각 변수는 public, private, 혹은 static 중 하나의 키워드를 필요로 한다.
 // 이 객체 밖에서 누구도 계좌번호, 예금주와 잔고를 바꿀 수 없어야 한다.
  //// 여기에 코드를 삽입하세요.E

   private String name;
   private int account;
   private double balance;

 //  계좌들의 수는 특정 계좌를 기술하지 않는다.
 //  대신에, 그것은 이 클래스에 대한 일반적인 사실이다.
        // 여기에 필요한 한 줄의 코드를 입력하세요.
         static int count=0;

 //            생성자 메소드

    // 생성자 메소드
    //   목적: 계좌의 번호, 예금주와 잔고를 각각 주어진 값으로 만든다.
    // @입력 매개변수
    //  account_number - 계좌의 새 번호
    //  name -     예금주
    //  init_balance -     초기 입금액
 public BankAccount(int account_number, String name, double init_balance)
 {
  // 계좌의 번호를 초기화한다
          // 여기에 필요한 한 줄의 코드를 입력하세요.
          this.account = account;
  // 계좌의 예금주를 초기화한다
          // 여기에 필요한 한 줄의 코드를 입력하세요.
          this.name=name;
  // 계좌의 잔고를 초기화한다
          // 여기에 필요한 한 줄의 코드를 입력하세요.
          balance=init_balance;
  // 만들어진 계좌의 수를 하나만큼 증가시킨다
          // 여기에 필요한 한 줄의 코드를 입력하세요.
          count++;
 } // end BankAccount

    //  접근자 메소드

    // 메소드: getName
    //    목적: 계좌의 예금주를 되돌려준다.
    // @입력 매개변수 ? 없음
   // @되돌려 주는 값: 계좌의 예금주
 public String getName()
    {
       // 예금주는 private 변수이기 때문에 다른 객체들은 그것을 볼 수 없다.
       // 그런데 당신이 예금주를 private 변수로 만들지 않았다면, 그렇게 해야 한다.
       // 따라서 우리는 그 값을 돌려 주는 public 메소드를 만들고 싶다. 그와 같이 하면,
       // 어느 누구도 예금주를 바꿀 수 없다, 그러나 누구나 그것을 읽을 수는 있다.
       // 당신이 예금주가 접근자 메소드를 가진 private 변수여야 하는 이유를
       // 이해하지 못한다면 강사에게 물어 보아라.
    // 여기에 필요한 한 줄의 코드를 입력하세요.
    return name;
 }

    // 메소드: getAccountNumber
    //    목적: 계좌의 번호를 되돌려준다.
    // @입력 매개변수 ? 없음
 // @되돌려 주는 값: 계좌의 번호
 public int getAccountNumber()
 {
   // 여기에 필요한 한 줄의 코드를 입력하세요.
   return account;
 }

    // 메소드: getBalance
    //    목적: 계좌의 현 잔고를 되돌려준다.
    // @입력 매개변수 ? 없음
 // @되돌려 주는 값: 계좌의 현 잔고
 public double getBalance()
 {
   // 여기에 필요한 한 줄의 코드를 입력하세요.
   return balance;
 }

    // 메소드: getNumberofAccount
    //    목적: 계좌의 수를 되돌려준다.
    // @입력 매개변수 ? 없음
 // @되돌려 주는 값: 계좌의 수
 public static int getNumberofAccount()
 {
         // 여기에 필요한 한 줄의 코드를 입력하세요.
         return count;
 }

 // 변경자 메소드들

    // 메소드: Deposit
 //    목적: 잔고를 주어진 값만큼 증가시킨다.
 //         입금액이 0보다 작으면 적절한 오류메시지를 출력한다.
 // @입력 매개변수
 //       Amount ? 입금액
 // @되돌려 주는 값: 없음
 public void Deposit(int Amount)
 {
  if (Amount < 0)
  {
     System.out.println("오류: 입금액은 양수여야한다.");
   System.out.println("계좌번호: " + account);
   System.out.println("입금액: " + Amount);
  }
  else
   balance=balance+Amount;
      // 여기에 필요한 한 줄의 코드를 입력하세요.
 }

    // 메소드: Withdraw
 //    목적: 잔고를 출금액만큼 감소시킨다.
 //         출금액이 잔고보다 많으면 적절한 오류메시지를 출력한다.
 // @입력 매개변수
 //       Amount ? 출금액
 // @되돌려 주는 값: 없음
 public void Withdraw(int Amount)
 {
  if (Amount < 0)
  {
   System.out.println("오류: 출금액은 양수여야한다.");
   System.out.println("계좌번호: " + account);
   System.out.println("출금액: " + Amount);
  }
  else if (balance < Amount)
  {
     System.out.println("오류: 현 잔고가 충분하지 않다.");
     System.out.println("계좌번호: " + account);
     System.out.println("출금액: " + Amount);
     System.out.println("잔고: " + balance);
  }
  else
   balance=balance-Amount;
     // 여기에 필요한 한 줄의 코드를 입력하세요.
 }

     // 메소드: Transfer
    //    목적: 현 계좌에서 넘어 온 계좌로 이체액만큼 이체한다.
   //         이체액이 잔고보다 많으면 적절한 오류메시지를 출력한다.
   // @입력 매개변수
   //        acct ? 이체 계좌
   //       Amount ? 이체액
 // @되돌려 주는 값: 없음
 public void Transfer(BankAccount acct, int Amount)
 {
  if (Amount < 0)
  {
   System.out.println("오류: 이체액은 양수여야 한다.");
   System.out.println("계좌번호: " + account);
   System.out.println("이체액: " + Amount);
  }
  else if (balance < Amount)
  {
      System.out.println("오류: 현 잔고가 이체하기에 충분하지 않다.");
      System.out.println("계좌번호: " + account);
      System.out.println("이체액: " + Amount);
      System.out.println("잔고: " + balance);
  }
  else
   this.balance=this.balance-Amount;
   acct.balance=acct.balance+Amount;
     // 여기에 필요한 한 줄의 코드를 입력하세요.
 }

     // 메소드: toString
     //  목적: 이 객체의 현재 상태를 나타내는 문자열을 되돌려 준다.
 // @되돌려 주는 값: 현 객체의 변수들과 대응하는 값들을 포함하는 문자열
 public String toString()
 {
  return (account + "\t" + name + "\t" + balance);
 }

     //  메인 메소드

 public static void main (String[] args)
 {
  // 두 개의 계좌 객체들을 만들고 여러 서비스를 요청한다.
  BankAccount acct1 = new BankAccount(1, "왕건", 10000);
  BankAccount acct2 = new BankAccount(2, "궁예", 20000);

  // 계좌의 상태를 출력한다
  System.out.println(acct1);
  System.out.println(acct2);

  // acct1 계좌에 100,000원을 입금한다
            // 여기에 필요한 한 줄의 코드를 입력하세요.
         acct1.Deposit(100000);
  System.out.println(acct1);

  // acct1 계좌로부터 50,000원을 출금한다
            // 여기에 필요한 한 줄의 코드를 입력하세요.
  acct1.Withdraw(50000);
  System.out.println(acct1);

  // acct2 계좌에 200,000원을 입금한다
              // 여기에 필요한 한 줄의 코드를 입력하세요.
        acct2.Deposit(200000);
  System.out.println(acct2);

  // acct2 계좌에서 acct1로 70,000원을 계좌이체한다
            // 여기에 필요한 한 줄의 코드를 입력하세요.
        acct2.Transfer(acct1, 70000);
  System.out.println(acct1);
  System.out.println(acct2);

  // acct1 계좌에 30,000원을 입금한다
            // 여기에 필요한 한 줄의 코드를 입력하세요.
        acct1.Deposit(30000);
  System.out.println(acct1);

  // acct2 계좌로부터 60,000원을 출금한다
            // 여기에 필요한 한 줄의 코드를 입력하세요.
        acct2.Withdraw(60000);
  System.out.println(acct2);

  // 만들어진 계좌들의 수를 출력한다
            // 여기에 필요한 두 줄의 코드를 입력하세요.
       System.out.println("\n만들어진 계좌들의 수는 "+getNumberofAccount()+"이다.");
     }
}

 

반응형

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

실습8.1 Course&driver  (0) 2009.04.07

이 글을 공유하기

댓글

Designed by CMSFactory.NET