Java入門・初心者質問スレ Part.3 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/04(火) 20:41:11.59ID:y0EcmGB0
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.2
http://echo.2ch.net/test/read.cgi/tech/1478863511/
129デフォルトの名無しさん
垢版 |
2017/04/26(水) 17:46:51.25ID:HrCTO57d
>>128
知らねえ。
てか、やってみればいいじゃねえか。
2017/04/26(水) 18:04:36.33ID:C1JG3n6h
>>128
ID:/ZfpN6QHはム板/マ板に住み着いている荒らしなのでスルーで
自分で調べりゃいいことを他人に丸投げして調べさせる、悪意ある質問を繰り返しています
131128
垢版 |
2017/04/26(水) 18:22:25.64ID:/ZfpN6QH
>>130
荒らしではない。
悪意ある質問などしてない。
132デフォルトの名無しさん
垢版 |
2017/04/26(水) 19:08:26.13ID:aOOyj4L0
>>131
まあとにかくやってみればわかるからやってみな。
2017/04/26(水) 19:46:51.92ID:VGUvgo7C
Ideoneの話だからここだとスレチじゃないかね
2chだと専門で扱ってる所無いかもしれんが、他で聞いた方が良いだろうな
134128
垢版 |
2017/04/26(水) 19:54:48.55ID:/ZfpN6QH
>>129 >>132
ありがとうございました。

>>133
ソフトウェア板ですかね。
135128
垢版 |
2017/04/26(水) 20:17:14.84ID:/ZfpN6QH
たびたび失礼します。

やってみたら出来ました!
https://ideone.com/V0Jd9h
繰り返しになりますが、アドバイスをくれた方ありがとうございます。
2017/04/26(水) 20:23:09.70ID:C1JG3n6h
>>135
どういたしまして
137デフォルトの名無しさん
垢版 |
2017/04/27(木) 12:34:34.72ID:11f5ZnzK
テーブルでA1はHTML内で5に指定、A2に<input type ="number" value ="0">があって、A1セルとA2セルを足したい場合
rowsとcellsで指定するとA2がNaNになり結果が5NaNになるんですがどうしたらいいですか?
この場合inputの初期値0は効かないのでしょうか?A2をparseIntで囲ってもだめでした
138デフォルトの名無しさん
垢版 |
2017/04/27(木) 12:35:09.09ID:11f5ZnzK
誤爆しましたすみません
2017/04/27(木) 16:27:12.96ID:KUrn7ZtR
Javaで、char型の変数に文字を(キーボードから)入力したいのですが、
Scannerクラスを使うとnextChar()が無いためうまくいきません。
next()やnextLine()だとコンパイルエラーになってしまいます。
どのようにすればよいでしょうか?
2017/04/27(木) 17:06:15.78ID:Zbny+f2I
>>139
今のJavaで積極的にcharを使う理由は全然ないんだけど、何か理由があるのかな
まあそれはともかくScannerから一度Stringで受けてからcharAt()すればいいんじゃね?
141139
垢版 |
2017/04/27(木) 18:34:31.17ID:KUrn7ZtR
>>140
レスありがとうございます。
本の課題でchar型の入力を使うものがあったので。
charAt()メソッドを使ったら出来ました。
https://ideone.com/O96vZQ
ありがとうございました。
142デフォルトの名無しさん
垢版 |
2017/04/28(金) 03:06:25.55ID:v9V+NcAE
>>141
君にこれをあげよう。
https://ideone.com/5vlm7f
143139
垢版 |
2017/04/28(金) 16:13:12.31ID:OeyLlymU
>>142
ありがとうございます。
Scannerクラスより利用頻度は低くなると思いますが、
参考にしたいと思います。
2017/04/28(金) 16:19:37.25ID:pIHGdJ8Z
>>143
逆逆、Scannerの方が頻度低くなる
145139
垢版 |
2017/04/28(金) 16:52:55.66ID:OeyLlymU
>>144
まだ詳しく理解してないですが、
char型を使う場合に、という意味ですかね。
今はScannerしか使ったことないので…。
2017/04/28(金) 17:26:10.18ID:pIHGdJ8Z
>>145
汎用性の高さって意味
ScannerよりもIOStreamの方がやってる内容が低レベル(機械に近い)ので見る機会も使う機会も多いよ
147139
垢版 |
2017/04/28(金) 17:53:15.48ID:OeyLlymU
>>146
分かりました。覚えておきます。
ありがとうございます。
148デフォルトの名無しさん
垢版 |
2017/04/29(土) 15:38:04.47ID:JW7PzOlh
cvsファイルで
1 田中 りんご
3 鈴木 みかん
6 齋藤 ヨーグルト
2 根元 パン
5 根岸 サラダ
4 佐藤 ご飯

