オブジェクト指向でなぜつくるのか

オブジェクト指向言語でプログラムを書く意味や実装技術の概要、UMLモデリング開発プロセスなど概要を知ることができます。C++Javaを使ってプログラムを始める人は読んでおいて損はないかと思います。
以下、メモです。

(1) オブジェクト指向のプログラミング技術

ポリフォーリズム
サブルーチンを呼び出す側(共通メインルーチン)のロジックを一本化する仕組み → 「継承」の宣言を使い、対象となるクラスのメソッドの呼び出し方を統一する必要がある

(ex)
public class TextReader {
public void open () {}
public void close () {}
public char read () {}
}
public class NetworkReader extends TextReader {
}

メソッドテーブル
異なるクラスを同じ顔に見せるための仕掛け。メソッドが格納されている場所を指し示すポインタを集めたメソッドテーブルを作り、この形式を対象となるクラス間で統一する。


Cでは使えたが、Javaで使えなくなった機能
明示的なポインタの使用、共用体、グローバル変数、GOTO文


メモリ領域の使い方
作成されたインスタンスを全て有限のメモリ領域であるヒープ領域に配置する。
変数には、インスタンスそのものではなく、インスタンスの「ポインタ」(いわば確保したヒープ領域の場所を示す情報)が格納される。インスタンスを格納する変数を他の変数に代入した場合、ポインタアコピーされるだけで、ヒープ領域にあるインスタンスそのものは変化しない。

(2) UMLの基礎

  1. クラス図…クラスの定義情報とクラス間の関係を表現 → 集合論で分類、整理された現実世界の物事の関係を表現
  2. シーケンス図…実行時のインスタンス間のメソッド呼び出しを時系列に表現 → 役割分担された人や組織が協調して全体の仕事を達成する様子を時系列で表現
  3. ユースケース図…コンピュータに任せる仕事の範囲を表現
  4. アクティビティ図…現実世界の仕事の流れを表現

(3) XP(eXtreme Programming)開発プロセスの4つの価値

  1. Communication
    • チームメンバーや顧客とのコミュニケーションを重視。
  2. Simpllicity
    • 設計に凝らずに、必要最小限のシンプルさを保つことを重視。変更する必要があれば、いつでも既存のプログラムの内部構造を改善するリファクタリングを行う。
  3. Feedback
    • 作ったプログラムはすぐに動かしてテストし、その結果をフィードバックして改善する。
  4. Courage
    • 必要な場合には勇気を持って設計する。

(4) まとめ

本質的にソフトウエア開発は「人間が共同で行う知的作業」です。
作業の進め方や成果物の形式を決めることは重要ではありますが、それだけですべてがうまく進む性質のしごとではありません。実際のプロジェクトにおいては、リーダーがどのようにメンバーを引っ張っていくか、メンバーがチーム全体の成功を考えてどのように動くかといった人間的な側面も重要になります。