2008年12月13日土曜日

JavaFX Classes

The Customer Example
  1. def customer = Customer {  
  2.      firstName: "John";  
  3.      lastName: "Doe";  
  4.      phoneNum: "(408) 555-1212"  
  5.      address: Address {  
  6.           street: "1 Main Street";  
  7.           city: "Santa Clara";  
  8.           state: "CA";  
  9.           zip: "95050";  
  10.      }  
  11. }  
  12.   
  13. customer.printName();  
  14. customer.printPhoneNum();  
  15. customer.printAddress();  
  16.   
  17. class Address {  
  18.      var street: String;  
  19.      var city: String;  
  20.      var state: String;  
  21.      var zip: String;  
  22. }  
  23.   
  24. class Customer {  
  25.      var firstName: String;  
  26.      var lastName: String;  
  27.      var phoneNum: String;  
  28.      var address: Address;  
  29.   
  30.     function printName() {  
  31.         println("Name: {firstName} {lastName}");  
  32.     }  
  33.   
  34.     function printPhoneNum(){  
  35.         println("Phone: {phoneNum}");  
  36.     }  
  37.   
  38.     function printAddress(){  
  39.         println("Street: {address.street}");  
  40.         println("City: {address.city}");  
  41.         println("State: {address.state}");  
  42.         println("Zip: {address.zip}");  
  43.     }  
  44. }  



Inheriting from Other Class
他のクラスを継承する
  1. abstract class Account {  
  2.   
  3.      var accountNum: Integer;  
  4.      var balance: Number;  
  5.   
  6.      function getBalance(): Number {  
  7.           return balance;  
  8.      }  
  9.   
  10.      function deposit(amount: Number): Void {  
  11.           balance += amount;  
  12.      }  
  13.   
  14.      function withdraw(amount: Number): Void {  
  15.           balance -= amount;  
  16.      }  
  17. }  

ここの abstract は、Account objects は直接作成できないことを意味している
Account を継承したクラスは次のようになる
  1. class SavingsAccount extends Account {  
  2.   
  3.      var minBalance = 100.00;  
  4.      var penalty = 5.00;  
  5.   
  6.      function checkMinBalance() : Void {  
  7.           if(balance < minBalance){  
  8.                balance -= penalty;  
  9.           }  
  10.      }  
  11. }  

この場合、Account の変数と関数はそのまま保持されて、新たに minBalance と penalty 変数と checkMinBalance 関数が追加されている

Account の関数を上書きするには override を使う
  1. class CheckingAccount extends Account {  
  2.   
  3.   var hasOverDraftProtection: Boolean;  
  4.   
  5.   override function withdraw(amount: Number) : Void {  
  6.     if(balance-amount<0 and hasOverDraftProtection){  
  7.   
  8.     // code to borrow money from an   
  9.     // overdraft account would go here  
  10.   
  11.     } else {  
  12.       balance -= amount;   
  13.       // may result in negative account balance!  
  14.     }  
  15.   }  
  16. }  

0 件のコメント:

コメントを投稿