こんな感じのやつをソートしたいです。
数字の列が 配列0
名前が 配列1
食べ物系が配列2に入ってます

cvsを読み込んで数字の列を新しい配列0〜5にいれてソートして表示するとこまではできたのですが
後ろの名前と食べ物が同時にソートされません。

やり方教えてください
2017/04/29(土) 15:38:07.81ID:hP9HIxoy
JavaFXでゲーム作りたいけど全然解説してる所ない…・・・
そんなに見放されてるもんなのか
2017/04/29(土) 15:39:33.67ID:JW7PzOlh
なんどもすみません
今は
1 田中 りんご
2 鈴木 みかん
3 齋藤 ヨーグルト
4 根元 パン
5 根岸 サラダ
6 佐藤 ご飯

みたいになってます。
2017/04/29(土) 15:48:07.67ID:nyANDfpK
別々の配列じゃ連動とか複雑過ぎ。
クラス作って、クラスの配列で読込やソートすれ。
2017/04/29(土) 17:15:02.95ID:HCCTcSxI
JavatrてCでいうとこの構造体って無いんすか?
153デフォルトの名無しさん
垢版 |
2017/04/29(土) 17:16:52.09ID:6B/XobRt
>>148
インデックスをソートしちゃえばいいよ
https://paiza.io/projects/Brbmeg7M6bZOYPELm1TOMQ

データは列の集合、列は行の集合になっているけれども

テーブルのようなデータ扱うときは
データは行の集合、行は列の集合
にしたがいんじゃないかな
2017/04/29(土) 21:02:24.15ID:y1rMzUYG
そもそも構造体を拡張したのがクラスじゃないの?
2017/04/29(土) 23:13:29.81ID:nyANDfpK
C#には構造体在るけど、Javaは無い。
メソッド無いクラス作れば、事実上の構造体。
2017/04/30(日) 02:15:39.83ID:Dc5Ny+RF
Kotlinでは、年齢・名前で、ソートすると、
Alice, Kate, Dave, Tom の順になる

class Person(var age: Int, var name: String) { }

var list = mutableListOf<Person>();
list.add(Person(25, "Tom"));
list.add(Person(25, "Dave"));
list.add(Person(20, "Kate"));
list.add(Person(20, "Alice"));

