Flashの基礎を無料で習得! ActionScript入門
連載一覧へ
Flashの基礎を無料で習得! ActionScript入門(4)
ActionScriptで学ぶクラスやオブジェクト指向の基礎

クラスメソッド株式会社
吉村 美保
2008/4/9


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

- PR -

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

 メソッドには、戻り値があるものとないものがあります。戻り値のないものは、メソッド内で処理が完結しているもので、戻り値の型には「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」というキーワードを使う、クラスの「継承」について説明したいと思います。お楽しみに!

@IT関連記事


いまさら聞けないFlex、そして、いまこそ入門のとき!?
Flex 3正式版リリース! Flexの過去・現在・未来
 
先日ついに正式リリースされたFlashベースのRIA技術Flex 3。いまが入門に最適なFlexの過去・現在・未来を一挙に解説
リッチクライアント & 帳票」フ ォーラム 2008/3/31
Flex Builder 3でサクっとActionScriptコーディング!
作って学ぶAIRウィジェットの基礎→応用(3) 今回はAIRウィジェットの処理やロジックをActionScriptでコーディングします。Flex Builder 3を使うと便利な機能が満載です
リッチクライアント & 帳票」フ ォーラム 2008/3/24
Javaのクラスとインスタンスを理解する
Eclipseではじめるプログラミング(7) オブジェクト指向言語にとってクラスは胆となるる部分です。今回は、簡単なクラスを作成しながらクラスを理解していきます
Java Solution」フォーラム 2005/3/19
Javaのメソッドを理解する
Eclipseではじめるプログラミング(8) Javaでは「クラスの振る舞い」はメソッドとして表現されます。今回は「クラスの振る舞い」と「Javaのメソッド」について解説します
Java Solution」フォーラム 2005/4/23
“たい焼き”であま〜く理解するJava文法と言語仕様
携帯アプリを作って学ぶJava文法の基礎(3) 
初心者がJava言語を学ぶうえで最も困難なものの1つ、クラスやインスタンス、メソッドなどの概念をたい焼きで理解しましょう
Java Solution」フォーラム 2008/3/12
クラスを簡単に理解しよう
[連載]いまから始めるJava(3)
 クラスはJavaの学習で最初に難しいと感じるテーマ。ところが変数の使い方の観点から見ていくと、いとも簡単に理解できてしまいます
Java Solution」フォーラム 2003/1/30
クラスの継承の本質を知る
[連載]いま
から始めるJava(4) クラスの継承を抽象的に理解しようとすると難しくなってしまいます。メモリの拡張として理解すれば実に簡単であることが分かります
Java Solution」フォーラム 2003/3/8
メソッドとコンストラクタはなぜ必要?
[連載]いまから始めるJava(5)
 メソッドとコンストラクタによってプログラムを効率的に書けることを確認するとともに、プログラムには制御文が必要であることも理解します

Java Solution」フォーラム 2003/5/8


さらに関連記事へ

プロフィール:吉村 美保(よしむら みほ)
クラスメソッド株式会社 情報システム部 プログラマー
ゲーム開発、インストラクターなどの経験を経て、クラスメソッド株式会社に入社。入社後はFlexやAIRによるRIA開発を行っている。

1-2

 INDEX
Flashの基礎を無料で習得! ActionScript入門(4)
ActionScriptで学ぶクラスやオブジェクト指向の基礎
  Page1
「クラス」って何なのよ?
「クラス」ってどう書けばいいのよ?
Page2
「メソッド」はどうやって書くのよ?
「オブジェクト」を生成してみなさいよ
クラスを「継承」するの?



リッチクライアント&帳票 全記事一覧へ

TechTargetジャパン

リッチクライアント & 帳票 フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH