開発エンジニアの深井です。
オブジェクト指向プログラミング(以下OOP)は、WEB系言語では当たり前に使用します。
しかし、VisualBasic6.0(以下VB6)からプログラミングの世界に入った私には当初、OOPとは未知のプログラミング手法でした。
VB6にもクラス定義やオブジェクト作成ができましたが、クラスの継承をサポートしておらず、あまりクラスを使用したプログラミングの機会はありませんでした。
もっぱらVB6では共通ファンクション、共通メソッドなど共通処理を多用し、手直しが入ると各呼び出し元に影響が無いかを見直ししなければならず、少々手間でした。
PHPで仕事をする機会が増え、OOPを避けて通ることができなくなりました。
そこでOOPに関する書籍を購入し、実務経験も得られたことで、理解が深まってきたと感じています。
オブジェクト指向プログラミングとは
OOPについて簡単に説明します。
OOPは「オブジェクトの設計図」となるクラス、というものが用意されています。
クラスはデータ(プロパティ)とそのデータに対する操作(メソッド)を一つにまとめた構造であり、これを基にしてオブジェクトを生成します。
クラスは抽象的なもので、それ自体は実体を持たず、そこから生成されたもの(インスタンス)が具体的なオブジェクトになります。
クラスが「オブジェクトの設計図」と呼ばれる所以です。
OOPでは主に以下の4つが、重要な概念とされています。
1. カプセル化
データと操作(メソッド)を一つのクラスにまとめることで、外部から直接アクセスできないようにし、データやコードの整合性を保ちます。
変更が必要になった場合でも、そのクラス内で対応するだけで済みます。
ブラックボックス化とも言えます。
2. 継承
既存のクラスの特性を新しいクラスに拡張して引き継ぐことで、コードの流用性を高め、類似したクラスを簡単に構築できるようにします。
3. ポリモーフィズム(多態性)
同じ名前のメソッドが異なるクラスで異なる振る舞いをするという概念です。
つまり、同じメソッド名を使っていても、そのメソッドが呼ばれるインスタンスによって実行される内容が変わるということです。
共通のインターフェースを使って処理ができるため、コードの柔軟性が増します。
4. 抽象化
必要な情報だけを公開し、それ以外の不要な実装詳細を隠すことで、複雑なシステムをシンプル化し、ユーザーが必要な個所だけに集中できるようにします。
メリット
これだけ書いていると抽象的でどこが有用なのか分かりづらく感じられます。
しかし、実際の業務の中で画面数の多いシステムや社内の多数のシステムに共通クラスとして利用されていることを目の当たりにして、次の有用性が見えてきます。
- 継承やカプセル化によるコードの流用性
- 各オブジェクトが独立していることにより変更やバグ修正が容易なメンテナンス性
- ポリモーフィズムや継承による機能追加が容易な拡張性
まとめ
OOPへの移行は、新しい考え方を取り入れる必要があり、最初は戸惑いました。
しかし、一度その考え方を身につけることで、プログラミングの幅が広がり、より効率的な開発が可能になったと感じています。
尚、VisusalBasicでも「.NET」以降のバージョンでOOPが利用可能になりました。
PHPについても、本格的なOOPが利用可能になったのはPHP5以降からと言われています。
システム開発の仕事に関わる上で、OOPは欠かせない手法になっています。
これからもOOPには、大変お世話になるであろうことは、間違いありません。