メモリ管理視点によるオブジェクト指向の理解①
【C言語/C++言語の違い】
C言語
C++言語
.cpp/.C
拡張子
.c
Cコンパイラ
C++プリプロセッサ
アセンブリ
Cコンパイラ
+
構造化プログラミング
+オブジェクト指向プログラミン
グ
実装手法
構造化プログラミング
ヘッダーファイル
ライブラリ
分割手法
ヘッダーファイル
関数/構造体
+ヘッダークラス
+STL
関数/構造体
クラス
+
【構造化プログラミング模式図】
部品1 (関数)
部品2 (関数)
部品3 (関数)
部品4 (関数)
処理1呼び出し(関数)
処理2呼び出し(関数)
処理3呼び出し(関数)
処理1 (関数)
部品1 (関数)
部品2 (関数)
部品5 (関数)
部品2 (関数)
部品4 (関数)
部品6 (関数)
部品7 (関数)
処理2 (関数)
部品3 (関数)
部品4 (関数)
部品5 (関数)
部品3 (関数)
部品5 (関数)
部品7 (関数)
部品6 (関数)
部品7 (関数)
処理3 (関数)
【
オブジェクト指向プログラミングの端的な模式図】
意味のあるデータセットの管
理方法が拡張された
学生情報構造体
学籍番号
学生情報クラス
学籍番号
C++言語:クラス
で管理
氏名
性別
住所
氏名
性別
意味のあるデータセット
の固まり=オブジェクト
住所
電話番号
身長
電話番号
身長
メモリ上に展開されたオ
ブジェクト
=インスタンス/オブ
体重
体重
ジェクトインスタンス
出身地
出身校
出身地
出身校
入学処理
C言語:構造体
進級処理
休学処理
復学処理
退学処理
卒業処理
で管理
動き/振る舞いを
セットにして管理でき
る
【
メモリのスコープ(有効範囲)】
プログラミング言語
C++ VB.Net C#
名称
有効範囲
C
JAVA
×
●
global
namespace
public
protected
private
他モジュール/クラスからも参照可
他モジュール/クラスからも参照可
他モジュール/クラスからも参照可
該当クラス継承元先のクラスからのみ参照可
該当モジュール/クラスからのみ参照可
●
×
×
×
×
×
●
●
●
●
●
×
●
●
●
●
●
×
●
●
●
●
●
●
●
●
●
(local)
該当関数/プロシージャの範囲内のみで参照可 ●