Java入門・初心者質問スレ Part.5©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/29(金) 17:53:25.24ID:XnizQSCA
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.4
http://mevius.2ch.net/test/read.cgi/tech/1498828456/
2017/11/03(金) 19:04:39.65ID:9CXEo34m
>>406
何もしなかったら意味ないだろ……
直通のゲッターセッターと同じただのお飾り
410デフォルトの名無しさん
垢版 |
2017/11/03(金) 19:18:22.44ID:lQ0XoM3e
>>409
フィールドを初期化するという大事な処理がある
セッターは代入だから、初期化じゃないから
411デフォルトの名無しさん
垢版 |
2017/11/03(金) 19:40:27.12ID:lQ0XoM3e
UI -> アプリ(バリデータ) -> ドメイン -> DAO
レイヤーはこのように分けてドメインから先にバリデーションのコードを持ち込んではいけない
オブジェクトをクリーンに保つためのベストプラクティス
412デフォルトの名無しさん
垢版 |
2017/11/03(金) 19:47:48.30ID:lQ0XoM3e
バグがないように引数をチェックするという目的でやるなら
アサートを使うべきだ
ただしアサートを使うのは開発時のみで本番コードには含めない
本番コードで引数チェックが必要になるようならそれは
業務要件として抽出するべきだ
413350です
垢版 |
2017/11/03(金) 20:10:50.22ID:AmIWbkAj
なるほど
405~410まではなんとなくわかりました
411, 412は私の経験or勉強不足でいまいち理解できませんでした
でも、解説してくれてありがとう
414デフォルトの名無しさん
垢版 |
2017/11/03(金) 20:17:00.78ID:lQ0XoM3e
>>413
ありがとうの後にはございますだ
それが礼儀だ
415デフォルトの名無しさん
垢版 |
2017/11/03(金) 20:19:43.27ID:EWAV0hJA
なるほど。わかった。スレが過疎って来たらコンストラクタで例外の話を出せば書き込みで溢れてスレが活性化するのだな。
時折反論を書きありがとうの後にございますを付けなければなお良いと。
416デフォルトの名無しさん
垢版 |
2017/11/03(金) 20:21:29.16ID:lQ0XoM3e
僕が活性化しちゃうおおお
2017/11/03(金) 21:17:51.19ID:xnvXDnsB
またキチガイか
2017/11/03(金) 21:35:59.49ID:Ro85MhDs
コンストラクタに不正なもの渡された場合に例外を出すことが
なぜいけないのかについては1ミリも説明されてなくて草
419デフォルトの名無しさん
垢版 |
2017/11/03(金) 21:41:52.50ID:lQ0XoM3e
>>418
責務の分離ができてない証拠だから
100ミリくらい説明してますけど
10メートルですよ
420デフォルトの名無しさん
垢版 |
2017/11/03(金) 21:42:46.79ID:lQ0XoM3e
違うわ1,000ミリの間違いね
2017/11/03(金) 21:52:44.52ID:9CXEo34m
むしろ初期化の異常で例外を投げるのは
コンストラクタの責務だろ

なぜならコンストラクタの引数で渡されたデータから
インスタンス変数(やクラス変数)を初期化するわけだから
情報エキスパートの原則からして
データの処理はデータを持ってるオブジェクトが行うのが原則

ただ処理を全部抱え込むと肥大化するから
他に委譲することは構わない
newの代わりにファクトリを使ったりするのと同じ
しかしそれは「newを使うな」ではない

