オブジェクト指向について

 ソフトウェア開発のオブジェクト指向について、初めて学んだときは抽象的で理解し難ったものですが、実際にオブジェクト指向のプログラミング言語を使ってみることでメリットがわかったように思います。大まかにオブジェクト指向のイメージがつかめるようにまとめて見ました。

1.オブジェクト指向とは
 オブジェクト指向は、ソフトウェア開発とコンピュータプログラミングのために用いられる考え方である。
(途中省略)
 オブジェクトとは、プログラミング視点ではデータ構造とその専属手続きを一つにまとめたものを指しており、分析/設計視点では情報資源とその処理手順を一つにまとめたものを指している。データとプロセスを個別に扱わずに、双方を一体化したオブジェクトを基礎要素にし、メッセージと形容されるオブジェクト間の相互作用を重視して、ソフトウェア全体を構築しようとする考え方がオブジェクト指向である。(引用:wikipedia)

2.オブジェクト指向を使って見る
 実際にオブジェクト指向が活かされているところをプログラムで使って見ます。下記ではスクリプトで簡単で試せるPython言語を使っています。
(1)動作環境 
 CentOS8(VirtualBoxの仮想マシン上)のPython用開発環境(IDLE:Integrated DeveLopment Environment)

(2)実行
 CentOS8の端末からidle3でIDLEを起動します。

 ここでは、変数aに文字列”Hello”を代入し、a.count(“l”)とすることで、”l”の文字の数をカウントすることができました。これがオブジェクト指向の一面です。
 Pythonは動的型付け言語のため、変数aに文字列を入力すると、”str”クラスと認識され、変数a(strクラスのオブジェクト)に対して、”str”クラスにあるメソッド(ここでは文字を数えるcount(‘文字’)メソッド)が利用できました。
 ”str”クラスはPythonに予め組み込まれているクラスですが、オブジェクト指向の言語ではクラスを定義して使うことができます。

3.クラスの作成
 文中のプログラム命令名はjavaの場合について記載しています。
(1)クラスの構成要素
 オブジェクト指向のプログラミング言語には、C#、java、Python、Cにオブジェクト指向を取り入れたC++などがあり、言語によって差異はありますがクラスの構成要素には以下のものがあります。(javaを例に記載)
①変数(フィールド変数)
 クラスの中で扱う変数で”private”修飾子でカプセル化※(外部のクラスに非公開)などができます。
②コンストラクタ
 オブジェクトを作るときにフィールド変数の初期化などを行うメソッドですがクラスのメンバではない(オブジェクトを作るときにのみ使う)。
 また、引数の数などによって、複数のコンストラクタを定義することができます(コンストラクタのオーバーロード)。
③アクセサメソッド
 ①で変数を”private”修飾子でカプセル化したとき、外部のクラスから変数にアクセスする方法として、必要に応じて変数に対して値をセット、又はゲットするメソッドを定義します。
④その他メソッド
 クラスのメンバとして、処理を行うメソッドを定義します。

(2)継承※
 親クラスを”extends”宣言で継承して、親クラスのメンバ(フィールド変数、メソッド)を使うことができます。
 また、親クラスのメソッドを書き換える(オーバーライド)して、親クラスのメソッド名を使ってオーバーライドしたメソッドを使うことができます(ポリモーフィズム※)。
 
 上記で※印の機能をオブジェクト指向の3大要素といい、これらの要素を活かしたクラスの設計を行ってオブジェクト指向のソフトウェア開発を行います。

The end