質問編集履歴

3

2021/08/19 03:24

投稿

pofinpouty
pofinpouty

スコア20

test CHANGED
@@ -1 +1 @@
1
- C# 共通するメンバを1つのクラスに集約したい
1
+ C# より良い書き方があひましたら教えて欲しです
test CHANGED
@@ -1,25 +1,19 @@
1
- 学習サイトでC#について学んでいます。
2
-
3
- 二種類の図形、四角形(Box)と、三角形(Triangle)クラスのインスタンスを生成し、各クラスのメソッドを実行するプログラムである。この2つのクラスには、共通するメンバが存在する。
4
-
5
- そこで、これら2つのクラスに共通するメンバを、平面図形(PlaneFigure)クラスに集約し、Boxクラス、およびTriangleクラスはそれらクラスを継承したものにするように、プログラムを書きかかえなさい。だし、こPlaneFigureクラス、抽象プロパティAreaを持つ抽象クラスとすること
1
+ https://csharp.sevendays-study.com/problemex4.htmlのprobex4-2に書いてある問題で下記のように記述したのですが警告で『area使用されていません』表示されています。
6
-
7
-
8
-
9
- という問題があるのですが抽象クラスであるPlaneFigureに何を書けばよいのか検討がついておりません…
2
+
10
-
3
+
4
+
11
- 『PlaneFigureクラス、抽象プロパティAreaを持つ抽象クラスとすこと。』とあるのですが、widthとheightも共通していに必要なのか?など混乱す。
5
+ 期待される実行結果通りになってるのですが、恐らく出題者の意図はareaを使って欲しいだと思うのでよりよ解答例がありましたらアドバイスなどしいす。
12
-
13
- 解答例などございましたらご教示願いたいです。
6
+
14
-
15
-
16
-
17
- 下記です。
7
+ 下記です。
8
+
9
+
18
10
 
