teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

2021/08/19 03:24

投稿

pofinpouty
pofinpouty

スコア20

title CHANGED
@@ -1,1 +1,1 @@
1
- C# 共通するメンバを1つのクラスに集約したい
1
+ C# より良い書き方があひましたら教えて欲しです
body CHANGED
@@ -1,20 +1,17 @@
1
- 学習サイトでC#について学んでいます。
2
- 二種類の図形、四角形(Box)と、三角形(Triangle)クラスのインスタンスを生成し、各クラスのメソッドを実行するプログラムである。この2つのクラスには、共通するメンバが存在する。
3
- そこで、これら2つクラス共通すメンバを平面図形(PlaneFigure)クラスに集約し、Boxクラス、およびTriangleクラスは、それらクラスを継承したものにするように、プログラムを書きかかえなさい。ただ、こPlaneFigureクラス、抽象プロパティAreaを持つ抽象クラスとすること
1
+ https://csharp.sevendays-study.com/problemex4.htmlprobex4-2書いてあ問題で下記のように記述ですが警告で『area使用されていません』表示されています。
4
2
 
5
- という問題があるのですが抽象クラスであるPlaneFigureに何を書けばよいのか検討がついておりません…
6
- 『PlaneFigureクラス、抽象プロパティAreaを持つ抽象クラスとすこと。』とあるのですが、widthとheightも共通しているのに必要ないのか?など混乱す。
3
+ 期待される実行結果通りになってるのですが、恐らく出題者の意図はareaを使って欲しいのだと思うのでよりよい解答例がありましたらアドバイスなどしいす。
7
- 解答例などございましたらご教示願いたいです。
4
+ 下記コードです。
8
5
 
9
- 下記ソースです。
10
6
  ```c#
11
7
 
8
+ //メインクラス
12
9
  class Program
13
10
  {
14
11
  static void Main(string[] args)
15
12
  {
16
13
  // 四角形の生成
17
- Box b = new Box(2.0,4.0);
14
+ Box b = new Box(2.0, 4.0);
18
15
  // 三角形の生成
19
16
  Triangle t = new Triangle(4.0, 1.5);
20
17
  Console.WriteLine("幅{0}、高さ{1}の四角形の面積は{2}", b.Width, b.Height, b.Area);
@@ -26,89 +23,81 @@
26
23
 
27
24
  ```c#
28
25
 
29
- // 四角形クラス
26
+ //四角形クラス
30
- class Box
27
+ class Box:PlaneFigure
31
28
  {
32
- // 面積
33
- private double area = 0;
34
- // 幅
35
- private double width = 0;
36
- // 高さ
37
- private double height = 0;
38
- // コンストラクタ(引数なし)
29
+ // コンストラクタ
39
- public Box()
30
+ public Box(double width, double height):base(width, height)
40
31
  {
32
+
41
33
  }
34
+
42
- // コンストラクタ(引数あり)
35
+ // 面積の取得
43
- public Box(double width, double height)
36
+ public override double Area
44
37
  {
45
- this.width = width;
46
- this.height = height;
38
+ get { return Width * Height; }
47
39
  }
40
+ }
41
+
42
+ ```
43
+
44
+ ```c#
45
+
48
- // 幅のプロパティ
46
+ //三角形クラス
49
- public double Width
47
+ class Triangle : PlaneFigure
48
+ {
49
+ // コンストラクタ(引数あり)
50
+ public Triangle(double width, double height):base(width, height)
50
51
  {
51
- get { return width; }
52
+
52
- set { width = value; }
53
53
  }
54
- // 高さのプロパティ
54
+
55
- public double Height
56
- {
57
- get { return height; }
58
- set { height = value; }
59
- }
60
55
  // 面積の取得
61
- public double Area
56
+ public override double Area
62
57
  {
63
- get { return width * height; }
58
+ get { return Width * Height / 2.0; }
59
+
64
60
  }
65
61
  }
66
62
 
67
63
  ```
64
+ ```C#
68
65
 
66
+ //集約クラス
67
+ abstract class PlaneFigure
68
+ {
69
+ //面積 (警告で「areaは使用されていません」と表示される)
70
+ private double area;
69
- ```c#
71
+ //幅
72
+ private double width;
73
+ //高さ
74
+ private double height;
70
75
 
71
- // 三角形クラス
72
- class Triangle
73
- {
74
- // 面積
75
- private double area = 0;
76
- // 底辺
77
- private double width = 0;
78
- // 高さ
79
- private double height = 0;
80
- // コンストラクタ(引数なし)
76
+ //コンストラクタ
81
- public Triangle()
77
+ public PlaneFigure(double width, double height)
82
78
  {
83
- }
84
- // コンストラクタ(引数あり)
85
- public Triangle(double width, double height)
86
- {
87
79
  this.width = width;
88
80
  this.height = height;
89
81
  }
90
- // 幅のプロパティ
82
+ //幅のプロパティ
91
83
  public double Width
92
84
  {
93
85
  get { return width; }
94
86
  set { width = value; }
95
87
  }
88
+
96
- // 高さのプロパティ
89
+ //高さのプロパティ
97
90
  public double Height
98
91
  {
99
92
  get { return height; }
100
93
  set { height = value; }
101
94
  }
95
+
102
- // 面積の取得
96
+ //面積の抽象プロパティ
103
- public double Area
97
+ public abstract double Area
104
98
  {
105
- get { return width * height / 2.0; }
99
+ get;
106
- }
100
+ }
107
101
  }
108
102
 
109
- ```
103
+ ```
110
- **期待される実行結果**
111
- 幅2、高さ4の四角形の面積は8
112
- 幅4、高さ1.5の三角形の面積は3
113
-
114
- https://csharp.sevendays-study.com/problemex4.htmlのprobex4-2に書いてある問題です

2

2021/08/19 03:24

投稿

pofinpouty
pofinpouty

スコア20

title CHANGED
File without changes
body CHANGED
@@ -109,4 +109,6 @@
109
109
  ```
110
110
  **期待される実行結果**
111
111
  幅2、高さ4の四角形の面積は8
112
- 幅4、高さ1.5の三角形の面積は3
112
+ 幅4、高さ1.5の三角形の面積は3
113
+
114
+ https://csharp.sevendays-study.com/problemex4.htmlのprobex4-2に書いてある問題です

1

2021/08/18 17:17

投稿

pofinpouty
pofinpouty

スコア20

title CHANGED
File without changes
body CHANGED
@@ -106,4 +106,7 @@
106
106
  }
107
107
  }
108
108
 
109
- ```
109
+ ```
110
+ **期待される実行結果**
111
+ 幅2、高さ4の四角形の面積は8
112
+ 幅4、高さ1.5の三角形の面積は3