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

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

[吉村美保,クラスメソッド株式会社]

編集部注:この連載をより深く理解するためには、記事「いまさら聞けない! FlashとActionScriptについても併せてご覧ください。

 前回の記事「日常生活から理解するActionScriptの制御文」までに、ActionScript(以下、AS) 3の変数制御文など、プログラムの基礎となる部分の説明をしてきました。

 今回は、オブジェクト指向においてとても重要な、「クラス」の概念について説明します。

「クラス」って何なのよ?

 「クラス」とは、特定のデータや処理をひとまとめにしたものです。英語では「class」と書き、「分類」「種類」「仲間」といった同種の集まりの意味がありますが、オブジェクト指向では「ひな型」「設計図」と略す方がとシックリくると思います。クラスの構文は以下のようになります。

クラスの構文
アクセス修飾子 class クラス名 {
    フィールド
    コンストラクタ
    メソッド
}

 クラスから作られたものを「オブジェクト」(もの)といい、オブジェクト指向では、クラスやオブジェクトを組み合わせてプログラムを作ります。前回までのコードを見直してみてください。そこでもクラスを作っていますね。オブジェクト指向では、どんなに小さなプログラムでもクラスが必要になります。

編集部注オブジェクト指向について詳しく知りたい読者は、「連載「ここから始めるオブジェクト指向」」をご覧ください。

 では、クラスを理解するうえで重要なキーワードを順に解説していきしょう。

クラス内の変数「フィールド」

 「フィールド」とは、クラス内の変数を意味します。変数の意味や書き方などについては、連載第2回の「ActionScriptの変数や型、配列、演算子を理解する」をご覧ください。

参照範囲を制御する「アクセス修飾子」

 「アクセス修飾子」はフィールドやクラスなどが、どの範囲から参照可能かを制御するのに用いられます。いくつか種類がありますが、その中でよく使われるアクセス修飾子をご紹介します。

表 アクセス修飾子の種類
アクセス修飾子 意味
internal(デフォルト) 同じパッケージ内からしか呼び出せない
private 同じクラス内からしか呼び出せない
protected 同じクラスか、そのサブクラスからしか呼び出せない
public どこからでも呼び出せる

おわびと訂正のお知らせ

上記「表 アクセス修飾子の種類」に関しまして、一部内容に間違いがございましたので、訂正と追加をしております。ご指摘をいただきました読者さま、大変ありがとうございます。そして、内容に関しまして読者の皆さまにご迷惑をおかけしましたことをおわびいたします。
内容に関しましては、これからも細心の注意と確認を行って記事を作成していきますが、今回のような間違いがございましたらご連絡をいただけますよう、今後ともよろしくお願い申し上げます(2008年4月10日、@IT編集部)。


一連の処理のまとまり「メソッド」

 「メソッド」は一連の処理がまとめられた部品のようなものです。メソッドの構文は以下のようになります。

メソッドの構文
アクセス修飾子 function メソッド名(引数名:型,引数名:型,…):戻り値の型 {
    処理;
    return 変数 ;
}

 メソッドの具体的な書き方は後ほど説明します。

オブジェクト生成時に活躍する特殊メソッド「コンストラクタ」

 「コンストラクタ」はオブジェクトを生成したときに自動的に呼ばれる、特別なメソッドです。大抵はクラス名と同じ名前になります。コンストラクタの書き方も後述します。

「クラス」ってどう書けばいいのよ?

 以上を踏まえて、クラスを作るために例を考えてみましょう。

あなたの“指”を「クラス」で表現してみよう

 オブジェクト指向では、「もの」がクラスになります。ここでは視界に入るもので一番身近な物として、「指」をクラスに例えて考えます。皆さんも自分の指を見ながら一緒に考えてみてください。

 指には親指から小指まであり、それぞれ長さや太さ、毛の量が違います。そして共通する動作として、「曲げる」「伸ばす」などが考えられます。ここではこれらをひとまとめに「Fingerクラス」とします。Fingerクラスのフィールドには「指の長さ」「指の太さ」「毛の量」を定義、メソッドには「曲げる」「伸ばす」などの動作を定義しましょう。

指「クラス」をソースコードで表すと……

 Fingerクラスをソースコードで書くと、以下のようになります。

package
{
public class Finger
{
    public var length:int;           【フィールド】
    public var size:int;             【フィールド】
    public var hair:int;             【フィールド】

    public function Finger() {       【コンストラクタ】
    }

    public function bend():void {    【メソッド】
    }
    public function stretch():void { 【メソッド】
    }
    public function getArea():int {  【メソッド】
        return length * size;
    }
}
}

おわびと訂正のお知らせ

上記ソースコードについて、「public var hair:int;」を「public var hair:int:」と表記するなど、間違いがあり、修正させていただきました。
内容について正確を期せずに混乱を招いた点、読者の皆様におわび申し上げます(2008年7月31日)。
また、上記Finger.asのコンパイルエラーが修正されないと、次ページのLesson4.asも正常にコンパイルされませんので、ご注意ください。


 次ページでは、引き続きメソッドの書き方やオブジェクトの生成について解説します。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

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

メールマガジン登録

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