ログイン
編集不可のページディスカッション情報添付ファイル
"alstamber/2013FreshManRubySeminar2"の差分

MMA
3と4のリビジョン間の差分
2013-04-24 14:30:49時点のリビジョン3
サイズ: 3068
編集者: alstamber
コメント:
2013-04-24 14:58:45時点のリビジョン4
サイズ: 4681
編集者: alstamber
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 46: 行 46:

=== データと処理を一体として扱うメリット ===
文字列の長さのような例だとあまりこのような手法のメリットは感じられないかもしれません。<<BR>>
巨大なプログラムにおいてこの手法は威力を発揮します。

Cのような非オブジェクト指向言語ではデータと処理が別のものとして扱われるため、すべてのデータと処理が一緒くたになってプログラムに記述されることになります。<<BR>>
これはプログラムが読みにくくなり、開発しにくくなるという結果を招きやすくなります。

オブジェクト指向を取り入れると、あるデータとそれに紐付けられた処理を一つの塊として切り出すことができるので、プログラムをその塊の組み合わせとして記述しやすくなります。<<BR>>
つまり大きなプログラムでもひとつの大きな塊ではなく、もう少し小さな単位の集合として作ることができ、プログラムが書きやすくなるというわけです。

=== 文字列はオブジェクト ===
もう一度先の例に戻ってみてみましょう。

{{{#!highlight ruby
a = "Love Live!"
a.length
}}}

この例でaは"Love Live!"という文字列であり、かつlengthという文字列の長さを求める手続きも持っている存在であるということができます。<<BR>>
つまりRubyでは文字列は文字列そのもののデータとそれに関連する手続きをもった'''オブジェクト'''です。

なにこれ

なんでもオブジェクト

オブジェクト指向

今回はRubyの考え方の根幹をなしている「オブジェクト」と呼ばれるものの話が中心となります。
Rubyはオブジェクト指向言語と呼ばれる言語の一種です。字の通り、オブジェクトというものを中心に考えたプログラミングの考え方を取り入れた言語です。
オブジェクト指向は現代のプログラミングの考え方の主流の一つとなっている考え方なので、この際その考え方に触れておくことにしましょう。

オブジェクト指向はRubyだけではなくJavaやC++といった現在主流となっている言語に採用されている考え方です。

オブジェクトって何

オブジェクトというのはデータとそれに関連する処理をひとまとめにした概念といえます。
と言われてもわかりにくいと思うので、実際の例で考えてみることにしましょう。

文字列を考えます。Rubyでは文字列は次のように書きますね。

   1 "Love Live!"

プログラムはデータに対して加工や処理を行なっていくことの繰り返しだということを第1回で述べました。
なのでデータに対してよく行われるであろう処理や加工をデータそのものに紐付けておくと何かと便利なのではないかという気がします。
データとそれに関連する手続きをバラバラにもっておくのではなく、一体のものとして扱う。これがオブジェクト指向の考え方の1つの基本です。

たとえば文字列に対して行う処理として文字列の長さを求めるというものが考えられます。オブジェクト指向ではない言語とRubyを比較してオブジェクト指向的な
考え方というのはどういうものなのかをみていきましょう。

オブジェクト指向ではない言語の例としてCを挙げることにします。Cで文字列の長さを求めるにはstrlenというものを使います。

   1 char[] a = "Love Live!";
   2 
   3 strlen(a); //strlenという処理はaという文字列に属しているわけではなく、独立して存在している
   4 

対してRubyの例です。Rubyで文字列の長さを求めるにはlengthメソッドを使います。

   1 a = "Love Live!"
   2 a.length #aという文字列に関連付けられているlengthメソッドを使っているという雰囲気

データと処理を一体として扱うメリット

文字列の長さのような例だとあまりこのような手法のメリットは感じられないかもしれません。
巨大なプログラムにおいてこの手法は威力を発揮します。

Cのような非オブジェクト指向言語ではデータと処理が別のものとして扱われるため、すべてのデータと処理が一緒くたになってプログラムに記述されることになります。
これはプログラムが読みにくくなり、開発しにくくなるという結果を招きやすくなります。

オブジェクト指向を取り入れると、あるデータとそれに紐付けられた処理を一つの塊として切り出すことができるので、プログラムをその塊の組み合わせとして記述しやすくなります。
つまり大きなプログラムでもひとつの大きな塊ではなく、もう少し小さな単位の集合として作ることができ、プログラムが書きやすくなるというわけです。

文字列はオブジェクト

もう一度先の例に戻ってみてみましょう。

   1 a = "Love Live!"
   2 a.length

この例でaは"Love Live!"という文字列であり、かつlengthという文字列の長さを求める手続きも持っている存在であるということができます。
つまりRubyでは文字列は文字列そのもののデータとそれに関連する手続きをもったオブジェクトです。

オブジェクトとメソッド

クラス

  • これは多分時間がないのでやらない。

alstamber/2013FreshManRubySeminar2 (最終更新日時 2013-07-04 23:39:28 更新者 alstamber)