21
21
< h1 > モデルを使ってソフトウェアを開発しよう: UML初学者向けチュートリアル</ h1 >
22
22
< div class ="details ">
23
23
< span id ="author " class ="author "> 株式会社チェンジビジョン</ span > < br >
24
- < span id ="revnumber "> バージョン html_0701 ,</ span >
25
- < span id ="revdate "> 2023-02-13 </ span >
24
+ < span id ="revnumber "> バージョン html_0711 ,</ span >
25
+ < span id ="revdate "> 2023-05-31 </ span >
26
26
</ div >
27
27
< div id ="toc " class ="toc2 ">
28
28
< div id ="toctitle "> 目次</ div >
@@ -491,8 +491,6 @@ <h4 id="_フレームの処理をプログラムに変換する"><a class="ancho
491
491
< span class ="nb "> puts</ span > < span class ="s1 "> 'fixed.'</ span >
492
492
< span class ="k "> end</ span >
493
493
< span class ="k "> end</ span >
494
-
495
- < span class ="c1 "> # 略</ span >
496
494
< span class ="k "> end</ span > </ code > </ pre >
497
495
</ div >
498
496
</ div >
@@ -530,8 +528,13 @@ <h4 id="_フレームの処理をプログラムに変換する"><a class="ancho
530
528
< div id ="ruby_frame_code02 " class ="listingblock ">
531
529
< div class ="title "> リスト 4.2 【Ruby】score.rb(2)</ div >
532
530
< div class ="content ">
533
- < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="k "> class</ span > < span class ="nc "> Frame</ span >
534
- < span class ="c1 "> # 略</ span >
531
+ < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # frozen_string_literal: true</ span >
532
+
533
+ < span class ="nb "> require</ span > < span class ="s1 "> 'securerandom'</ span >
534
+
535
+ < span class ="c1 "> # Frameは1フレーム分のピン数やボーナスを記録する</ span >
536
+ < span class ="k "> class</ span > < span class ="nc "> Frame</ span >
537
+ < span class ="c1 "> # initialize、actionの定義がここにある</ span >
535
538
536
539
< span class ="k "> def</ span > < span class ="nf "> frame_score</ span > < i class ="conum " data-value ="1 "> </ i > < b > (1)</ b >
537
540
< span class ="vi "> @first</ span > < span class ="o "> +</ span > < span class ="vi "> @second</ span > < span class ="o "> +</ span > < span class ="vi "> @spare_bonus</ span > < span class ="o "> +</ span > < span class ="vi "> @strike_bonus</ span >
@@ -568,9 +571,9 @@ <h4 id="_フレームの処理をプログラムに変換する"><a class="ancho
568
571
< span class ="vi "> @spare_bonus</ span > < span class ="p "> ,</ span > < span class ="vi "> @strike_bonus</ span > < span class ="p "> ,</ span > < span class ="vi "> @state</ span >
569
572
< span class ="k "> end</ span >
570
573
571
- < span class ="kp "> private</ span >
574
+ < span class ="kp "> private</ span > < i class =" conum " data-value =" 5 " > </ i > < b > (5) </ b >
572
575
573
- < span class ="k "> def</ span > < span class ="nf "> before_1st_porc</ span > < span class ="p "> (</ span > < span class ="n "> evt</ span > < span class ="p "> ,</ span > < span class ="n "> pins</ span > < span class ="p "> )</ span > < i class ="conum " data-value ="5 "> </ i > < b > (5 )</ b >
576
+ < span class ="k "> def</ span > < span class ="nf "> before_1st_porc</ span > < span class ="p "> (</ span > < span class ="n "> evt</ span > < span class ="p "> ,</ span > < span class ="n "> pins</ span > < span class ="p "> )</ span > < i class ="conum " data-value ="6 "> </ i > < b > (6 )</ b >
574
577
< span class ="k "> case</ span > < span class ="n "> evt</ span >
575
578
< span class ="k "> when</ span > < span class ="ss "> :PINS</ span >
576
579
< span class ="nb "> puts</ span > < span class ="s2 "> "invalid pins: </ span > < span class ="si "> #{</ span > < span class ="n "> pins</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="k "> if</ span > < span class ="n "> pins</ span > < span class ="p "> .</ span > < span class ="nf "> negative?</ span > < span class ="o "> ||</ span > < span class ="n "> pins</ span > < span class ="o "> ></ span > < span class ="mi "> 10</ span >
@@ -586,7 +589,7 @@ <h4 id="_フレームの処理をプログラムに変換する"><a class="ancho
586
589
< span class ="k "> end</ span >
587
590
< span class ="k "> end</ span >
588
591
589
- < span class ="k "> def</ span > < span class ="nf "> before_2nd_proc</ span > < span class ="p "> (</ span > < span class ="n "> evt</ span > < span class ="p "> ,</ span > < span class ="n "> pins</ span > < span class ="p "> )</ span > < i class ="conum " data-value ="6 "> </ i > < b > (6 )</ b >
592
+ < span class ="k "> def</ span > < span class ="nf "> before_2nd_proc</ span > < span class ="p "> (</ span > < span class ="n "> evt</ span > < span class ="p "> ,</ span > < span class ="n "> pins</ span > < span class ="p "> )</ span > < i class ="conum " data-value ="7 "> </ i > < b > (7 )</ b >
590
593
< span class ="k "> case</ span > < span class ="n "> evt</ span >
591
594
< span class ="k "> when</ span > < span class ="ss "> :PINS</ span >
592
595
< span class ="nb "> puts</ span > < span class ="s2 "> "invalid pins: </ span > < span class ="si "> #{</ span > < span class ="n "> pins</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="k "> if</ span > < span class ="n "> pins</ span > < span class ="p "> .</ span > < span class ="nf "> negative?</ span > < span class ="o "> ||</ span > < span class ="n "> pins</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="mi "> 10</ span > < span class ="o "> -</ span > < span class ="vi "> @first</ span > < span class ="p "> )</ span >
@@ -623,10 +626,14 @@ <h4 id="_フレームの処理をプログラムに変換する"><a class="ancho
623
626
</ tr >
624
627
< tr >
625
628
< td > < i class ="conum " data-value ="5 "> </ i > < b > 5</ b > </ td >
626
- < td > 「1投目の投球を待っている」状態を担当するメソッド。イベント「PINS」を受け取り、1投目のピン数に保存する。その後ストライクかどうか調べ、次の状態へ遷移する 。</ td >
629
+ < td > これ以降のメソッドはプライベート 。</ td >
627
630
</ tr >
628
631
< tr >
629
632
< td > < i class ="conum " data-value ="6 "> </ i > < b > 6</ b > </ td >
633
+ < td > 「1投目の投球を待っている」状態を担当するメソッド。イベント「PINS」を受け取り、1投目のピン数に保存する。その後ストライクかどうか調べ、次の状態へ遷移する。</ td >
634
+ </ tr >
635
+ < tr >
636
+ < td > < i class ="conum " data-value ="7 "> </ i > < b > 7</ b > </ td >
630
637
< td > 「2投目の投球を待っている」状態を担当するメソッド。イベント「PINS」を受け取り、2投目のピン数に保存する。その後スペアかどうか調べ、次の状態へ遷移する。</ td >
631
638
</ tr >
632
639
</ table >
@@ -941,9 +948,7 @@ <h4 id="_スコアの処理をプログラムに変換する"><a class="anchor"
941
948
942
949
< span class ="nb "> require</ span > < span class ="s1 "> 'securerandom'</ span > < i class ="conum " data-value ="1 "> </ i > < b > (1)</ b >
943
950
944
- < span class ="k "> class</ span > < span class ="nc "> Frame</ span >
945
- < span class ="c1 "> # 略</ span >
946
- < span class ="k "> end</ span >
951
+ < span class ="c1 "> # Frameクラスの定義がここにある</ span >
947
952
948
953
< span class ="c1 "> # スコアは各人の10フレーム分のスコアを記録する</ span >
949
954
< span class ="k "> class</ span > < span class ="nc "> Score</ span > < i class ="conum " data-value ="2 "> </ i > < b > (2)</ b >
@@ -977,8 +982,6 @@ <h4 id="_スコアの処理をプログラムに変換する"><a class="anchor"
977
982
< span class ="k "> def</ span > < span class ="nf "> current</ span > < i class ="conum " data-value ="9 "> </ i > < b > (9)</ b >
978
983
< span class ="n "> frame</ span > < span class ="p "> (</ span > < span class ="vi "> @fno</ span > < span class ="p "> )</ span >
979
984
< span class ="k "> end</ span >
980
-
981
- < span class ="c1 "> # 略</ span >
982
985
< span class ="k "> end</ span > </ code > </ pre >
983
986
</ div >
984
987
</ div >
@@ -1028,12 +1031,12 @@ <h4 id="_スコアの処理をプログラムに変換する"><a class="anchor"
1028
1031
< div id ="ruby_score_code02 " class ="listingblock ">
1029
1032
< div class ="title "> リスト 4.4 【Ruby】score.rb(4)</ div >
1030
1033
< div class ="content ">
1031
- < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # 略 </ span >
1034
+ < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # Frameクラスの定義やそれ以前のコードがここにある </ span >
1032
1035
1033
1036
< span class ="c1 "> # スコアは各人の10フレーム分のスコアを記録する</ span >
1034
1037
< span class ="k "> class</ span > < span class ="nc "> Score</ span >
1035
-
1036
- < span class ="c1 "> # 略 </ span >
1038
+ < span class =" c1 " > # アクセサーの定義がここにある </ span >
1039
+ < span class ="c1 "> # initialize、fno2idx、frame、go_next_frame、currentメソッドの定義がここにある </ span >
1037
1040
1038
1041
< span class ="k "> def</ span > < span class ="nf "> prev</ span > < i class ="conum " data-value ="1 "> </ i > < b > (1)</ b >
1039
1042
< span class ="n "> frame</ span > < span class ="p "> (</ span > < span class ="vi "> @fno</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="p "> )</ span >
@@ -1073,8 +1076,6 @@ <h4 id="_スコアの処理をプログラムに変換する"><a class="anchor"
1073
1076
< span class ="k "> def</ span > < span class ="nf "> finished?</ span > < i class ="conum " data-value ="7 "> </ i > < b > (7)</ b >
1074
1077
< span class ="n "> frame</ span > < span class ="p "> (</ span > < span class ="mi "> 10</ span > < span class ="p "> ).</ span > < span class ="nf "> fixed?</ span >
1075
1078
< span class ="k "> end</ span >
1076
-
1077
- < span class ="c1 "> # 略</ span >
1078
1079
< span class ="k "> end</ span > </ code > </ pre >
1079
1080
</ div >
1080
1081
</ div >
@@ -1116,12 +1117,12 @@ <h4 id="_スコアの処理をプログラムに変換する"><a class="anchor"
1116
1117
< div id ="ruby_score_code03 " class ="listingblock ">
1117
1118
< div class ="title "> リスト 4.5 【Ruby】score.rb(5)</ div >
1118
1119
< div class ="content ">
1119
- < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # 略 </ span >
1120
+ < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # Frameクラスの定義やそれ以前のコードがここにある </ span >
1120
1121
1121
1122
< span class ="c1 "> # スコアは各人の10フレーム分のスコアを記録する</ span >
1122
1123
< span class ="k "> class</ span > < span class ="nc "> Score</ span >
1123
-
1124
- < span class ="c1 "> # 略 </ span >
1124
+ < span class =" c1 " > # アクセサーの定義がここにある </ span >
1125
+ < span class ="c1 "> # initializeからfinished?までのメソッドの定義がここにある </ span >
1125
1126
1126
1127
< span class ="k "> def</ span > < span class ="nf "> wait_for_1st_proc</ span > < span class ="p "> (</ span > < span class ="n "> pins</ span > < span class ="p "> )</ span > < i class ="conum " data-value ="1 "> </ i > < b > (1)</ b >
1127
1128
< span class ="n "> current</ span > < span class ="p "> .</ span > < span class ="nf "> action</ span > < span class ="p "> (</ span > < span class ="ss "> :PINS</ span > < span class ="p "> ,</ span > < span class ="n "> pins</ span > < span class ="p "> )</ span > < i class ="conum " data-value ="2 "> </ i > < b > (2)</ b >
@@ -1274,7 +1275,8 @@ <h4 id="_gameクラスの処理"><a class="anchor" href="#_gameクラスの処
1274
1275
< div id ="ruby_game_code01 " class ="listingblock ">
1275
1276
< div class ="title "> リスト 4.6 【Ruby】score.rb(6)</ div >
1276
1277
< div class ="content ">
1277
- < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # 略</ span >
1278
+ < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # FrameクラスとScoreクラスの定義やそれ以前のコードがここにある</ span >
1279
+
1278
1280
< span class ="c1 "> # Gameクラスは複数名の1ゲーム分のスコアのセットを構成する</ span >
1279
1281
< span class ="k "> class</ span > < span class ="nc "> Game</ span >
1280
1282
< span class ="nb "> attr_reader</ span > < span class ="ss "> :id</ span > < span class ="p "> ,</ span > < span class ="ss "> :turn</ span > < span class ="p "> ,</ span > < span class ="ss "> :scores</ span >
@@ -1379,7 +1381,8 @@ <h4 id="_scoresheetクラスの処理"><a class="anchor" href="#_scoresheetク
1379
1381
< div id ="ruby_scoresheet_code01 " class ="listingblock ">
1380
1382
< div class ="title "> リスト 4.7 【Ruby】score.rb(7)</ div >
1381
1383
< div class ="content ">
1382
- < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # 略</ span >
1384
+ < pre class ="rouge highlight "> < code data-lang ="ruby "> < span class ="c1 "> # FrameクラスとScoreクラスとGameクラスの定義やそれ以前のコードがここにある</ span >
1385
+
1383
1386
< span class ="c1 "> # ScoreSheetは、複数名の複数回のGameを記録する</ span >
1384
1387
< span class ="k "> class</ span > < span class ="nc "> ScoreSheet</ span >
1385
1388
< span class ="nb "> attr_accessor</ span > < span class ="ss "> :id</ span > < span class ="p "> ,</ span > < span class ="ss "> :time</ span > < span class ="p "> ,</ span > < span class ="ss "> :games</ span >
@@ -1546,7 +1549,7 @@ <h4 id="_モデルとコードの対応づけは振る舞い設計の前に"><a
1546
1549
</ div >
1547
1550
< div id ="footer ">
1548
1551
< div id ="footer-text ">
1549
- バージョン html_0701 < br >
1552
+ バージョン html_0711 < br >
1550
1553
最終更新 2023-02-06 13:59:37 +0900
1551
1554
</ div >
1552
1555
</ div >
0 commit comments