val sortedList = list.sortedWith(compareBy({ it.age }, { it.name }));
sortedList.forEach{ println("${it.age} : ${it.name}"); }
2017/04/30(日) 03:12:27.12ID:Pd/tmEqA
>>150
それぞれの列を別々の配列に詰めたら行ごとの関連付けが面倒くさいから行単位で関連付けてから配列に突っ込むイメージの方が楽
具体的にはもう出てるけど各行を表すEntityクラス作って各行のデータ突っ込んだインスタンスを配列化する
2017/04/30(日) 05:33:25.51ID:0NS9QiRt
一括りのデータを扱う時はレコードというもので扱うんだよ
レコードには固定長レコードと可変長レコードがある
固定長レコードは各フィールドの長さが決まってるからランダムアクセスすることができる
対して可変長レコードはシーケンシャルアクセスしかできないという欠点がある
159デフォルトの名無しさん
垢版 |
2017/04/30(日) 05:34:31.46ID:/xQtxfzV
TreeMap 使えばいいのでは?
TreeMap<Integer, String[]> のインスタンスに put な。
160デフォルトの名無しさん
垢版 |
2017/04/30(日) 05:36:54.83ID:/xQtxfzV
あ、行ごと扱うならキーだけIntegerにして値はそのまんまStringで入れといてもできるな。
161デフォルトの名無しさん
垢版 |
2017/04/30(日) 05:50:10.68ID:/xQtxfzV
できた。ソートをTreeMapに任せてCSVの中身を何も考えずに突っ込んでる版。
https://paiza.io/projects/El4IUBlhQJydI6F0wf6YAA
2017/05/01(月) 14:58:41.66ID:F35eYYLf
return文の考え方が今一分からないです

public class Main05_11{
private static int add(int x, int y){
return x + y;
}
public static void main(String[] args){
System.out.println("10+20=" + add(10, 20));
}
}

この時ってreturn x + y;は一体どこに値を返しているのですか?
int ans = x + y
return ansであれば、値をansに返していると分かるのですが
ansなしでよく分からない所に返しているのに動いているのが分からず……
163デフォルトの名無しさん
垢版 |
2017/05/01(月) 15:07:15.65ID:UF+7Ud8a
>>162
return x + y;はx + yの値をメソッドの呼び出し元に返してる
return ans;はansの値をメソッドの呼び出し元に返してる
2017/05/01(月) 15:36:26.65ID:F35eYYLf
>>163
あ、どっちもメソッドの呼び出し元に返してるんですね
根本的に認識を間違えてたみたいです、ありがとうございます
2017/05/04(木) 03:35:25.45ID:gAUNCpWB
paizaでfor文で解ける問題をforEachで解いてみたら軽く2倍以上の時間がかかったのですが効率悪くないですか?
使い道あるんですかね
2017/05/04(木) 03:57:25.21ID:0GlJDnqX
Java随分離れたけど、forEachって何。
メソッド?
Javaのforeachって拡張for文だったはずだが。
2017/05/04(木) 04:52:18.46ID:4JL58KAn
foreachは生えてるぞ。
list.forEach(System.out::println);
とか。拡張forにしろイテレータ使うと要素数によっては処理時間に差がつくな。
2017/05/04(木) 05:13:05.21ID:0GlJDnqX
ふむふむ。
Linqっぽいの付いたのね。
その用途だとmapとかの方がらしいメソッド名なんだが。
2017/05/04(木) 08:04:03.31ID:dLBAq4Dp
この文脈だと処理時間が2倍なのか解答時間が2倍なのか
2017/05/04(木) 08:29:19.35ID:BU79yY+V
>>165
LinkedListで使ってみたら?
2017/05/04(木) 11:49:23.38ID:p0RzDybu
これだから理系は付き合いきれん
機械の方がまだ融通が利くわ
172デフォルトの名無しさん
垢版 |
2017/05/04(木) 13:22:46.77ID:qYtoqfij
>>168
mapは変換のインタフェースとして別であるよ
forEachはstreamの終端処理だよ
2017/05/04(木) 14:52:50.80ID:hrGLq/bC
今扱ってるシステムがJava7だからstreamとかラムダ式とか使わないけど
本読んでもよくわからん……
174デフォルトの名無しさん
垢版 |
2017/05/04(木) 15:36:20.32ID:EbCQq7yq
あれ?Java7にはないんだっけ?
2017/05/04(木) 15:58:11.88ID:hrGLq/bC
あれ?Java8からじゃなかったっけ?
2017/05/04(木) 16:07:35.97ID:5jh0epYp
streamなんてSQLとか扱える思考回路があれば使えるぞ
2017/05/04(木) 19:19:52.86ID:YNozeJnq
皆最初どうやってjavaを勉強したの?
自分今基本情報処理試験をあとはプログラミングのところだけっていうところまでやったのだけど、カプセル化とかモジュール分けとかオブジェクト指向とかそういう考え方があるんだってういのはわかったんだけど
いざ自分でnetbeansのjavaファイルで書こうとしたらまずはoutprintしてみようと思ったら早速エラーが出てエラー原因が何だか全く分からない
英語の基本文法みたいにそういうの知らないと厳しい気がするのだが
皆の初学の経験を教えてほしい、できれば独学でやった人から聞きたい
あと、何か作ろうって思ったときはフローチャート作った方がいい?
2017/05/04(木) 19:43:35.61ID:mK1iuMfc
>>177
俺は全て独学だがまずはC言語、C++、C#の順に勉強する
するとJavaを半日程度で理解できる下地が出来上がる
何事も基本が大事だ
基本ができてればJavaなどたやすく扱えるし基本ができてなければどんな勉強をしても身につかない
物事には順番がありそれはお手軽に身につくものではない
2017/05/04(木) 20:04:55.79ID:u6JIByox
>>177
ひたすらエラーメッセージを読む
エラーメッセージをググる
「java ○○」でググる
「java ○○とは」でググる
「java ○○ できない」でググる
「java ○○ するには」でググる
エラーメッセージで知らない英単語があれば意味をググってからもう一度読む
答えが書いてあるっぽい掲示板が英語で書かれてても臆せず読む

