オブジェクト指向ってなんなの?

このエントリーをはてなブックマークに追加
1以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:44:18.25 ID:cdIN8uow0
c言語の基本はそこそこやり終わったから
ちょっとJavaを始めようと思うんだけど、オブジェクト指向ってので躓きやすいって聞くから
どんな物か教えて欲しいんだ。
あとクラスって言うのはc言語で言うmain文、自作関数などって認識で良い?
2以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:44:46.47 ID:x6gq+Sil0
ググレカス
3以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:46:05.59 ID:7VxgxRe60
static voidの語感の良さ
4以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:46:11.17 ID:HOCdOthi0
>クラスって言うのはc言語で言うmain文、自作関数など
あたし揚げ足取りしかできないけどそれは違うと思う
5以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:47:17.91 ID:GxdSV96X0
6以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:48:28.81 ID:YlDh9QWq0
構造体に関数つけたようなもんじゃね?
7以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:48:50.72 ID:0dF1iIgK0
クラスとは別に関数もある
8以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:49:41.87 ID:sD5wAzRu0
Cでもオブジェクト指向チックに作れるじゃろ?
9以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:52:03.18 ID:LHsOCeeW0
ホントにググればいいのにすぐ分かるのに…
10以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 02:56:35.77 ID:8QPMsKCG0
代行ありがとう
>>3
静的ななにか?
よく分からん
>>4
そうなのか
ぱっと見でよく分からんかった
てか新鮮な知識が全く入ってこない…用語に慣れるのに時間掛かる
今Java入門ってとこ見てるけど眠いから頭に入ってこない
11以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:02:07.96 ID:cdIN8uow0
>>6がだいたいあってるだろ。

第一歩としては、データと処理をセットにすることで、エラーメッセージを
出しやすくすることができるのを抑えとけば。
エラーメッセージの出力されるバグと、エラーメッセージの出力されないバグと、
どっちがいいかはプログラムの経験がある奴なら説明するまでもないよな。
12以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:03:04.80 ID:8QPMsKCG0
>>6
なるほどー
>>7
もしprintfとかscanfとかの事言ってるなら違うよ
そうじゃないなら教えてほしい
>>8
よくわかんね
>>9
概念?ってかそういうのが理解しにくい…
13以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:05:34.14 ID:8QPMsKCG0
>>11
ごめん…眠いせいで少しの日本語おかしい所があったら気になって内容が入って来ない
でも後半部分は後者だよね…ねみい
14以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:07:52.20 ID:cdIN8uow0
前 者 だ !
15以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:09:40.79 ID:cdIN8uow0
Cでもプロトタイプとかあるだろ!あれ何のためにあると思ってんだ?エラーメッセージ出すためだろ。
16以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:10:03.08 ID:8QPMsKCG0
>>14
空 目 し て た ! ! !
デバッグライト的な意味か…
17以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:10:27.94 ID:HWRjCINt0
細かい話はおいといてサンプル見たらなんとなくこういうもんだとわかっていく
18以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:11:22.04 ID:sD5wAzRu0
人ってクラスつくるだろ?
そっから性別とか年齢とか付け加えると一杯人つくれるだろ?

人をもっと細かくパーツにわけて頭・足とか作るだろ?
じゃあ犬とか猫とかつくれるだろ?

ラッパーとかあるけどこんな感じだろ?
19以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:12:07.75 ID:8QPMsKCG0
>>16
あれ?違うかも…
もう知らねえええ
プロトタイプってプロトタイプ宣言の事?違うなら知らね
20以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:12:33.21 ID:lM/vQMZm0
ざっくり言うと
クラスは設計図、オブジェクトは設計図を元に生み出された実物
実物達がやり取りし合ってお仕事をする
21以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:15:48.57 ID:kZyOp6uT0
違うかもしれないけど説明すると
例えばRPGの村(主人公、村人A、家が一軒)を想像して貰うといいんだけど
今までのCで言えば一つの処理ですべてを表示してた

オブジェクト指向ってのは
主人公と村人A、家を別に作るという感じ
これによって村人Aは色んな動き方が可能になり後付で色々出来るし
家も色を変えたりと色々できる
また別の人でも簡単に作れる(村人Aとか家を)
ってのがオブジェクト指向

でもそれっとCでも出来るんじゃね?って所が重要だったりする
22以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:16:07.37 ID:sD5wAzRu0
やって欲しいだけ書いた中身のないメソッドとか作れるだろ?
誰かが書いてくれるの待つだろ?自分は他のパーツ作るだろ?
お互いは意識しないで作れるだろ?
23以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:16:17.66 ID:8QPMsKCG0
>>20
えっと…
c言語(EasyIDECだけかも)で言うプロジェクト = オブジェクトって意味?
24以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:19:47.43 ID:8QPMsKCG0
>>21
何となく…
cで言えば一つの処理って事が
関数内か一つのプロジェクト内か分からんけど何となく分かった
25以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:22:17.09 ID:UZJwGdk10
ライン工みたいな物
人員の一部そのまま同じような作業する別製品に使いまわせる利点がある
26以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:23:29.70 ID:kZyOp6uT0
>>24
うん!Cの関数でも同じような事が出来るけど鬼のようにめんどいwwwwと、思う。
なんせにわかだあてにするなw
27以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:23:49.36 ID:UyikSbW/0
車を作るとしたら、エンジンとかタイヤとか沢山のパーツを組み合わせて作ることになる
作る人はそれらのパーツの仕入れ方や使い方を知って置かなければならないが、
それらのパーツが内部でどういう仕組みで動いてて、どういう理屈で成り立ってるのかを深く知る必要はない