「外部に委譲してもいい」のであって
「コンストラクタで例外を投げてはいけない」ではない
2017/11/03(金) 22:00:57.69ID:Ro85MhDs
>>419
責務を理解できてない典型だね
君がそういう規約で開発するのは勝手だけど
それをベストプラクティスだからとか言って
他人に押し付けるのはよくないよ
423デフォルトの名無しさん
垢版 |
2017/11/03(金) 22:01:56.36ID:lQ0XoM3e
>>421
ベストプラクティスってそういうものだよ
こういう実装もできるけどこっちの方が好ましいよねっていうものだから
そういう意味で言ってるわけよ
たとえばModel View ControllerのアーキテクチャがあるけどViewに
Modelのコードも全部書きまくっちゃってもいいわけよ
でも分離するのが好ましいだろ、そういう意味で言ってるわけよ
その真意をくみ取って欲しいわけよ
コンストラクタでデータチェックヤラナイのが好ましいわけよ
え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ
424デフォルトの名無しさん
垢版 |
2017/11/03(金) 22:02:38.01ID:lQ0XoM3e
>>422
理解できてないことを1ミリも説明してないじゃん
話にならないよ
425デフォルトの名無しさん
垢版 |
2017/11/03(金) 22:03:47.06ID:lQ0XoM3e
自分の考える責務の分離はこうっす
自分こう思うっすとはきはきと説明できないかね
若さが感じられない
426デフォルトの名無しさん
垢版 |
2017/11/03(金) 22:42:06.17ID:lQ0XoM3e
説明を求められたら言葉を失ってしまうみなさん
427デフォルトの名無しさん
垢版 |
2017/11/03(金) 22:47:53.53ID:L9/pWClM
どんなに外部でチェックしてもインスタンス生成に失敗することはあるわけで、
そういうときに失敗を通知する手段は例外しかないわけで、
コンストラクタで例外を投げてはいけないとする方が問題だ。
428デフォルトの名無しさん
垢版 |
2017/11/03(金) 22:49:18.72ID:lQ0XoM3e
モデルに存在するべきコードがコントローラに存在するものをファット・コントローラと言うけれども
バリデータに存在するべきコードがコンストラクタに存在するものをファット・コンストラクタと呼んで
クラスの生活習慣病に位置付けるのはどう?
徐々にシステムを蝕んでいきます
コーディングの習慣を見直しましょう
429デフォルトの名無しさん
垢版 |
2017/11/03(金) 22:52:55.66ID:lQ0XoM3e
>>427
どんなに外部でチェックしてもインスタンス生成に失敗するときは例外投げて良い
そんなのケースバイケースだろ、柔軟に対応しろよ
430デフォルトの名無しさん
垢版 |
2017/11/03(金) 22:53:28.36ID:lQ0XoM3e
ベストプラクティスっていうのは柔軟っていう意味もありまぁす!
2017/11/04(土) 00:31:14.87ID:FdHKGPou
入力値チェックは、MVC のビューでやるけど、

ドラクエ10 の記事によると、
通信データの500バイトに、1バイトは間違っているから、
通信データは、絶対に信用しちゃいけない。
必ずサーバー側でも、チェックすべき

途中のルーターが、データが間違っていても、データを破棄せず、
間違ったデータで、パリティを再計算して送ってくるから、
正常なデータのように見える
2017/11/04(土) 01:00:49.14ID:O0AU1SEY
サーバーが受け取ったデータが外部入力なんだから
それをチェックするのは当たり前
ユーザー入力と同じ

境界の外から入ってきたデータを
どのレイヤーでチェックしてエラーハンドリングするかということと
モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に
例外を投げるかどうかは関係はしてるが種類の違う問題
という話をしてる
433デフォルトの名無しさん
垢版 |
2017/11/04(土) 02:59:59.82ID:Wr8YwoWe
できれば不正値はコンパイル時にエラーになって欲しいものではあるな。
不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。
I/O絡みのエラーは実行時じゃないとわからないから別としてね。
(指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)
2017/11/04(土) 08:21:09.10ID:4V8ohWTX
javaってできることが多すぎて勉強しんどい
2017/11/04(土) 08:35:59.26ID:32ZzWJzG
>>431
へー、チェックサムも独自に仕込むのかな
2017/11/04(土) 08:37:10.99ID:32ZzWJzG
>>432
事前条件ってまさにアサートの領分じゃん
2017/11/04(土) 08:49:44.67ID:die+TITB
>>434
C++より楽
438デフォルトの名無しさん
垢版 |
2017/11/04(土) 08:55:38.30ID:KxJ3WBAq
モデルの引数を間違えてるっていうのはバグなのでー
開発時に分かればよいことなのでー
アサート使うべきだよねー

コンストラクタをぶくぶくと太らせる理由にはならぬよ
メタボリッククラスから脱却してスマートクラスにしよう
2017/11/04(土) 13:21:03.20ID:O0AU1SEY
>>436
Javaの場合はアサートって言うとビルトインのassertをさすからね
事前条件なら自動的にアサート使えとはならないよ

