Essential ActionScript 3.0 読書メモ 第11回 式

ActionScriptのプログラムの中で書かれた値の形式は、式(expression)と呼ばれる。例えば、以下のコードは、新しいオブジェクトを作成するnew式である。

new Date()

同様に、以下の式は2.5という値のNumberオブジェクトを表すリテラル式である。

2.5

個別の式は、演算子(operator)によって組み合わせることができる。組み合わさった式の値は、プログラムが実行される時に求められる。演算子は、ActionScriptの組み込みコマンドで、値を組み合わせたり、操作したり、変化させたりする。それぞれの演算子は+のような記号や、instanceofのようなキーワードによって書くことができる。

例えば、乗算演算子は2つの数値を掛け合わせる。乗算を示す記号は、*(アスタリスク)である。

4 * 2.5

という式は、4という式と2.5という式を*という演算子で連結している。この複合式の値は、プログラムの実行時に評価(evaluate)され、この複合式の全体が10という値に置き換わる。

もう一つ例:

speed * time …式A

この複合式で、変数speedと変数timeの値は実行時に与えられるとする。仮に、speed = 5, time = 2という値が与えられたとすると、speedとtimeはそれぞれ、与えられた値に置き換えられる。この結果、式Aは

5 * 2

と置き換えられる。さらに、5 * 2が評価され、10に置き換わる。式Aにspeed = 5, time = 2を与えてプログラムを実行した結果は、

10

という値になる。

今日の進捗:233→240/4343

Essential ActionScript 3.0 読書メモ 第10回 コンストラクターパラメーターと引数

コンストラクターパラメーター(constructor parameter)とは、コンストラクターメソッドの定義の一部として創られる特別なローカル変数である。通常のローカル変数とは異なり、コンストラクターパラメーターの初期値は、新しいオブジェクトをインスタンス化する際に外部から与えることができる。

コンストラクターパラメーターを定義するには、コンストラクター関数定義の括弧の中に名前と値を書く。
例:

class SomeClass {
  function SomeClass (identifier = value ) { // identifierが名前、valueが初期値
  }
}

複数のパラメーターを設定したい時は、次のように書く(パラメーターの設定時の改行は文法的にも問題なく、よく行われている書き方でもある)。

class SomeClass {
  function SomeClass (identifier1 = value1,
                                    identifier2 = value2,
                                    identifier3 = value3) {
  }
}

デフォルトでは、コンストラクターパラメーターの値はコンストラクター関数の定義の際に与えられたものである。しかし、オブジェクトのインスタンス化の際に代わりの値を与えてやれば、その値が代入される。
例:

new SomeClass(value1, value2, value3)

このコードでは、value1からvalue3が、前から順にidentifier1から3に代入される。オブジェクトをインスタンス化する際にコンストラクターパラメーターに対して与えられる値を、コンストラクター引数(constructor argument)と呼ぶ。

コンストラクターパラメーターの定義が変数の初期化を含んでいない場合、初期化されていないパラメーターの初期値は、必ずコンストラクター引数として与えなければならない。
例:

class SomeClass {
  function SomeClass (requiredParameter) {
  }
}

このクラスをインスタンス化する際には、必ずrequiredParameterの初期値をコンストラクター引数として渡してやる必要がある。
例:

new SomeClass(value)

requiredParameterの初期値を与えなかった場合、コンパイルエラー又は実行時エラーが発生する。

今日の進捗:220→233/4343

若手IT勉強会#32に参加してきた

若手IT勉強会 http://www.wakateit.org/

若手IT勉強会とは、嶋田大輔(@cimadai)氏が中心となって活動している勉強会のことです。今回で第32回でした。「JavaScriptテクニックバイブル読書会」の第2回ということで、若手IT勉強会が元となって企画が立ち上がった書籍『JacaScriptテクニックバイブル』を読んでいこう、という内容でした。

JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技
JavaScriptテクニックバイブル ~効率的な開発に役立つ150の技

著者自らの注釈を聞きながら学べるという大変贅沢な(会|回)でした。なお、『JavaScriptテクニックバイブル』は初級者~中級者向けの本で、完全な初心者が読むとほとんどわからないと思います。

JavaScriptに関しては、私はjQueryでお手軽に書く程度だったうえ、最近は全く触れていませんでした。参加申し込みを済ませてから『Head First JavaScript』を引っ張りだしてきて、突貫工事で要所を読み終え、JavaScriptのオブジェクト指向について付け焼刃の知識を身につけて参加した、って感じです。

