nme.kr

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
프로그램:java:ㄴhomework:ㄴhomework [2022/02/03 15:23]
clayeryan@gmail.com [과제 90]
프로그램:java:ㄴhomework:ㄴhomework [2025/06/27 16:04] (현재)
줄 3: 줄 3:
 [[https://hashcode.co.kr/code_runners?language=java|자바 웹 컴파일러]] [[https://hashcode.co.kr/code_runners?language=java|자바 웹 컴파일러]]
  
-[[programmer:java:ㄴhomework:quiz|ㄴ과제 퀴즈]]+[[프로그램:java:ㄴhomework:quiz|ㄴ과제 퀴즈]]
  
-[[programmer:java:ㄴhomework:doc|ㄴ개념정리:목차]]+[[프로그램:java:ㄴhomework:doc|ㄴ개념정리:목차]]
  
-[[programmer:java:ㄴhomework:book_source|ㄴ북소스]]+[[프로그램:java:ㄴhomework:book_source|ㄴ북소스]]
 ===== Hello World 출력 ===== ===== Hello World 출력 =====
  
줄 8863: 줄 8863:
 ++++ ++++
  
-==== 과제 91 ==== +==== Banking Project (J2SE 버전, 품질1단계) ==== 
-++++title|+ 
 +**예제** 
 + 
 +++++Account|
 <code java> <code java>
-java code+package com.mybank.domain; 
 +public interface Account {  
 +     public double getBalance() ; 
 +     public boolean deposit(double amt) ; 
 +     public boolean withdraw(double amt) ; 
 +}
 </code> </code>
 ++++ ++++
-==== 과제 92 ====+
 ++++title| ++++title|
 <code java> <code java>
-java code+package com.mybank.domain; 
 +public class SavingsAccount implements Account {     
 +        protected double balance; 
 +     protected String name; 
 +     private double interestRate; 
 +            
 +     public SavingsAccount(double initBalance, double interestRate) { 
 +     balance = initBalance; 
 +     this.interestRate = interestRate; 
 +         } 
 +     
 +         public SavingsAccount(String name){ 
 +      balance = 0; 
 +      this.name = name; 
 +      this.interestRate = 5.0; 
 +             
 + 
 +         public double getBalance() { 
 +        return balance; 
 +          } 
 +     
 +          public boolean deposit(double amt) { 
 +         balance = balance + amt; 
 +         return true; 
 +          } 
 +      
 +          public boolean withdraw(double amt) { 
 +          boolean result = false;  // assume operation failure 
 +          if ( amt <= balance ) { 
 +          balance = balance - amt; 
 +          result = true;  // operation succeeds 
 +                 } 
 +          return result; 
 +          } 
 +
 +</code> 
 +++++ 
 + 
 +++++CheckingAccount| 
 +<code java
 +package com.mybank.domain; 
 +public class CheckingAccount implements Account { 
 +        protected double balance; 
 +      protected String name; 
 +     private double overdraftAmount = 0; 
 +     
 +     public CheckingAccount(double initBalance, double overdraftAmount) { 
 +     balance = initBalance; 
 +     this.overdraftAmount = overdraftAmount; 
 +     } 
 + 
 +     public CheckingAccount(double initBalance) { 
 +     this(initBalance, 0.0); 
 +     } 
 +     
 +     public CheckingAccount(String name){ 
 +     balance = 0; 
 +     this.name = name; 
 +      } 
 +     
 +      public boolean withdraw(double amount) { 
 +     boolean result = true; 
 +         
 +     if ( balance < amount ) { 
 +     double overdraftNeeded = amount - balance; 
 +     if ( overdraftAmount < overdraftNeeded ) { 
 +     result = false; 
 +     } else {                 
 +     balance = 0.0; 
 +     overdraftAmount -= overdraftNeeded; 
 +     } 
 +       } else { 
 +         balance = balance - amount; 
 +       }         
 +       return result; 
 +       } 
 + 
 +     public double getBalance() { 
 +     return balance; 
 +    } 
 +     
 +     public boolean deposit(double amt) { 
 +     balance = balance + amt; 
 +     return true; 
 +     }     
 +
 +</code
 +++++ 
 + 
 +++++TestTypeSafety| 
 +<code java> 
 +import com.mybank.domain.*; 
 +import java.util.*; 
 + 
 +public class TestTypeSafety { 
 + public static void main(String[] args) { 
 + List<CheckingAccount> lc = new ArrayList<CheckingAccount>(); 
 +   
 + lc.add(new CheckingAccount("Fred")); // OK 
 + lc.add(new SavingsAccount("Fred"));  // Compile error! 
 +   
 + // therefore...  
 + CheckingAccount ca = lc.get(0);      // Safe, no cast required  
 + System.out.println("Withdraw 150.00 : " + ca.withdraw(150.00)); 
 + System.out.println("Deposit 22.50 : " + ca.deposit(22.50)); 
 + System.out.println("Withdraw 47.62 : " + ca.withdraw(47.62)); 
 + System.out.println("Withdraw 400.00 : " + ca.withdraw(400.00)); 
 + System.out.println("Balance : " + ca.getBalance());  
 +
 +
 +</code> 
 +++++ 
 + 
 +---- 
 + 
 +++++TestAccount| 
 +<code java> 
 +public class TestAccount { 
 +  
 + private double sBalance; 
 + private String sName; 
 + private double interestRate; 
 +  
 + private double cBalance; 
 + private String cName; 
 + private double overdraftAmount = 0; 
 +  
 + public boolean sDeposit(double amt) { 
 + sBalance = sBalance + amt; 
 + return true; 
 +
 +  
 + public boolean sWithdraw(double amt) { 
 + boolean result = false; 
 + if(amt <= sBalance) { 
 + sBalance = sBalance - amt; 
 + result = true; 
 +
 + return result; 
 +
 + 
 + public boolean cDeposit(double amt) { 
 + cBalance = cBalance + amt; 
 + return true; 
 +
 +  
 + public boolean cWithdraw(double amount) { 
 + boolean result = true; 
 +  
 + if(cBalance < amount) { 
 + double overdraftNeeded = amount - cBalance; 
 + if(overdraftAmount < overdraftNeeded) { 
 + result = false; 
 + } else { 
 + cBalance = 0.0; 
 + overdraftAmount -= overdraftNeeded; 
 +
 + } else { 
 + cBalance = cBalance - amount; 
 +
 +  
 + return result; 
 +
 +  
 + public static void main(String[] args) { 
 + TestAccount ts = new TestAccount(); 
 +  
 + System.out.println("Withdraw 150.00 : " + ts.cWithdraw(150.00)); 
 + System.out.println("Deposit 22.50 : " + ts.cDeposit(22.50)); 
 + System.out.println("Withdraw 47.62 : " + ts.cWithdraw(47.62)); 
 + System.out.println("Withdraw 400.00 : " + ts.cWithdraw(400.00)); 
 + System.out.println("Balance : " + ts.cBalance); 
 +  
 + System.out.println("========================================="); 
 +  
 + System.out.println("Withdraw 150.00 : " + ts.sWithdraw(150.00)); 
 + System.out.println("Deposit 22.50 : " + ts.sDeposit(22.50)); 
 + System.out.println("Withdraw 47.62 : " + ts.sWithdraw(47.62)); 
 + System.out.println("Withdraw 400.00 : " + ts.sWithdraw(400.00)); 
 + System.out.println("Balance : " + ts.sBalance); 
 +
 + 
 +
 +</code> 
 +++++ 
 + 
 +==== Banking Project (J2SE 버전, 품질2단계) ==== 
 + 
 +++++SavingsAccount| 
 +<code java> 
 +public class SavingsAccount { 
 + private double balance; 
 + private String name; 
 + private double interestRate; 
 +  
 + public SavingsAccount(double initBalance, double interestRate) { 
 + balance = initBalance; 
 + this.interestRate = interestRate; 
 +
 +  
 + public SavingsAccount(String name) { 
 + balance = 0; 
 + this.name = name; 
 + this.interestRate = 5.0; 
 +
 +  
 + public double getBalance() { 
 + return balance; 
 +
 +  
 + public boolean deposit(double amt) { 
 + balance = balance + amt; 
 + return true; 
 +
 +  
 + public boolean withdraw(double amt) { 
 + boolean result = false; 
 + if(amt <= balance) { 
 + balance = balance - amt; 
 + result = true; 
 +
 + return result; 
 +
 +
 +</code> 
 +++++ 
 + 
 +++++CheckingAccount| 
 +<code java> 
 +public class CheckingAccount { 
 + private double balance; 
 + private String name; 
 + private double overdraftAmount = 0; 
 +  
 + public CheckingAccount(double initBalance, double overdraftAmount) { 
 + balance = initBalance; 
 + this.overdraftAmount = overdraftAmount; 
 +
 +  
 + public CheckingAccount(double initBalance) { 
 + this(initBalance, 0.0); 
 +
 +  
 + public CheckingAccount(String name) { 
 + balance = 0; 
 + this.name = name; 
 +
 +  
 + public double getBalance() { 
 + return balance; 
 +
 +  
 + public boolean deposit(double amt) { 
 + balance = balance + amt; 
 + return true; 
 +
 +  
 + public boolean withdraw(double amount) { 
 + boolean result = true; 
 +  
 + if(balance < amount) { 
 + double overdraftNeeded = amount - balance; 
 + if(overdraftAmount < overdraftNeeded) { 
 + result = false; 
 + } else { 
 + balance = 0.0; 
 + overdraftAmount -= overdraftNeeded; 
 +
 + } else { 
 + balance = balance - amount; 
 +
 +  
 + return result; 
 +
 +  
 +
 +</code> 
 +++++ 
 + 
 +++++TestSafety| 
 +<code java> 
 +import java.util.ArrayList; 
 +import java.util.List; 
 + 
 +public class TestSafety { 
 + public static void main(String[] args) { 
 + List<CheckingAccount> lc = new ArrayList<CheckingAccount>(); 
 + List<SavingsAccount> ls = new ArrayList<SavingsAccount>(); 
 +  
 + lc.add(new CheckingAccount("Fred")); 
 + ls.add(new SavingsAccount("Fred")); 
 +  
 + CheckingAccount ca = lc.get(0); 
 + SavingsAccount sa = ls.get(0); 
 +  
 + System.out.println("Withdraw 150.00 : " + ca.withdraw(150.00)); 
 + System.out.println("Deposit 22.50 : " + ca.deposit(22.50)); 
 + System.out.println("Withdraw 47.62 : " + ca.withdraw(47.62)); 
 + System.out.println("Withdraw 400.00 : " + ca.withdraw(400.00)); 
 + System.out.println("Balance : " + ca.getBalance()); 
 +  
 + System.out.println("========================================="); 
 +  
 + System.out.println("Withdraw 150.00 : " + sa.withdraw(150.00)); 
 + System.out.println("Deposit 22.50 : " + sa.deposit(22.50)); 
 + System.out.println("Withdraw 47.62 : " + sa.withdraw(47.62)); 
 + System.out.println("Withdraw 400.00 : " + sa.withdraw(400.00)); 
 + System.out.println("Balance : " + sa.getBalance()); 
 +
 + 
 +}
 </code> </code>
 ++++ ++++