連載
» 2008年04月09日 00時00分 公開

ActionScriptで学ぶクラスやオブジェクト指向の基礎Flashの基礎を無料で習得! ActionScript入門(4)(2/2 ページ)

[吉村美保,クラスメソッド株式会社]
前のページへ 1|2       

「メソッド」はどうやって書くのよ?

 さて、メソッドとは具体的にどのように書くのでしょう。

 メソッドには、戻り値があるものとないものがあります。戻り値のないものは、メソッド内で処理が完結しているもので、戻り値の型には「void」というキーワードを指定します。メソッドの結果によって処理の流れを変えたいようなときには戻り値を設定します。

メソッドを実際に作ってみよう!

 それでは、一度Fingerクラスから離れて、いままでに学んだ制御文や演算子を使い、引数(メソッドを実行する際に必要となる変数、引数がないメソッドもある)の値が「3の倍数と3の付く数字」か判定するメソッドを作ってみましょう。

    private function judge( num:int ):Boolean {
        var result:Boolean = false;
        var str:String = String( num );
        if ( num % 3 == 0 ) {
                          【1】
            result = true;
        } else if ( str.indexOf( "3" ) != -1 ) {
       【2】
            result = true;
        }
        return result;
                                 【3】
    }

 【1】の「if ( num % 3 == 0 ) {」では、引数numが、3の倍数かどうかの判定をしています。【2】の「} else if ( str.indexOf( "3" ) != -1 ) {」では、引数numを文字列に直したものが代入された文字列strに「3」が含まれているかの判定をしています。【3】の「return result;」は、変数resultを戻り値として返すことを表しています。

 このように一連の処理をメソッドにしてまとめておくと、重複したコードを書かなくても済みますし、メソッドの名前を明確にしておくことで、コードが読みやすくなります。

 先ほどのFingerクラスの「getArea()」メソッドはlengthとsizeの積を戻り値として返しています。

既存のメソッドの例、Stringクラスの「indexOf()」メソッドとは?

 ちなみに、「indexOf」というのはStringクラスに用意されている、文字列を検索するためのメソッドで、文字列が見つかった場合文字列の先頭からの位置を戻り値とし、文字列が見つからなかった場合、-1を戻り値とします。

「オブジェクト」を生成してみなさいよ

 クラスを使ってオブジェクトを生成してみましょう。オブジェクトの生成にはnew演算子を使ったりするなど、以下の2つの方法があります。

オブジェクトの生成
var オブジェクト名:クラス名;
オブジェクト名 = new クラス名();

オブジェクトの生成例

 例えば、Fingerクラスのオブジェクトを生成する場合は、以下のようになります。

var yubi:Finger;
yubi = new Finger();

 また、下記のように略して記述することもできます。

var yubi:Finger = new Finger();

親指から小指までのすべての“指”のオブジェクトをソースコードで表すと……

 では、親指から小指のオブジェクトを生成する場合、どのようなソースコードになるか見てみましょう。

package {
import flash.display.*;
import flash.text.*;

public class Lesson4 extends Sprite {
    public function Lesson4(){
        var thumb:Finger = new Finger();          【1】
        thumb.length = 4;                         【2】
        thumb.size = 5;                           【3】
        thumb.hair = 3;                           【4】


        var index:Finger = new Finger();
        index.length = 6;
        index.size = 3;
        index.hair = 2;

        var middle:Finger = new Finger();
        middle.length = 8;
        middle.size = 4;
        middle.hair = 2;

        var ring:Finger = new Finger();
        ring.length = 7;
        ring.size = 3;
        ring.hair = 2;

        var little:Finger = new Finger();
        little.length = 4;
        little.size = 2;
        little.hair = 0;

        var textField:TextField = new TextField();
        addChild(textField);
        textField.text = little.getArea().toString();
    }
}
}

訂正のお知らせ

上記ソースコードについて、「index.hair = 2;」を「index.hair = 2」と表記するなど、間違いがあり、修正させていただきました。
内容について正確を期せずに混乱を招いた点、読者の皆様におわび申し上げます(2008年7月31日)。


 【1】の「var thumb:Finger = new Finger();」では、親指のオブジェクトを生成します。【3】の「thumb.length = 4;」では、親指の長さをオブジェクトのフィールドlengthにセットしています。【4】の「thumb.size = 5;」では、親指の太さをオブジェクトのフィールドsizeにセットしています。

図 指クラスを使って5本の指オブジェクトを生成したクラスのイメージ 図 指クラスを使って5本の指オブジェクトを生成したクラスのイメージ

 このように、オブジェクトを生成することで同じFingerクラスから5種類の指を作ることができました。

 実行し、「little」(小指)オブジェクトの「getArea()」メソッドを実行した結果、「8」が画面に表示されれば成功です。

クラスを「継承」するの?

 いかがでしたか? 今回はオブジェクト指向の片鱗が見えた感じですね。

 次回は、これまでの連載中で使ってきたLesson**クラスのソースコードに必ず出ていた「extends」というキーワードを使う、クラスの「継承」について説明したいと思います。お楽しみに!

プロフィール

吉村 美保(よしむら みほ)

クラスメソッド株式会社 情報システム部 プログラマー
ゲーム開発、インストラクターなどの経験を経て、クラスメソッド株式会社に入社。入社後はFlexやAIRによるRIA開発を行っている。



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。