トップページ

本棚


両手で1000まで数えられますか?:2進法の話
数値 - 危険物取り扱い注意
100 × 200 =32?:変数のオーバーフローの話
パリティビット
小数の扱いについて
ぽいんた
ぽいんた2
ぽいんた3
ジ・オリジン
ジ・オリジン:補足
かっこつける話
かっこつける話2
文字列のこと
タイミングの話
拡張性の話
取り込む話
staticな話

コンパイルの話1
コンパイルの話2:止まらぬビルド
コンパイルの話3:マシン語に落ちるということ1:メモリの話
コンパイルの話4:マシン語に落ちるということ2:最適化
コンパイルの話5:マシン語に落ちるということ3:変数とスタック
コンパイルの話6:コンパイラはそもそも何をやってくれるのか??
リンクの話
プリプロセッサの話

OS、というもの

オブジェクト指向1
オブジェクト指向:2
オブジェクト指向:3

オブジェクト指向:番外 C言語のソースファイルの話
オブジェクト指向:番外 C言語での「再利用性」と「カプセル化」データ構造とアルゴリズム


抽象的な話

寝込んで布団の中で考えたこと
こんなの、常識??
お仕事プログラミング
ソフトでハードなプログラム
プログラムするということ
お勉強
プログラムを学ぶということの補足
C言語:「学問」と「実務」
統合開発環境
C言語ってポータブルですか?
C言語ってポータブルですか?:2
あなたは、どう読みますか?
ああ勘違い
試してガッテン
低級品
質問をするということ
ポカ
「何もしない」 != 「無駄」
エディタの話
もっと手を抜こう

いまどきの、アセンブラ

VisualStudio2005
VisualStudio2005:2

戦争の防ぎ方、に対する私の考え
身近な差別
改革
地球に優しいなんて大嘘
統計で嘘をつく方法

言葉について
言葉について:2

神が死んだということ
善悪の彼岸から、力への意思を目覚めさせるということ

本を読むということ
本を読むということ:2

絵を描く話
地図
地球儀

オカルトのお話
がんだむさん
RPGソフトウェア
記紀神話の不思議



メニュー

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

ちいさなプログラムを書いているときには気にもならないし特に問題にもならないけど、だんだんプログラムが大きくなってくるとソースファイルを分割する、ということを行うと思います。

その際に、ただ単純に分ければいい、というものではないことはまあ誰でもわかると思うんです。だいたいは、機能別(C++なんかではクラス単位)に、わけるんじゃないでしょうか?

例えばあるプログラムにファイル処理を行う関数郡と画面の入出力を行う関数郡があったばあい、ソースファイルは
【プログラムのメイン処理を記述したソースファイル】
【ファイル処理用のソースファイル】
【画面の入出力用のソースファイル】
ぐらいに分割すると思います。

その際に、例えばファイルの処理にしてもソースファイル内でサブ関数的な使い方をする関数とメインの処理などからコールされる関数の2種類があるわけです。

ここまでは、まあどんな言語でもほぼ同じだと思います。ここからは、C言語の話。

そういった場合には、サブ関数を宣言・定義するときにstatic修飾子をつけることでソースファイル内からしかそのサブ関数をコールすることが出来なくなります。また、グローバル変数を使っている場合も同様にstatic修飾子によって同一ソースファイル内からのアクセスしか出来ないようにすることができます。

これによって、ファイルスコープの外からの変数へのアクセスや関数コールを制限することができます。


これって、何かに似ていませんか??


そうです。C++やJavaのprivateメンバ(Javaならフィールドまたはメソッド)と非常に似ています。

逆に、ヘッダファイルなどで公開している関数はpublicな関数、staticでない変数はpublicな変数(フィールド)だと考えることも出来ます。

C言語の分割されたソースファイルというのは、いわばfinalかつSingletonなクラスのように扱うことができるのです。


何が言いたいのかというと、C言語でプログラムを書くときにもオブジェクト指向的な考え方は非常に有効である(ことがある)、ということです。常に、とは言いませんが。


「だからC言語でもオブジェクト指向言語なんだよ」なんてことが言いたいわけじゃありません。だいたい、継承できないし当然ポリモーフィズムなんてありゃしないし。(こねくり回したらほとんど同じようなことは出来なくも無いですが)


ここで言いたいのは、いわゆる「オブジェクト指向」ではなく、根本的な思想としての「オブジェクト指向」なプログラミングはC言語でも十分に可能だということです。

そもそもオブジェクト指向においてクラス単位(オブジェクト)で処理を考える、ということは
①データと処理をまとめて扱う
②クリティカルなデータや処理を隠蔽して、外からは限られた操作しか出来ないようにすることでセキュアなプログラムを書く
というところから出発しています。

この、オブジェクト指向の根本の思想はとても有用だと思います。




| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
@wiki - 無料レンタルウィキサービス | プライバシーポリシー