1. クラス (オブジェクト設計図)
たい焼きの型を作って、同じ構造のデータをポンポン作ってみましょう!
大規模なプログラムを作る時は、似たようなデータや機能を一つにまとめておくととても便利ですね。これをオブジェクト指向プログラミングと呼びます。 Kanadeではこれをどのように実装するのか、一つずつ丁寧に見ていきましょう!
クラスは一種のたい焼きの型(設計図)ですね。この型を一つしっかり作っておけば、たくさんのたい焼き(オブジェクト)を簡単に作り出せるんですよ!
【クラス】を 設計しよう: キーワードで設計図を作り、最初に作られる時で基本設定(コンストラクタ)を決めます。
【自動車】を設計しよう:
『色』を【文字列】の「白」にしよう
『速度』を【数字】の0にしよう
最初に作られる時(【文字列】の『初期色』)次のようにしよう:
『私』の『色』を『初期色』にしよう
〈走る〉を作ろう(【数字】の『増加量』):
『私』の『速度』に『増加量』を足そう
枠「ブルンブルン!現在の速度は{『私』の『速度』}です。」を出力しよう
『マイカー』を【自動車】の新しい【自動車】(「青」)にしよう
枠「マイカーの色:{『マイカー』の『色』}」を出力しよう
『マイカー』の〈走る〉(50)を実行しよう
ここで『私』(this)はオブジェクト自身を指す特別な言葉ですね。自分の中の変数や関数を使う時は必ず『私』のを付けてください!オブジェクトを新しく作る時は新しい 【クラス】()キーワードを必ず使いましょう。
静的メンバー (Static Members)
クラス一つにつき一つだけ存在して、すべてのオブジェクトが共有する情報や機能が必要な時がありますね?
そんな時は『私』の代わりに『私たち』の 『属性』または『私たち』の 〈メソッド〉を使いましょう!
【自動車】を設計しよう:
『私たち』の『総生産量』を【数字】の0にしよう
最初に作られる時()次のようにしよう:
『私たち』の『総生産量』に1を足そう
【自動車】を返す『私たち』の〈工場〉を作ろう():
新しい【自動車】()を返そう
『最初の車』を【自動車】の新しい【自動車】()にしよう
『二番目の車』を【自動車】の【自動車】の〈工場〉()にしよう
枠「これまでに作られた自動車の数:{『自動車』の『総生産量』}」を出力しよう
演算子のオーバーロード (Operator Overloading)
オブジェクト同士で足し算をしたり、同じかどうか比較(==)したい時はマジックメソッドを使いましょう!
例えば二つの座標の位置が同じか確認したいなら、〈記号 同じだ〉メソッドを作ればいいんですよ。
【座標】を設計しよう:
『x』を【数字】の0にしよう
『y』を【数字】の0にしよう
最初に作られる時(【数字】の『初期x』,【数字】の『初期y』)次のようにしよう:
『私』の『x』を『初期x』にしよう
『私』の『y』を『初期y』にしよう
【論理】を返す〈記号 同じだ〉を作ろう(【座標】の『対象』):
もし(『私』の『x』と『対象』の『x』が違う)なら:
偽を返そう
もし(『私』の『y』と『対象』の『y』が違う)なら:
偽を返そう
真を返そう
『点1』を【座標】の新しい【座標】(10,20)にしよう
『点2』を【座標】の新しい【座標】(10,20)にしよう
もし(『点1』と『点2』が同じだ)なら:
「二つの座標の位置が同じです!」を出力しよう
動的リフレクション (Dynamic Reflection)
プログラムの実行中に文字列や変数を使って動的にメソッドを呼び出したいなら、〈『変数名』〉()構文を使いましょう。
【注文】を設計しよう:
〈キャンセルする〉を作ろう():
「注文がキャンセルされました。」を出力しよう
『注文書』を【注文】の新しい【注文】()にしよう
『行動名』を【文字列】の「キャンセルする」にしよう
(参考:括弧の中に変数を入れるとランタイムにメソッドを探して実行します)
『注文書』の〈『行動名』〉()を実行しよう