それともコンストラクタでは
ExceptionではなくErrorを投げるべきって言いたいのかな?
440デフォルトの名無しさん
垢版 |
2017/11/04(土) 13:36:25.85ID:KxJ3WBAq
>>439
何言ってんだおめー
assert使うべきで
例外を投げるべきじゃない
2017/11/04(土) 15:21:29.77ID:1M0jr43T
javaなら、コンストラクタで例外スローでいいでしょ。
442デフォルトの名無しさん
垢版 |
2017/11/04(土) 17:10:27.14ID:KxJ3WBAq
>>441
でも設計的に大間違いですよそれ
コンストラクタの使い方完全に間違ってますよ
2017/11/04(土) 20:42:41.33ID:cKuNjw8p
>>442
あほ
2017/11/05(日) 13:12:43.81ID:z+9Dn5/C
以下のコードをideoneで実行できません。(ブラウザとしてエラーが発生)
どなたか理由を教えてもらえないでしょうか?

import java.lang.reflect.*;
class RefSamp {
public int times = 0;
public RefSamp(int t) {
this.times = t;
}
public void hello(String msg) {
this.hello(msg, this.times);
}
public void hello(String msg, int t) {
System.out.println("Hello, " + msg + " x " + t);
}
}

public class Main {
public static void main(String[] args) throws Exception {
Class clazz = RefSamp.class;
Constructor<?> cons = clazz.getConstructor(int.class);
RefSamp rs = (RefSamp) cons.newInstance(256);
Field f = clazz.getField("times");
f.set(rs, 2);
System.out.println(f.get(rs));
Method m = clazz.getMethod("hello", String.class, int.class);
m.invoke(rs, "refrection!", 128);
boolean pubc = Modifier.isPublic(clazz.getModifiers());
boolean finm = Modifier.isFinal(m.getModifiers());
}
}
2017/11/05(日) 14:11:12.97ID:0YSHLKzk
初心者じゃないんだろ35歳
自分で調べろ
2017/11/05(日) 14:27:53.28ID:FPjW0d5Z
読むの面倒だから、エラー文も上げて。
2017/11/05(日) 14:34:37.57ID:k/LyUYN/
ideoneは知らんけどリフレクションはjavaセキュリティマネージャ動いてたら実行できないからそれじゃねーの
2017/11/05(日) 17:40:17.18ID:2ZrTuY5p
35歳に親切にすると君の職場に現れて付きまとわれるぞw
449444
垢版 |
2017/11/05(日) 18:22:30.39ID:z+9Dn5/C
>>445
決めつけるなよ。それに初心者認定したのはあんたらだろ?

>>447
レスありがとうございます。
ideoneではなにかしらそういう安全装置が働いているということですね。
450デフォルトの名無しさん
垢版 |
2017/11/05(日) 18:54:33.30ID:qSskq3Yv
釣りでエラーが発生と言ってるだけだろ
https://ideone.com/yLwAJh
2017/11/05(日) 18:59:33.63ID:0YSHLKzk
まず質問の仕方がおかしいんだよなぁ
ここは学校じゃないし、相手は先生じゃない
質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない
もっと相手に伝わるように質問しろ
452444
垢版 |
2017/11/05(日) 19:41:51.63ID:z+9Dn5/C
>>448
たひんで

>>450
OSなど実行環境の違いによるんですかね…。

>>451
それはその通りだと思うけど、あんたは親切な人だったの?
2017/11/05(日) 19:45:10.05ID:/i0gfJYB
何この変なの?
どっかのコテハンか?
2017/11/05(日) 19:46:54.84ID:PoYQIzOm
>>450のリンク見てもエラーが出てるんだよな?
正直エスパーしようにも限界
2017/11/05(日) 20:07:50.04ID:2ZrTuY5p
もうそいつに触れるのはよせ!
2017/11/05(日) 21:21:54.00ID:0YSHLKzk
>>452
なんで質問が分かりにくいって指摘に対
し、
俺が親切な人だったのか聞かれてるの?
全然意味分かんないんですけど
2017/11/05(日) 21:30:31.08ID:2ZrTuY5p
理解を越えているから考えては駄目
2017/11/05(日) 21:31:07.85ID:0YSHLKzk
そもそももっと答えの得られやすい質問が出来るようになれば解決なんだけど、
なぜ君は指摘に対してわざわざ「じゃああんたはごにょごにょ」とわざわざ全く関係ない事持ち出して喧嘩売ってきてるの?
中学生なの?反抗期なの?
自分の行動を振り替えって恥ずかしくない?
459デフォルトの名無しさん
垢版 |
2017/11/06(月) 00:46:04.60ID:OjznruUj
以前お世話になりました >>200です。課題の上から二つ目の"(ここを作成)"がわからないです。
まあ上のほうも自信ないのですが...誰か教えていただけませんか?
https://imgur.com/a/niyx6 
https://imgur.com/a/ehrkB 
https://imgur.com/a/5X3tQ
2017/11/06(月) 00:47:27.68ID:1qhCOQ98
宿題スレへ
2017/11/06(月) 00:49:04.71ID:Lce8rfVs
今実行したら出来ました。何でさっきは出来なかったんだろ…。
https://ideone.com/KdavqO

