練習物件導向時的範例
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);
}
}