それだけ
2017/05/04(木) 20:07:29.10ID:mK1iuMfc
>>179
こういう知識を啄ばむような雑な勉強方法はダメ
スカスカの知識しか身につかない
2017/05/04(木) 20:11:19.54ID:TB6ujr0/
>>177
まずは入門書1冊買ってきてそれに合わせて勉強するしかない
エラーの原因とかも正しい書き方自体がまだ分かって無い状態だし

後はエラーが出たらググるか
ソースコードどっかに置くかかここに書いて聞くか
2017/05/04(木) 20:30:41.25ID:rPmF/fmP
>>180
体系的な知識を身につけるのは大前提として、エラー対処の知識が要らないわけないでしょう
少なくともJavaを勉強するために先にC#を学ぶなんてトンチンカンなことしてる暇があったらその時間でJavaの
知識を仕入れるべき
2017/05/04(木) 20:49:08.82ID:Z6thB1wv
スッキリわかるJava(という書籍)では、コンストラクタやインスタンスメソッドに
publicが付いてないのですが、基本的に付けない方針で問題無いでしょうか?
2017/05/04(木) 20:59:23.90ID:0H6f0r38
>>183
ここに詳しく書いてある
http://msugai.fc2web.com/java/permitmod.html
まともにコード書きたいならパッケージの外から呼び出せるかとか一々考えながら書くといいかな(おすすめしないが実を言うとリフレクションで呼び出せちゃうけど)
2017/05/04(木) 21:14:39.50ID:mK1iuMfc
>>182
トンチンカンだとおもっているならその程度だよ君は
C、C++を知らないプログラマなど潜りの素人だし
優れた言語設計のC#をJavaより先に学ぶメリットは大きい
そしてこれらをこなせばJavaも自然とできるようになっている
したがってJavaなんぞは後回しで良い
186デフォルトの名無しさん
垢版 |
2017/05/04(木) 21:23:59.84ID:qYtoqfij
>>185
C、C++、C#を勉強するのにかかる時間はどれくらい?
それはJavaだけを勉強したときよりも短くなるの?
2017/05/04(木) 21:32:52.04ID:mK1iuMfc
>>186
Javaだけやって同じレベルになるより遥かに早いよ
初心者から初めて金を貰っても許されるレベルになるまで1年といったところだな
Javaだけだと10年経ってもその領域に届かないクズが少なくないということはこの業界の先人たちが証明している
急がば回れというやつだ
2017/05/04(木) 21:35:23.59ID:rPmF/fmP
スッキリ君といいちょいちょい変なのが沸くスレだな
2017/05/04(木) 21:37:31.74ID:g1QlM0ze
C#を覚えるとデリゲートくれLINQくれプロパティくれ〜ってなるのでよくない
190デフォルトの名無しさん
垢版 |
2017/05/04(木) 21:40:59.09ID:qYtoqfij
>>187
C、C++、C#を勉強してJavaを勉強して到達するレベルを
基準にしたらそれはそうなると思うんだよ

