このブログは現在リブート中です。予告なく変更、削除、停止を行う場合があります。イメージで理解する「プログラミング初心者が確実に意味不明になる”オブジェクト指向プログラミング”ってなんなのさ」2015-08-13イメージで理解する「プログラミング初心者が確実に意味不明になる”オブジェクト指向プログラミング”ってなんなのさ」プログラミング初心者講座まぁ、たいていオブジェクト指向プログラム言語を使うことになるよねプログラミングを始めるときに、当然選ばなきゃいけないのが使用言語ですが、それを決める指針になるのが”目的”と”プログラミング手法”です。ゲームを作るんだ!とか、webアプリを!とか、スマホアプリを作りたい!とかとか。決まっているものです。この”プログラミング手法”ってのが曲者。初心者は全く意味が分からない。いえ、”オブジェクト指向”な言語が主流なのでほとんどの人がこの”オブジェクト指向プログラミング”を使うことになると思います。プログラミング初心者がオブジェクト指向プログラミングって最初に対面すると本当に意味が分からない。いうことで、自分なりに理解している「”オブジェクト指向”ってのがなんなのか」を初心者向けにざっくり説明しようと思います。なんとなーくわかりたいなーと思う人は、一席おつきあいください。お前の理解間違ってんぞって方はコメント待ってます。※わかりやすさ優先のため、いろいろ端折ったりしますので、本格的に知りたい人はそれ用の本やプログラミング言語技術書。調べましょうまぁ、たいていオブジェクト指向プログラム言語を使うことになるよねそもそもオブジェクト指向プログラミングって?まず用語を理解しようオブジェクトってなんなのさクラスとかインスタンスってなんなのさそもそもオブジェクト指向ってなにがいいんでしょう?ポインタを詳しく知らなくても使える言語が多い。個別に処理を任せられます。変数の範囲が限定されます。処理が複雑になりにくい似たような処理を何度も書く必要がなくなる本題!オブジェクト指向ってどんな言語?カプセル化ってなんなのさインヘリタンスってなんなのさポリモーフィズム雑感おすすめのプログラミング言語とか本とかねぇのかよ...javaScalaC#Swiftスクリプト言語PythonRuby関連記事そもそもオブジェクト指向プログラミングって?Java,C++,C#,Python,rubyにJavaScript,iosのアプリを書くならばobject-CやSwiftも”オブジェクト指向プログラミング言語”です。これなら聞いたことあるなーと思い浮かべている言語の中に確実にオブジェクト指向プログラミング言語があります。javaだったら、こんなコードを見かけることになります。Dog();いろいろした後にanimalのhoeruメソッド(hoeru関数)を実行する。animal.hoeru;となります。本当に初心者にとっては意味不明になると思います。́・ω・`;)そもそもオブジェクト指向とはどんな言語なのでしょう。オブジェクトってなんでしょう?クラスってなんでしょう?まず用語を理解しようオブジェクトってなんなのさ”オブジェクト”指向というからには当然オブジェクトに重きを置く手法なわけで、じゃあオブジェクトって何かというと、たいていの本にはこう書いてあるとおもいます。「オブジェクト」とは「データとそれに対する処理をひとまとめにしたモノ」である。オブジェクト指向プログラミングとは、「データとそれに対する処理をひとまとめにしたモノ」を一纏まりの塊と考えて、その組み合わせで動作を記述するプログラミング手法なのです。なんだよ!!という気持ちはわかります。詳しく言い換えましょう。「大きく”ワン!”と吠えるんだよ、四足で歩くんだよ、歩いたら棒に当たるんだよ」とかの振る舞い(処理)とがあるとします。この状態と振る舞いの二つをまとめたものが、オブジェクトです。ある犬のオブジェクトを参照すると、その犬の体重や名前といった必要なデータがわかります。ある犬はすっごく重い犬で、ある犬は黄色い色をしているかもしれません。ある犬のオブジェクトに吠えろと指示するとでかい声でワンと吠えて、別の犬オブジェクトに吠えろと指示するとクゥーンと哭きます。ニャーと哭く犬のオブジェクトがあるかもしれません。クラスとかインスタンスってなんなのささて、オブジェクト指向をわかりにくくしている原因の一つに専門用語が多いことが挙げられます。プログラミングの基礎だけでもいろんな用語が出てくるのに、さらに用語が追加されるため正直いやになってくる人は多いのではないでしょうか。下記4つだけ理解してください。クラスオブジェクトを作る設計書です。どんな状態があるかーとか、どんな振る舞いをするかーとかが書かれています。この設計書を見てオブジェクトは作られます。プログラミング言語によってはクラスはありません。(javascriptとか)インスタンスクラス(設計書)を見て実際に作ったオブジェクト。設計書から出来上がったものです。newする出来上がります。日本語では「実体」といいます。家を建てるための設計書(クラス)から作った本体の家がインスタンス。犬の特徴を示すDNA設計図(クラス)から作られた犬本体がインスタンス。プロパティ状態のことです。変数の場合もあったり定数の場合もあったりします。メソッド振る舞いのことです。メンバー関数とも言います。クラスとインスタンスって何かさえわかればまずは良いと思います。そもそもオブジェクト指向ってなにがいいんでしょう?いろいろ役に立ちますが、たとえばこんないいことがあります。ポインタを詳しく知らなくても使える言語が多い。言語の基本だし~とおもって、C言語やC++を学ぼうと思ったとき、多くの人間が躓く要素。