練習物件導向時的範例

Headfirst 深入淺出系列真的是好書

有機會會打上書評

雞仔也還沒看玩啦

這是很前面的一個範例

控制狗門的遙控器

很好玩喔 XD


package OO;

public class Bark {
 
 private String sound;
 
 public Bark(String sound)
 {
  this.sound = sound;
 }
 
 public String getSound()
 {
  return sound;
 }
 
 public boolean equals(Bark bark)
 {
  if( bark instanceof Bark ) //A instanceof B 如果某個 object 屬於該 ClassName(或其衍生類別)的 instance,則傳回true;否則傳回 false
  {
   Bark otherBark = (Bark) bark;
   return true;
  }
  else
   return false;
 }

}



/*
物件導向練習:

 1.遙控器只有一個按鈕.
      若門是關的,按下按鈕開門,
               若門是開的,按下按鈕關門.
              
   2.一但狗們被開啟,若未被關閉,它將自動關閉.           
*/

package OO;

public class DogDoor {
 private boolean open;
 private boolean lock;
 
 public DogDoor()
 {
  this.open = false;
  this.lock = false;
 }
 public void open()
 {
  if(!lock)
  {
   System.out.println("The dog door is open.");
   open = true;
  }
 }
 
 public void close()
 {
  System.out.println("The dog door is close.");
  open = false;
 }
 
 public void LockDoor()
 {
  lock = true;
  System.out.println("DogDoor is lock...");
 }
 
 public boolean isLock()
 {
  return lock;
 }
 
 public boolean isOpen()
 {
  return open;
 }

}


package OO;

import java.io.*;

public class DogDoorSimulator {
 

 public static void main(String[] args) throws IOException
 {
  boolean lock;
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  System.out.print("key in the code: ");
  String code = br.readLine();
  System.out.println("your input:"+code);
   
  DogDoor door = new DogDoor();
  Remote remote = new Remote(door,code);
  lock = remote.CodeLock();
  
  if(!lock)
  {
   System.out.println("Fido barks to go outside...");
   remote.pressButton();
   System.out.println("\nFido has gone outside...");
   //remote.pressButton();
   System.out.println("\nFido's all done...");
   //remote.pressButton();
   System.out.println("\nFido's back inside...");
   //remote.pressButton();
   try
   {
    Thread.currentThread().sleep(10000);
   }catch(InterruptedException e){ }
   System.out.println("\nFido's still outside...");
   remote.pressButton();
  }
 }

}


package OO;

import java.util.*;

public class Remote{
 
 private DogDoor door;
 private String code;
 private boolean lock;
 
 public Remote( DogDoor door , String code )
 {
  this.door = door;
  this.code = code;
 }
 
 public boolean CodeLock()
 { 
  if( code.equals("1234") )
  {
   door.close();
   door.LockDoor();
  }
  else
   System.out.println("The code is wrong");
   
  this.lock = door.isLock();
  
  return lock;
 }
 
 public void pressButton()
 {
  System.out.println("Pressing the remote control button...");
  if( door.isOpen() )
  {
   door.close();
  }
  else
  {
   door.open();
  }
  
  final Timer timer = new Timer();
  timer.schedule(
  new TimerTask()
  {
   public void run()
   {
    door.close();
    timer.cancel();
   }
  }
  , 5000);
 }

}

 

arrow
arrow
    全站熱搜

    flyinsky76 發表在 痞客邦 留言(0) 人氣()