回答編集履歴

4

public 化

2022/07/27 06:52

投稿

jimbe
jimbe

スコア12632

test CHANGED
@@ -21,16 +21,16 @@
21
21
  private Amount unitprice;
22
22
  private int quantity;
23
23
 
24
- Stationary(String name, Amount unitprice, int quantity) {
24
+ public Stationary(String name, Amount unitprice, int quantity) {
25
25
  this.name = name;
26
26
  this.unitprice = unitprice;
27
27
  this.quantity = quantity;
28
28
  showValue();
29
29
  }
30
- Amount calcTotalAmount() {
30
+ public Amount calcTotalAmount() {
31
31
  return unitprice.multiply(quantity);
32
32
  }
33
- void showValue() {
33
+ public void showValue() {
34
34
  System.out.println(name + " が " + quantity + " 本あります");
35
35
  }
36
36
  }
@@ -38,19 +38,19 @@
38
38
  final class Amount {
39
39
  private final int value;
40
40
 
41
- Amount(int value) {
41
+ public Amount(int value) {
42
42
  this.value = value;
43
43
  }
44
- Amount add(Amount addend) {
44
+ public Amount add(Amount addend) {
45
45
  return new Amount(value + addend.value);
46
46
  }
47
- Amount multiply(int multiplicand) {
47
+ public Amount multiply(int multiplicand) {
48
48
  return new Amount(value * multiplicand);
49
49
  }
50
- Amount addTax() {
50
+ public Amount addTax() {
51
51
  return new Amount((int)(value * 1.08));
52
52
  }
53
- void showValue() {
53
+ public void showValue() {
54
54
  System.out.println("金額は " + value + " 円です");
55
55
  }
56
56
  }

3

コード追加

2022/07/27 04:19

投稿

jimbe
jimbe

スコア12632

test CHANGED
@@ -13,4 +13,45 @@
13
13
  以上から、 `System.out.println(name + " が " + quantity + " 本あります");` は Stationary のコンストラクタで行うと良いように思います。
14
14
 
15
15
  もちろん、 Amount の修正も OK ということですので、設計を変えて (Amount という名前ながらも ) イロイロ載せて解決する方法もあります。その為のコーディング要素を勉強されているかは不明ですが。
16
+
17
+ 私が思ったのはこんな風です。
18
+ ```java
19
+ class Stationary {
20
+ private String name;
21
+ private Amount unitprice;
22
+ private int quantity;
23
+
24
+ Stationary(String name, Amount unitprice, int quantity) {
25
+ this.name = name;
26
+ this.unitprice = unitprice;
27
+ this.quantity = quantity;
28
+ showValue();
29
+ }
30
+ Amount calcTotalAmount() {
31
+ return unitprice.multiply(quantity);
32
+ }
33
+ void showValue() {
34
+ System.out.println(name + " が " + quantity + " 本あります");
35
+ }
36
+ }
37
+
38
+ final class Amount {
39
+ private final int value;
40
+
41
+ Amount(int value) {
42
+ this.value = value;
43
+ }
44
+ Amount add(Amount addend) {
45
+ return new Amount(value + addend.value);
46
+ }
47
+ Amount multiply(int multiplicand) {
16
- (Amount への修正は `Amount multiply(int multiplicand) { return new Amount(value * multiplicand); }` レベルの想定な気はします。 )
48
+ return new Amount(value * multiplicand);
49
+ }
50
+ Amount addTax() {
51
+ return new Amount((int)(value * 1.08));
52
+ }
53
+ void showValue() {
54
+ System.out.println("金額は " + value + " 円です");
55
+ }
56
+ }
57
+ ```

2

修正

2022/07/25 08:39

投稿

jimbe
jimbe

スコア12632

test CHANGED
@@ -13,4 +13,4 @@
13
13
  以上から、 `System.out.println(name + " が " + quantity + " 本あります");` は Stationary のコンストラクタで行うと良いように思います。
14
14
 
15
15
  もちろん、 Amount の修正も OK ということですので、設計を変えて (Amount という名前ながらも ) イロイロ載せて解決する方法もあります。その為のコーディング要素を勉強されているかは不明ですが。
16
- (Amount への修正は `Amount multiply(int multiplicand) { return new Amount(this.value * multiplicand); }` レベルの想定な気はします。 )
16
+ (Amount への修正は `Amount multiply(int multiplicand) { return new Amount(value * multiplicand); }` レベルの想定な気はします。 )

1

追加

2022/07/25 08:31

投稿

jimbe
jimbe

スコア12632

test CHANGED
@@ -13,3 +13,4 @@
13
13
  以上から、 `System.out.println(name + " が " + quantity + " 本あります");` は Stationary のコンストラクタで行うと良いように思います。
14
14
 
15
15
  もちろん、 Amount の修正も OK ということですので、設計を変えて (Amount という名前ながらも ) イロイロ載せて解決する方法もあります。その為のコーディング要素を勉強されているかは不明ですが。
16
+ (Amount への修正は `Amount multiply(int multiplicand) { return new Amount(this.value * multiplicand); }` レベルの想定な気はします。 )