Javaを勉強したいというときに
Javaだけを勉強するのとどちらが効率いいですか?ってことなので
Javaだけを基準にした場合、到達速度っていうのは変わってくるんじゃない?

いろんな言語を1年で齧って回るよりはJavaを勉強したがいんじゃないかな
191デフォルトの名無しさん
垢版 |
2017/05/04(木) 21:47:21.88ID:qYtoqfij
>>177
慣れることが大事なのでサンプルコードを書きまくるのがいいと思う

おすすめは↓の2冊

10日でおぼえるJava入門教室
https://www.amazon.co.jp/dp/4798120197/

新・明解Java入門 (明解シリーズ)
https://www.amazon.co.jp/dp/4797387602/

10日でおぼえる〜は1日目はこれみたいに区切りがいいので
やりやすいかと
192デフォルトの名無しさん
垢版 |
2017/05/04(木) 21:47:36.98ID:GHkN69u9
>>177
元々C言語は知っていて仕事でもずっと使ってた。で、C++が流行り出したので少しは学習したが仕事で本格的に使うまでには至らなかった。
その後かなり時間が経ってからJavaが流行り出して、そこで入門書読んでだいたいわかった感じ。これが20年ぐらい前の話だ。
しかし今まで仕事はずっとC言語ばかりでJavaを仕事で使うことはなかった。Linuxのサーバ側のCで作られたプログラムにずっと関わってたからだ。
2017/05/04(木) 21:51:14.78ID:4KUdSbXO
>>173
流れを感じるのじゃ
2017/05/04(木) 22:01:25.36ID:mK1iuMfc
>>190
Javaにはろくな参考書がないからね
良書の揃ってるCファミリとC#の方が早く深く学べる
そうして土台が出来上がればじゃあJavaの場合はどうなのという事を覚えるのは実に容易い
結果的にJavaだけを学ぶ場合よりも早く深くJavaを知ることができる
195デフォルトの名無しさん
垢版 |
2017/05/04(木) 22:06:59.52ID:qYtoqfij
>>194
JavaとC#は似てるから
JavaがわかるようになればC#もわかるかと

深くJavaを知るっていうのはつまりC、C++、C#を勉強して到達するレベルの話だよね
そうでなくてJavaを勉強して到達するレベルを基準にした場合
Javaを勉強するのが近道だと思わない?
196デフォルトの名無しさん
垢版 |
2017/05/04(木) 22:13:01.02ID:qYtoqfij
Javaがわかるようになればプログラムの考え方も身についてるから
CやC#もすっと入ってくるんじゃないかな
C++は人類にはまだ早いと思う
2017/05/04(木) 22:26:18.44ID:hGwzsYkf
むしろJava分かったから、C/C++のスタック/ヒープの意味(newするクラスとしないクラスの違い)や、C++特有のフレンドクラスが分かった。
順番はどうでも良いけど、Javaとは別にCは学んでおいた方がいい。
2017/05/04(木) 22:30:38.02ID:4KUdSbXO
プログラマーたるもの手続き型、オブジェクト指向型、関数型に属する言語を最低でも一つずつは習得しておかんとね
そして関数型に惚れ込んでJavaでもラムダ計算やカリー化をバシバシ使い周りに疎まれる存在となるのだ
2017/05/04(木) 22:38:29.99ID:TB6ujr0/
ruby→javaの順だけど
オブジェクト指向の理解はし易くなった感
javaだと思いっきりソースコード変わるから実感じやすい
2017/05/04(木) 22:41:33.02ID:g1QlM0ze
Javaでラムダ計算はつらいとか考えてたら気がついたらマシンにClojureが導入されてる
2017/05/04(木) 23:25:17.13ID:6JYEyXx+
int型配列の最頻値を求めるメソッドは用意されてないのでしょうか?
202デフォルトの名無しさん
垢版 |
2017/05/04(木) 23:38:27.31ID:qYtoqfij
>>201
標準ライブラリにはないけれども、大丈夫っしょ、余裕っしょ、できるっしょ
203183
垢版 |
2017/05/04(木) 23:40:33.61ID:Z6thB1wv
>>184
ありがとうございます。
よく見てみたいと思います。
2017/05/05(金) 00:12:55.97ID:YKLEnk0e
>>90
ここに書いてある

