【第11回】プログラムの3大要素の1つである処理を扱ってみる
このところ、毎回のように新しい概念が出てきたかと思いますが、
今回はちょっと基本に立ち返ってみましょう。
基本とは何か?
すでに何度も登場していますが、プログラムの3大要素である、入力、処理、出力のことです。
今回はその中の処理について注目します。
前提1: 第4回の講座を理解し、プログラムの3大要素について押さえている。
前提2: 第8回の講座を理解し、メソッドについての理解が深まっている。
第4回の講座で扱ったのは主に出力でしたね。「出力をする前に行われるもの」が、処理です。
今回は実例を挙げていくとわかりやすいかな。
例:自動販売機に120円を入れて、缶ジュースを購入する。
上の何とも味気ない文章の中から、入力、処理、出力を洗い出してみてください。
…どうですか?
多分、入力と出力についてはすぐに思いつくのではないかと思います。
入力:120円
出力:缶ジュース
では、処理は一体何になるかわかりますか?「感覚的には分かるのだけど、
一言で表すのはちょっと難しい」と思う人もいるかもしれませんね。
120円(入力)を缶ジュース(出力)にするまでに、自動販売機の中で
こっそり働いていた機能が処理を行っているのです。
自動販売機に限らず、世の中にある機械は、何かしら処理を行ってくれています。
テレビは画面を映してくれますし、ミニコンポはCDやMDを再生して音を出してくれます。
電子レンジの「あたため」ボタンを押すと、適当に温めてくれます。
ありとあらゆる機械の動きの仕組みを分かっている人は、いないでしょう。
いちいち知らなくても使えるのですから。
Javaのメソッドの役割も同じようなものです。
利用者からすれば、面倒な処理の実現を肩代わりしてくれるわけです。
とはいっても、新しく作る場合は、自分で書かなければならないのですけど。
大切なのは、「適度なまとまりごとにメソッドとして区分けがなされている」という点です。
例えば、最初に出した自動販売機の例でも、ジュース購入という1つの処理は
いくつかの小さな処理から成り立っているのです。
・投入された金額のチェック処理
・押下されたボタンのチェック処理
・おつりのチェック処理
・ジュースの搬出処理
実際の自動販売機が行っている処理は、当然ながら、もっと多いですが、
上記に書き出した処理の流れを、簡単にプログラムで表現してみることにしましょう。
以下のプログラムを打ち込み、実行してみてください。
public class VendingMachine { public VendingMachine() { System.out.println( "自動販売機オブジェクトが生成されました。"); } public void payCheck() { System.out.println("投入金額チェック処理。"); } public void buttonCheck() { System.out.println("押下されたボタンのチェック処理。"); } public void changeCheck() { System.out.println("お釣りの金額チェック処理。"); } public void getCan() { System.out.println("缶ジュース取得。"); } public static void main(String[] args) { // オブジェクト生成。 VendingMachine machine = new VendingMachine(); // 1. 投入された金額のチェックをする。 machine.payCheck(); // 2. 押下されたボタンのチェックをする。 machine.buttonCheck(); // 3. お釣りのチェックをする。 machine.changeCheck(); // 4. ジュースを取得する。 machine.getCan(); } }
実行結果:
C:\work>java VendingMachine 自動販売機オブジェクトが生成されました。 投入金額チェック処理。 押下されたボタンのチェック処理。 お釣りの金額チェック処理。 缶ジュース取得。 C:\work>
この例で、注目してもらいたいのは、それぞれの処理をメソッドごとに分けている点です。
それにより、全体の流れを把握しやすくなり、結果的に効率が良くなります。
例えば、ボタンチェック処理を修正したいと思ったときには、
buttonCheck()に注目すればよいのです。
逆に、main()メソッドに全てを詰め込んでしまうと、大変ですね。
1.「クラス」に定義する性質には「フィールド」と「メソッド」がある。
2.「フィールド」は「クラス」自身の属性である。
3.「メソッド」は「インスタンス」を操作する方法を提供する。
今回の講座で、処理についての理解が深まってくれたならば幸いです。
→ 次へ(第12回:クラスパスについて理解する)