Skip to content

Instantly share code, notes, and snippets.

@rotelstift
Last active November 30, 2016 06:44
Show Gist options
  • Save rotelstift/a5fd0038b0a52189dc7cbf1721d60464 to your computer and use it in GitHub Desktop.
Save rotelstift/a5fd0038b0a52189dc7cbf1721d60464 to your computer and use it in GitHub Desktop.
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