がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

クラス、どうしたもんだべさ?

いわゆる「抽象データ型」的なOOPとしてのクラスとかって、皆さん、どんな風に書いてるんだべさ?
利点欠点込み込みで、話が聞けると嬉しいなぁ。


ってのを前提に、とりあえず「一端」書いたソース。

// 全体的に使おうと思う共通。…どっかfileに切り出してincludeだよねぇ
function object(o) {
  var F = function() {};
  F.prototype = new o;
  return new F();
}

// 基底クラス:プロパティ
//var base_obj = function() {
function base_obj() {
  this._x = 0;
  this._y = 1;
};
// 基底クラス:メソッド
base_obj.prototype = {
  get_x: function() { return this._x; },
  set_x: function(i) { this._x = i; },
  get_y: function() { return this._y; },
  set_y: function(i) { this._y = i; }
};
/*
var obj = new base_obj();
alert('x is ' + obj.get_x() );
alert('y is ' + obj.get_y() );
*/

// 敵クラス extends 基底クラス:プロパティ
//var enemy_obj = function() {
function enemy_obj() {
  this._name = 'enemy';
};
//enemy_obj.prototype = new base_obj();
enemy_obj.prototype = object(base_obj);

// 敵クラス extends 基底クラス:メソッド
enemy_obj.prototype.get_name = function() { return this._name; };
enemy_obj.prototype.set_name = function(s) { this._name = s; };

//var obj = new enemy_obj();
var obj = object(enemy_obj);
//alert(obj);
//alert(typeof obj);
alert('x is ' + obj.get_x() );
alert('y is ' + obj.get_y() );
alert('name is ' + obj.get_name() );

さらして、反応を興味津々で待ち受けてみるなど。
…継承で、いわゆる「parent::メソッド()」って、このパターンだとどやって実装するんだべさ?