スッキリわかる Java入門 第2版、2014
まずこの本を3回読んで、オブジェクト指向をみっちりと学ぶ

この本が、すべての言語の基本。
その後、好きな言語を勉強すればいい
205183
垢版 |
2017/05/05(金) 01:17:39.61ID:GcsXwLgt
>>204
その本悪くないと思うし、あんまりケチつけたくないけど、
Scannerクラスの使い方が詳しく載ってなかった。
(インスタンス化についての記述が無い)
Randomクラスも同様。
過信は禁物か。
2017/05/05(金) 01:23:45.78ID:ecYRcjUo
>>205
その辺詳しく書いてある本を知りたいわ
Javaは本多いけど、どのレベルまで書いてあるか全然分からん
2017/05/05(金) 01:24:59.61ID:jRdxjTk1
ここからJavaのほとんどを学んだ
http://www.ne.jp/asahi/hishidama/home/tech/java/index.html
2017/05/05(金) 01:30:04.44ID:yjG7qa8A
>>205
>>31
2017/05/05(金) 02:03:32.40ID:Pxg1OvaW
>>207
こういうサイトがある時何から学べばいいの?
俺みたいなちんぷんかんぷんだと上から全て順に読んで、わからない言葉があると調べて、それでも概念的なものがよくわからなくてとりあえずわかったふりしたまま先に進んで結果あまり頭に入ってなかったっていうのがよくある失敗パターンなのだが
2017/05/05(金) 02:04:46.46ID:YKLEnk0e
「たのしいRuby」など普通の本では、オブジェクト指向の説明は、数十ページ

でも「スッキリわかる Java入門」では、250ページもある。
つまり、Javaの本と言うよりも、オブジェクト指向の本なんだよ。
そして、すべての言語の基礎になる

だから、この本は、歴史的な本と言われるわけ。
これ以前には、オブジェクト指向を勉強する、簡単な本は無かった