今回はJavaScript初心者が多かったのでゆっくりした進行でしたが、時折Javaをはじめとした他の言語との比較が混じると、ついていけない部分も結構ありました(Javaって、プログラマーの世界ではCと並んで、共通語に近い存在みたいですね。私はCもJavaも経験ありませんが。。。)。

今回の勉強会で学んだことは色々あったんですが、明日からすぐに使えそうなネタは「WebStormいいよ!」ってやつですね。WebStormは有償のIDEです。本書で紹介されている様々なテストツールが、GUIから統合的なインターフェースで利用できるのが便利なところ。

私はPHPerなので、PhpStormをダウンロードしてみました。PhpStormには、WebStormの機能が全て含まれています。その分、WebStormより高い。

懸念点はライセンス

a) Licensee may:

(i) install and use the version of Software specified in
License Certificate on multiple computers and operating systems,
provided that Licensee is the only user of Software and that Software is
not used on more than one machine and (or) operating system at a time,
and

(ii) make one back-up copy of Software solely for archival purposes.

(b) Licensee may not:

(snip)

(iii) use the License Key on different computers or operating systems at a time.

「インストールは複数可能だが、アクティベートは1台まで」って仕様っぽいですねえ。私は仕事用とプライベート(勉強)用のPCは分けてるので、この仕様だと毎日アクティベートしないといけなくて大変そう。

次回は通信系とタイマー系かな? WebSocketとかもやるようなので、しっかり予習して、都合がつけばまた参加したいです。

Essential ActionScript 3.0 読書メモ 第9回 インスタンス変数のアクセスコントロール

インスタンス変数のアクセスコントロール修飾子は、プログラムの中でその変数へのアクセスの可否を制御する。インスタンス変数で利用可能なアクセスコントロール修飾子は、public, internal, protected, privateの4つである。

publicとinternalはクラス定義の際と同様の効果がある。publicはパッケージの中からでも外からでもアクセス可能。internalは、そのインスタンス変数を定義したのと同一パッケージ内からのみアクセス可能。アクセスコントロール修飾子をつけずにインスタンス変数を定義した場合、その変数はinternalとなる。

protected修飾子をつけて宣言されたインスタンス変数は、その変数を定義したクラスと、そのクラスの子孫にあたるクラスからのみアクセス可能。

private修飾子をつけて宣言されたインスタンス変数は、その変数を定義したクラスの内部でのみアクセス可能。

privateで変数を定義することで、それぞれのインスタンスの情報を安全に格納し、コードの依存関係を弱めたり、おかしな値を代入してしまう事故を防ぐことができる。

一般に、全てのインスタンス変数にアクセスコントロール修飾子をはっきりと指定しておくことは、良いやり方である。

必要もないのにpublicでインスタンス変数を定義すべきではない。どのアクセスコントロール修飾子をつければよいのか迷ったら、最も制限の厳しいprivateを使うのがいい。後から制限を緩めるのは簡単だからである。

一方、仮にインスタンス変数をpublicで作っていたとして、その変数に外部のコードが依存していたら、その変数をprivateに書き換えるのは骨が折れる。

今日の進捗:210→220/4343

Essential ActionScript 3.0 読書メモ 第8回 インスタンス変数

クラスはオブジェクトの特性(charactaristics)と振る舞い(behavior)を決定するひな形である。オブジェクト指向プログラミングにおいて、「特性」とは、オブジェクトの特定の側面(色、幅、透明度等)を表現する情報のことである。オブジェクトの特性を追いかけるために、インスタンス変数が用いられる。

(注:上で言う「特性」「インスタンス変数」とは、一般的なオブジェクト指向プログラミングの用語でいうところの「プロパティ」のこと)

インスタンス変数(instance variable)とは、オブジェクトにくっついている変数のことである。多くの場合、それぞれのインスタンス変数が、オブジェクトの特性に1つずつ対応している。例えば、widthという名前のインスタンス変数は、そのオブジェクトの幅を表していると考えられる。

インスタンス変数は、クラスの直下に記述する(この点、メソッド又は関数内に記述するローカル変数と異なる)。
例:

class SomeClass {
  var identifier = value; // インスタンス変数
  function SomeClass () {
    var identifier = value; // ローカル変数
  }
}

インスタンス変数は、クラスのインスタンス化と同時にそのクラスとセットになって設定される。クラス内で初期化しておけばその値が初期値になるが、初期化を省くことも多い。

インスタンス化の後に、インスタンス変数に値を代入する際は、以下のように書く。

object.instanceVariable = value;

例えば、Blogオブジェクトのtitleというインスタンス変数に題名を代入する際は、

Blog.title = “subject”;

と書く。

今日の進捗:200→210/4343