プログラムの論理構造

JAVAのプログラムに、インスタンスを新たに生成する。インスタンスはデータ上に実体化しているモノ・事を指している。日本語に訳すると実体という意味になるようだ。WebデザイナーだったころにはJAVAではなく、JavaScriptのプロトタイプチェーンや、FlashのActionScriptでクラスやコンストラクタの決まり事のようなことを動きとは別に覚える機会があった。JAVAのクラスをそのまま使っている事例はかえって少ないかもしれないが、コンストラクタに単語を登録して、データとして有機的なまとまりにすることの意味合いを考えていこうと思う。変数がデータの文字列や、数値を入れる箱のようなイメージで、配列は箱がいくつか連なっているイメージ、多次元配列は配列の箱の中に、入れ子になって配列が入っているイメージになる。参照は住所のようなインスタンスのデータを読み取って値を表示することになる。継承は元のクラスが持っているデータに、独自のメソッドを追加するときにextendとして派生するクラスのことになる、例えば犬は歩くというメソッドを持っており、鳥は歩く代わりに飛ぶというメソッドを持っているとする。犬や鳥には共通で名前と体力がパラメータとして備わっており、それは継承されるもとのクラスの変数に代入して設定されている。プログラムを書くにあたって値を定義するインスタンス、それに変数の値を格納するフィールド、JavaScriptでいう関数にあたるメソッド、それらをひとまとめにしたクラスがプログラムの単位になる。こういった関係はJavaScriptやPHPなどの他のプログラムにも見られた。JavaScriptの場合はwebサイトの表示に、PHPの場合はSQLなどと連携してデータの操作と保持がプログラムの構造より先に、役割として与えられていた。JAVAではクラスを用意して、インスタンスを定義して、その構造を読み解いていく。

JavaScriptやPHPなどと異なり、実務では使ったことがなかったので、具体性が掴みにくいところがある。抽象クラスと抽象メソッドを考えてみる。図形という抽象クラスを作り、それを継承・派生する形で三角形や四角形などの具体的なクラスが紐づいている。プログラムの共通要素を定義して、論理的な構造を組み立てていく。プログラムを書くときに個々に装飾パーツを作り、モーターに当たる部分を作ったことは何度かあったが、それがなぜそうなっているかを考えたことはそれほどなかった。今のところJAVAのプログラムでは、変数という値の入れ物を作って値を代入して、計算処理を行って値を変化させる。グラフィックでは図形の位置が変わることで、ボタンを押してページをめくるといった具体的な動きになる。コンストラクタをnewしてオブジェクトを作ることは、パソコンだけに限らずファミコンやスマートフォンでも行われているけれど、それは抽象的な概念で、具体的な外見を必ずしも伴わないかもしれない。とはいえプログラムの論理的な構造を抽象的な定義と、具体的なデータや外観に分けて構造化することをJAVAのプログラムから学ぶことができた。クラスの派生と継承の制約からインスタンスを生成して、目的に合わせてカスタマイズできるようになっていきたいと考えている。For文やwhile文などのループの構造はwebデザイナーだったころからよく使っている、ひとたび実行されると自動的に位置やデータが更新されるので頼もしいサポートになった。いかにして条件のいいレールを敷くかによってループの効率も変わってくる。クラスの継承とカスタマイズを行い、プログラムは1つのファイルに収まっているため、そのままコピー&ペーストしてEclipseからオンラインJAVAエディタに移しても、同じようにコンソールにメッセージを出力できるようだ。ホームページ作成の時、HTMLで文章をタグというブロックに入力するときは、DreamWeaverのようなオーサリングソフトを使わなくても、メモ帳でもタグの関係性を維持できれば、同じ表示結果が得られる。テキストとグラフィックが一覧できる方が、作業が具体的に特長づけられて、作業効率も良かったからだったが、プログラムの構造化という観点ではとくに整理されていなかったとも考えられる。Eclipseについてプログラマに質問すると、ホームページを作る際のDreamWeaverの代わりになっていると答えもらったことがあった。All in Oneパッケージにすると動作が重くなったりしたこともあったが、パッケージを絞ってダウンロードして解凍すると、通常のメモ帳と同じようにプログラムを構造化できるようになった。JAVAをインストールしたのはwindowsPCに移行する前のintelNUCのさらに前のmacBookProにもEclipseをインストールしたことがあったが、そのときにもそれが何に使われるか具体性を掴もうとして、把握しきれなかったことがあった。ホームページ制作のノウハウはwindowOSとmacOSのグラフィックの特長を把握しやすく、スムーズにデータを受け渡すことができていた。Webデザイナーからプログラマに転身するかどうかはまだわからないが、物事の道理や構造を把握しておくことも必要だと考えた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です