1 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 20:17:08.87 ID:N8MsK2gr0.net] Java初心者のためのスレッドです。 ※前スレ Java入門・初心者質問スレ Part.7 mevius.5ch.net/test/read.cgi/tech/1515549964/ VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured
331 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 12:55:08.73 ID:xghqpyUKa.net] Twitterで本人に聞いてみれば
332 名前:デフォルトの名無しさん [2018/08/13(月) 03:04:53.34 ID:hqkLiaZ40.net] コメント化ってどんな時に使えばいいんですか? 今やってるプロジェクトで一切コメントを置いてないせいでコードがスパゲッティから毛糸のほつれに進化しかけています。 //と/**/はどっちの方がいいのか、どのタイミングで入れたらいいか等が知りたいです
333 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 08:10:45.77 ID:CiYwNC/na.net] メソッドやクラスにはできるだけJavaDocコメントを付けて、そのメソッドやクラスの説明を書く そして原則として、メソッドの中にはコメントは極力書かない 説明を一言書きたくなるようなパッと見何やってるか分かりにくい部分は、コメントの代わりに別のメソッドとして切り出してメソッド名で説明する それを徹底してればprivateメンバなんかはいちいちJavaDocコメント書かなくても問題にはならない
334 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 08:23:54.17 ID:HTY6GtFCa.net] >>318 「リーダブルコード」という、素晴らしい名著があるからそれを読んでみることをおすすめする。
335 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:15:39.16 ID:9hQNlq880.net] 企業によるアンチ規約あるあるだな
336 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 15:56:23.52 ID:8BISUvphd.net] ローカル変数に引数を代入する
337 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:38:50.33 ID:9hQNlq880.net] 参照でなければ引数自体がローカルなんだがw
338 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 17:00:44.15 ID:3xCIU7sj0.net] クリップボードについて質問です。 Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable object = clipboard.getContents(null); String s = "Test"; // 保存するテキスト StringSelection selection = new StringSelection(s); clipboard.setContents(selection, null); String str = ""; try { str = (String)object.getTransferData(DataFlavor.stringFlavor); } catch(UnsupportedFlavorException e){ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println(str); まずエディタか何かで人力でクリップボードに何かの文字列をコピーします。例えば"ABC"をコピーして、 このコードを走らせると ABC と表示されます。そしてそのままもう一度このコードを走らせると、今度は Test と表示されます。ABCと表示されるのは何が悪いんでしょうか?
339 名前:デフォルトの名無しさん [2018/08/13(月) 21:22:00.43 ID:wBJkicYb0.net] >>324 なるほど、完全に理解した clipboard.setContents(selection, null); これのあとに Transferable object = clipboard.getContents(null); これを書けばおk
340 名前:デフォルトの名無しさん [2018/08/13(月) 23:25:56.73 ID:z6+TJcGX0.net] >>324 そのプログラムだとこうなってるよね。 1. 2行目の getContents() でエディタでコピーした "ABC" が取り出される。 2. setContents() で "Test" がクリップボードにセットされる。 3. 1で取得した object の中身を取り出して出力する。(取り出されるデータは "ABC")。 "ABC" が出力されて当然の作りになっている。 上記の3の所で "Test" を取り出したいなら 2 の直後で 1 の処理をしなければならない。
341 名前:デフォルトの名無しさん [2018/08/14(火) 07:07:01.81 ID:IYCmiTRH0.net] Listを複数のリストに分割したいのですがやり方がわからず教えていただきたいです // たとえば要素の数が10のリストがあったとして List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { list.add(i); } // それを4つのリストに要素の数ができるだけ均等になるように分割したいです List<Integer> list1 = new ArrayList<>(); // <- 要素は0,1,2 List<Integer> list2 = new ArrayList<>(); // <- 要素は3,4,5 List<Integer> list3 = new ArrayList<>(); // <- 要素は6,7 List<Integer> list4 = new ArrayList<>(); // <- 要素は8,9 どうぞよろしくお願いいたします
342 名前:デフォルトの名無しさん [2018/08/14(火) 07:31:28.19 ID:IYCmiTRH0.net] >>327 自己解決しました、もう良いです 返信しないでください
343 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 09:51:15.67 ID:nGrU4rwG0.net] >>325 ありがとうございます。それはうまく行きました。しかしごめんなさい。どうも私が問題をちゃんと把握出来ていなかったようです。 try { Thread.sleep(7000); } catch (InterruptedException e1) { // TODO 自動生成された catch ブロック e1.printStackTrace(); } Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable object = clipboard.getContents(null); String str = ""; try { str = (String)object.getTransferData(DataFlavor.stringFlavor); } catch(UnsupportedFlavorException e){ e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println(str); どうもJTextField が関係しているらしいです。このプログラムにはテキストフィールドがいくつかあるのですが、 そこに"ABC"と入力し、それを選択、Ctrl+C でコピーします。 そしてこのコードを走らせ、スリープしている7秒の間に別のエディタで Test をクリップボードにコピーします。 すると出力が ABC となります。7秒の間にエディタ上でペーストするとちゃんとTestがペーストされます。 ABCをコピー、続けてTestをコピーしてからこのコードを走らせるとちゃんとTestとでます。 ABCをエディタでコピーした時はこの症状は出ません。
344 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 22:37:46.47 ID:w7/teWcla.net] public static void main()って メソッドなんですか?
345 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 22:44:24.53 ID:z3VJK4Uca.net] メソッドです。 Javaで書かれたプログラムはMainクラスのmainメソッドを実行すると決まっています。
346 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 23:13:33.44 ID:w7/teWcla.net] なるほどkotlinのmain ()関数のようにエントリポイントになっているんですね コンストラクタもメソッドですか?
347 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 00:49:57.59 ID:
] [ここ壊れてます]
348 名前:BN2igdfy0.net mailto: >>331 クラス名は Main じゃなくてもいいんだよ。 [] [ここ壊れてます]
349 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 05:08:46.27 ID:JGyCTF+Aa.net] >>332 どちらもその理解で合ってる
350 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 05:10:31.45 ID:JGyCTF+Aa.net] >>333 あ、はい
351 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 08:36:03.18 ID:nBIOAicW0.net] すいません教えてもらってjdkは何とか導入成功したんですが eclipseってやつと日本語化のを導入してコードを実行しようとしたら 選択は起動できず最近の起動もありません。とエラーが出て実行できません。何度か再インストールしましたが結果変わらず。 何が原因なのでしょうか?導入で参考になるサイトあれば教えてほしいです 後JDKだけじゃjavaのコードを実行とか出来ませんよね?eclipseってやつを導入して初めて意味があるものって認識で大丈夫ですか・ そこら辺もかなり曖昧なのですが…
352 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 09:15:49.93 ID:z0v/PTWta.net] >>336 間違ってる。JDKが入っていればあとはメモ帳でjavaのプログラムを書いて実行できる。 eclipseはあくまで超高機能なメモ帳だと思ってればいい。 で、そのeclipseなんだけど、そもそも古くて昔から使ってる人以外はもうほとんど誰も使ってない。 理由は今まさに君が直面しているように、自分の期待する動きをさせるのがとても大変だから。あと重い。 今からプログラムを始めるならIntelliJ IDEAの無料版か、Android Studio (無料)を使うことをお勧めする。 どちらも基本的には同じメーカーが作ってるほぼ同じものだけど、ただjavaを書くだけならIntelliJの方が余計なものが入ってなくていいかもしれない。
353 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 09:18:39.00 ID:z0v/PTWta.net] >>336 IntelliJの無料版のインストールをしてる記事も見つけたから貼っとくね。 https://qiita.com/syu_chan_1005/items/46f94412f7493d6e60eb
354 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 11:06:42.84 ID:nBIOAicW0.net] >>337 レスありがとうございます メモ帳でもプログラムの実行って出来るんですか。テキストドキュメントですよね? コンパイルとかも勝手にしてくれるなら一番軽くて楽そうですね >>今からプログラムを始めるならIntelliJ IDEAの無料版か、Android Studio (無料)を使うことをお勧めする こちらの方も特性まで教えていただきありがとうございます。調べてみます 後、C++やろうと想ってvisualstudio入れてあるんですけど、これはjavaでは使えないですよね
355 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 11:54:47.10 ID:nBIOAicW0.net] https://gyazo.com/e3fe0cd9ac22553f62241cbe9285f1d1 手順IntelliJ IDEAの構成のここまで出来たんですが説明にある(Project name)のついたフォルダの横にある▶を押して見ましょう。 というのが見当たらず詰みました;どこにあるのでしょうか
356 名前:デフォルトの名無しさん [2018/08/16(木) 13:00:59.59 ID:yLNqa6vha.net] >>340 それのプロジェクト名は untitled だからそれの左横。 ていうかプロジェクト名を自分で入力しないで先に進んじゃったようだね。
357 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 13:39:19.41 ID:nBIOAicW0.net] >>341 おかげさまで見つかりました。ありがとうございます! フォントもdokojavaよりかっこよくモチベーション上がりそうです Run押したら下に結果表示されたので全て導入うまくいってそうです 本当にありがとうございます
358 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 16:06:09.21 ID:OpTecYpPa.net] うまくできたようで良かった。 IntelliJは本当に素晴らしくて、入力補完も神がかってるから勉強にはちょうど良いと思う。
359 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 13:27:44.81 ID:GpawSU9CM.net] aかbかどちらか値が入ってる方を使いたく defaultIfEmptyという便利なものを見つけたのですが aもbもどちらも初期値というわけではないんですよね 初期値設定以外で使うのは変ですか?
360 名前:デフォルトの名無しさん [2018/08/18(土) 00:59:17.77 ID:jNUruXDd0.net] 言語そのものじゃない質問ですが、IDE(Android Studio とか IntelliJ IDEA)使ってても、ビルドツールって必要なんでしょうか? もしくは有用なんでしょうか?
361 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 16:56:22.20 ID:ouPv64vz0.net] 今まで Eclipse からしかプログラムを走らせたことがなかったのですが、昨日プログラムをエクスポートしてノートPCに持って行ったら、 A JNI error has occurred, please check your installation and try again というエラーが出ました。色々試行錯誤しているうちに、「実行環境JREの使用」の問題らしいと分かりました。 JavaSE-9だとエラーになって、JavaSE-1.8だと大丈夫です。 他の人にプログラムを使ってもらう時とか、どうすればいいんでしょうか? プロジェクト固有のJREの使用という項目もありますが、このあたりは何を意味してるんでしょうか?
362 名前:デフォルトの名無しさん [2018/08/19(日) 17:23:49.79 ID:Kq0ObHsK0.net] >>346 スタックトレースを見ないとエラーの原因がわからないよ 原因がわからないと解決策もわからないよ コマンドから実行したらスタックトレースが出力されると思うから それを教えてちょんまげ
363 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 17:41:46.22 ID:KG8+gtiYF.net] JREが9ならJDKも9 でコンパイルしなければね
364 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 19:57:08.28 ID:4jiZ931E0.net] >>347 Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: handymanPackage/HandymanBMain has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0 ノートPCがwindowsアップデートでクラッシュし、再インストールという惨事に見舞われてしまってレスが遅くなってしまいました。 JREは昨日初めてインストールしたのに、何でこんなことになるんでしょうか?最新版じゃないんでしょうか?
365 名前:デフォルトの名無しさん [2018/08/20(月) 20:20:40.35 ID:7cywDiIN0.net] >>349 翻訳 | handymanPackage / HandymanBMainはJava Runtime(クラスファイルバージョン53.0) | のより新しいバージョンでコンパイルされていますが、このバージョンのJava Runtimeは | クラスファイルバージョンを52.0までしか認識しません バージョン53.0はJava9 バージョン52.0はJava8 Java9以上のJDKでコンパイルしたものを Java8のJREで実行しようとしてるんじゃないかな 対応策は、実行環境にJava9を入れるか もしくは、Java8でコンパイルするかってところ 他の人にプログラムを作ってもらう時は実行環境のバージョンと 同じかそれよりも古いバージョンでコンパイルしてもらえば良い
366 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 20:41:39.99 ID:4jiZ931E0.net] >>350 だいたい分かりましたが、よく分からないのが1.8の次が何で9なんでしょうか? 1.9とか2なら分かるんですが、何でいきなり9になるんでしょうか?
367 名前:デフォルトの名無しさん [2018/08/20(月) 21:53:30.11 ID:7cywDiIN0.net] >>351 Java9からバージョンの形式が変わったんだよ 変えられた理由は ・メジャーアップデート ・マイナーアップデート ・セキュリティアップデート を区別しやすくするため
368 名前:デフォルトの名無しさん [2018/08/20(月) 23:26:30.62 ID:D6aa3xEz0.net] ソースコード読むときにインスタンスなのかメソッドなのかがすぐに分からないんだけど、 ソースコードを読むときのコツみたいなものってありますか?
369 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:31:47.69 ID:kxzeRRBS0.net] VSCode などでマウスホバーすれば、宣言が表示されるのでは?
370 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:02:11.35 ID:5hCHO/+ya.net] java本格入門って本を勧められたのですが読んだことある方います?感想が聞きたいです
371 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 08:02:55.21 ID:9OhLuljd0.net] すいませんスッキリわかるjava入門をやってるのですがファイルの分割の項が 環境が本
372 名前:ニ違うので分かりません; intelli IDEAを使ってるのですがどのようにすればいいのでしょうか? [] [ここ壊れてます]
373 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 08:20:12.87 ID:9OhLuljd0.net] 今までずっと閉じるを使って来たので保存方法も分かりません ググっても自動保存をオフにするとかそういう記事しか出てきません; どこをいじればいいのでしょうか https://gyazo.com/62228b87ec37fdce11d0b0ebfae7626d
374 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 09:28:06.86 ID:Q+aoBvc3M.net] Javaはビルド周りが腐っててファイルの配置やパスの設定に対してかなりセンシティブなんだよ そのへんで嵌るとJavaに慣れてる人でも結構厄介だから、諦めて本の通りの環境を用意したほうが結果的に時間の節約になる 今の君の経験値で取り組むべき優先度の高い問題ではないし、ましてファイルの保存方法すら類推できないレベルでは、 今目の前の問題だけ付け焼き刃で解決できたところで今後同様の問題にぶち当たったときに自分で解決できるとは思えない
375 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 20:01:02.13 ID:9OhLuljd0.net] 多分自己解決しました save allを押したのにPCから何も応答がないので出来てないのかと思ってました
376 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 20:16:08.41 ID:jFi7Ee350.net] 普通に左側にProjectペインを出してファイルを作りたい場所の上で右クリックするだけでしょ。 そもそもパソコンをあまり使ったことがない?
377 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 21:51:35.73 ID:9OhLuljd0.net] いえ、3年使ってます ただゲームくらいでしか使ってなかったのであまり分かりません;
378 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:36:06.37 ID:jFi7Ee350.net] ああ、まあそれじゃあしょうがない とりあえず大抵のことをやっても壊れはしないから、調べたり聞いたりする前に適当にいじってみるのも大事だよ それで勘みたいなものを覚えていくものだから
379 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 03:33:02.64 ID:5X50Ptai0.net] パソコンは壊れないけど環境はよく壊れる
380 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:43:07.07 ID:sP/ywaCGa.net] そうしたらそれを直すのもまた勉強
381 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:23:38.59 ID:0hzqlpOdM.net] 説教臭いスレだな
382 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 13:36:26.24 ID:J3AVJGwl0.net] スッキリ分かるjava入門の多態性の説明がよくわからないんですが 親クラス型の配列を作って派生先クラスのインスタンスを代入して配列を回して一気に似たような処理を簡単に記述する のが多態性って認識であってますか? もうちょっと分かりやすく説明してる所あったらお願い致します
383 名前:デフォルトの名無しさん [2018/08/24(金) 13:45:30.50 ID:MEArwTdwa.net] >>366 ま、配列に入れて使うとは限らないが親クラスまたはインターフェースの型でインスタンスを扱えるって事だよ。 こういうのは実装を隠したい時にも使える。
384 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 14:33:37.18 ID:J3AVJGwl0.net] >>367 ありがとうございます abstract,interfaceのクラス型でインスタンスを作れないから、このやり方を使って インスタンスを扱えるようにするってことですかね? 親の所にないメソッドは使えないみたいなので利便性がよくわかりませんが・・
385 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 14:41:49.42 ID:ZgK6e0Tb0.net] cat.cry dog.cry 猫は猫のように鳴き、犬は犬のように鳴く。 親は親のように泣き、子は子のように泣く 自動的に実体に応じた、動作をする
386 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 14:59:55.60 ID:l959lfiYd.net] >>368 そこが最大の利点でだな 同じ親を持つ個別のクラスを比較して比較したりとか ファイルのオープン/クローズとデータベースのオープン/クローズを使う側は同じ処理で使えるようにするとかが出来る
387 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 06:57:20.11 ID:b/emt3jR0.net] >>370 ありがとうございます この
388 名前:{自体があまり計算問題を使って解説してないのでメリットがパッとしませんが とりあえず何となくで覚えとこうと思います [] [ここ壊れてます]
389 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 07:56:40.41 ID:BMpD23L5a.net] >>371 それはJavaというかオブジェクト指向の特徴なんだけど、いずれもうちょっと複雑なことをするようになれば自然にメリットがわかるよ。 今はそんなもんか程度の理解でいい。
390 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 08:03:03.50 ID:b/emt3jR0.net] すいませんフィールドにnullなんて入れてないのにnullって表示されるんですけど どこ直せば正常に名前が呼び出されますか? https://ideone.com/lfTf9n やっぱりあまり理解できてなかったかもです;
391 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 09:19:55.50 ID:EHvwSMrp0.net] >>373 これの見方がよくわからんのだけど何がnullになってるの?
392 名前:374 [2018/08/25(土) 10:26:08.92 ID:EHvwSMrp0.net] 自分もjava勉強中なので試しに作ってみた これで動いたよ 違うところだけ書いてみる public class Hero extends Caractor { Hero(String name){ this.name = name; } public void attack(Caractor m){ System.out.println(this.name + "のこうげき!"); System.out.println(m.name + "に10のダメージを与えた!"); m.hp -=10; } } public class Slime extends Caractor { Slime(String name, int hp){ this.name = name; this.hp = hp; } public void run(){ System.out.println(this.name+"は逃げ出した!"); } } あとはだいたい同じです。
393 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 10:36:53.08 ID:EHvwSMrp0.net] あ、あとキャラクターのフィールドがprivateになってるからprotectedにしたら動いたよ これが綺麗なコードかはわからないけどとりあえずどうでしょうか
394 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 11:33:36.67 ID:ldpy0bgQ0.net] >>373 継承先のクラスで同じ名前でフィールドを定義しても別のフィールドになる attackメソッドにSlimeのインスタンスを入れているけど Monsterクラスのnameを見てるのでSlimeに設定したnameは表示されないでnullが表示される
395 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 12:54:17.01 ID:gxBSyOuw0.net] 子クラスで、親クラスと同じ名前のフィールドを定義したら、ダメ! オブジェクト指向としては、明らかな間違い! 同名のメソッドは、上書き(オーバーライド)するけど、フィールドはしない
396 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:14:33.12 ID:gxBSyOuw0.net] for (Character c : list) { c.attack( ); } list に、モンスターや勇者などを混ぜて入れて、 その親クラスのCharacter として、抽象化して扱えば、 if 文で、モンスターや勇者の処理を、場合分けせずにすむ モンスターや勇者は、それぞれ実体に基づき、自動的に攻撃する。 見かけの型は親クラスだが、攻撃は子クラスのメソッドを呼ぶ つまり、抽象化する事によって、型による分岐がなくなる! 逆に言えば、型によって分岐していたら、オブジェクト指向ではない if モンスター型なら if プレイヤー型なら
397 名前:デフォルトの名無しさん [2018/08/25(土) 13:24:39.80 ID:KMExyDFm0.net] >>379 オブジェクト指向ではポリモーフィズムが大事なんだって考えだね
398 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:51:30.74 ID:QXNuAaPsM.net] 時代遅れな考えだよね 最近は関数型の影響によって型による分岐が市民権を得つつある C#もついにパターンマッチを導入して型による分岐を積極的に推奨するようになった Javaも10年くらいしたらそうなるよ
399 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 14:36:23.71 ID:t7aLMQyua.net] 推奨はしてない ポリモーより型スイッチの方が書きやすい場合も存在するよね 全否定しないでそういうのもサポートしていこうよってだけ 型スイッチがポリモーを置き換えるかというと全くそんなことはなくて せいぜいデータドリブンのアプローチで書かれた僅かな部分の記述が綺麗になる程度
400 名前:デフォルトの名無しさん [2018/08/25(土) 14:53:44.82 ID:KMExyDFm0.net] >>382 なるほど、それなら分かる
401 名前: mailto:sage [2018/08/25(土) 15:45:54.17 ID:gxBSyOuw0.net] >>379 のやり方では、新たにモンスターを追加しても、ソースコードを修正しなくてよい もし型によって分岐していたら、大変。 すべての分岐箇所を修正して、テストしないといけない! 項目が追加された際の、分岐箇所の修正をなくすために、オブジェクト指向が作られた
402 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:14:08.91 ID:b/emt3jR0.net] >>375 ありがとうございます。いけました この本該当ページにHeroクラスしか書いてないから コンパイル失敗したら手詰まりで; attack(Caractor m){ ←ここがattack(Monster m)だったから動かなかったんですかね? Slimeと同じ親持ってないと出来ないんですね。本はMonsterとなってたので本が間違えてるんですね
403 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:30:25.41 ID:RUz16HRCd.net] >>385 その理解だと危ない Slimeクラスフィールドの定義と使い方の問題だからスコープやらOrverrideをちゃんと理解したほうがいい 教本によくある「親は子を使えない」の典型例だぞ
404 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:37:44.34 ID:RUz16HRCd.net] まぁとはいえ細かい部分の理解は後で修正は効くから先に進んでも別に良い
405 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 18:47:47.60 ID:b/emt3jR0.net] >>377-378 フィールドはオーバーライドしないんですね。408-409ページにて普通に継承先で同じフィールドを定義してたので いいのかなって思ってました。 同じフィールドを使いたい場合は親にあるメンバを使えばいいんですね。タメになります ありがとうございます
406 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 19:35:13.69 ID:b/emt3jR0.net] >>386 フィールド直したら仮引数がMonsterの元々あったコードでもいけました SlimeとHeroが同じ親だとis-aの関係がおかしいと思ってたので助かりました ありがとうございます …もっかい読み直してみます^^;
407 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 02:02:46.21 ID:UC7Cb0Ac0.net] 文字列比較containsで正規表現は使えますか? とあるサイトで使えるとあったので試してみましたが使えませんでした
408 名前:デフォルトの名無しさん [2018/08/26(日) 02:12:09.19 ID:IHxJX3F+0.net] >>390 使えないよ、そのサイトが間違ってる
409 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 03:16:41.69 ID:UC7Cb0Ac0.net] ありがとうございました
410 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 10:30:20.29 ID:iIRyt0Moa.net] Kotlinは使えた気がするから、そのサイトはKotlinと混同してるのかもね
411 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 13:23:38.37 ID:HHP/3bjy0.net] Kotlin の場合は Regex のインスタンス渡すやつがあるからそれで使える。 Regex ではなく String のインスタンス渡した場合は Java と同じ動作。
412 名前:デフォルトの名無しさん [2018/08/27(月) 11:05:42.24 ID:efjEsUrt0.net] サイトの質問で申し訳ないんですが paizaって入力を受け付ける関数とかは使えないんですか? int abc=new java.util.Scanner(System.in)nextInt();って打っても実行はできるんですが 入力まち画面は出ません
413 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 11:37:43.51 ID:ba8BcfX30.net] 出力が標準出力で、入力は標準入力。 入力の所に書けば? ファイルから読み込みたいのなら、 ファイル名の右横にある、+ を押して、入力ファイルを作る
414 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:01:59.11 ID:efjEsUrt0.net] >>396 了解しました 実行の下にあるのに全然気づきませんでした(@@;) ありがとうございます
415 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:32:02.03 ID:dQ3pJlXI0.net] EntityクラスにDBのデータを入れて加工してDAOクラスに突っ込んでViewに投げるという処理を流れ作業としてやっているのですが、クエリで絞っていきなりDAOに入れたら早いかもと感じています。Entityクラスを省くのはjava開発的にどうなのでしょうか。 もう別の新しい概念があるのかもしれませんが
416 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 12:54:00.84 ID:HPy1/YKZa.net] DAOに突っ込むってどういう意味?ViewってDBのViewなのかMVCのViewなのかどっち? java開発的にどうとか以前に曖昧な言葉遣いに注意せよ
417 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:17:09.10 ID:VnEVG+oDM.net] こちらで質問していいの
418 名前:か分かりませんが… プログラミングは全く勉強したことがありません。 仕事でジェノグラム(家族図的なもの)をよく作成するので、家族歴(結婚、離婚、出生、死亡)の時間軸に合わせてその時期にどんな家族状況だったかを図示できるようなプログラミングを作ってみたいなと思ってます。 こういうものを作るのに最適なアプリケーションってどんなものなんでしょうか。 エクセルが好きで関数いじったりするのは苦になりません。 よろしくお願いします。 [] [ここ壊れてます]
419 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:31:24.25 ID:dJeCT78qM.net] >>400 Excel好きなんだったらExcelでいいよ VBAちょっと齧れば十分やりたいことはできるはず 本格的なプログラミングは本業にして金稼がない限り習得コストや手間の割に合わんよ
420 名前:デフォルトの名無しさん [2018/08/27(月) 21:31:31.57 ID:l2rfNjjda.net] >>400 やっぱそれってExcelのマクロでやっちゃった方が良いんじゃないかなあ。 いやもしかするとマクロも要らんかも知れないよね。グラフ出せたりするし。 Excelの事は良くわからないけど。
421 名前:398 mailto:sage [2018/08/27(月) 21:36:06.38 ID:Psg4p/SV0.net] 最近クラスとメソッドを覚えたような素人で言葉が足らずすみません Entityクラスを作らずDAOクラスから直接DTOクラスを作ってしまうのは良くない事なのかご意見を聞きたかった次第です
422 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 22:10:38.71 ID:dJeCT78qM.net] >>403 Javaドカタワールドで一般的にいうentityってのはDBとアプリケーションコードとの間のデータの受け渡しに使われるDTOの一種にすぎない 最終的にViewに渡すものと同じなら省略するなり好きにしたらいい エンティティは本来ドメインモデル上の登場人物であり、ビジネスロジックで主役として振る舞うべきもので、 DAOの中でデータアクセスのためだけにEntityを使うってのは本来はおかしな話
423 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:26:20.98 ID:TEJeUOom0.net] プログラム(Java) ←→ entity ←→ DB Rails が、migration で自動的に作るのを、手作業で作っているだけだろ
424 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 06:59:33.13 ID:CaCX57FK0.net] >>404 DAOのEntityとドメイン駆動のEntityを混同してないですか? javaドカの世界はオレオレ理解が星の数ほどありそうで怖いです
425 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 07:01:25.66 ID:CaCX57FK0.net] >>405 Entityぶち込みの概念はRailsのが後じゃ
426 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 08:52:02.52 ID:oX5PU4jWa.net] [DB] -- DTO(399の会社ではentity) -- [DAO(ドメインモデルではrepository)] -- DTO(ドメインモデルではentity) -- [サービス/ユースケース/トランザクション(たぶん399の会社にはない)] -- [コントローラ] -- DTO/ViewBag -- [ビュー] こうか?
427 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 09:13:22.39 ID:oX5PU4jWa.net] 書いてて思ったけど、一番左のDTOはDTOというよりActive Recordかなあ そこらへんはDAOを主軸にして見るならあくまでDAOの実装の詳細だからアーキテクチャ的にはどうでもよい部分 DAOの中でSQL書いて左から2番目のDTOに直接詰めるのももちろんアリ、というかORM使わないなら普通はそうする
428 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 12:36:39.57 ID:CaCX57FK0.net] >>409 クエリ書ける軽量ORMとかならEntityクラスなんて要らねーよという雰囲気ですかね でも、お作法としてEntityクラス作るのもありかなと DBのリプレースに強そうなんで
429 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 12:39:50.34 ID:CaCX57FK0.net] つかEntityとDTOを分けない所多いんですか? 未経験で世界が狭いので興味あります
430 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 13:35:17.88 ID:psOOFlweM.net] DBの詳細を吸収するのは一般的にはDAOの仕事 更にドメイン寄りの論理的な型とシリアライズ用の型を区別したいんなら、 (DDDでいう)エンティティを返すリポジトリクラスがあって、 リポジトリが中でDAOを使ってDBからデータ引っ張ってきて行オブジェクトをエンティティに変換するのが今風だと思う
431 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 06:50:26.78 ID:Q2YQokuo0.net] javaを勉強中の学生です。 画像の問題が全くわからなく、空欄の答えとできればその理由を簡単にでいいので教えて頂きたいです、、 どうかよろしくお願いします。 https://i.imgur.com/TAKEWJX.jpg