>>453
プログラマー板のコテハンです。

>>454
いや、リンクをたどるのは大丈夫でした。

>>456
ただ冷たくあしらわれたと思ったら、アドバイスをくれたので。

>>458
えっ?褒めてるのに?
2017/11/06(月) 02:26:46.28ID:tjV5ukzM
>>459
前回はみんなが教えちゃったけど
正直ためにならないと思うんだよね

でも一個だけヒント言うなら一行ずつ処理を追ってみ(2番目の)
「この変数にはどんな値が入っているか(入るべきか)」意識しながら

現状インプットからアウトプットまで線でつながってない
インプットの仕方は「Java コマンドライン 入力」でググれ
463デフォルトの名無しさん
垢版 |
2017/11/06(月) 03:38:31.02ID:2Q/sT7xS
ヤフーブログの https://blogs.yahoo.co.jp/kamyu_2010 にデザパタ解説を発見した。
2017/11/06(月) 06:09:30.85ID:sonxQjeP
>>461
ごめんなさい、褒められてると思ってなかった
字面で反応してしまったのは俺も同じでした
反省してきます
2017/11/06(月) 07:06:32.63ID:efUB4xY4
>>462
ありがとうございます。時間かけてやって見ます
2017/11/06(月) 07:25:39.44ID:kblaZiQ3
>>459
5月の宿題を今やってんじゃねーよ

せっかくお金払って学びに行ってるんなら先生に聞きな
2017/11/06(月) 08:51:22.52ID:f5Hwp3Jw
課題の内容および詳細がバッドノウハウの固まりだな
やっぱ学校はCかLispでいいと思うよ
2017/11/06(月) 10:47:13.47ID:CLk5jCwv
マウンティングするスレじゃないんですよ!
2017/11/06(月) 13:56:05.08ID:Ql637c4l
javapro wwww
前に安易に答え教えたせいか変数の使い方すらろくに理解してなくてひでぇな・・
金ドブだからもうやめた方がいいぞマジで
2017/11/06(月) 14:05:17.27ID:Ql637c4l
問題も毎回酷すぎてガチでビックリすんだけど学校の名前教えてくれよ
こんなゴミみたいな問題できても全く勉強にならんレベルの酷さだぞ
2017/11/06(月) 14:39:48.25ID:Ql637c4l
public class Month {
int hi;
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

Month(int num){
hi = days[num-1];
}

public int getDays(){
return hi;
}
}

public class Calendar{
public static void main(String[] args) {

int tsuki = Integer.parseInt(args[0]);

if(tsuki >= 1 && tsuki <= 12){
Month m = new Month(tsuki);
System.out.println(tsuki + "月は" + m.getDays() + "日あります。");
}
else{
System.out.println("1〜12月を指定してください。");
}
}
}
2017/11/06(月) 14:53:59.17ID:FN/Llmne
days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

month = 2
puts days[month] #=> 28

Ruby では、これだけ。
ただし、days[0]は使わない

画像などを貼るな!
paiza.io, codepad などのサイトに、ソースコードを貼って、質問しろ
2017/11/06(月) 14:56:54.74ID:PEro5dbb
>>471
何で教えるんだ?
1,2,3,4,5の配列から3番目の値を得る方法を教えろよ。
そうすれば月から日数得る方法も分かるだろ。

考え方が分かって無い人には答えを教えるべきじゃない。
2017/11/06(月) 15:10:14.26ID:Ql637c4l
>>350
上級Javaグラマーアカデミー一般命令・規約

