回答編集履歴
2
リストのマークダウンを修正。
    
        answer	
    CHANGED
    
    | @@ -7,57 +7,57 @@ | |
| 7 7 |  | 
| 8 8 | 
             
            ---
         | 
| 9 9 | 
             
            **まず、ジャンケンをざっくりと考えてみます。**
         | 
| 10 | 
            -
             | 
| 10 | 
            +
            - ジャンケンはゲームです。
         | 
| 11 | 
            -
             | 
| 11 | 
            +
            - そのゲームには参加者が複数います。
         | 
| 12 | 
            -
             | 
| 12 | 
            +
            - 参加者はジャンケンの手を1つ同時に出します。
         | 
| 13 | 
            -
             | 
| 13 | 
            +
            - 出した手の強さを競います。
         | 
| 14 | 
            -
             | 
| 14 | 
            +
            - 手の強さはグー>チョキ>パー>グー。
         | 
| 15 15 |  | 
| 16 16 | 
             
            **これらの情報から抽象的な情報と具体的な情報を切り離しつつ、細かく考えます。
         | 
| 17 17 | 
             
            似ている事はまとめます。変わりそうな事は切り離します。**
         | 
| 18 18 | 
             
            【抽象的な情報】
         | 
| 19 | 
            -
             | 
| 19 | 
            +
            - ゲームには参加者が複数必要です。
         | 
| 20 | 
            -
             | 
| 20 | 
            +
            - ゲームにはルールが必要です。
         | 
| 21 | 
            -
             | 
| 21 | 
            +
            - ゲームは開始されます。
         | 
| 22 | 
            -
             | 
| 22 | 
            +
            - 参加者は手を出せます。
         | 
| 23 | 
            -
             | 
| 23 | 
            +
            - 出せる手はルールによって決められます。
         | 
| 24 | 
            -
             | 
| 24 | 
            +
            - 出した手はルールによって結果が判定されます。
         | 
| 25 | 
            -
             | 
| 25 | 
            +
            - 結果は参加者に知らされます。
         | 
| 26 26 |  | 
| 27 27 | 
             
            【具体的な情報】
         | 
| 28 | 
            -
             | 
| 28 | 
            +
            - ジャンケンのルール。 
         | 
| 29 | 
            -
             | 
| 29 | 
            +
                出せる手はグーチョキパーです。
         | 
| 30 | 
            -
             | 
| 30 | 
            +
                手の強さはグー>チョキ>パー>グーです。
         | 
| 31 | 
            -
             | 
| 31 | 
            +
                強い手を出した参加者は勝ちという結果になります。
         | 
| 32 | 
            -
             | 
| 32 | 
            +
                勝ちが決められないときは引き分けという結果になります。
         | 
| 33 | 
            -
             | 
| 33 | 
            +
            - (ジャンケンという)ゲームの流れ。
         | 
| 34 | 
            -
             | 
| 34 | 
            +
                参加者は同時に手を出します。
         | 
| 35 | 
            -
             | 
| 35 | 
            +
                出された手はルールによって勝敗が決められます。
         | 
| 36 | 
            -
             | 
| 36 | 
            +
                参加者は勝敗を知ります。
         | 
| 37 | 
            -
             | 
| 37 | 
            +
                必要なら勝敗が決まるまで繰り返します。
         | 
| 38 | 
            -
             | 
| 38 | 
            +
            - (ジャンケンする)参加者。
         | 
| 39 | 
            -
             | 
| 39 | 
            +
                参加者は人間だったりコンピュータだったりします。
         | 
| 40 40 |  | 
| 41 41 | 
             
            **ここで、抽象的な情報をインターフェースにします。**
         | 
| 42 | 
            -
             | 
| 42 | 
            +
            - ゲーム→IGame
         | 
| 43 | 
            -
             | 
| 43 | 
            +
            - ルール→IRule
         | 
| 44 | 
            -
             | 
| 44 | 
            +
            - 参加者→IPlayer
         | 
| 45 | 
            -
             | 
