【PHP雑記】オブジェクト指向 カプセル化とポリモーフィズム

今日も動画サイトでオブジェクト指向を勉強したので雑記を書く
http://schoo.jp

オブジェクト指向の3大要素

  • カプセル化
  • 継承
  • ポリモーフィズム/多様性

オブジェクト指向における重要な考え方抽象
抽象
→拡張性の向上、依存性を少なくする=壊れにくくなる
依存性を少なくする:急な仕様変更に対応できる

抽象と実装
・既存のコードを書き換える→既存のコードを破棄しないといけない
・不要なバグが発生する
※そのため、抽象という考え方が必要

インターフェイス
・抽象を定義
・メソッドの呼び出し方を定義

抽象
・具体的な処理を伴わない
・呼び出しに必要な情報部分を指す

実装
・具体的なコードを内容

OOP
・インターフェイス→抽象の役割
・クラス→実装の役割

抽象に依存する
・変更に強い拡張性の高いコードを書ける

カプセル化
・具体的なデータや構造などの実装を隠ぺいすること
※パッケージング

ポリモーフィズム
・同じようなふるまい方ができるオブジェクトであれば許容する性質のこと
※接続部が同じなら、どんなパーツでもつけらえるってことかな?

カプセル化とポリモーフィズム
・実装の詳細は隠ぺいされる、抽象に着目して様々な実装を受け容れる
・オブジェクトの相互作用が抽象だけでも成り立つようになる

【PHP雑記】オブジェクト指向について

JAVAの勉強にオブジェクト指向が必要らしいのでSchooで勉強してみた。
動画が止まったりするので、授業内容がよく入ってこなかったので、メモのコピペになります。

勉強した動画サイト
https://schoo.jp/

・オブジェクト指向を使う理由
プログラムにオブジェクトという概念を持ち込んだ考え方
人間の思考に近い考え方でプログラミングができるので超便利

・クラス
オブジェクトの型、定義
設計図みたいなもの?
言語によってはクラスがない→プロトタイプベース

・プロパティ
クラスに定義された変数
オブジェクトの持つデータ
クラスが鍋なら、プロパティは材料かな?

・インスタンス
クラスを元に実体化されたオブジェクトがインスタンス
クラスという設計図を基に作られたものがインスタンス(オブジェクト)ってことでいいかな?

・メソッド
よくわがんねえ

・コンストラクタ
よくわからん

・クラスの継承
クラスの定義を拡張できる
基のクラス→基底クラス/親クラス
派生したクラス→派生クラス/子クラス
プロパティ、メソッドの追加やメソッドの上書きができるとか
つまり、カスタマイズが容易ってことでいいのかいな?

・継承のメリット
定義を必要な数だけ拡張できる
拡張したコードを呼び出し側を変えずに利用できる
ライブラリやフレームワークでよく使われる

要するに変更・追加が容易ってことでおk?

今回はこんな感じ
よくわからないから最初の授業の目次を基にいろいろなサイトを巡回して理解を深めたいと思う(って言うほどやる気はない)