規約6第23項18節
パラメータとして渡される値に関して
クラスの不変式を破っているオブジェクトの生成を防ぐため一般原則の特殊な場合として
メソッドおよびコンストラクタは後で使用されるパラメータの正当性を検査すべき
非公開メソッドに関しては一般に、アサーションを用いて検査すべき
上記規約に対する例外として、正当性検査のコストが高いか現実的でなく、かつ
正当性検査が計算の処理の中で暗黙的に行われる場合はこれに該当しない
また暗黙的検査によって誤った例外がスローされる場合はエラーアトミック性が失われることになるため
このような状況下においては抽象概念に適した例外をスローできるようにイディオムを使用すべき
2017/11/06(月) 15:21:23.29ID:Ql637c4l
クソな問題は逆に頭を悪くするので、すぐに答えを教えるべき
476デフォルトの名無しさん
垢版 |
2017/11/06(月) 15:37:21.27ID:VIJ1bqUv
だいたいハードコーディングというところがもうダメなのに。
477デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:59:11.52ID:V0vtn4gd
こういう場合は月の値がおかしかったら例外投げるのが良さそうに思うが、そうすると今話題のコンストラクタで例外になる。
かといってそれをしないならどのタイミングで例外投げるのが良いのか?
(まあそもそもこんなもんクラスにすべきではないのかも知れんが)。

さて、このネタでまたスレが活性化するかな・・・
478デフォルトの名無しさん
垢版 |
2017/11/06(月) 17:19:53.91ID:f1KpQ6jU
最近Javaを始めた者です。
質問させてください。

質問1)
店から客が弁当を買うような仕組みのプログラムを作りたいのですが、
用意するクラスは「店」「商品の弁当」「客」「実行するためのメインクラス」で良いのでしょうか?
変数は「店と客の所持金」、「客の腹の空き具合」、「弁当によって満たされる満腹度」のようなものを考えています。

質問2)
この様なプログラムの場合、売買のメソッドはどのように作ればいいのでしょうか?
「店が売る」メソッドか「客が買う」メソッドのどちらかだけ必要なのか、両方必要になるのかが分かりません。
現実的に考えれば客が居なければどんなに商品があっても意味が無いので、「店は商品を用意する」それを「客が買う」ような設計になると思うのですがどうでしょうか?

質問3)
現実的には客が弁当を買えば店の在庫は減り、客が所持する弁当が増えます。
このようにオブジェクトの中のオブジェクトが違うオブジェクトに移動するようなプログラムはどのように書けばいいのでしょうか?

質問4)
「客が買った弁当を食べる」という行為を行った場合、客が所持している弁当が無くなるわけですが、この様な仕組みはどのように書けばいいでしょうか?

以上、長くなりましたが良い方法があればご教授ください。
よろしくおねがいします。
2017/11/06(月) 18:19:33.27ID:f5Hwp3Jw
空腹度なんて抽象的すぎてゲームの中でしか成立しないぞ
2017/11/06(月) 18:43:48.98ID:Ql637c4l
ひっでぇ質問の内容w
何したいのかさっぱりわからん
481デフォルトの名無しさん
垢版 |
2017/11/06(月) 18:52:01.06ID:KtrOSJPo
>>480
君は読解力なさすぎでは?
2017/11/06(月) 18:53:07.65ID:kblaZiQ3
>>478
教授するような時間はないな
483デフォルトの名無しさん
垢版 |
2017/11/06(月) 19:13:07.93ID:T+apbet3
>>478
そのシステムの軸がどれなのか?

店、客、弁当を眺めるシステム?
484
垢版 |
2017/11/06(月) 19:30:58.35ID:/hMSyilp
>>478
売買を真面目に考えると面倒くさい。
弁当のクラス以外に、店と客が「持ってる弁当のリスト」を持つか、
弁当リストクラスを別に作って、弁当に持ち主「店」「客」を持つとか、そんなんじゃないの?
どこにも属してない弁当が存在し得れば後者だと思うし、今回はどこにも属してない弁当があったほうが便利。
食った=無くなった=オブジェクトをリストから削除するか、弁当の満たされる満足度を食ったら残り0にするかじゃないかな。
腹の空き具合と弁当の容量のコンバート関数でももたせりゃ便利じゃねえの?後々。
その空き弁当箱は、捨てるときに、持ち主無しにしといて、たまに持ち主無しの弁当箱をバサッと消したほうが楽かも。

客が来たら作る、となるとまた面倒くさい。
店の方の在庫数で、負在庫に突入しそうなら補充とか、残り○個になったら補充、そういう風にするんじゃないの?

業務アプリみたい。
2017/11/06(月) 20:04:51.42ID:tjV5ukzM
>>478
いかにも初心者らしい疑問だけど
同時にどれももっともな質問だね

