オブジェクト指向設計について
オブジェクト指向についてなかなか理解できていなかったため自分なりに本や記事を読んでまとめてみました。
オブジェクト指向とは
オブジェクト指向とは、プログラムを単なる手順ではなく、オブジェクトの作成とオブジェクトの操作としてみる考え方です。
オブジェクト指向のプログラミングでは、クラスという機能のまとまりを作り、そのクラスの中で、オブジェクトの性質(オブジェクトの属性)と振る舞い(メソッド)に分け、プログラムを書いていくことが多いです。
オブジェクト指向の方式としては、クラスベース方式、プロトタイプベース方式。Mixin方式があります。
オブジェクト指向でないものとは
メソッドがただ並んでいるだけの、手続き型プログラミングはオブジェクト指向では無いものです。
オブジェクト指向が生まれる前はこのプログラミングが主流でした。
オブジェクト指向のメリット
1.仕様変更に強い
・・・機能のまとまりをクラスとして分けてあげることで、変更しなくてはならない範囲が限定されます。
2.複数人での開発がしやすい
・・・複数の開発者の間で設計パターンの共有ができます。
3.同じようなオブジェクトを簡単に作れる
・・・クラスが似たようなオブジェクトの設計図となります。
オブジェクト指向で用いられる用語
・オブジェクト
オブジェクトとは、「モノ」という意味で、Rubyにおいてはインスタンスやメソッド、クラスなど全てをオブジェクトとして扱っています。
・クラス
同じ属性やメソッドを持つものの機能のまとまりをクラスと言います。
・属性
属性とは、オブジェクトが持っているデータのことです。
pictweetのtweetで言うと、text、imageなどの属性を持っています。
・メソッド
メソッドとは、オブジェクトが持っている処理のことです。これによってオブジェクトがどんな振る舞いをするかが決まります。
・インスタンス
インスタンスとは、物体や事例といった意味で、レコード1つ分のことを指すことが多いです。
・カプセル化
カプセル化とは、オブジェクトがもつデータやメソッドのうち、別のオブジェクトから直接利用される必要のないものを隠すことを言います。
・継承
継承とは、特定の「オブジェクトの機能を引き継いで使うことです。
・ポリモーフィズム
クラスによって同一のメソッドで異なる処理が行えると言う性質をポリモーフィズムと言います。