11 プログラムの3大要素の1つである処理を扱ってみる

【第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回:クラスパスについて理解する)