質問編集履歴

1

追加質問

2019/10/31 09:58

投稿

rimokonTenko_mo
rimokonTenko_mo

スコア12

test CHANGED
@@ -1 +1 @@
1
- 依存関係をなくそると、他のクラスにアクセスしにってまうのですが、、、
1
+ クラスの関係をうすればいいかわからなくなりま
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  ```ここに言語名を入力
16
16
 
17
- public Main{
17
+ public class Main{
18
18
 
19
19
  static public void main(String[] args){
20
20
 
@@ -52,9 +52,9 @@
52
52
 
53
53
  class Day{
54
54
 
55
- public Plan[] plans;
55
+ public ArrayList<Plan> plans;
56
-
56
+
57
- public CompletePlan[] completePlans;
57
+ public ArrayList<CompletePlan> completePlans;//日ごとに格納
58
58
 
59
59
  public int date;
60
60
 
@@ -66,6 +66,40 @@
66
66
 
67
67
  }
68
68
 
69
+
70
+
71
+ //ユーザーからの入力の関数から呼ばれる(actionPerformed()とか)
72
+
73
+ public void AddPlan(String name, int willDoAmount){
74
+
75
+ plans.add(new Plan(name, willDoAmount);
76
+
77
+ }
78
+
79
+
80
+
81
+ public void ShowPlans(){
82
+
83
+ //プランを表示
84
+
85
+ }
86
+
87
+
88
+
89
+ public void ShowCompletePlans(){
90
+
91
+ //完了したプランを表示
92
+
93
+ }
94
+
95
+
96
+
97
+ public void AddCompletePlan(CompletePlan comp){
98
+
99
+ completePlans.add(comp);
100
+
101
+ }
102
+
69
103
  }
70
104
 
71
105
 
@@ -74,11 +108,15 @@
74
108
 
75
109
  public String todoName;
76
110
 
77
- public int didAmount;
111
+ public int willDoAmount;
112
+
78
-
113
+ public ArrayList<CompletePlan> completes;//プランごとに格納
114
+
79
-
115
+  //↑このデータは構造は違えど同じデータが格納されているのが気になります
80
-
116
+
117
+
118
+
81
- public Plan(String todoName){
119
+ public Plan(String todoName, int willDoAmount){
82
120
 
83
121
  this.todoName = todoName;
84
122
 
@@ -86,15 +124,43 @@
86
124
 
87
125
 
88
126
 
89
- //問題メソッド(完了したこを追加する)
127
+ //ユーザーから入力の関数から呼ばれる(actionPerformed())
90
-
128
+
91
- public void Complete(int date){
129
+ public void AddCompletePlan(int date, int amount){
92
-
93
- new CompletePlan(todoName);
130
+
94
-
95
- //↑生成するとはきても指定された日のDayを取得する手段がわからないのです
131
+ //こで、DayにCompletePlan追加したいが、取得方法がわからない
132
+
96
-
133
+ completes.add(new CompletePlan(amount, this.name));
134
+
97
- }
135
+ }
136
+
137
+
138
+
139
+ //リストにあるCompletePlanからdidAmountの総数から完了したかどうか算出します
140
+
141
+ public boolean isComplete(){
142
+
143
+ int didAmount = 0;
144
+
145
+ for(CompletePlan comp : completes){
146
+
147
+ didAmount += comp.didAmount;
148
+
149
+ }
150
+
151
+
152
+
153
+ if(didAmount >= willDoAmount){
154
+
155
+ return true;
156
+
157
+ }
158
+
159
+
160
+
161
+ return false;
162
+
163
+ }
98
164
 
99
165
  }
100
166
 
@@ -104,12 +170,16 @@
104
170
 
105
171
  String todoName;
106
172
 
107
-
173
+ int didAmount;
108
-
174
+
175
+
176
+
109
- public CompletePlan(String todoName){
177
+ public CompletePlan(int didAmount, String todoName){
110
178
 
111
179
  this.todoName = todoName;
112
180
 
181
+ this.didAmount = didAmount;
182
+
113
183
  }
114
184
 
115
185
  }
@@ -145,3 +215,53 @@
145
215
 
146
216
 
147
217
  今はJavaを学習している途中です。独学なため、他の人のソースも、例題みたいなもの以外見たことがないので、これであっているのかよくわからない次第です。
218
+
219
+
220
+
221
+ ###修正・補足
222
+
223
+ 助言を頂き、ありがとうございました
224
+
225
+
226
+
227
+ しかし、質問するときに、コードを省いてしまった点や説明不足の点がありました。
228
+
229
+
230
+
231
+ まず、CompletePlanはPlanから生成します。(Dayから生成すると、Planに格納ができなくなると思います。なぜなら、Planの日付とCompletePlanの日付が違う場合があるからです。予定の日と同じ日するとは限りません。)
232
+
233
+
234
+
235
+ また、CompletePlanを改めてクラスとして作ったのは(初めはisCompleteで作っていたのですが)何回かに分けて予定を実行する事を考えたからです。
236
+
237
+
238
+
239
+ 以上の点が抜けていました。説明が下手で、すみませんでした。
240
+
241
+
242
+
243
+ ###追加質問
244
+
245
+ このようにクラスを作ると、
246
+
247
+
248
+
249
+ 1.DayでCompletePlanを生成すると、Planに格納できなくなる
250
+
251
+ 2.PlanでCompletePlanを生成すると、Dayを取得できなくなる
252
+
253
+ (※予定の日と完了した日は異なる場合があります)
254
+
255
+ 3.DayにもPlanにもCompletePlanを格納してしまっている
256
+
257
+
258
+
259
+ という問題が出てきてしまいました。
260
+
261
+
262
+
263
+ これを解決する方法がありましたら、ご教授願います。
264
+
265
+ もしくは、根本的なことから間違っていますでしょうか。
266
+
267
+ 汚いコードですみません。