こんにちは!
ナビゲータのEVEです。
昨日は、メソッドにfunctionがあるって驚いていましたが、今日は、カプセル化から話をしましょう!
価格:3,740円 |
[カプセル化]
カプセル化の重要性について、「独習PHP」に、書かれています。そのカプセル化したデータにアクセスするには、アクセッサ−を使用してアクセスするっと言うところは、Javaと同じだなって感じました。
Javaではないので、記述としてはないのですが、JavaBeansみたいなこともできそうです。
[オーバーロード]
オーバーロードの機能も用意されています。オブジェクト指向言語なので、この機能がないと、継承が難しいと思いますが、オーバーライドはないようです。
いつも、混同し悩む、オーバーロードと、オーバーライドですが、簡単に言うと、オーバーロードが多重定義で、オーバーライドは上書きでよろしかったでしょうか?そのうちの、上書きという機能はPHPにはないようです。
PHPのオーバーロードの条件としては、以下のものが上げられていました。
・メソッド
型が一致していること
・仮引数
型は一致しているが、より広い型であること。個数は一致していること(名前、規定値は異なってもかまいません)
・戻り値型
一致しているか、より狭い型であること
・アクセス修飾子
一致しているか、より緩いこと(親がprotectedであれば、子はpublicで利用可能)
・オーバーライドを禁止するのは、final修飾子を利用する
Javaでプログラミングしないなら、PHPには、継承時にはオーバーロードがあって、以上の条件で利用できると覚えておけばいいのでは?
[ポリモーフィズム]
ポリモーフィズムを実現する機能として、抽象クラスと、インターフェースが用意されています。これについては、PHPにも用意されていて、「独習PHP」では、インターフェースについて詳しく書かれています。
まず、ポリモーフィズムについて説明すると、ある1つの関数(メソッド)の呼び出しに対し、オブジェクト毎に異なる動作をすることをいいます。実は、PDOがPHP8で利用できると知るまでは、この機能を使って、MySQL、PostgreSQLにといった、異なったデータベースに接続できるように、システムを作ることを考えていました。だから、データベースへアクセスする時、PDOが使用できると知ったときは、一つやることが省けたと思ったわけです。
[明日以降に思うこと]
本日は、まだ「独習PHP」を読んでいないのですが、なんとなくブログをつけていて明日以降どんなことをするか、したいか、アイディアが浮かんできました!まだ、オブジェクト指向言語としてPHPを利用したことがないので、何とも言えないのですが、読んだ感触では、いけそうです。
久しぶりにオブジェクト指向の本を読んで思ったのは、やっぱり、作っていないと感が鈍るなって感じです。本を読んで、久しぶりにコーディングしてみて、初めて新しいアイディアが浮かびました。これからは、プログラムを作る期間がなくても、何かしらのプログラムは作っていたいと思いました。
では、また!