>質問1)
>用意するクラス
ソフトの規模の大きさに応じて
クラスは細分化していく

>「店」「商品の弁当」「客」「実行するためのメインクラス」
でもまあ小規模な前提なら
それで大筋でおかしくないと思う

もし規模が大きくなるなら
「金」とか「(弁当の)具」とか「客の行列」とか
クラス化する場合もあるかも

>「客の腹の空き具合」
ゲームなの?
業務アプリとゲームだとかなり考え方が違う
2017/11/06(月) 20:10:14.21ID:tjV5ukzM
>>478
>質問2)
>売買のメソッド
これは二者関係だから
複雑になりがちなんだよね

まず話を簡単にするためゲームだとして
店視点の販売目的のゲームなのか
客視点の満腹目的のゲームなのかで違う

小規模ソフトならプレイヤー視点の方に
メソッドをつければOK


じゃあもっと複雑な場合どうするか?

客の買うメソッドから
店の売るメソッドを呼ぶという
二重呼び出しもありうるし

第三者が「売買」メソッドを
持って仲介するケースもありうる

「デザインパターン」とか学ぶと
そういう複雑な関係のさばき方が分かってくる
2017/11/06(月) 20:13:40.02ID:tjV5ukzM
>>478
>質問3)
店の弁当を減らす処理と
客の弁当を増やす処理を同時に行う

>質問4)
客クラスの変数で弁当の所有数を表現して
食事メソッドなどで消費したら減らす

店側で帳簿をつけていて
客側でも家計簿をつけているとイメージして
それをプログラムで表現すると
何をすればいいか分かりやすいかも
2017/11/06(月) 20:27:33.35ID:tjV5ukzM
なお今回は弁当だから店と客の所有数の増減の
つじつま合わせだけやればいいと思うけど

組織間の社員や会員の移動みたいに
個体識別が必要なものが移動する場合は
参照したりIDを振ったりやはり複雑になる
2017/11/06(月) 20:31:16.29ID:1qhCOQ98
まず図を書いたほうがいいと思う
490デフォルトの名無しさん
垢版 |
2017/11/06(月) 20:33:36.39ID:T+apbet3
やろうとしていることがシミュレーションゲームだよな。
491デフォルトの名無しさん
垢版 |
2017/11/06(月) 20:57:20.04ID:f1KpQ6jU
みなさんありがとうございます。
質問にあいまいな部分が多すぎて分かりにくい文章ですいません。
自分はまだ始めたばかりの初心者なので、大規模なものでは無くeclipseの練習がてら細々と色々作ってコンソールで実行しようと考えています。

いくつかご指摘があった通り、確かに「客視点」なのか「店視点」なのかを決めてしまったほうが良いですね。
とりあえず486の通り客視点で作ってみようかと思います。
あまり規模を大きくすると混乱すると思うので、「店1つ」「客1人」「弁当1種類」でやってみます。
485で書いていただいたような「通貨」や「弁当の具」や「客の行列」などはまだ考えないことにします。

>>487
この場合、客と店にそれぞれカウンター変数を作ってそれぞれカウントするような認識で良いでしょうか?
それとも弁当自体にカウンターを持たせてオブジェクト数をカウントするのでしょうか?

>>484
リスト構造はLinkedListしか使ったことが無いので他にどのようなものがあるか調べてみようかと思います。
492デフォルトの名無しさん
垢版 |
2017/11/06(月) 21:32:12.25ID:T+apbet3
目的のわりにやろうとしてることが複雑すぎる。
2017/11/06(月) 21:39:56.46ID:tjV5ukzM
>>491
>客と店にそれぞれカウンター変数を作って
>それぞれカウントするような認識

「カウント」が弁当の数のカウントならそうだよ
(販売数のカウントだと一度に複数売るとズレてしまう)
弁当の所有数を店と客の変数で表現するのが一番簡単


ただ弁当の種類が増えたり売買が複雑になってくると
リストなどに入れて店や客に直接弁当オブジェクトを持たせる
というやり方の方が逆に分かりやすくなってくる

