ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
オブジェクト指向のはなし

まずデータ構造ありき

導入

プログラムは「データ構造」と「アルゴリズム」の2つから構成されていますが、より重要なのはどちらでしょう?

解説

まず、次の2つのうちどちらが簡単か考えてみてください:

  • システムの仕様と明確なデータ構造が与えられたとき、これらからアルゴリズムを推測すること
  • システムの仕様と明確なアルゴリズムが与えられたとき、これらからデータ構造を推測すること

ある程度経験を積んだプログラマなら共感してもらえると思いますが、簡単なのは前者の方です。後者は難しいというよりは、ほとんど不可能に近いでしょう。

つまり、明確なデータ構造さえあればアルゴリズムは自明です。一方、アルゴリズムからデータ構造を推測することは困難です。

オブジェクト指向では、システムはオブジェクトというデータの固まりから構成されています。システムをデータ構造の面から記述するのに向いていると言えますね。

フローチャートを乱用しないこと

いつもフローチャートを書く癖がある人は注意した方が良いかも知れません。フローチャートはアルゴリズムを記述するものなので、データ構造が不明確になる可能性があります。

その代わり、データフローを書いてみるのが良いでしょう。データフローは書き慣れないうちは難しいですが、慣れてしまえば非常に強力なツールになります。手順を簡単に説明しておきます。

  1. 紙とペンを用意する。
  2. 登場しそうなオブジェクトの名前をそれぞれ少しずつ離れた位置に書き、丸で囲む。
  3. あるオブジェクトから別のオブジェクトに向かって移動する情報について、オブジェクト間に矢印を引き、矢印の側に情報の名前を書く。
  4. わからなくなったらちょっと休憩して頭を冷やす。
  5. 納得がいくまで 2〜4 を繰り返す。

矢印はデータの流れ (data flow) なのであって、処理手順ではないという点に注意してください。これを意識的に行うには、データフロー中では極力(処理を表す)動詞を書かないようにし、(データを表す)名詞を使用するようにします。

(「オブジェクト指向のはなし」は1999年2月から2000年4月にかけて作成されたコンテンツです。)