■ このスレッドは過去ログ倉庫に格納されています
java教えて
- 1 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:36:03.203 ID:pta2jpMRa.net
- 俺でもわかるように
- 2 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:36:17.244 ID:4U9rsEzk0.net
- \
 ̄ヽ、 _ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
`'ー '´
○ /|
O / !
___〈 ノ
/| \ ` ヽ、 と思うシャワーズであった。
_r7 └、 _ `ー‐'´ll l
N、//_∠_〉/ ヽ、 〈l l
ハ、/''´ ,.-、ヽ_∠ ン-‐ァ 〈l l
. 〈`lハ,/ __ _/ __〈 〈,l l
ハ〉 〈ソ_ノ ∠ニ-ァく 〈 j. l
ヽ.〈゚、_, r‐--' ム-、_,-、_,-、_,ノン l
ノ丶、 __ / \、 〈----‐──一' l
`ヽ、/ l ヽ ノ  ̄ /
´  ̄`ヽ/´ r′
ヽ、 ー 〉 /___ヽ l、
ヽ/ 〈 ヽ、 \__ `i
/ / ヽ  ̄〉 ハ l
/ ハ l / / j l
/ / j j. (,_,ノ (,,_,_ノ
''‐'ー'′ 'ー'′
- 3 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:36:27.916 ID:Fu/5SIV50.net
- いいよ
- 4 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:36:50.542 ID:pta2jpMRa.net
- >>3
じゃあインターフェースからよろしく
- 5 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:38:03.563 ID:6QL7YCj/0.net
- 態度に教える気失せたわ
- 6 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:38:33.123 ID:pta2jpMRa.net
- >>5
じゃあお前には聞かない
- 7 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:38:55.891 ID:qW1j15nu0.net
- お風呂の配管を掃除するやつね
- 8 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:41:00.568 ID:pta2jpMRa.net
- extensらへんも教えて
- 9 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:44:01.147 ID:pta2jpMRa.net
- わかる人いない?
- 10 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:45:34.101 ID:THwUxwCM0.net
- 無料で見られる解説サイトなんていくらでもあるのにここで素人の解説受ける必要性ないだろ
- 11 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:46:33.223 ID:3MXxyHeg0.net
- interfaceは簡単だ
オブジェクトがいかなるメソッド群を持っているか宣言してるだけ
- 12 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:47:32.660 ID:pta2jpMRa.net
- >>10
ここの方が楽じゃん
サイトだと勉強感が出て嫌なんだよね
- 13 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:48:41.395 ID:pta2jpMRa.net
- >>11
例コードを教えて
- 14 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:49:36.031 ID:3MXxyHeg0.net
- >>13
interface Hoge {
void piyo();
void foo();
}
- 15 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:51:24.091 ID:pta2jpMRa.net
- >>14
その宣言ってどのファイルでするの?
クラスの前?
- 16 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:53:39.234 ID:3MXxyHeg0.net
- >>15
Hoge.java
しかしよく考えたら、こんなコードよりももっと実用的なサンプルにしたほうがよかったな
なんか適当に「こんなプログラム作りたい」ってのがあったら言ってみろ
- 17 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:54:21.769 ID:6SvIggrE0.net
- >>15
作り方より使い方覚えた方がいい
インターフェースを作る人はどちらかというとベテランだからな
- 18 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:56:03.571 ID:pta2jpMRa.net
- >>16
ツイッターみたいな呟きをすると似たような呟きをした人と友達になれる機能があるSNSアプリ
- 19 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 19:56:37.334 ID:pta2jpMRa.net
- >>17
開発したいからその辺も知っとかなきゃいけないかなと思って
- 20 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:00:33.227 ID:Y0DExF3Vd.net
- インターフェースを必要とするもん作らんだろう
- 21 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:01:06.285 ID:pta2jpMRa.net
- >>20
大規模開発なら使われてるっぽいし仕事で使うと思う
- 22 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:07:59.922 ID:Y0DExF3Vd.net
- たぶんそれインターフェースを定義する必要もない
- 23 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:09:20.312 ID:pta2jpMRa.net
- >>22
実際の開発現場でもほとんど使われてないってこと?
- 24 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:16:58.064 ID:3MXxyHeg0.net
- >>18
そのアプリの呟きの保存とか似た呟きの検索とかはサーバー側がやるとして、アプリのサーバーとのやり取り用の処理を考えよう
たとえば、その処理のためのオブジェクトを connection オブジェクトであるとしてみると、
connection.login(account); // accountにログインするためのメソッド
connection.say(tweet); // tweetを発言するためのメソッド
connection.getFriends(); // 友達を取得するメソッド
connection.logout(account); // ログアウトするためのメソッド
あたりが必要になることがわかるわけだが、具体的にどんな処理をしてるかは後から考えよう
そこで、とりあえず仮にConnectionなるinterfaceを考えておく
// Connection.java
interface Connection {
boolean login(Account account);
boolean say(String tweet);
List<Friend> getFriends();
boolean logout(Account account);
}
とりあえず、最初はこいつを使ってプログラムを組めばいい
ただし、当然ながらいつしか実際のloginやらsayやらgetFriendsやらlogoutやらの処理を作る羽目になってくる
そしたらその時に、class ThreadOwnersAppliConnection implements Connection { 〜 } みたいに実際のクラスを作ればいい
- 25 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:23:40.600 ID:guxnkj1Ca.net
- interfaceはルール化って認識でいいか?
- 26 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:23:48.770 ID:3MXxyHeg0.net
- >>24の手法の素晴らしいことは、ここまでやったら後は ThreadOwnersAppliConnection の代わりに TwitterConnection とかを作ってそれを使うだけでTwitterアプリになるってことだ
もちろん、「TwitterならgetFriends()じゃなくてgetFollower()だろ」みたいな声はあるかもしれない
だが、その辺の細かい部分を『同じように扱うことにする』ならば、全く同じアプリをクラスを変えるだけで流用できるわけだ
いわばinterfaceは、『同じように扱うようにする』という『規約』とも言える
実際には微妙に違うものを共通化すると、なんか全部同じように扱えてすごい!
- 27 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:25:25.364 ID:pta2jpMRa.net
- >>24
なるほど!
データベース的なのに保存するのもやり取りの一種だから
connection.write みたいなのもこのコネクションインターフェースに必要に応じて追加していく感じ?
- 28 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:26:41.008 ID:SEJDXgrMa.net
- インターフェースがあるとあとから作っても同じように扱える
もっというと中身がなんなのかわからなくても扱えるから他人が作ったライブラリとかもつかえるようになるんだね!すごい!
- 29 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:27:12.411 ID:3MXxyHeg0.net
- >>25
インターフェースの使用法の全てがそうだ、というわけではないけど、重要な用途のひとつがまさにそれ
ルール専用にインターフェースを作らずとも、クラスもルール“を含むことができる”ので冗長には見えるが、
オブジェクト指向原理主義的な考え方でいくと「ルールこそ最重要、そこにルール以外のものを入れると純粋さを失う」ってことになる
- 30 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:29:38.858 ID:pta2jpMRa.net
- >>26
言ってる意味分かるけど難しい
他の部分についても教えてほしい
例えば
>そのアプリの呟きの保存とか似た呟きの検索とかはサーバー側がやるとして、アプリのサーバーとのやり取り用の処理を考えよう
この部分とか
サーバー側がやるって話がよくわからない
- 31 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:31:25.319 ID:3MXxyHeg0.net
- >>27
それでもいいけど、機能のまとまりごとに別のオブジェクトにするのがいい
>>24では何の説明もなく使ったAccountとか、まさにアカウント管理のためのオブジェクトなわけだ
同様に、DBを扱うオブジェクト(MySQLを使うかSQLiteを使うかとかで微妙に実装が変わるかもしらんけどやることは同じ)も別途用意して、
connection.getDB() みたいにそれを取得してそれに対していろんなメソッドを追加してやれば、connection が肥大しまくる心配はなくなる
- 32 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:33:12.261 ID:pta2jpMRa.net
- >>31
めちゃわかりやすい
- 33 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:33:42.906 ID:3MXxyHeg0.net
- >>30
「似たような呟きをした人と友達になれる」なんてのは、スマホの中だけでできるものじゃないじゃん?
だから5chと専ブラみたいな感じに、サーバー(ウェブサイト)とスマホアプリに分けることになるわけじゃん?
- 34 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:40:26.254 ID:pta2jpMRa.net
- >>33
呟きを保存する流れとすると
プログラムはアプリ側にもサーバ側にもそれぞれ別にあって
アプリ側には呟きをサーバー側に渡すコードを書いて
サーバー側にはアプリ側から渡されたコードを受け取って保存するコードを書く必要があるってことでいい?
- 35 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:43:56.879 ID:3MXxyHeg0.net
- >>34
そういうことだよ
ただ、そのへんもアプリ側的にはあんまり考えなくていいことのはずなんだ
「サーバー側で全部処理してます」でも「実はアプリが全部保存してて検索もしてくれます」でも、>>24の機能は変わらないだろ?
loginとlogoutが要らなくなるけど、別に「やったフリして何もしない」ってことにしとけば全く同じになるからな
- 36 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:49:23.856 ID:pta2jpMRa.net
- >>35
混乱してきた
全然違う気がするけどサーバ側にもアプリ側にも>>24のコードは書くけど、実際に使用するのはアプリ側ってこと?
理解力なくてごめん
- 37 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:51:03.059 ID:pta2jpMRa.net
- なんかたぶん根本的にわかってない
- 38 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:51:32.276 ID:3MXxyHeg0.net
- >>36
サーバー側には、受け取っていろいろ処理するコードを書くわけだぞ
- 39 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:54:45.102 ID:fnkmBQlv0.net
- >>38
あ、わかった!
- 40 :以下、?ちゃんねるからVIPがお送りします:2018/09/21(金) 20:56:35.871 ID:fnkmBQlv0.net
- もっと教えてほしいけど何から聞けばいいのかもわからん
総レス数 40
14 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★