自分用メモ
クラス(抽象)とインスタンス(具体)の関係は、
何度も読み返して感覚を取り入れたいところ。
オブジェクト指向の全体像

この図の⑥メソッドは、正規表現のメソッドと同じ意味
※参考:JavaScriptの正規表現について
オブジェクト指向とは?
開発手法のこと。
多人数で開発を効率よく行う際のアプローチ手法のこと
オブジェクト単位でシステムを作っていく
パーツをバラバラに用意して後で組み立てる
オブジェクト指向のない時代のプログラミングは
「ロボットの足から」という風に作っていた
オブジェクト指向の導入より
「先に腕だけ作ろう」という考え方になっていった
・オブジェクト=認識できるもの全て
(自分自身、同僚、両親、自分の鞄、車、病院、酸素などなど)
オブジェクトの相互作用で
システムの振る舞いを捉える考え方が「オブジェクト指向」
オブジェクト指向は一般的によく用いられる考え方
ただし場合によっては最適ではない
オブジェクト指向は抽象的な概念を重要視している
具体的なものから一歩引いて考える
オブジェクトの属性や振る舞いを
シンプルにまとめる事を「抽象化」と言う
オブジェクト指向は個人開発ではあまり意識しないが
チーム開発では欠かせない概念である
クラスとインスタンス
・クラス
→抽象度が高いもの
オブジェクトを抽象化したもの(名前、職業、年齢)
同じようなオブジェクトを一纏めにして抽象化(名前を付けた)もの
オブジェクト指向でプログラミングをする際は「クラス」を使って記述する
クラスの内部には処理(メソッド)とデータ(メンバー)を定義する必要がある
・インスタンス
→抽象度が低いもの=具体的なもの
オブジェクトの具体例(~さん、会社員、30歳)
共通点の定義がクラス、講師も学生も「人」が共通点
ここで「人というクラス」が定義される
クラス=共通点の定義
名前と年齢の合計が「人」というクラス
この定義に従って作成されたオブジェクトを
「そのクラスのインスタンス」と呼ぶ
オブジェクト指向における変数と関数
オブジェクト指向では、
クラス内で定義されてる変数をフィールドと呼ぶ
人間で言う名前やお金、
オブジェクト指向におけるパラメータと言い換えられる
※参考:変数とは?名付け方のコツや定数についても解説
メソッドはオブジェクト指向における処理のこと
クラス内で定義されている関数と言い換えられる
メソッドを実行するにはオブジェクト変数に
「->」を付けてメソッド名を指定する必要がある
class クラス名{
フィールド
メソッド
}
メソッドは以下の3つによってアクセスを制限できる
・public
・private
・protected
※参考:プログラミングにおける関数とは?基礎知識を解説
クラスの継承とは?
別クラスの定義をあたかも自分のクラスで
定義してあるかのように扱う、インヘリタンスとも言う
機能を受け継いだクラスを簡単に作成可能
他のクラスの内部データや手続きを引き継げる
抽象レベルを下げたクラス定義でいちいち再定義する必要がなくなる
(教師:呼吸、生徒:呼吸)と定義するのではな
く(人間:呼吸)とすれば楽になる
class クラス名 extends 継承したいクラス名{}
継承されるクラスを「スーパークラス」と呼び、
継承されるクラスを「サブクラス」と呼ぶ
継承やオーバーライドを利用する事で
コーディングの削減やバグの混入を防ぐ事が可能になる
クラス間の環形を明確にして階層化する事も可能
ただし多重継承はできない
この記事へのコメントはありません。