Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.4
http://mevius.2ch.net/test/read.cgi/tech/1498828456/
探検
Java入門・初心者質問スレ Part.5©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/09/29(金) 17:53:25.24ID:XnizQSCA
393デフォルトの名無しさん
2017/10/30(月) 13:52:19.55ID:4hMzyEUs >>392
1ファイルに複数のクラスを書いてるんじゃない?
1ファイルに複数のクラスを書いてるんじゃない?
395デフォルトの名無しさん
2017/10/30(月) 15:15:46.44ID:y0GY6LFV396デフォルトの名無しさん
2017/10/30(月) 15:50:40.06ID:3rz3HBcW397デフォルトの名無しさん
2017/10/30(月) 18:18:23.77ID:sRaOGV/D398デフォルトの名無しさん
2017/10/31(火) 08:25:04.95ID:OmcraJl8 >>359
範囲外の入力値エラーだろ
private、つまりクラス内では、戻り値でエラーを示すが、
public、つまりクラス外では、例外でエラーを示す
なぜなら、クラス内をコーディングしているのは、普通は同じ会社だから、
その会社内で規定したエラー値を使っても、見落としが少ない
でも、クラス外の場合は、クラスをコーディングした会社と、異なる会社が使うから、
そのクラス内で規定したエラー値を使っては、いけない。
なぜなら、他社の人は、クラスのドキュメントを読まずに、クラスを使うから
つまり、クラス外部の人に対しては、絶対にエラーが起こるように、例外を使う
クラス内をコーディングする人と、そのクラスを使う人は、
異なる会社を想定している。
他社の場合は、クラスのドキュメントを読まないことを想定すべき
「スッキリJava」にも書いてある。
クラスを使う側と、フレームワークなど、他社が使うクラスを作る側の、
コーディングの違い。
他社を想定している場合は、全く違う
この辺は、品質管理をやってないと知らないはず
範囲外の入力値エラーだろ
private、つまりクラス内では、戻り値でエラーを示すが、
public、つまりクラス外では、例外でエラーを示す
なぜなら、クラス内をコーディングしているのは、普通は同じ会社だから、
その会社内で規定したエラー値を使っても、見落としが少ない
でも、クラス外の場合は、クラスをコーディングした会社と、異なる会社が使うから、
そのクラス内で規定したエラー値を使っては、いけない。
なぜなら、他社の人は、クラスのドキュメントを読まずに、クラスを使うから
つまり、クラス外部の人に対しては、絶対にエラーが起こるように、例外を使う
クラス内をコーディングする人と、そのクラスを使う人は、
異なる会社を想定している。
他社の場合は、クラスのドキュメントを読まないことを想定すべき
「スッキリJava」にも書いてある。
クラスを使う側と、フレームワークなど、他社が使うクラスを作る側の、
コーディングの違い。
他社を想定している場合は、全く違う
この辺は、品質管理をやってないと知らないはず
399デフォルトの名無しさん
2017/10/31(火) 08:35:40.63ID:BBLfUUwS400398
2017/10/31(火) 09:49:23.34ID:OmcraJl8 「スッキリJava」では、クラスの責務を、明確に分けている
前半は、クラスを使う側の知識で、
上級編はフレームワークなど、他社が使うクラスを作る側の知識
フレームワークを作る側では、検査例外を使って、コンパイルエラーにしないと、
ドキュメントを読まずに実行した客が、実行時エラーを起こして、
電話をかけてくるから、商売にならない
本を読んで、実行時エラーを起こした客が、出版社に電話をかけてくるだろ。
それと同じで、商売にならない
だから例外にして、その例外をキャッチしない人は、実行できないようにする
サポート契約をしない、無料相談の客をはじかないといけない。
無料で見積もりさせる客も
前半は、クラスを使う側の知識で、
上級編はフレームワークなど、他社が使うクラスを作る側の知識
フレームワークを作る側では、検査例外を使って、コンパイルエラーにしないと、
ドキュメントを読まずに実行した客が、実行時エラーを起こして、
電話をかけてくるから、商売にならない
本を読んで、実行時エラーを起こした客が、出版社に電話をかけてくるだろ。
それと同じで、商売にならない
だから例外にして、その例外をキャッチしない人は、実行できないようにする
サポート契約をしない、無料相談の客をはじかないといけない。
無料で見積もりさせる客も
401デフォルトの名無しさん
2017/10/31(火) 12:09:41.25ID:QuyL7alo 経営の話か
402デフォルトの名無しさん
2017/10/31(火) 21:22:09.98ID:BSBih/VQ javaでWebアプリ作ってるのですがグラフ表示をしたいです
jfreechartとかchart.jsとか出てくるんですがおすすめとかってありますか?
jfreechartとかchart.jsとか出てくるんですがおすすめとかってありますか?
403デフォルトの名無しさん
2017/10/31(火) 21:22:56.96ID:BSBih/VQ 質問スレと間違えましたすみません。
404350です
2017/11/03(金) 17:28:51.99ID:AmIWbkAj >>380
しばらく2ちゃんを見れない状況だったので亀レスとなってしまいましたが、コンストラクタで例外投げるのが良くない理由をできれば聞きたいです
しばらく2ちゃんを見れない状況だったので亀レスとなってしまいましたが、コンストラクタで例外投げるのが良くない理由をできれば聞きたいです
405デフォルトの名無しさん
2017/11/03(金) 17:36:15.65ID:lQ0XoM3e >>404
責務の分離ができてない証拠だから
責務の分離ができてない証拠だから
406デフォルトの名無しさん
2017/11/03(金) 17:39:40.36ID:lQ0XoM3e コンストラクタっていうのはオブジェクトを初期化する特別な処理を書くところ
渡された値をそのまま何の加工もせずにフィールドにお納めするのが義務なんです
渡された値をそのまま何の加工もせずにフィールドにお納めするのが義務なんです
407デフォルトの名無しさん
2017/11/03(金) 17:42:31.79ID:lQ0XoM3e どうしても例外を投げたいならtryCreateというスタティックメソッドを作って
例外投げますよ作れないかもしれないですよということをメソッド名で
陽に示すべきだ、この処理は検証も含んでいますよと示すべきだ
なぜならば検証も含むからだ、オブジェクトを作るメソッドなのにだ
例外投げますよ作れないかもしれないですよということをメソッド名で
陽に示すべきだ、この処理は検証も含んでいますよと示すべきだ
なぜならば検証も含むからだ、オブジェクトを作るメソッドなのにだ
408デフォルトの名無しさん
2017/11/03(金) 18:39:37.30ID:lQ0XoM3e FileStreamもコンストラクタで例外を投げるが
あの設計も大間違いだから
コンストラクタでリソース確保しようとするのが完全に間違ってる
closeの処理でリソースを解放するならばリソースを確保するのはopenだ
openの責務をFileStreamは持つべきでそれはオブジェクトを初期化する
コンストラクタとは役割が根本的に100憶パーセント異なるわけ
あの設計も大間違いだから
コンストラクタでリソース確保しようとするのが完全に間違ってる
closeの処理でリソースを解放するならばリソースを確保するのはopenだ
openの責務をFileStreamは持つべきでそれはオブジェクトを初期化する
コンストラクタとは役割が根本的に100憶パーセント異なるわけ
409デフォルトの名無しさん
2017/11/03(金) 19:04:39.65ID:9CXEo34m410デフォルトの名無しさん
2017/11/03(金) 19:18:22.44ID:lQ0XoM3e411デフォルトの名無しさん
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勉強不足でいまいち理解できませんでした
でも、解説してくれてありがとう
405~410まではなんとなくわかりました
411, 412は私の経験or勉強不足でいまいち理解できませんでした
でも、解説してくれてありがとう
414デフォルトの名無しさん
2017/11/03(金) 20:17:00.78ID:lQ0XoM3e415デフォルトの名無しさん
2017/11/03(金) 20:19:43.27ID:EWAV0hJA なるほど。わかった。スレが過疎って来たらコンストラクタで例外の話を出せば書き込みで溢れてスレが活性化するのだな。
時折反論を書きありがとうの後にございますを付けなければなお良いと。
時折反論を書きありがとうの後にございますを付けなければなお良いと。
416デフォルトの名無しさん
2017/11/03(金) 20:21:29.16ID:lQ0XoM3e 僕が活性化しちゃうおおお
417デフォルトの名無しさん
2017/11/03(金) 21:17:51.19ID:xnvXDnsB またキチガイか
418デフォルトの名無しさん
2017/11/03(金) 21:35:59.49ID:Ro85MhDs コンストラクタに不正なもの渡された場合に例外を出すことが
なぜいけないのかについては1ミリも説明されてなくて草
なぜいけないのかについては1ミリも説明されてなくて草
419デフォルトの名無しさん
2017/11/03(金) 21:41:52.50ID:lQ0XoM3e420デフォルトの名無しさん
2017/11/03(金) 21:42:46.79ID:lQ0XoM3e 違うわ1,000ミリの間違いね
421デフォルトの名無しさん
2017/11/03(金) 21:52:44.52ID:9CXEo34m むしろ初期化の異常で例外を投げるのは
コンストラクタの責務だろ
なぜならコンストラクタの引数で渡されたデータから
インスタンス変数(やクラス変数)を初期化するわけだから
情報エキスパートの原則からして
データの処理はデータを持ってるオブジェクトが行うのが原則
ただ処理を全部抱え込むと肥大化するから
他に委譲することは構わない
newの代わりにファクトリを使ったりするのと同じ
しかしそれは「newを使うな」ではない
「外部に委譲してもいい」のであって
「コンストラクタで例外を投げてはいけない」ではない
コンストラクタの責務だろ
なぜならコンストラクタの引数で渡されたデータから
インスタンス変数(やクラス変数)を初期化するわけだから
情報エキスパートの原則からして
データの処理はデータを持ってるオブジェクトが行うのが原則
ただ処理を全部抱え込むと肥大化するから
他に委譲することは構わない
newの代わりにファクトリを使ったりするのと同じ
しかしそれは「newを使うな」ではない
「外部に委譲してもいい」のであって
「コンストラクタで例外を投げてはいけない」ではない
422デフォルトの名無しさん
2017/11/03(金) 22:00:57.69ID:Ro85MhDs423デフォルトの名無しさん
2017/11/03(金) 22:01:56.36ID:lQ0XoM3e >>421
ベストプラクティスってそういうものだよ
こういう実装もできるけどこっちの方が好ましいよねっていうものだから
そういう意味で言ってるわけよ
たとえばModel View ControllerのアーキテクチャがあるけどViewに
Modelのコードも全部書きまくっちゃってもいいわけよ
でも分離するのが好ましいだろ、そういう意味で言ってるわけよ
その真意をくみ取って欲しいわけよ
コンストラクタでデータチェックヤラナイのが好ましいわけよ
え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ
ベストプラクティスってそういうものだよ
こういう実装もできるけどこっちの方が好ましいよねっていうものだから
そういう意味で言ってるわけよ
たとえばModel View ControllerのアーキテクチャがあるけどViewに
Modelのコードも全部書きまくっちゃってもいいわけよ
でも分離するのが好ましいだろ、そういう意味で言ってるわけよ
その真意をくみ取って欲しいわけよ
コンストラクタでデータチェックヤラナイのが好ましいわけよ
え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ
424デフォルトの名無しさん
2017/11/03(金) 22:02:38.01ID:lQ0XoM3e425デフォルトの名無しさん
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:lQ0XoM3e430デフォルトの名無しさん
2017/11/03(金) 22:53:28.36ID:lQ0XoM3e ベストプラクティスっていうのは柔軟っていう意味もありまぁす!
431デフォルトの名無しさん
2017/11/04(土) 00:31:14.87ID:FdHKGPou 入力値チェックは、MVC のビューでやるけど、
ドラクエ10 の記事によると、
通信データの500バイトに、1バイトは間違っているから、
通信データは、絶対に信用しちゃいけない。
必ずサーバー側でも、チェックすべき
途中のルーターが、データが間違っていても、データを破棄せず、
間違ったデータで、パリティを再計算して送ってくるから、
正常なデータのように見える
ドラクエ10 の記事によると、
通信データの500バイトに、1バイトは間違っているから、
通信データは、絶対に信用しちゃいけない。
必ずサーバー側でも、チェックすべき
途中のルーターが、データが間違っていても、データを破棄せず、
間違ったデータで、パリティを再計算して送ってくるから、
正常なデータのように見える
432デフォルトの名無しさん
2017/11/04(土) 01:00:49.14ID:O0AU1SEY サーバーが受け取ったデータが外部入力なんだから
それをチェックするのは当たり前
ユーザー入力と同じ
境界の外から入ってきたデータを
どのレイヤーでチェックしてエラーハンドリングするかということと
モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に
例外を投げるかどうかは関係はしてるが種類の違う問題
という話をしてる
それをチェックするのは当たり前
ユーザー入力と同じ
境界の外から入ってきたデータを
どのレイヤーでチェックしてエラーハンドリングするかということと
モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に
例外を投げるかどうかは関係はしてるが種類の違う問題
という話をしてる
433デフォルトの名無しさん
2017/11/04(土) 02:59:59.82ID:Wr8YwoWe できれば不正値はコンパイル時にエラーになって欲しいものではあるな。
不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。
I/O絡みのエラーは実行時じゃないとわからないから別としてね。
(指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)
不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。
I/O絡みのエラーは実行時じゃないとわからないから別としてね。
(指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)
434デフォルトの名無しさん
2017/11/04(土) 08:21:09.10ID:4V8ohWTX javaってできることが多すぎて勉強しんどい
435デフォルトの名無しさん
2017/11/04(土) 08:35:59.26ID:32ZzWJzG >>431
へー、チェックサムも独自に仕込むのかな
へー、チェックサムも独自に仕込むのかな
436デフォルトの名無しさん
2017/11/04(土) 08:37:10.99ID:32ZzWJzG >>432
事前条件ってまさにアサートの領分じゃん
事前条件ってまさにアサートの領分じゃん
437デフォルトの名無しさん
2017/11/04(土) 08:49:44.67ID:die+TITB >>434
C++より楽
C++より楽
438デフォルトの名無しさん
2017/11/04(土) 08:55:38.30ID:KxJ3WBAq モデルの引数を間違えてるっていうのはバグなのでー
開発時に分かればよいことなのでー
アサート使うべきだよねー
コンストラクタをぶくぶくと太らせる理由にはならぬよ
メタボリッククラスから脱却してスマートクラスにしよう
開発時に分かればよいことなのでー
アサート使うべきだよねー
コンストラクタをぶくぶくと太らせる理由にはならぬよ
メタボリッククラスから脱却してスマートクラスにしよう
439デフォルトの名無しさん
2017/11/04(土) 13:21:03.20ID:O0AU1SEY >>436
Javaの場合はアサートって言うとビルトインのassertをさすからね
事前条件なら自動的にアサート使えとはならないよ
それともコンストラクタでは
ExceptionではなくErrorを投げるべきって言いたいのかな?
Javaの場合はアサートって言うとビルトインのassertをさすからね
事前条件なら自動的にアサート使えとはならないよ
それともコンストラクタでは
ExceptionではなくErrorを投げるべきって言いたいのかな?
440デフォルトの名無しさん
2017/11/04(土) 13:36:25.85ID:KxJ3WBAq441デフォルトの名無しさん
2017/11/04(土) 15:21:29.77ID:1M0jr43T javaなら、コンストラクタで例外スローでいいでしょ。
442デフォルトの名無しさん
2017/11/04(土) 17:10:27.14ID:KxJ3WBAq443デフォルトの名無しさん
2017/11/04(土) 20:42:41.33ID:cKuNjw8p >>442
あほ
あほ
444デフォルトの名無しさん
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());
}
}
どなたか理由を教えてもらえないでしょうか?
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());
}
}
445デフォルトの名無しさん
2017/11/05(日) 14:11:12.97ID:0YSHLKzk 初心者じゃないんだろ35歳
自分で調べろ
自分で調べろ
446遊園地 ◆ExGQrDul2E
2017/11/05(日) 14:27:53.28ID:FPjW0d5Z 読むの面倒だから、エラー文も上げて。
447デフォルトの名無しさん
2017/11/05(日) 14:34:37.57ID:k/LyUYN/ ideoneは知らんけどリフレクションはjavaセキュリティマネージャ動いてたら実行できないからそれじゃねーの
448デフォルトの名無しさん
2017/11/05(日) 17:40:17.18ID:2ZrTuY5p 35歳に親切にすると君の職場に現れて付きまとわれるぞw
449444
2017/11/05(日) 18:22:30.39ID:z+9Dn5/C450デフォルトの名無しさん
2017/11/05(日) 18:54:33.30ID:qSskq3Yv 釣りでエラーが発生と言ってるだけだろ
https://ideone.com/yLwAJh
https://ideone.com/yLwAJh
451デフォルトの名無しさん
2017/11/05(日) 18:59:33.63ID:0YSHLKzk まず質問の仕方がおかしいんだよなぁ
ここは学校じゃないし、相手は先生じゃない
質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない
もっと相手に伝わるように質問しろ
ここは学校じゃないし、相手は先生じゃない
質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない
もっと相手に伝わるように質問しろ
452444
2017/11/05(日) 19:41:51.63ID:z+9Dn5/C453デフォルトの名無しさん
2017/11/05(日) 19:45:10.05ID:/i0gfJYB 何この変なの?
どっかのコテハンか?
どっかのコテハンか?
454デフォルトの名無しさん
2017/11/05(日) 19:46:54.84ID:PoYQIzOm >>450のリンク見てもエラーが出てるんだよな?
正直エスパーしようにも限界
正直エスパーしようにも限界
455デフォルトの名無しさん
2017/11/05(日) 20:07:50.04ID:2ZrTuY5p もうそいつに触れるのはよせ!
456デフォルトの名無しさん
2017/11/05(日) 21:21:54.00ID:0YSHLKzk457デフォルトの名無しさん
2017/11/05(日) 21:30:31.08ID:2ZrTuY5p 理解を越えているから考えては駄目
458デフォルトの名無しさん
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
まあ上のほうも自信ないのですが...誰か教えていただけませんか?
https://imgur.com/a/niyx6
https://imgur.com/a/ehrkB
https://imgur.com/a/5X3tQ
460デフォルトの名無しさん
2017/11/06(月) 00:47:27.68ID:1qhCOQ98 宿題スレへ
今実行したら出来ました。何でさっきは出来なかったんだろ…。
https://ideone.com/KdavqO
>>453
プログラマー板のコテハンです。
>>454
いや、リンクをたどるのは大丈夫でした。
>>456
ただ冷たくあしらわれたと思ったら、アドバイスをくれたので。
>>458
えっ?褒めてるのに?
https://ideone.com/KdavqO
>>453
プログラマー板のコテハンです。
>>454
いや、リンクをたどるのは大丈夫でした。
>>456
ただ冷たくあしらわれたと思ったら、アドバイスをくれたので。
>>458
えっ?褒めてるのに?
462デフォルトの名無しさん
2017/11/06(月) 02:26:46.28ID:tjV5ukzM >>459
前回はみんなが教えちゃったけど
正直ためにならないと思うんだよね
でも一個だけヒント言うなら一行ずつ処理を追ってみ(2番目の)
「この変数にはどんな値が入っているか(入るべきか)」意識しながら
現状インプットからアウトプットまで線でつながってない
インプットの仕方は「Java コマンドライン 入力」でググれ
前回はみんなが教えちゃったけど
正直ためにならないと思うんだよね
でも一個だけヒント言うなら一行ずつ処理を追ってみ(2番目の)
「この変数にはどんな値が入っているか(入るべきか)」意識しながら
現状インプットからアウトプットまで線でつながってない
インプットの仕方は「Java コマンドライン 入力」でググれ
463デフォルトの名無しさん
2017/11/06(月) 03:38:31.02ID:2Q/sT7xS ヤフーブログの https://blogs.yahoo.co.jp/kamyu_2010 にデザパタ解説を発見した。
464デフォルトの名無しさん
2017/11/06(月) 06:09:30.85ID:sonxQjeP465デフォルトの名無しさん
2017/11/06(月) 07:06:32.63ID:efUB4xY4 >>462
ありがとうございます。時間かけてやって見ます
ありがとうございます。時間かけてやって見ます
466デフォルトの名無しさん
2017/11/06(月) 07:25:39.44ID:kblaZiQ3467デフォルトの名無しさん
2017/11/06(月) 08:51:22.52ID:f5Hwp3Jw 課題の内容および詳細がバッドノウハウの固まりだな
やっぱ学校はCかLispでいいと思うよ
やっぱ学校はCかLispでいいと思うよ
468デフォルトの名無しさん
2017/11/06(月) 10:47:13.47ID:CLk5jCwv マウンティングするスレじゃないんですよ!
469デフォルトの名無しさん
2017/11/06(月) 13:56:05.08ID:Ql637c4l javapro wwww
前に安易に答え教えたせいか変数の使い方すらろくに理解してなくてひでぇな・・
金ドブだからもうやめた方がいいぞマジで
前に安易に答え教えたせいか変数の使い方すらろくに理解してなくてひでぇな・・
金ドブだからもうやめた方がいいぞマジで
470デフォルトの名無しさん
2017/11/06(月) 14:05:17.27ID:Ql637c4l 問題も毎回酷すぎてガチでビックリすんだけど学校の名前教えてくれよ
こんなゴミみたいな問題できても全く勉強にならんレベルの酷さだぞ
こんなゴミみたいな問題できても全く勉強にならんレベルの酷さだぞ
471デフォルトの名無しさん
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月を指定してください。");
}
}
}
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月を指定してください。");
}
}
}
472デフォルトの名無しさん
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 などのサイトに、ソースコードを貼って、質問しろ
month = 2
puts days[month] #=> 28
Ruby では、これだけ。
ただし、days[0]は使わない
画像などを貼るな!
paiza.io, codepad などのサイトに、ソースコードを貼って、質問しろ
473デフォルトの名無しさん
2017/11/06(月) 14:56:54.74ID:PEro5dbb474デフォルトの名無しさん
2017/11/06(月) 15:10:14.26ID:Ql637c4l >>350
上級Javaグラマーアカデミー一般命令・規約
規約6第23項18節
パラメータとして渡される値に関して
クラスの不変式を破っているオブジェクトの生成を防ぐため一般原則の特殊な場合として
メソッドおよびコンストラクタは後で使用されるパラメータの正当性を検査すべき
非公開メソッドに関しては一般に、アサーションを用いて検査すべき
上記規約に対する例外として、正当性検査のコストが高いか現実的でなく、かつ
正当性検査が計算の処理の中で暗黙的に行われる場合はこれに該当しない
また暗黙的検査によって誤った例外がスローされる場合はエラーアトミック性が失われることになるため
このような状況下においては抽象概念に適した例外をスローできるようにイディオムを使用すべき
上級Javaグラマーアカデミー一般命令・規約
規約6第23項18節
パラメータとして渡される値に関して
クラスの不変式を破っているオブジェクトの生成を防ぐため一般原則の特殊な場合として
メソッドおよびコンストラクタは後で使用されるパラメータの正当性を検査すべき
非公開メソッドに関しては一般に、アサーションを用いて検査すべき
上記規約に対する例外として、正当性検査のコストが高いか現実的でなく、かつ
正当性検査が計算の処理の中で暗黙的に行われる場合はこれに該当しない
また暗黙的検査によって誤った例外がスローされる場合はエラーアトミック性が失われることになるため
このような状況下においては抽象概念に適した例外をスローできるようにイディオムを使用すべき
475デフォルトの名無しさん
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)
「客が買った弁当を食べる」という行為を行った場合、客が所持している弁当が無くなるわけですが、この様な仕組みはどのように書けばいいでしょうか?
以上、長くなりましたが良い方法があればご教授ください。
よろしくおねがいします。
質問させてください。
質問1)
店から客が弁当を買うような仕組みのプログラムを作りたいのですが、
用意するクラスは「店」「商品の弁当」「客」「実行するためのメインクラス」で良いのでしょうか?
変数は「店と客の所持金」、「客の腹の空き具合」、「弁当によって満たされる満腹度」のようなものを考えています。
質問2)
この様なプログラムの場合、売買のメソッドはどのように作ればいいのでしょうか?
「店が売る」メソッドか「客が買う」メソッドのどちらかだけ必要なのか、両方必要になるのかが分かりません。
現実的に考えれば客が居なければどんなに商品があっても意味が無いので、「店は商品を用意する」それを「客が買う」ような設計になると思うのですがどうでしょうか?
質問3)
現実的には客が弁当を買えば店の在庫は減り、客が所持する弁当が増えます。
このようにオブジェクトの中のオブジェクトが違うオブジェクトに移動するようなプログラムはどのように書けばいいのでしょうか?
質問4)
「客が買った弁当を食べる」という行為を行った場合、客が所持している弁当が無くなるわけですが、この様な仕組みはどのように書けばいいでしょうか?
以上、長くなりましたが良い方法があればご教授ください。
よろしくおねがいします。
479デフォルトの名無しさん
2017/11/06(月) 18:19:33.27ID:f5Hwp3Jw 空腹度なんて抽象的すぎてゲームの中でしか成立しないぞ
480デフォルトの名無しさん
2017/11/06(月) 18:43:48.98ID:Ql637c4l ひっでぇ質問の内容w
何したいのかさっぱりわからん
何したいのかさっぱりわからん
481デフォルトの名無しさん
2017/11/06(月) 18:52:01.06ID:KtrOSJPo >>480
君は読解力なさすぎでは?
君は読解力なさすぎでは?
482デフォルトの名無しさん
2017/11/06(月) 18:53:07.65ID:kblaZiQ3 >>478
教授するような時間はないな
教授するような時間はないな
483デフォルトの名無しさん
2017/11/06(月) 19:13:07.93ID:T+apbet3484あ
2017/11/06(月) 19:30:58.35ID:/hMSyilp >>478
売買を真面目に考えると面倒くさい。
弁当のクラス以外に、店と客が「持ってる弁当のリスト」を持つか、
弁当リストクラスを別に作って、弁当に持ち主「店」「客」を持つとか、そんなんじゃないの?
どこにも属してない弁当が存在し得れば後者だと思うし、今回はどこにも属してない弁当があったほうが便利。
食った=無くなった=オブジェクトをリストから削除するか、弁当の満たされる満足度を食ったら残り0にするかじゃないかな。
腹の空き具合と弁当の容量のコンバート関数でももたせりゃ便利じゃねえの?後々。
その空き弁当箱は、捨てるときに、持ち主無しにしといて、たまに持ち主無しの弁当箱をバサッと消したほうが楽かも。
客が来たら作る、となるとまた面倒くさい。
店の方の在庫数で、負在庫に突入しそうなら補充とか、残り○個になったら補充、そういう風にするんじゃないの?
業務アプリみたい。
売買を真面目に考えると面倒くさい。
弁当のクラス以外に、店と客が「持ってる弁当のリスト」を持つか、
弁当リストクラスを別に作って、弁当に持ち主「店」「客」を持つとか、そんなんじゃないの?
どこにも属してない弁当が存在し得れば後者だと思うし、今回はどこにも属してない弁当があったほうが便利。
食った=無くなった=オブジェクトをリストから削除するか、弁当の満たされる満足度を食ったら残り0にするかじゃないかな。
腹の空き具合と弁当の容量のコンバート関数でももたせりゃ便利じゃねえの?後々。
その空き弁当箱は、捨てるときに、持ち主無しにしといて、たまに持ち主無しの弁当箱をバサッと消したほうが楽かも。
客が来たら作る、となるとまた面倒くさい。
店の方の在庫数で、負在庫に突入しそうなら補充とか、残り○個になったら補充、そういう風にするんじゃないの?
業務アプリみたい。
485デフォルトの名無しさん
2017/11/06(月) 20:04:51.42ID:tjV5ukzM >>478
いかにも初心者らしい疑問だけど
同時にどれももっともな質問だね
>質問1)
>用意するクラス
ソフトの規模の大きさに応じて
クラスは細分化していく
>「店」「商品の弁当」「客」「実行するためのメインクラス」
でもまあ小規模な前提なら
それで大筋でおかしくないと思う
もし規模が大きくなるなら
「金」とか「(弁当の)具」とか「客の行列」とか
クラス化する場合もあるかも
>「客の腹の空き具合」
ゲームなの?
業務アプリとゲームだとかなり考え方が違う
いかにも初心者らしい疑問だけど
同時にどれももっともな質問だね
>質問1)
>用意するクラス
ソフトの規模の大きさに応じて
クラスは細分化していく
>「店」「商品の弁当」「客」「実行するためのメインクラス」
でもまあ小規模な前提なら
それで大筋でおかしくないと思う
もし規模が大きくなるなら
「金」とか「(弁当の)具」とか「客の行列」とか
クラス化する場合もあるかも
>「客の腹の空き具合」
ゲームなの?
業務アプリとゲームだとかなり考え方が違う
486デフォルトの名無しさん
2017/11/06(月) 20:10:14.21ID:tjV5ukzM >>478
>質問2)
>売買のメソッド
これは二者関係だから
複雑になりがちなんだよね
まず話を簡単にするためゲームだとして
店視点の販売目的のゲームなのか
客視点の満腹目的のゲームなのかで違う
小規模ソフトならプレイヤー視点の方に
メソッドをつければOK
じゃあもっと複雑な場合どうするか?
客の買うメソッドから
店の売るメソッドを呼ぶという
二重呼び出しもありうるし
第三者が「売買」メソッドを
持って仲介するケースもありうる
「デザインパターン」とか学ぶと
そういう複雑な関係のさばき方が分かってくる
>質問2)
>売買のメソッド
これは二者関係だから
複雑になりがちなんだよね
まず話を簡単にするためゲームだとして
店視点の販売目的のゲームなのか
客視点の満腹目的のゲームなのかで違う
小規模ソフトならプレイヤー視点の方に
メソッドをつければOK
じゃあもっと複雑な場合どうするか?
客の買うメソッドから
店の売るメソッドを呼ぶという
二重呼び出しもありうるし
第三者が「売買」メソッドを
持って仲介するケースもありうる
「デザインパターン」とか学ぶと
そういう複雑な関係のさばき方が分かってくる
487デフォルトの名無しさん
2017/11/06(月) 20:13:40.02ID:tjV5ukzM >>478
>質問3)
店の弁当を減らす処理と
客の弁当を増やす処理を同時に行う
>質問4)
客クラスの変数で弁当の所有数を表現して
食事メソッドなどで消費したら減らす
店側で帳簿をつけていて
客側でも家計簿をつけているとイメージして
それをプログラムで表現すると
何をすればいいか分かりやすいかも
>質問3)
店の弁当を減らす処理と
客の弁当を増やす処理を同時に行う
>質問4)
客クラスの変数で弁当の所有数を表現して
食事メソッドなどで消費したら減らす
店側で帳簿をつけていて
客側でも家計簿をつけているとイメージして
それをプログラムで表現すると
何をすればいいか分かりやすいかも
488デフォルトの名無しさん
2017/11/06(月) 20:27:33.35ID:tjV5ukzM なお今回は弁当だから店と客の所有数の増減の
つじつま合わせだけやればいいと思うけど
組織間の社員や会員の移動みたいに
個体識別が必要なものが移動する場合は
参照したりIDを振ったりやはり複雑になる
つじつま合わせだけやればいいと思うけど
組織間の社員や会員の移動みたいに
個体識別が必要なものが移動する場合は
参照したりIDを振ったりやはり複雑になる
489デフォルトの名無しさん
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しか使ったことが無いので他にどのようなものがあるか調べてみようかと思います。
質問にあいまいな部分が多すぎて分かりにくい文章ですいません。
自分はまだ始めたばかりの初心者なので、大規模なものでは無くeclipseの練習がてら細々と色々作ってコンソールで実行しようと考えています。
いくつかご指摘があった通り、確かに「客視点」なのか「店視点」なのかを決めてしまったほうが良いですね。
とりあえず486の通り客視点で作ってみようかと思います。
あまり規模を大きくすると混乱すると思うので、「店1つ」「客1人」「弁当1種類」でやってみます。
485で書いていただいたような「通貨」や「弁当の具」や「客の行列」などはまだ考えないことにします。
>>487
この場合、客と店にそれぞれカウンター変数を作ってそれぞれカウントするような認識で良いでしょうか?
それとも弁当自体にカウンターを持たせてオブジェクト数をカウントするのでしょうか?
>>484
リスト構造はLinkedListしか使ったことが無いので他にどのようなものがあるか調べてみようかと思います。
492デフォルトの名無しさん
2017/11/06(月) 21:32:12.25ID:T+apbet3 目的のわりにやろうとしてることが複雑すぎる。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
- 【サッカー】日本代表、FIFAランキング“4位”の強豪イングランドとの対戦が正式決定! 来年3月に聖地ウェンブリーで激突へ [久太郎★]
- タイがカンボジアを空爆、トランプ氏仲介の和平合意は“事実上崩壊”軍事衝突へ タイ首相「もはや対話の余地ない」 [お断り★]
- VIPにも一人くらいは人肉食べたいやつとかいるのかな?
- すまん、飲食チェーン店での一幕なんだがオマエラはこれを見て何を思うかおしえてくれ。
- 粗品「南原が3億も貰えんの?」 [279254606]
- 朝雑談
- 毎日菊花茶飲んでたら美肌になったよ
- 【朗報】VTuber、とうとうスパロボに参戦する
