2009-01-04 オブジェクト指向でなぜつくるのか -知っておきたいプログラミング、UML、設計の基礎知識- (前半まとめ) book 第1章〜第6章までのまとめ。 プログラミングの歴史 機械語 アセンブリ言語 アセンブラ(コンパイラ)による機械語の生成 高級言語 FORTRAN(1957年)、COBOL(1960年) ソフトウェア危機 ->20世紀末には世界の総人口がプログラマになっても、増大するソフトウェアの需要に追いつかない 構造化プログラミング 基本三構造(順次進行、条件分岐、繰り返し) GOTOレスプログラミング ->ALGOL、Pascal、C サブルーチンの独立性強化 ->メインルーチンとサブルーチンで共有する情報を少なくする グローバル変数問題、貧弱な再利用 オブジェクト指向プログラミング(OOP) (機械語〜高級言語) いかに簡単に、いかに親しみやすいか (構造化プログラミング) 保守性向上 オブジェクト指向プログラミング 三大要素 クラス まとめる ->サブルーチン(メソッド)と変数(インスタンス変更)をまとめる 隠す ->変数とメソッドを他クラスから隠す(グローバル変数レスプログラミング) たくさん作る ->1つのクラスから複数のインスタンス ポリモーフィズム 「共通メインルーチン」を作る仕組み 継承 コードの重複を排除する仕組み(クラスの共通部分を別クラスにまとめる) 進化したOOP パッケージ クラスをまとめる仕組み 例外 エラー処理の効率化 ガベージコレクション 無駄なインスタンスの削除処理 プログラミングとメモリ プログラムのメモリ領域 静的領域 グローバル変数、コード情報を格納 ヒープ領域 OOPではインスタンスを格納 スタック サブルーチンの引数、ローカル変数、戻り先を格納 インスタンスはヒープ領域に格納される 変数にはインスタンスのポインタが格納される 孤立したインスタンスはガベージコレクションが処理する ソフトウェアとアイデアの再利用 クラスライブラリ フレームワーク 基本的な制御のみを定義し、アプリケーションで個別処理を実装するようにしたソフトウェア部品群 アプリケーションからフレームワークを呼び出すのは禁止 ->ハリウッドの原則 "Don't call us, we will call you." コンポーネント デザインパターン 再利用部品を作る際のアイデア、ノウハウ集 GoFのデザインパターン