19
11
  ```c#
20
12
 
21
13
 
22
14
 
15
+ //メインクラス
16
+
23
17
  class Program
24
18
 
25
19
  {
@@ -30,7 +24,7 @@
30
24
 
31
25
  // 四角形の生成
32
26
 
33
- Box b = new Box(2.0,4.0);
27
+ Box b = new Box(2.0, 4.0);
34
28
 
35
29
  // 三角形の生成
36
30
 
@@ -54,35 +48,109 @@
54
48
 
55
49
 
56
50
 
57
- // 四角形クラス
51
+ //四角形クラス
58
-
52
+
59
- class Box
53
+ class Box:PlaneFigure
60
-
54
+
61
- {
55
+ {
62
-
63
- // 面積
56
+
64
-
65
- private double area = 0;
66
-
67
- // 幅
68
-
69
- private double width = 0;
70
-
71
- // 高さ
72
-
73
- private double height = 0;
74
-
75
- // コンストラクタ(引数なし)
57
+ // コンストラクタ
76
-
58
+
77
- public Box()
59
+ public Box(double width, double height):base(width, height)
78
-
60
+
79
- {
61
+ {
80
-
62
+
63
+
64
+
81
- }
65
+ }
66
+
67
+
68
+
69
+ // 面積の取得
70
+
71
+ public override double Area
72
+
73
+ {
74
+
75
+ get { return Width * Height; }
76
+
77
+ }
78
+
79
+ }
80
+
81
+
82
+
83
+ ```
84
+
85
+
86
+
87
+ ```c#
88
+
89
+
90
+
91
+ //三角形クラス
92
+
93
+ class Triangle : PlaneFigure
94
+
95
+ {
82
96
 
83
97
  // コンストラクタ(引数あり)
84
98
 
99
+ public Triangle(double width, double height):base(width, height)
100
+
101
+ {
102
+
103
+
104
+
105
+ }
106
+
107
+
108
+
109
+ // 面積の取得
110
+
111
+ public override double Area
112
+
113
+ {
114
+
115
+ get { return Width * Height / 2.0; }
116
+
117
+
118
+
119
+ }
120
+
121
+ }
122
+
123
+
124
+
125
+ ```
126
+
127
+ ```C#
128
+
129
+
130
+
131
+ //集約クラス
132
+
133
+ abstract class PlaneFigure
134
+
135
+ {
136
+
137
+ //面積 (警告で「areaは使用されていません」と表示される)
138
+
139
+ private double area;
140
+
141
+ //幅
142
+
143
+ private double width;
144
+
145
+ //高さ
146
+
147
+ private double height;
148
+
149
+
150
+
151
+ //コンストラクタ
152
+
85
- public Box(double width, double height)
153
+ public PlaneFigure(double width, double height)
86
154
 
87
155
  {
88
156
 
@@ -92,7 +160,7 @@
92
160
 
93
161
  }
94
162
 
95
- // 幅のプロパティ
163
+ //幅のプロパティ
96
164
 
97
165
  public double Width
98
166
 
@@ -104,7 +172,9 @@
104
172
 
105
173
  }
106
174
 
175
+
176
+
107
- // 高さのプロパティ
177
+ //高さのプロパティ
108
178
 
109
179
  public double Height
110
180
 
@@ -116,112 +186,20 @@
116
186
 
117
187
  }
118
188
 
189
+
190
+
119
- // 面積の取得
191
+ //面積の抽象プロパティ
120
-
192
+
121
- public double Area
193
+ public abstract double Area
122
-
194
+
123
- {
195
+ {
124
-
196
+
125
- get { return width * height; }
197
+ get;
126
-
198
+
127
- }
199
+ }
128
-
200
+
129
- }
201
+ }
130
-
131
-
132
-
202
+
203
+
204
+
133
- ```
205
+ ```
134
-
135
-
136
-
137
- ```c#
138
-
139
-
140
-
141
- // 三角形クラス
142
-
143
- class Triangle
144
-
145
- {
146
-
147
- // 面積
148
-
149
- private double area = 0;
150
-
151
- // 底辺
152
-
153
- private double width = 0;
154
-
155
- // 高さ
156
-
157
- private double height = 0;
158
-
159
- // コンストラクタ(引数なし)
160
-
161
- public Triangle()
162
-
163
- {
164
-
165
- }
166
-
167
- // コンストラクタ(引数あり)
168
-
169
- public Triangle(double width, double height)
170
-
171
- {
172
-
173
- this.width = width;
174
-
175
- this.height = height;
176
-
177
- }
178
-
179
- // 幅のプロパティ
180
-
181
- public double Width
182
-
183
- {
184
-
185
- get { return width; }
186
-
187
- set { width = value; }
188
-
189
- }
190
-
191
- // 高さのプロパティ
192
-
193
- public double Height
194
-
195
- {
196
-
197
- get { return height; }
198
-
199
- set { height = value; }
200
-
201
- }
202
-
203
- // 面積の取得
204
-
205
- public double Area
206
-
207
- {
208
-
209
- get { return width * height / 2.0; }
210
-
211
- }
212
-
213
- }
214
-
215
-
216
-
217
- ```
218
-
219
- **期待される実行結果**
220
-
221
- 幅2、高さ4の四角形の面積は8
222
-
223
- 幅4、高さ1.5の三角形の面積は3
224
-
225
-
226
-
227
- https://csharp.sevendays-study.com/problemex4.htmlのprobex4-2に書いてある問題です

2

2021/08/19 03:24

投稿

pofinpouty
pofinpouty

スコア20

test CHANGED
File without changes
test CHANGED
@@ -221,3 +221,7 @@
221
221
  幅2、高さ4の四角形の面積は8
222
222
 
223
223
  幅4、高さ1.5の三角形の面積は3
224
+
225
+
226
+
227
+ https://csharp.sevendays-study.com/problemex4.htmlのprobex4-2に書いてある問題です

1

2021/08/18 17:17

投稿

pofinpouty
pofinpouty

スコア20

test CHANGED
File without changes
test CHANGED
@@ -215,3 +215,9 @@
215
215
 
216
216
 
217
217
  ```
218
+
219
+ **期待される実行結果**
220
+
221
+ 幅2、高さ4の四角形の面積は8
222
+
223
+ 幅4、高さ1.5の三角形の面積は3