プログラム=① と②
①…処理手順
②…処理対象データの表現(実装)方法
プログラムにおいて、アルゴリズムとそれが扱うデータの表現方法は
優れたプログラム→優れた①と優れた②を満たす。
①が決まると②が決まる(ただし、逆もある)
・②
関連のあるデータをひとまとまりにして扱う。
又は、データ同士の関連性を記述する。
関連はあるが、別のデータ→ 注意が必要
1つのデータとして扱えるようにする。
C言語では、 を用いる。
typedef struct {
char sei[MAX_SIZE];
char mei[MAX_SIZE];
}Name;この時の、sei[]やmei[]のことを③ といい、Nameのことを という。
使い方
Name user;
user.sei = "woody";
user.mei = "1227";
この時、変数名と③名との間にある「.」のことを、 または という。
データ構造とは
関連のあるデータを にして扱う、または、データ同士の を表現したもの
C言語では をもとに、 を作ることで実現
データ抽象化とは
データの内部的実現方法( )は に、データを から見た に注目して、データを表現(設計)すること
データ抽象化の実現方法
実現には、① を用いる
①とは
・データの性質を表す
・データを操作する (これを (オブジェクト指向では )と呼ぶ)
を にして定義したもの
操作関数は、特定の型を扱うための ともいえる。
データ抽象化の重要性
データの具体的な実現(実装)方法…
利用者に対するデータの見せ方…
データ抽象化により
・データの実現(実装)方法(内部仕様)
・データの利用方法(外部仕様)
が されることが重要
つまり、データの
・利用者…
・設計者…
データ抽象化に基づいたプログラミング手順
[A: 抽象データ型の ]
①データの性質を表すデータ型名の決定
②データ型を扱う操作関数の洗い出し
③操作関数の外部仕様の決定
[B; 抽象データ型の ]
④データ型のデータ構造を決定
⑤5操作関数の実装
[C]
⑥データ型とその操作関数を用いたアプリケーションの作成
A…データをその利用者に の設計
B…データを の設計
C…いわゆるアプリケーションプログラミング
・A,B,Cは して行うことが可能
・大規模プログラミングでは、A,B,Cは通常 人やグループが行う
抽象データ型を設計する際の留意事項
○外部仕様設計の留意事項
・データ型名は、データの を表す適切なものにする
・操作関数は利用者の を考え、どんなものが必要か十分検討する
・操作関数名は、 を想起しやすい適切なものにする
・一度決定した外部仕様は
機能の追加や変更が必要な場合は、新たに操作関数を
この際、元々あった操作関数は極力 ←
○内部仕様設計の留意事項
・データ構造に依存する操作関数を
② や③ を用意し、それ以外の関数はこれらを用いて実装
②と③
○②
・データ構造内の変数(C言語ではメンバ変数)を するための関数
・これ以外の関数をデータ構造に依存せずに実装するために用意する
・通常、④ と⑤ がある
④…データ構造内の変数に値を 関数
⑤…データ構造内の変数から値を 関数
○③
・当該データ型の値を 関数
・通常データ構造依存…データ構造の変更に伴い実装の変更も必要
ただし、②を適切に用いることで、メンバ変数の直接参照は回避可能