これまでオブジェクト指向プログラミングの基礎について説明してきました。理解を深め、実際にプログラミングできるようになるには、ちゃんとした参考書などで勉強する必要があります。この連載では、プログラミングの背景を持たない人を対象にできるだけ簡素な内容にしようと努めているつもりです。それでも、このオブジェクト指向は難解な内容だと思います(説明する側の問題もありますが)。もう少しですので、がんばって付いてきてくださるようお願いします。
今回は、オブジェクト指向プログラミングに関わる重要ないくつかの用語を説明します。
主な用語
コンストラクタ(constructor)
クラスからオブジェクトが作成される(インスタンス生成)ときに自動で呼び出され、初期化処理を行う特別なメソッド(メンバ関数)です。コンストラクタには次のような特徴があります。
- クラス名と同じ名前
- 戻り値を持たない
- 引数や修飾子を指定できる(アクセス修飾子のみ)
デストラクタ(destructor)
コンストラクタとは逆の目的に使用される特殊なメンバ関数(C++のみ)です。生成されたオブジェクトが破棄されるとき(インスタンス破棄)に自動で呼び出されます。オブジェクトが生成されたときに確保されたメモリ領域を解放します。デストラクタはクラス名の先頭に「~」(否定の意味)を付けた名前になります。
JavaやRubyなどのように、使われなくなったインスタンスを自動で破棄するため、デストラクタが不要な言語もあります。
オーバーロード(overload)
「多重定義」とも呼びます。名前が同じで引数などの形式が異なるメソッドを定義することをオーバーロードといいます。例えば、整数「a」と整数「b」を足し算をするメソッド「add(int a, int b)」をオーバーロードして「add(int a, int b, int c)」という整数「a」、「b」、「c」をすべて足すメソッドを定義できます。
オーバーライド(override)
基底クラスで定義されているメソッドを派生クラスで定義し直し、上書きすることをオーバーライドと呼びます。メソッド名と引数の形式は基底クラスと派生クラスとで完全に同じでなければなりません。例えば、以下のメソッドはまったく同じ名前ですが、内容が異なります。
基底クラス:add(int a, int b) '整数「a」と整数「b」の足し算
派生クラス:add(int a, int b) '整数「a」と整数「b」を足し、クラス内の定数「c」を足す
「add(a, b)」を実行すると、基底クラスのメソッドではなく、派生クラスのメソッドが実行されます。
「オーバーロード」と「オーバーライド」の違いに注意してください。
パッケージ(package)
Javaでは、複数のクラスが機能ごとに区分けされパッケージに含まれます。これにより、クラスを階層化して管理したり、クラスへのアクセスを制限(第21回のアクセス修飾子を参照)したりできます。
ライブラリ(library)
汎用性の高い機能を再利用可能な形式にまとめたものです。型、マクロ、関数、クラスの集合を指します。ここでは、主なライブラリを紹介します。
- ANSI標準C/C++ライブラリ:ANSI(American National Standards Institute)規格のライブラリ
- Standard Templete Library(STL):標準C++ライブラリの一部
- Javaクラスライブラリ:Javaの標準クラスライブラリ
- 基本クラスライブラリ(Basic Class Library):すべての共通言語基盤(CLT: Common Language Infrastructure)言語から利用可能なCLI標準ライブラリ
- 動的リンクライブラリ(Dynamic Link Library):プログラムの実行時にリンクするライブラリ。例:Windowsの*.dll、Unix系の*.so(Shared Objectの略)
- オブジェクトライブラリ
- COM/DCOM:Component Object Model/Distribute COM(分散COM)。かつてのOLE、ActiveX。現在は.Net Frameworkに移行。
- JAR:Java Archive。複数のJavaバイトコードをまとめ、ZIP圧縮されたファイル。
名前空間(Name Space)
クラスを階層的に分類し参照しやすくする方法。これにより、同じ名前で異なる機能のクラスを同時に使用することができます。また、名前空間によりアクセスを制限することもできます。
例:person1.student1.height
データメンバ「height」は「person1」の名前空間の下にある「student1」の名前空間内にあります。
API(Application Programming Interface)
他のプログラムとやり取りするための手順を定めた仕様
IDE(Integrated Development Environment)
統合開発環境。プロジェクト管理、バージョン管理、GUIの作成、チーム開発、作成補助、ビルド・デバッグ補助などの機能を一つのアプリケーションに統合したもの。Eclipse、Visual Studio、Xcodeなどがあります。
SDK(Software Development Kit)
ソフトウェア開発キット。アプリケーションの開発に必要なツールやソースなどのセット。Windows SDK、JDK(Java Development Kit)などがあります。
まとめ
今回は、最低限覚えておくべき用語を挙げました。この基礎編ではこれ以上オブジェクト指向について深く掘り下げることはしません。詳細は言語ごとに学んだ方がよいと思います。
次回は、イベントについて説明する予定です。
では、また。