オブジェクト指向プログラミングでは、クラス実装ファイルは、クラスのメソッドの実装コードを格納するためによく使用されます。C++やObjective-Cなどのプログラミング言語では、これらの実装ファイルを使用して、これらのメソッドのインターフェースと実装を分離します。[1]
モチベーション
この構造を使用すると、クラスとそのメンバーの宣言を含むクラス定義ファイルも作成されます。クラス定義が含まれ、そのメソッドの実装ファイルが利用可能な場合、ユーザーはクラスのオブジェクトをインスタンス化できます。この構造の目的は、実装コードを非表示にしたまま、ユーザーが設計を表示できるようにすることです。[2] [3]
ユーザーはオブジェクトのパブリックインターフェースを利用してオブジェクトの作成を可能な限り簡単にし、クライアントコードがクラスの実装の不要な詳細でユーザーの気を散らさないようにすることができます。[4] これにより、ユーザーはクラスを効果的に使用するために必要な情報を得ることができますが、コンパイルされたコードに損傷を与えることはありません。[5]
クラス実装ファイルの構造
実装ファイルは、C++プログラミングでクラス定義を作成するときに使用され、インターフェイスと実装を分離します。ヘッダーファイルは、クラスが持つすべてのメンバー関数(メソッド)とデータメソッド(フィールド)を宣言します。 [6] [7] [8]
実装ファイルには、ヘッダーファイルで宣言されたメソッドの実際の定義またはソースコードが含まれます。このファイルは、定義されたクラスの目的を説明するコメントと、ファイルの作成者やファイルの作成日など、実際のファイルの作成に関する詳細を提供するヘッダーブロックで始まる場合があります。[9]また、ファイルで宣言されたメソッドのいずれかで使用されるC++標準ライブラリ のライブラリを含めることもできます。クラス実装ファイルには通常、関連するヘッダーファイルをインクルードする行があります(以下の例を参照)。
C++ の例
例として、 というクラスがあるとしますExampleClass。このC++ファイルのヘッダーファイルは「example_class.h」、実装ファイルは「example_class.cc」という名前になります。[10] [11]
example_class.ccの構造の例は次のようになります。
#include "example_class.h"
ExampleClass :: ExampleClass () =デフォルト;
void ExampleClass::AddSomething ( int k ) { ... }
この例では関数の実装は省略されていますが、関数はexample_class.hで次のように宣言する必要があります。[12]
#include <文字列>
クラスExampleClass { public : ExampleClass (); // コンストラクター。void AddSomething ( int k );
プライベート:
std ::文字列name_ ; };
Objective-Cの例
クラス実装ファイルがどのように構成されるかの別の例は、 iOSプログラミングで使用されるObjective-Cで見ることができます。 [13] この例では、「ExampleClass」を使用します。これらの実装ファイルを使用する場合のC++とObjective - Cの顕著な違いは、ファイルの末尾に使用される拡張子です。C++では.cpp [14] 、Objective-Cでは.m [15]になりますが、両方ともヘッダーファイルには 同じ.h拡張子を使用します[16] [17]。 以下の例に示すように。
これはObjective-CのExampleClass.hの例です。
#import <UIKit/UIKit.h>
@interface ExampleClass : NSObject {
// インスタンス変数の宣言はここに記述します} - ( NSString * ) name ; @end
これは、 Objective-Cのクラスの実装ファイル Exampleclass.mの例です。
#import "ExampleClass.h"
@implementation ExampleClass
- ( NSString * ) name { return @"…" ; } @end
参照
参考文献
- ^ Alan Griffiths (2005). 「C++ におけるインターフェースと実装の分離」. ACCU . 2013 年 5 月 7 日閲覧。
- ^ Alan Griffiths (2005). 「C++ におけるインターフェースと実装の分離」. ACCU . 2013 年 5 月 7 日閲覧。
- ^ Neuberg, Matt (2011 年 5 月 26 日)。「第 4.3 章 ヘッダー ファイルと実装ファイル」。プログラミング iOS 4。O'Reilly Media, Inc. ISBN 978-1-4493-8843-0。
- ^ Alan Griffiths (2005). 「C++ におけるインターフェースと実装の分離」. ACCU . 2013 年 5 月 7 日閲覧。
- ^ 「C++ のすべきこととすべきでないこと」。Chromium プロジェクト。2013 年 5 月 7 日閲覧。
- ^ 「C++ クラスの紹介」。2013年 5 月 7 日閲覧。
- ^ Alan Griffiths (2005). 「C++ におけるインターフェースと実装の分離」. ACCU . 2013 年 5 月 7 日閲覧。
- ^ Febil Chacko Thanikal (2009). 「.h ファイルでテンプレート クラスを定義し、それを .cpp ファイルに実装する方法」。Code Project。2013年 5 月 7 日閲覧。
- ^ 「C++ プログラミングにおける実装ファイル」。ITechTalk。2013年 5 月 7 日閲覧。
- ^ 「C++ クラスの紹介」。2013年 5 月 7 日閲覧。
- ^ Neuberg, Matt (2011 年 5 月 26 日)。「第 4.3 章 ヘッダー ファイルと実装ファイル」。プログラミング iOS 4。O'Reilly Media, Inc. ISBN 978-1-4493-8843-0。
- ^ 「C++ クラスの紹介」。2013年 5 月 7 日閲覧。
- ^ Neuberg, Matt (2011 年 5 月 26 日)。「第 4.3 章 ヘッダー ファイルと実装ファイル」。プログラミング iOS 4。O'Reilly Media, Inc. ISBN 978-1-4493-8843-0。
- ^ 「C++ クラスの紹介」。2013年 5 月 7 日閲覧。
- ^ Neuberg, Matt (2011 年 5 月 26 日)。「第 4.3 章 ヘッダー ファイルと実装ファイル」。プログラミング iOS 4。O'Reilly Media, Inc. ISBN 978-1-4493-8843-0。
- ^ 「C++ クラスの紹介」。2013年 5 月 7 日閲覧。
- ^ Neuberg, Matt (2011 年 5 月 26 日)。「第 4.3 章 ヘッダー ファイルと実装ファイル」。プログラミング iOS 4。O'Reilly Media, Inc. ISBN 978-1-4493-8843-0。
外部リンク
- ヘッダーファイルと実装ファイル