| 45 | 
            +
            - 手(原因)→ICause
         | 
| 46 | 
            -
             | 
| 46 | 
            +
            - 結果→IResult
         | 
| 47 47 |  | 
| 48 48 | 
             
            **これらの関係を、インターフェースのメソッドで示します。**
         | 
| 49 | 
            -
             | 
| 49 | 
            +
            - ゲームは参加者が複数必要です。→void IGame.joinPlayers(IPlayer)
         | 
| 50 | 
            -
             | 
| 50 | 
            +
            - ゲームにはルールが必要です。→void IGame.followRule(IRule)
         | 
| 51 | 
            -
             | 
| 51 | 
            +
            - ゲームは開始されます。→void IGame.start()
         | 
| 52 | 
            -
             | 
| 52 | 
            +
            - 参加者は手を出せます。→ICause IPlayer.serveCause()
         | 
| 53 | 
            -
             | 
| 53 | 
            +
            - 出せる手はルールによって決められます。→void IRule.valid(ICause)
         | 
| 54 | 
            -
             | 
| 54 | 
            +
            - 出した手はルールによって結果が判定されます。→IResult IRule.match(ICause, ICause)
         | 
| 55 | 
            -
             | 
| 55 | 
            +
            - 結果は参加者に知らされます。→void IPlayer.result(IResult)
         | 
| 56 56 |  | 
| 57 57 | 
             
            **具体的な情報は、これらインターフェースを実装したクラスになります。**
         | 
| 58 | 
            -
             | 
| 58 | 
            +
            - ジャンケンのルール。→JankenRule
         | 
| 59 | 
            -
             | 
| 59 | 
            +
            - (ジャンケンという)ゲームの流れ。→OnceGame、DrawLoopGame
         | 
| 60 | 
            -
             | 
| 60 | 
            +
            - (ジャンケンする)参加者。→CauseStrategiedPlayer
         | 
| 61 61 | 
             
            ここでは参加者から、人間やコンピュータという具体性を、戦略として抽象化し分離しています。
         | 
| 62 62 | 
             
            →JankenCauseAtRandom、JankenCauseStdin
         | 
| 63 63 |  | 
1
全角スペースでのインデントが反映されていないので、アンダースコアにした。
    
        answer	
    CHANGED
    
    | @@ -26,17 +26,17 @@ | |
| 26 26 |  | 
| 27 27 | 
             
            【具体的な情報】
         | 
| 28 28 | 
             
            ・ジャンケンのルール。
         | 
| 29 | 
            -
             | 
| 29 | 
            +
            _・出せる手はグーチョキパーです。
         | 
| 30 | 
            -
             | 
| 30 | 
            +
            _・手の強さはグー>チョキ>パー>グーです。
         | 
| 31 | 
            -
             | 
| 31 | 
            +
            _・強い手を出した参加者は勝ちという結果になります。
         | 
| 32 | 
            -
             | 
| 32 | 
            +
            _・勝ちが決められないときは引き分けという結果になります。
         | 
| 33 33 | 
             
            ・(ジャンケンという)ゲームの流れ。
         | 
| 34 | 
            -
             | 
| 34 | 
            +
            _・参加者は同時に手を出します。
         | 
| 35 | 
            -
             | 
| 35 | 
            +
            _・出された手はルールによって勝敗が決められます。
         | 
| 36 | 
            -
             | 
| 36 | 
            +
            _・参加者は勝敗を知ります。
         | 
| 37 | 
            -
             | 
| 37 | 
            +
            _・必要なら勝敗が決まるまで繰り返します。
         | 
| 38 38 | 
             
            ・(ジャンケンする)参加者。
         | 
| 39 | 
            -
             | 
| 39 | 
            +
            _・参加者は人間だったりコンピュータだったりします。
         | 
| 40 40 |  | 
| 41 41 | 
             
            **ここで、抽象的な情報をインターフェースにします。**
         | 
| 42 42 | 
             
            ・ゲーム→IGame
         | 