弁当が100個なら100個オブジェクトを生成するというように
ゲームの世界とオブジェクトが一対一対応すると認識しやすい
ミニゲームにはそこまでいらないけど本格的なゲームなら必要
494デフォルトの名無しさん
垢版 |
2017/11/06(月) 21:56:37.61ID:C9PfqYRK
複雑にした Life game か?
2017/11/06(月) 23:32:04.04ID:hLy/qxdc
>>478
直接の答えじゃないんだけどオライリーの「HeadFirstデザインパターン」を
読んでみるのもいいかも
質問のような店、商品、客のクラスを例にしてデザインパターンを使ってどう扱うかを
サンプルコードで説明しているので参考になると思う
2017/11/07(火) 05:57:39.09ID:uepCx6fG
これは、プログラムの問題じゃない。
システムの設計。SE の仕事。
図書館の貸し出しシステムとか

情報処理資格上級のデータベーススペシャリストの、過去問題集に一杯載ってる。
上級SE とか、部長クラスの資格
497shosinsha
垢版 |
2017/11/07(火) 08:48:13.35ID:G8xLWgQW
privateとpublicはよく使うけど protected とか未指定って何!
パッケージとかサブクラスって何!
finalって何!
なんで無駄に継承して作るの!!
みたいなこと思うのは私だけでしょうか メリット・デメリットが一切わからん・・・
498350です
垢版 |
2017/11/07(火) 08:51:50.25ID:FPDcUT3d
>>474
ありがとう
上級javaグラマーアカデミー調べてみます
499350です
垢版 |
2017/11/07(火) 08:57:52.64ID:FPDcUT3d
>>478は私じゃないですが

コンストラクタの件もそうなのですが、自分でこうしてプログラムを書いてみようとすると、同じようにい設計面での様々な悩みが大量に出てきて
どうしていいかわからなくってしまう

なにか指針となる良い本とかないだろうか
500遊園地
垢版 |
2017/11/07(火) 09:53:53.39ID:Pq/ecwAD
>>478
>>499

質問の仕方からプログラムの基礎ができて無い。

 過去スレのjava入門スレや図書スレとggる事ぐらいしろ。




言い訳するな
2017/11/07(火) 10:24:16.08ID:uepCx6fG
まずこの本で、オブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014
スッキリわかる Java入門 実践編 第2版、2014
スッキリわかる サーブレット&JSP入門、2014

実践Javaコーディング作法 プロが知るべき、
112の規約と21の心得、森崎雅稔(まさとし)、2014

Java 最強リファレンス、田中裕一、2014

EFFECTIVE JAVA 第2版、2014

Spring Framework 4 プログラミング入門、掌田津耶乃、2014
Spring Boot プログラミング入門、掌田津耶乃、2016

これらはプログラミングの本だから、これらを読んでも設計はできない。
システムの設計は、SE の仕事

図書館の貸し出しシステムとか、中古車販売システムとか、
情報処理資格上級のデータベーススペシャリストの、過去問題集に一杯載ってる。
上級SE とか、部課長クラスの資格

実際の仕事では、プログラミングよりも、設計とフレームワーク、
サーバーの環境構築・運用が重要で、10年以上掛かる
2017/11/07(火) 10:33:42.87ID:OjaJJCZW
10年経つと学習速度が追いつかなくなってお払い箱になる
SEとは成れの果てだ
だが毎日感謝の正拳突きを続ければ道が開ける、生涯現役
2017/11/07(火) 10:50:50.46ID:9O+xl0zZ
>>431
どのみちチートがあるからサーバ側でvalidateするんじゃ
MVCのViewがjavascriptだったりローカルアプリでもするでしょ
2017/11/07(火) 10:51:22.93ID:9O+xl0zZ
ズレてた
2017/11/07(火) 14:59:23.44ID:X/d0WSR0
>>499
Javaは俺も初心者だが本立ち読みして、買って、ネット検索して苦労することが成長させてくれると思うけどね。
お手軽に手に入れても深みが足りないんじゃないかな。
2017/11/07(火) 16:15:54.55ID:PHAeZGZp
>>501
テンプレも長くなったな
507デフォルトの名無しさん
垢版 |
2017/11/07(火) 16:45:25.12ID:1gOGMHE5
>>506
実務がないのにあんなにやってもどれほど意味があるのかどうか。
2017/11/07(火) 18:21:11.72ID:HKEWD4ZX
Java始めます。
eclipseインストールしました。
よろしくお願いします。
509デフォルトの名無しさん
垢版 |
2017/11/07(火) 18:24:58.95ID:1gOGMHE5
>>508
インストールするようなものではない。
初めから間違っている。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況