未だに外国では、この本が無いから、
オブジェクト指向を勉強するのに、四苦八苦している
2017/05/05(金) 02:06:41.17ID:Pxg1OvaW
あと、javaを実行する時とJSPを実行する時、それぞれpublic class{とか<%とか必要だと思うんだけどこれがないとコンピュータが処理であると認識しないっていうこと?

それとprivate class とpublic class の違いもイマイチわからぬ
Privateはそのクラス内でしか呼び出せないっていうけど、そもそも呼び出すってなんぞや
2017/05/05(金) 02:21:57.70ID:Pxg1OvaW
>>207
もう一個質問お願いします
extends 抽象クラス
その後に具体的な処理を書くって書いてあるけど抽象クラスを定義する意味ってあるの?
具体的な内容を記述するならそもそも抽象クラスを定義する必要あるのかなって
抽象クラスとかは使い方もわからないしそもそもなんでそういう考え方をするのかも理解ができない
何が言いたいかというと例えば車っていう抽象クラスがあったとしてそれは排気量を記述しなければいけない、メソッドとして走る機能を持つって事として

後で具象化クラスでextends車で抽象クラスを呼び出した時に結局排気量=なんたら、とかを記述しないといけないじゃない
だから、そういう制約的な意味しかないんじゃないかなと
プログラミングにおいて便利にするためにそういう事をしてるはずなのに、その利便性がイマイチ掴めないのだ

今は繰り返し処理とかつかって素数を求めるプログラムを作るっていう事を書いてるレベルだから、もっとゲーム的な方に行くとその意味がはっきりするのかね?
2017/05/05(金) 02:36:54.89ID:Y8XbhYBn
もうはっきり言ってしまうとプログラミング初心者がオブジェクト指向型言語なんてものから始めるべきじゃないんですよ
たかだかHelloWorldやFizzBuzzするためになんでクラスやアクセス修飾子を気にせねばならんのだと
それでもどうしてもJavaから覚えたいなら身の丈に合わない疑問は飲み込んでひたすら前に進むしかないのですよ
2017/05/05(金) 02:40:44.53ID:iQB12R96
つっても、もう世に出てる言語の殆どはLL含めオブジェクト指向言語だろ。

。。。関数型言語の世界へようこそ?
2017/05/05(金) 02:44:11.57ID:jRdxjTk1
>>212
例えばその走るって動作には、燃料と空気を供給してエンジンを作動させて動力を生み出すという過程があって、これは二輪でも四輪でも共通である(現実にはエンジンごとに違うがここでは無視)
二輪と四輪のクラスを作るとしてそのベースになる車というインターフェースを定義するとして、両方に同じことを書くことになって、それは無駄だからその部分を抽象クラスとしてまとめてしまおうという考え
間違ってたらスマソ
2017/05/05(金) 02:50:09.25ID:TDjvniVu
>>210
>未だに外国では、この本が無いから、
>オブジェクト指向を勉強するのに、四苦八苦している

それはないww
そこまで書くとステマかと思うわ
2017/05/05(金) 02:54:03.98ID:Pxg1OvaW
>>212
そういう前提があるっていう事でしょ?でも実際処理で車のエンジンの仕組みは重要じゃなくてどのようにそれらの車が動くかが重要になるのじゃない?
マニュアル車ならクラッチ操作、オートマならレンジチェンジ(でいいんだっけ)などの具体的な操作を個々に記述して行くと思うんだけど共通の仕組みそのものを定義する事は便利さには繋がっていないんじゃないかなって
確かに車はエンジンがないと動かないけど、プログラム上では(ってかユーザーにとっては)エンジンがあるかないかなんて関係が無いんじゃないの?
定義しないといけないっていう具体的な例があったら教えて欲しい
2017/05/05(金) 02:59:46.55ID:Pxg1OvaW
窓はガラスでできている。そのガラスを使って窓を開け作った上でこっちに押したら閉まる、こっちに押したら開くなどのことが出来るようになる
だからまずはガラスでできているという共通前提定義が必要となる。それはわかる
でも実際プログラム上でそれがどう有効なのかがわからない
人間クラスに名前はまず名前、年齢が必要、その上で個々の動作をして行くわけだけど定義してそのクラスを呼び出しても結局年齢とかは手書きで書いて行くわけじゃん

例えばどういう時にオブジェクト指向を使ってるのかとかあったら教えて欲しい、ゲームとかでもいいので
2017/05/05(金) 03:13:17.49ID:jRdxjTk1
確かに個々の動作を書くのには抽象クラスは全く役に立たないよ、ただプログラムを動かすにはその外から見て重要ではない部分が必要なわけで、その部分が共通だとコピペするのは簡単だが後々の修正が大変、だからまとめておくと
2017/05/05(金) 03:20:10.72ID:Pxg1OvaW
>>219
具体的にプログラムの世界だと何をまとめるの?実行するための記述以外にプログラムそのものを動かすために必要なものの具体例がわからないのだが
2017/05/05(金) 03:37:46.29ID:jRdxjTk1
JavaにはListって可変長の配列を作るためのインターフェースがあるけど
http://docs.oracle.com/javase/jp/7/api/java/util/List.html
これだけのメソッドを実装しろと要求してくる
そしてこれを使って中身の違う実装を作るときに全部を何度も実装するのは骨が折れる作業だよね
そこでAll系のメソッド等他のメソッド呼び出しで書けるものを抽象クラスに書いておけば実際に実装するときに書かなくてよくなる(効率化したいとかだと書いてもよい)
折角クラスライブラリのソースあるんだしAbstractList辺りのソース見てみるといいよ
2017/05/05(金) 03:43:35.59ID:jRdxjTk1
分かりにくい説明しかできなくてすまんの、多分現実の物体で考えずにプログラムとして直接考えるのが一番の近道じゃないかな
2017/05/05(金) 03:50:24.78ID:TDjvniVu
>>220
たとえば共通の手順とか

テンプレートメソッドと呼ばれるパターンの例(HeadFirstデザインパターンより)
http://i.imgur.com/4m0ZWv7.png
コーヒーでも紅茶でも抽象化した手順は同じたし
お湯沸かしたりカップに注ぐ部分は全く同じ

今はJavaでも抽象クラスとは違う方法でも実装できるけど
こういう基礎の理解は必要
2017/05/05(金) 04:16:15.80ID:JPrvtXpw
ゲームのマップを作ろうと考えています。
マップ画像を表示させ、マップ上の任意の部屋をクリックすると、その場所の名前(ロビー、キッチン、ベッドルーム、など)を表示するようにしたいです。
この処理を実装するには、どのような方法がスマートでしょうか?
各部屋の形は四角形ではなく、円や三角形など複雑な形をしているので、単純に四隅の座標を部屋名とともに配列に格納しておき、クリックした座標を内部に含むものをfor文で回して探索する・・・という方法は難しいです。
どうかお力添えください。
2017/05/05(金) 05:14:23.88ID:YKLEnk0e
ゲームは、オブジェクト指向の最高峰

キャラクタークラスから、勇者・魔法使いなどを、
モンスタークラスから、スライム・ゾンビなどを派生させる

is-a, has-a とか勉強すれば?
消防車は車の一種。is-a。継承
車はハンドルを持っている。has-a。部品

「スッキリわかる Java入門」では、オブジェクト指向の説明が、250ページもある。
ここ20年間、世界中の中年のCプログラマーが、皆、C++へ移行できずに撃沈している

オブジェクト指向がどれぐらい難しいか、分かるでしょ?
だから、スッキリが日本中に、革命を起こした
2017/05/05(金) 05:22:28.10ID:YKLEnk0e
>>224
java.awt.Shape interfaceで定義される、containsメソッドは、
指定された点が、図形の境界の内側にあるか否かを判定する

「java 図形 内側」などで検索!
2017/05/05(金) 12:17:52.64ID:Oxs8iPV6
超単純にやるなら
・種別(矩形、三角形、円)
・パラメータ(最大4つ)
 頂点の絶対座標もしくは円の中心座標&半径

とやって判定時などに種別に応じて処理を分ける

それと一つの部屋?を分割して単純な図形の組み合わせにする
回転が必要なら矩形を2つの三角形に変える

スクロールとか必要ならもっと面倒だけど
プロパティかパラメータを増やせばなんとかなるべ
2017/05/05(金) 12:24:15.13ID:jsHCnOkz
Javaプログラマはオブジェクト指向をよくわかってない人が多い
C#プログラマはみんなよくわかってる
C#マイクロソフト公式の参考書など良書が揃っているからね
Javaはろくな本がない
初心者をごまかしてわかった気にさせるような本ばかりだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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