オブジェクト指向はプログラムを部品化して考える手法
プログラマは各部品の入力と出力等、使い方を知っていれば、それを組み合わせるだけで開発できる
それら部品内部に記述されているロジックを知る必要はない
28以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:24:59.87 ID:sD5wAzRu0
abstractらへんもCにないかな?
仕事を丸投げできる
29以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:26:25.18 ID:4z/2QNxz0
関数とは違う!メソッドはメソッドなんだよあぁあ!?
っていつも書籍やウェブサイトにキレられる可哀想な初心者達
具体例出すよりも、こういうものだよって抽象的に教えたほうが応用も聞くし素直に入っていく
30以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:26:30.27 ID:bu3qK73k0
クラスは、main関数の集合体を更にmain関数でまとめたような状態
31以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:27:24.99 ID:sD5wAzRu0
内部を知らなくても良い=get setみたいなメソッドがどんどん増えていくのがたまにキズ
32以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:28:18.47 ID:bu3qK73k0
main関数が1個や2個のうちは、そのままバラバラに使ってても良いけど
何十個もmain関数があると、何が何だか分からなくなっちゃうでしょ
それをクラスってのを作って、似たような関数はその中にまとめちゃうの
33以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:28:52.75 ID:8QPMsKCG0
>>26
なるほど
じゃあ苦cの練習問題19のプログラム書き取り問題も
あんなに長いコード書かずに済むの?
>>27
cよりも楽になるって事で合ってる?
>>28
kwsk
34以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:29:04.09 ID:4z/2QNxz0
どう考えてもこの先に関数型言語が主流に成る時代が来ると思う
このままじゃ取り残される気がする 誰か教えて
35以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:32:28.20 ID:8QPMsKCG0
>>29
ひぃっ!すみませんすみません

なるほど
>>30
それってめっちゃコード長くならない?
それとも何か省略出来てるの?
>>31
気になるから触りだけでも教えて
>>32
なるほど分かりやすい




…ただ合ってるかは分からない
36以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:35:40.46 ID:kZyOp6uT0
Cはポインタがうざいんだよな
複雑に書こうとしたらマッハで書けそうだし
さらっと基本ルールと構造体、列挙隊、アローとか覚えて派遣へGOだなwww
37以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:37:12.30 ID:bu3qK73k0
>>35
コードは特に長くなることはないよ
class ○○
 main ○○
   〜〜〜〜〜
   〜〜〜〜〜
 main ○○
   〜〜〜〜〜
   〜〜〜〜〜
ってクラスを頭にひっつけてまとめるだけだから。
38以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:39:11.15 ID:+0K5r3of0
プログラマー歴10年近くになるけどオブジェクト指向ってのがどうもよく分からん
というより密結合、粗結合の感覚が分からん
39以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:39:30.73 ID:LHsOCeeW0
ガーベイジコレクション
これの世界を股にかける財宝のロマン出てる感は異常
40以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:43:05.69 ID:bu3qK73k0
オブジェクト指向でない言語で何個も関数を作っていると
グローバル変数の名前がかぶってきてブツカッちゃったりすることがあると思うんだけど
クラスがあると、その心配がない。
クラス内のみのグローバル変数みたいなものを作ることが出来るので
他のクラスで定義した変数と変数名がかぶっていても、特に問題なく動作させることが出来る。
41以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:45:04.82 ID:OJOz0E+L0
つまり
class 人{
性格(){
42以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:45:27.50 ID:kZyOp6uT0
>>40
会社で働いた事ないけど
やっぱり変数ぶつかるもんなの?
43以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:45:36.26 ID:OJOz0E+L0
送信しちゃったけど
こんな感じに決められるってことか?
44以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:47:29.87 ID:sD5wAzRu0
使いまわしできる=改変されない=隠ぺいする=フィールド直接弄れない
ってなるからgetとsetみたいなメソッド用意していかないとダメになる
(staticにするのもあるけど)
ガベージには悩まされたないつ起こるか分からんから昔の携帯程度のスペックじゃ意図しない所でプチフリーズしてた
45以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:49:38.61 ID:sD5wAzRu0
スクリプトとか自分で書いてても変数名被りでネーミングに悩む
46以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 03:52:38.58 ID:bu3qK73k0
>>42
結構ぶつかるよ
ルール決めをかなりしっかりしとかないといけないし
ルールを決めていくと、変数名がどんどん長くなっていって鬱陶しかったりする

>>41
そうそう、そういうこと

class 攻撃{
ダメージ変数=5
パンチ(){}
キック(){}
斬りかかる(){}
魔法(){}
}

新たに攻撃クラスってのを作った場合
"人"が攻撃クラスの中のパンチメソッドをダメージ5で呼び出したりできる
キックをした場合にもダメージ5、魔法でもダメージ5とか、共通の変数を定義しておくと
その数値で攻撃できる。
47以下、名無しにかわりましてVIPがお送りします:2014/03/02(日) 04:12:56.74 ID:CQs37IkL0
ブロック崩しみたいなゲーム書くと理解しやすい
48以下、名無しにかわりましてVIPがお送りします
あげ