Last active
November 30, 2016 06:44
-
-
Save rotelstift/a5fd0038b0a52189dc7cbf1721d60464 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.InputStreamReader; | |
import java.util.Random; | |
public class CallingMethod{ | |
public static void main(String[] args){ | |
//電話、メンバー、スタッフのインスタンスを作る | |
Telephone phone = new Telephone(); | |
Member urabe = new Member("卜部"); | |
Staff otsuka = new Staff("大塚"); | |
urabe.callOn(phone); | |
urabe.askSomeToTel(phone, "名前"); | |
if(urabe.confirmToStaff(otsuka)){ | |
otsuka.askSomeToTel(phone, "用件"); | |
otsuka.listen(); | |
otsuka.callOff(phone); | |
}else{ | |
urabe.askSomeToTel(phone, otsuka.toKnow()); | |
urabe.listen(); | |
urabe.callOff(phone); | |
otsuka.askMember(urabe); | |
} | |
} | |
} | |
//電話のクラス定義 | |
class Telephone { | |
public Boolean call(){ | |
return true; | |
} | |
//質問を引数に取り、答えを返す関数 | |
public String answer(String question){ | |
String telNumber = "090-0000-0000"; | |
String myName = "東京太郎"; | |
String mutter = "メールの内容の確認"; | |
String ifNoAnswer = "何を訊いているんだ!"; | |
System.out.print(myName + " : "); | |
System.out.println(question + "ですか?"); | |
//訊かれていることに答えを返す | |
switch(question){ | |
case "電話番号": | |
System.out.print(myName + " : "); | |
System.out.println(telNumber + "です。"); | |
return telNumber; | |
case "名前": | |
System.out.print(myName + " : "); | |
System.out.println(myName + "です。"); | |
return myName; | |
case "用件": | |
System.out.print(myName + " : "); | |
System.out.println(mutter + "です。"); | |
return mutter; | |
} | |
//答えが用意されていなかった場合、デフォルトで以下を返す。 | |
System.out.print(myName + " : "); | |
System.out.println(ifNoAnswer); | |
return ifNoAnswer; | |
} | |
public Boolean switchOff(){ | |
return true; | |
} | |
} | |
//電話を取る人のクラス定義 | |
abstract class Caller { | |
String myName = ""; | |
String hearing = ""; | |
Caller(String name){ | |
myName = name; | |
} | |
//電話に出た時の行動 | |
public void callOn(Telephone phone){ | |
if(phone.call()){ | |
System.out.print(myName + " : "); | |
System.out.println("もしもし?"); | |
return; | |
}else{ | |
System.out.print(myName + " : "); | |
System.out.println("なんだイタ電か。"); | |
return; | |
} | |
} | |
//質問を聞く関数 | |
public void askSomeToTel(Telephone phone, String asked){ | |
System.out.print(myName + " : "); | |
System.out.println(asked + "をお伺いしてもよろしいでしょうか?"); | |
hearing = phone.answer(asked); | |
return; | |
} | |
//相手の話を聞いた時の行動 | |
public void listen(){ | |
System.out.print(myName + " : "); | |
System.out.println("復唱します、「" + hearing + "」ですね。"); | |
return; | |
} | |
//電話を切る時の行動 | |
public void callOff(Telephone phone){ | |
if(phone.switchOff()){ | |
System.out.print(myName + " : "); | |
System.out.println("それでは、失礼します。"); | |
//return; | |
}else{ | |
System.out.print(myName + " : "); | |
System.out.println("もう一度お伺いしてもよろしいでしょうか?"); | |
return; | |
} | |
} | |
} | |
//電話を取る人を継承して作る、メンバーという名前のクラス | |
class Member extends Caller{ | |
Member(String name){ | |
super(name); | |
} | |
//スタッフに確認を取るメソッド | |
public Boolean confirmToStaff(Staff staff){ | |
System.out.print(myName + " : "); | |
System.out.println("確認いたしますので、少々お待ちください。"); | |
if(staff.canCallNow()){ | |
System.out.print(myName + " : "); | |
System.out.println("ただいまスタッフに換わります。"); | |
return true; | |
}else{ | |
System.out.print(myName + " : "); | |
System.out.println("申し訳ございません、ただいまスタッフは席を外しております。"); | |
return false; | |
} | |
} | |
//聞いた質問の答えを答える関数 | |
public void answerHeardFromTel(){ | |
System.out.print(myName + " : "); | |
System.out.println(hearing + "と言っていました。"); | |
return; | |
} | |
} | |
//電話を取る人を継承して作る、スタッフという名前のクラス | |
class Staff extends Caller{ | |
//String myName = ""; | |
Staff(String name) { | |
super(name); | |
} | |
//今電話に出られるかどうか返答するメソッド | |
//ランダムで電話に出られるかどうか答える | |
public Boolean canCallNow(){ | |
//ランダムでtrueかfalseを返す | |
Random rnd = new Random(); | |
if(rnd.nextBoolean()){ | |
System.out.print(myName + " : "); | |
System.out.println("今出られます。"); | |
return true; | |
}else{ | |
System.out.print(myName + " : "); | |
System.out.println("今出られません。"); | |
return false; | |
} | |
} | |
//知りたいことをランダムで返すメソッド | |
public String toKnow(){ | |
String asking = ""; | |
//ランダムで0か1か2を返す | |
Random rnd = new Random(); | |
int ran = rnd.nextInt(3); | |
switch(ran){ | |
case 0: | |
asking = "電話番号"; | |
break; | |
case 1: | |
asking = "名前"; | |
break; | |
case 2: | |
asking = "用件"; | |
break; | |
} | |
System.out.print(myName + " : "); | |
System.out.println(asking + "を聞いてください。"); | |
return asking; | |
} | |
//メンバーに電話が言っていたこと聞くメソッド | |
//事前にMember.askSomeToTelを実行しておくこと | |
public void askMember(Member member){ | |
System.out.print(myName + " : "); | |
System.out.println("なんと言っていましたか?"); | |
member.answerHeardFromTel(); | |
return; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment