回答編集履歴

2

コードの修正に伴い、説明文の内容も変更した

2016/02/08 00:48

投稿

usk
usk

スコア397

test CHANGED
@@ -8,35 +8,35 @@
8
8
 
9
9
 
10
10
 
11
+ **トレイトの考え方が無かった場合**
12
+
11
13
  * 親クラス:「先生」
12
14
 
13
- * トレイト:「国語の先生」「数学の先生」「英語の先生」
15
+ * 子クラス:「国語の先生」「数学の先生」「英語の先生」**「国語と英語の先生」**
14
-
15
- * 実態:「山田さん(担当:国語)」「小池(担当:数学・英語)」
16
16
 
17
17
 
18
18
 
19
- この場合。。。
20
-
21
- * 山田さんは「先生」クラスを継承し、「国語の先生」を use することになります。
22
-
23
- * 小池さんは「先生」クラスを継承し、「数学の先生」「英語の先生」を use することになります
19
+ 国語と英語の先生」クラス、「国語の先生」クラスの内容と「英語の先生」クラスの内容再度記述する必要がある
24
20
 
25
21
 
26
-
27
- **トレイトの考え方が無かった場合**
28
-
29
- 小池さんは、「数学と英語の先生」クラスを新たに生成し、それを継承する。
30
22
 
31
23
 
32
24
 
33
25
  **トレイトの場合**
34
26
 
27
+ * 親クラス:「先生」
28
+
29
+ * トレイト:「国語担当」「数学担当」「英語担当」
30
+
35
- 小池さんは「数学の先生」「英語の先生」を use するだけで、両方関数を利用することができます。
31
+ * 子クラス:国語の先生」「数学の先生」「英語の先生」**「国語と英語先生」**
36
32
 
37
33
 
38
34
 
35
+ 「国語と英語の先生」クラスは、「国語担当」と「英語担当」を use すればよい。
36
+
37
+
38
+
39
- そして、今後、○×先生(担当:国語・英語)が赴任する際は、「先生を継承し、国語の先生」「英語の先生」を use すれば良い・・・ということになります。
39
+ そして、今後、「数学と英語の先生が赴任する際は、「数学担当「英語担当」を use したクラスを作成・・・ということになります。
40
40
 
41
41
 
42
42
 

1

コードを修正

2016/02/08 00:48

投稿

usk
usk

スコア397

test CHANGED
@@ -46,6 +46,12 @@
46
46
 
47
47
  ```PHP
48
48
 
49
+ /*
50
+
51
+ * 親クラス
52
+
53
+ */
54
+
49
55
  class 先生 {
50
56
 
51
57
  public function 採点() {
@@ -54,7 +60,11 @@
54
60
 
55
61
  }
56
62
 
63
+
64
+
65
+ /* (各科目担当の定義)トレイト */
66
+
57
- trait 数学の先生 {
67
+ trait 数学担当 {
58
68
 
59
69
  public function 数学の授業() {
60
70
 
@@ -62,7 +72,9 @@
62
72
 
63
73
  }
64
74
 
75
+
76
+
65
- trait 英語の先生 {
77
+ trait 英語担当 {
66
78
 
67
79
  public function 英語の授業() {
68
80
 
@@ -70,7 +82,9 @@
70
82
 
71
83
  }
72
84
 
85
+
86
+
73
- trait 国語の先生 {
87
+ trait 国語担当 {
74
88
 
75
89
  public function 国語の授業() {
76
90
 
@@ -80,23 +94,33 @@
80
94
 
81
95
 
82
96
 
83
- class 山田 extends 先生 {
97
+ /**
84
98
 
85
- use 国語の先生;
99
+ * 子クラス
86
100
 
87
- }
101
+ */
88
102
 
89
- class 小池 extends 先生 {
103
+ class 国語の先生 extends 先生 {
90
104
 
91
- use 数学の先生;
92
-
93
- use の先生;
105
+ use 担当;
94
106
 
95
107
  }
96
108
 
97
109
 
98
110
 
111
+ class 数学と英語の先生 extends 先生 {
112
+
113
+ use 数学担当;
114
+
115
+ use 英語担当;
116
+
117
+ }
118
+
119
+
120
+
121
+ // 小池先生
122
+
99
- $koike = new 小池();
123
+ $koike = new 数学と英語の先生();
100
124
 
101
125
  $koike->数学の授業();
102
126
 
@@ -106,7 +130,9 @@
106
130
 
107
131
 
108
132
 
133
+ // 山田先生
134
+
109
- $yamada = new 山田();
135
+ $yamada = new 国語の先生();
110
136
 
111
137
  $yamada->国語の授業();
112
138
 
@@ -118,7 +144,11 @@
118
144
 
119
145
 
120
146
 
147
+ /* ------------- 国語と英語の先生が赴任した場合 --------------- */
148
+
149
+
150
+
121
- class ●× extends 先生{
151
+ class 国語と英語の先生 extends 先生{
122
152
 
123
153
  use 国語の先生;
124
154
 
@@ -128,7 +158,7 @@
128
158
 
129
159
 
130
160
 
131
- $newTeacher = new ●×();
161
+ $newTeacher = new 国語と英語の先生();
132
162
 
133
163
  $newTeacher->国語の授業();
134
164