1 名前:デフォルトの名無しさん mailto:sageteoff [2017/09/29(金) 17:53:25.24 ID:XnizQSCA.net] Java初心者のためのスレッドです。 ※前スレ Java入門・初心者質問スレ Part.4 mevius.2ch.net/test/read.cgi/tech/1498828456/
433 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 21:52:44.52 ID:9CXEo34m.net] むしろ初期化の異常で例外を投げるのは コンストラクタの責務だろ なぜならコンストラクタの引数で渡されたデータから インスタンス変数(やクラス変数)を初期化するわけだから 情報エキスパートの原則からして データの処理はデータを持ってるオブジェクトが行うのが原則 ただ処理を全部抱え込むと肥大化するから 他に委譲することは構わない newの代わりにファクトリを使ったりするのと同じ しかしそれは「newを使うな」ではない 「外部に委譲してもいい」のであって 「コンストラクタで例外を投げてはいけない」ではない
434 名前:デフォルトの名無しさん mailto:sage [2017/11/03(金) 22:00:57.69 ID:Ro85MhDs.net] >>422 責務を理解できてない典型だね 君がそういう規約で開発するのは勝手だけど それをベストプラクティスだからとか言って 他人に押し付けるのはよくないよ
435 名前:デフォルトの名無しさん [2017/11/03(金) 22:01:56.36 ID:lQ0XoM3e.net] >>424 ベストプラクティスってそういうものだよ こういう実装もできるけどこっちの方が好ましいよねっていうものだから そういう意味で言ってるわけよ たとえばModel View ControllerのアーキテクチャがあるけどViewに Modelのコードも全部書きまくっちゃってもいいわけよ でも分離するのが好ましいだろ、そういう意味で言ってるわけよ その真意をくみ取って欲しいわけよ コンストラクタでデータチェックヤラナイのが好ましいわけよ え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ
436 名前:デフォルトの名無しさん [2017/11/03(金) 22:02:38.01 ID:lQ0XoM3e.net] >>425 理解できてないことを1ミリも説明してないじゃん 話にならないよ
437 名前:デフォルトの名無しさん [2017/11/03(金) 22:03:47.06 ID:lQ0XoM3e.net] 自分の考える責務の分離はこうっす 自分こう思うっすとはきはきと説明できないかね 若さが感じられない
438 名前:デフォルトの名無しさん [2017/11/03(金) 22:42:06.17 ID:lQ0XoM3e.net] 説明を求められたら言葉を失ってしまうみなさん
439 名前:デフォルトの名無しさん [2017/11/03(金) 22:47:53.53 ID:L9/pWClM.net] どんなに外部でチェックしてもインスタンス生成に失敗することはあるわけで、 そういうときに失敗を通知する手段は例外しかないわけで、 コンストラクタで例外を投げてはいけないとする方が問題だ。
440 名前:デフォルトの名無しさん [2017/11/03(金) 22:49:18.72 ID:lQ0XoM3e.net] モデルに存在するべきコードがコントローラに存在するものをファット・コントローラと言うけれども バリデータに存在するべきコードがコンストラクタに存在するものをファット・コンストラクタと呼んで クラスの生活習慣病に位置付けるのはどう? 徐々にシステムを蝕んでいきます コーディングの習慣を見直しましょう
441 名前:デフォルトの名無しさん [2017/11/03(金) 22:52:55.66 ID:lQ0XoM3e.net] >>430 どんなに外部でチェックしてもインスタンス生成に失敗するときは例外投げて良い そんなのケースバイケースだろ、柔軟に対応しろよ
442 名前:デフォルトの名無しさん [2017/11/03(金) 22:53:28.36 ID:lQ0XoM3e.net] ベストプラクティスっていうのは柔軟っていう意味もありまぁす!
443 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 00:31:14.87 ID:FdHKGPou.net] 入力値チェックは、MVC のビューでやるけど、 ドラクエ10 の記事によると、 通信データの500バイトに、1バイトは間違っているから、 通信データは、絶対に信用しちゃいけない。 必ずサーバー側でも、チェックすべき 途中のルーターが、データが間違っていても、データを破棄せず、 間違ったデータで、パリティを再計算して送ってくるから、 正常なデータのように見える
444 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 01:00:49.14 ID:O0AU1SEY.net] サーバーが受け取ったデータが外部入力なんだから それをチェックするのは当たり前 ユーザー入力と同じ 境界の外から入ってきたデータを どのレイヤーでチェックしてエラーハンドリングするかということと モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に 例外を投げるかどうかは関係はしてるが種類の違う問題 という話をしてる
445 名前:デフォルトの名無しさん [2017/11/04(土) 02:59:59.82 ID:Wr8YwoWe.net] できれば不正値はコンパイル時にエラーになって欲しいものではあるな。 不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。 I/O絡みのエラーは実行時じゃないとわからないから別としてね。 (指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)
446 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:21:09.10 ID:4V8ohWTX.net] javaってできることが多すぎて勉強しんどい
447 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:35:59.26 ID:32ZzWJzG.net] >>434 へー、チェックサムも独自に仕込むのかな
448 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:37:10.99 ID:32ZzWJzG.net] >>435 事前条件ってまさにアサートの領分じゃん
449 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 08:49:44.67 ID:die+TITB.net] >>437 C++より楽
450 名前:デフォルトの名無しさん [2017/11/04(土) 08:55:38.30 ID:KxJ3WBAq.net] モデルの引数を間違えてるっていうのはバグなのでー 開発時に分かればよいことなのでー アサート使うべきだよねー コンストラクタをぶくぶくと太らせる理由にはならぬよ メタボリッククラスから脱却してスマートクラスにしよう
451 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 13:21:03.20 ID:O0AU1SEY.net] >>439 Javaの場合はアサートって言うとビルトインのassertをさすからね 事前条件なら自動的にアサート使えとはならないよ それともコンストラクタでは ExceptionではなくErrorを投げるべきって言いたいのかな?
452 名前:デフォルトの名無しさん [2017/11/04(土) 13:36:25.85 ID:KxJ3WBAq.net] >>442 何言ってんだおめー assert使うべきで 例外を投げるべきじゃない
453 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 15:21:29.77 ID:1M0jr43T.net] javaなら、コンストラクタで例外スローでいいでしょ。
454 名前:デフォルトの名無しさん [2017/11/04(土) 17:10:27.14 ID:KxJ3WBAq.net] >>444 でも設計的に大間違いですよそれ コンストラクタの使い方完全に間違ってますよ
455 名前:デフォルトの名無しさん mailto:sage [2017/11/04(土) 20:42:41.33 ID:cKuNjw8p.net] >>445 あほ
456 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 13:12:43.81 ID:z+9Dn5/C.net] 以下のコードを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()); } }
457 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 14:11:12.97 ID:0YSHLKzk.net] 初心者じゃないんだろ35歳 自分で調べろ
458 名前:遊園地 mailto:sage [2017/11/05(日) 14:27:53.28 ID:FPjW0d5Z.net] 読むの面倒だから、エラー文も上げて。
459 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 14:34:37.57 ID:k/LyUYN/.net] ideoneは知らんけどリフレクションはjavaセキュリティマネージャ動いてたら実行できないからそれじゃねーの
460 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 17:40:17.18 ID:2ZrTuY5p.net] 35歳に親切にすると君の職場に現れて付きまとわれるぞw
461 名前:444 mailto:sage [2017/11/05(日) 18:22:30.39 ID:z+9Dn5/C.net] >>448 決めつけるなよ。それに初心者認定したのはあんたらだろ? >>450 レスありがとうございます。 ideoneではなにかしらそういう安全装置が働いているということですね。
462 名前:デフォルトの名無しさん [2017/11/05(日) 18:54:33.30 ID:qSskq3Yv.net] 釣りでエラーが発生と言ってるだけだろ https://ideone.com/yLwAJh
463 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 18:59:33.63 ID:0YSHLKzk.net] まず質問の仕方がおかしいんだよなぁ ここは学校じゃないし、相手は先生じゃない 質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない もっと相手に伝わるように質問しろ
464 名前:444 mailto:sage [2017/11/05(日) 19:41:51.63 ID:z+9Dn5/C.net] >>451 たひんで >>453 OSなど実行環境の違いによるんですかね…。 >>454 それはその通りだと思うけど、あんたは親切な人だったの?
465 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 19:45:10.05 ID:/i0gfJYB.net] 何この変なの? どっかのコテハンか?
466 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 19:46:54.84 ID:PoYQIzOm.net] >>453 のリンク見てもエラーが出てるんだよな? 正直エスパーしようにも限界
467 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 20:07:50.04 ID:2ZrTuY5p.net] もうそいつに触れるのはよせ
468 名前:! [] [ここ壊れてます]
469 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 21:21:54.00 ID:0YSHLKzk.net] >>455 なんで質問が分かりにくいって指摘に対 し、 俺が親切な人だったのか聞かれてるの? 全然意味分かんないんですけど
470 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 21:30:31.08 ID:2ZrTuY5p.net] 理解を越えているから考えては駄目
471 名前:デフォルトの名無しさん mailto:sage [2017/11/05(日) 21:31:07.85 ID:0YSHLKzk.net] そもそももっと答えの得られやすい質問が出来るようになれば解決なんだけど、 なぜ君は指摘に対してわざわざ「じゃああんたはごにょごにょ」とわざわざ全く関係ない事持ち出して喧嘩売ってきてるの? 中学生なの?反抗期なの? 自分の行動を振り替えって恥ずかしくない?
472 名前:デフォルトの名無しさん [2017/11/06(月) 00:46:04.60 ID:OjznruUj.net] 以前お世話になりました >>201 です。課題の上から二つ目の"(ここを作成)"がわからないです。 まあ上のほうも自信ないのですが...誰か教えていただけませんか? https://imgur.com/a/niyx6 https://imgur.com/a/ehrkB https://imgur.com/a/5X3tQ
473 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 00:47:27.68 ID:1qhCOQ98.net] 宿題スレへ
474 名前: mailto:sage [2017/11/06(月) 00:49:04.71 ID:Lce8rfVs.net] 今実行したら出来ました。何でさっきは出来なかったんだろ…。 https://ideone.com/KdavqO >>456 プログラマー板のコテハンです。 >>457 いや、リンクをたどるのは大丈夫でした。 >>459 ただ冷たくあしらわれたと思ったら、アドバイスをくれたので。 >>461 えっ?褒めてるのに?
475 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 02:26:46.28 ID:tjV5ukzM.net] >>462 前回はみんなが教えちゃったけど 正直ためにならないと思うんだよね でも一個だけヒント言うなら一行ずつ処理を追ってみ(2番目の) 「この変数にはどんな値が入っているか(入るべきか)」意識しながら 現状インプットからアウトプットまで線でつながってない インプットの仕方は「Java コマンドライン 入力」でググれ
476 名前:デフォルトの名無しさん [2017/11/06(月) 03:38:31.02 ID:2Q/sT7xS.net] ヤフーブログの https://blogs.yahoo.co.jp/kamyu_2010 にデザパタ解説を発見した。
477 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 06:09:30.85 ID:sonxQjeP.net] >>464 ごめんなさい、褒められてると思ってなかった 字面で反応してしまったのは俺も同じでした 反省してきます
478 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 07:06:32.63 ID:efUB4xY4.net] >>465 ありがとうございます。時間かけてやって見ます
479 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 07:25:39.44 ID:kblaZiQ3.net] >>462 5月の宿題を今やってんじゃねーよ せっかくお金払って学びに行ってるんなら先生に聞きな
480 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 08:51:22.52 ID:f5Hwp3Jw.net] 課題の内容および詳細がバッドノウハウの固まりだな やっぱ学校はCかLispでいいと思うよ
481 名前:デフォルトの名無しさん mailto:age [2017/11/06(月) 10:47:13.47 ID:CLk5jCwv.net] マウンティングするスレじゃないんですよ!
482 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 13:56:05.08 ID:Ql637c4l.net] javapro wwww 前に安易に答え教えたせいか変数の使い方すらろくに理解してなくてひでぇな・・ 金ドブだからもうやめた方がいいぞマジで
483 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 14:05:17.27 ID:Ql637c4l.net] 問題も毎回酷すぎてガチでビックリすんだけど学校の名前教えてくれよ こんなゴミみたいな問題できても全く勉強にならんレベルの酷さだぞ
484 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 14:39:48.25 ID:Ql637c4l.net] 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月を指定してください。"); } } }
485 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 14:53:59.17 ID:FN/Llmne.net] 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 などのサイトに、ソースコードを貼って、質問しろ
486 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 14:56:54.74 ID:PEro5dbb.net] >>474 何で教えるんだ? 1,2,3,4,5の配列から3番目の値を得る方法を教えろよ。 そうすれば月から日数得る方法も分かるだろ。 考え方が分かって無い人には答えを教えるべきじゃない。
487 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 15:10:14.26 ID:Ql637c4l.net] >>351 上級Javaグラマーアカデミー一般命令・規約 規約6第23項18節 パラメータとして渡される値に関して クラスの不変式を破っているオブジェクトの生成を防ぐため一般原則の特殊な場合として メソッドおよびコンストラクタは後で使用されるパラメータの正当性を検査すべき 非公開メソッドに関しては一般に、アサーションを用いて検査すべき 上記規約に対する例外として、正当性検査のコストが高いか現実的でなく、かつ 正当性検査が計算の処理の中で暗黙的に行われる場合はこれに該当しない また暗黙的検査によって誤った例外がスローされる場合はエラーアトミック性が失われることになるため このような状況下においては抽象概念に適した例外をスローできるようにイディオムを使用すべき
488 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 15:21:23.29 ID:Ql637c4l.net] クソな問題は逆に頭を悪くするので、すぐに答えを教えるべき
489 名前:デフォルトの名無しさん [2017/11/06(月) 15:37:21.27 ID:VIJ1bqUv.net] だいたいハードコーディングというところがもうダメなのに。
490 名前:デフォルトの名無しさん [2017/11/06(月) 16:59:11.52 ID:V0vtn4gd.net] こういう場合は月の値がおかしかったら例外投げるのが良さそうに思うが、そうすると今話題のコンストラクタで例外になる。 かといってそれをしないならどのタイミングで例外投げるのが良いのか? (まあそもそもこんなもんクラスにすべきではないのかも知れんが)。 さて、このネタでまたスレが活性化するかな・・・
491 名前:デフォルトの名無しさん [2017/11/06(月) 17:19:53.91 ID:f1KpQ6jU.net] 最近Javaを始めた者です。 質問させてください。 質問1) 店から客が弁当を買うような仕組みのプログラムを作りたいのですが、 用意するクラスは「店」「商品の弁当」「客」「実行するためのメインクラス」で良いのでしょうか? 変数は「店と客の所持金」、「客の腹の空き具合」、「弁当によって満たされる満腹度」のようなものを考えています。 質問2) この様なプログラムの場合、売買のメソッドはどのように作ればいいのでしょうか? 「店が売る」メソッドか「客が買う」メソッドのどちらかだけ必要なのか、両方必要になるのかが分かりません。 現実的に考えれば客が居なければどんなに商品があっても意味が無いので、「店は商品を用意する」それを「客が買う」ような設計になると思うのですがどうでしょうか? 質問3) 現実的には客が弁当を買えば店の在庫は減り、客が所持する弁当が増えます。 このようにオブジェクトの中のオブジェクトが違うオブジェクトに移動するようなプログラムはどのように書けばいいのでしょうか? 質問4) 「客が買った弁当を食べる」という行為を行った場合、客が所持している弁当が無くなるわけですが、この様な仕組みはどのように書けばいいでしょうか? 以上、長くなりましたが良い方法があればご教授ください。 よろしくおねがいします。
492 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 18:19:33.27 ID:f5Hwp3Jw.net] 空腹度なんて抽象的すぎてゲームの中でしか成立しないぞ
493 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 18:43:48.98 ID:Ql637c4l.net] ひっでぇ質問の内容w 何したいのかさっぱりわからん
494 名前:デフォルトの名無しさん [2017/11/06(月) 18:52:01.06 ID:KtrOSJPo.net] >>483 君は読解力なさすぎでは?
495 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 18:53:07.65 ID:kblaZiQ3.net] >>481 教授するような時間はないな
496 名前:デフォルトの名無しさん [2017/11/06(月) 19:13:07.93 ID:T+apbet3.net] >>481 そのシステムの軸がどれなのか? 店、客、弁当を眺めるシステム?
497 名前:あ mailto:sage [2017/11/06(月) 19:30:58.35 ID:/hMSyilp.net] >>481 売買を真面目に考えると面倒くさい。 弁当のクラス以外に、店と客が「持ってる弁当のリスト」を持つか、 弁当リストクラスを別に作って、弁当に持ち主「店」「客」を持つとか、そんなんじゃないの? どこにも属してない弁当が存在し得れば後者だと思うし、今回はどこにも属してない弁当があったほうが便利。 食った=無くなった=オブジェクトをリストから削除するか、弁当の満たされる満足度を食ったら残り0にするかじゃないかな。 腹の空き具合と弁当の容量のコンバート関数でももたせりゃ便利じゃねえの?後々。 その空き弁当箱は、捨てるときに、持ち主無しにしといて、たまに持ち主無しの弁当箱をバサッと消したほうが楽かも。 客が来たら作る、となるとまた面倒くさい。 店の方の在庫数で、負在庫に突入しそうなら補充とか、残り○個になったら補充、そういう風にするんじゃないの? 業務アプリみたい。
498 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 20:04:51.42 ID:tjV5ukzM.net] >>481 いかにも初心者らしい疑問だけど 同時にどれももっともな質問だね >質問1) >用意するクラス ソフトの規模の大きさに応じて クラスは細分化していく >「店」「商品の弁当」「客」「実行するためのメインクラス」 でもまあ小規模な前提なら それで大筋でおかしくないと思う もし規模が大きくなるなら 「金」とか「(弁当の)具」とか「客の行列」とか クラス化する場合もあるかも >「客の腹の空き具合」 ゲームなの? 業務アプリとゲームだとかなり考え方が違う
499 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 20:10:14.21 ID:tjV5ukzM.net] >>481 >質問2) >売買のメソッド これは二者関係だから 複雑になりがちなんだよね まず話を簡単にするためゲームだとして 店視点の販売目的のゲームなのか 客視点の満腹目的のゲームなのかで違う 小規模ソフトならプレイヤー視点の方に メソッドをつければOK じゃあもっと複雑な場合どうするか? 客の買うメソッドから 店の売るメソッドを呼ぶという 二重呼び出しもありうるし 第三者が「売買」メソッドを 持って仲介するケースもありうる 「デザインパターン」とか学ぶと そういう複雑な関係のさばき方が分かってくる
500 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 20:13:40.02 ID:tjV5ukzM.net] >>481 >質問3) 店の弁当を減らす処理と 客の弁当を増やす処理を同時に行う >質問4) 客クラスの変数で弁当の所有数を表現して 食事メソッドなどで消費したら減らす 店側で帳簿をつけていて 客側でも家計簿をつけているとイメージして それをプログラムで表現すると 何をすればいいか分かりやすいかも
501 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 20:27:33.35 ID:tjV5ukzM.net] なお今回は弁当だから店と客の所有数の増減の つじつま合わせだけやればいいと思うけど 組織間の社員や会員の移動みたいに 個体識別が必要なものが移動する場合は 参照したりIDを振ったりやはり複雑になる
502 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 20:31:16.29 ID:1qhCOQ98.net] まず図を書いたほうがいいと思う
503 名前:デフォルトの名無しさん [2017/11/06(月) 20:33:36.39 ID:T+apbet3.net] やろうとしていることがシミュレーションゲームだよな。
504 名前:デフォルトの名無しさん [2017/11/06(月) 20:57:20.04 ID:f1KpQ6jU.net] みなさんありがとうございます。 質問にあいまいな部分が多すぎて分かりにくい文章ですいません。 自分はまだ始めたばかりの初心者なので、大規模なものでは無くeclipseの練習がてら細々と色々作ってコンソールで実行しようと考えています。 いくつかご指摘があった通り、確かに「客視点」なのか「店視点」なのかを決めてしまったほうが良いですね。 とりあえず486の通り客視点で作ってみようかと思います。 あまり規模を大きくすると混乱すると思うので、「店1つ」「客1人」「弁当1種類」でやってみます。 485で書いていただいたような「通貨」や「弁当の具」や「客の行列」などはまだ考えないことにします。 >>490 この場合、客と店にそれぞれカウンター変数を作ってそれぞれカウントするような認識で良いでしょうか? それとも弁当自体にカウンターを持たせてオブジェクト数をカウントするのでしょうか? >>487 リスト構造はLinkedListしか使ったことが無いので他にどのようなものがあるか調べてみようかと思います。
505 名前:デフォルトの名無しさん [2017/11/06(月) 21:32:12.25 ID:T+apbet3.net] 目的のわりにやろうとしてることが複雑すぎる。
506 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 21:39:56.46 ID:tjV5ukzM.net] >>494 >客と店にそれぞれカウンター変数を作って >それぞれカウントするような認識 「カウント」が弁当の数のカウントならそうだよ (販売数のカウントだと一度に複数売るとズレてしまう) 弁当の所有数を店と客の変数で表現するのが一番簡単 ただ弁当の種類が増えたり売買が複雑になってくると リストなどに入れて店や客に直接弁当オブジェクトを持たせる というやり方の方が逆に分かりやすくなってくる 弁当が100個なら100個オブジェクトを生成するというように ゲームの世界とオブジェクトが一対一対応すると認識しやすい ミニゲームにはそこまでいらないけど本格的なゲームなら必要
507 名前:デフォルトの名無しさん [2017/11/06(月) 21:56:37.61 ID:C9PfqYRK.net] 複雑にした Life game か?
508 名前:デフォルトの名無しさん mailto:sage [2017/11/06(月) 23:32:04.04 ID:hLy/qxdc.net] >>481 直接の答えじゃないんだけどオライリーの「HeadFirstデザインパターン」を 読んでみるのもいいかも 質問のような店、商品、客のクラスを例にしてデザインパターンを使ってどう扱うかを サンプルコードで説明しているので参考になると思う
509 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 05:57:39.09 ID:uepCx6fG.net] これは、プログラムの問題じゃない。 システムの設計。SE の仕事。 図書館の貸し出しシステムとか 情報処理資格上級のデータベーススペシャリストの、過去問題集に一杯載ってる。 上級SE とか、部長クラスの資格
510 名前:shosinsha mailto:sage [2017/11/07(火) 08:48:13.35 ID:G8xLWgQW.net] privateとpublicはよく使うけど protected とか未指定って何! パッケージとかサブクラスって何! finalって何! なんで無駄に継承して作るの!! みたいなこと思うのは私だけでしょうか メリット・デメリットが一切わからん・・・
511 名前:350です mailto:sage [2017/11/07(火) 08:51:50.25 ID:FPDcUT3d.net] >>477 ありがとう 上級javaグラマーアカデミー調べてみます
512 名前:350です mailto:sage [2017/11/07(火) 08:57:52.64 ID:FPDcUT3d.net] >>481 は私じゃないですが コンストラクタの件もそうなのですが、自分でこうしてプログラムを書いてみようとすると、同じようにい設計面での様々な悩みが大量に出てきて どうしていいかわからなくってしまう なにか指針となる良い本とかないだろうか
513 名前:遊園地 mailto:age [2017/11/07(火) 09:53:53.39 ID:Pq/ecwAD.net] >>481 >>502 質問の仕方からプログラムの基礎ができて無い。
514 名前:@過去スレのjava入門スレや図書スレとggる事ぐらいしろ。 言い訳するな [] [ここ壊れてます]
515 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 10:24:16.08 ID:uepCx6fG.net] まずこの本で、オブジェクト指向を学ぶ。 スッキリわかる 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年以上掛かる
516 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 10:33:42.87 ID:OjaJJCZW.net] 10年経つと学習速度が追いつかなくなってお払い箱になる SEとは成れの果てだ だが毎日感謝の正拳突きを続ければ道が開ける、生涯現役
517 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 10:50:50.46 ID:9O+xl0zZ.net] >>434 どのみちチートがあるからサーバ側でvalidateするんじゃ MVCのViewがjavascriptだったりローカルアプリでもするでしょ
518 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 10:51:22.93 ID:9O+xl0zZ.net] ズレてた
519 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 14:59:23.44 ID:X/d0WSR0.net] >>502 Javaは俺も初心者だが本立ち読みして、買って、ネット検索して苦労することが成長させてくれると思うけどね。 お手軽に手に入れても深みが足りないんじゃないかな。
520 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 16:15:54.55 ID:PHAeZGZp.net] >>504 テンプレも長くなったな
521 名前:デフォルトの名無しさん [2017/11/07(火) 16:45:25.12 ID:1gOGMHE5.net] >>509 実務がないのにあんなにやってもどれほど意味があるのかどうか。
522 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 18:21:11.72 ID:HKEWD4ZX.net] Java始めます。 eclipseインストールしました。 よろしくお願いします。
523 名前:デフォルトの名無しさん [2017/11/07(火) 18:24:58.95 ID:1gOGMHE5.net] >>511 インストールするようなものではない。 初めから間違っている。
524 名前:デフォルトの名無しさん [2017/11/07(火) 18:27:07.48 ID:UinuS14I.net] 最近はIntelliJが流行りなんでしょ
525 名前:デフォルトの名無しさん [2017/11/07(火) 18:30:19.78 ID:1gOGMHE5.net] 統合開発環境がどうのこうの言うのは話がそれる。
526 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 19:11:35.77 ID:e+Onr1Ut.net] eclipseはソースコード呼んだほうがいいと言われた それなりに読めるようになるまでどれ程かかるか…
527 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 20:02:29.17 ID:PzMEUpkG.net] >>512 何が間違ってるの?
528 名前:デフォルトの名無しさん [2017/11/07(火) 20:21:32.13 ID:JPbswaOw.net] >>513 そして気づいたらKotlinの方にハマってると
529 名前:デフォルトの名無しさん [2017/11/07(火) 20:52:30.52 ID:Mdyxq0ii.net] >>516 慣れたいのがEclipseなのかJavaなのか? まあEclipseの使い方から入ってもいいが、Java環境の基本の勉強なら遠回りになる。
530 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 20:56:35.41 ID:OjaJJCZW.net] eclipseがオワコン言ってるのは泥目当ての子たちだろう 皮肉にもAndroidのおかげでJavaに関心が集まったのも事実だ でなきゃ悠久の時の中で緩やかに死んでいた
531 名前:デフォルトの名無しさん mailto:sage [2017/11/07(火) 20:58:14.04 ID:6QEepYb8.net] >>516 アーカイブ展開するだけのことをインストールとは言わないと思ってる人が最近増えたっぽいね 最近はeclipseもインストーラー提供してるけど、そっちでインストールしたら> >512も納得なんじゃない?w
532 名前:デフォルトの名無しさん [2017/11/07(火) 21:45:35.21 ID:Mdyxq0ii.net] アーカイブ展開という言葉もおかしいけどな。
533 名前:デフォルトの名無しさん [2017/11/07(火) 21:47:33.19 ID:Mdyxq0ii.net] >>519 どこの世界にいるのか?