「スーパークラス」を含む日記 RSS

はてなキーワード: スーパークラスとは

2020-03-11

anond:20200311070137

オブジェクト指向の本。質の悪いブログだと「動物スーパークラスで犬がクラス・・」系の解説なっちゃうよ。ていうかOOPじゃないコードOOPコードに書き直す教則本的なの、ない?

2018-04-27

anond:20180427110520

別にコンテンツ配信」という共通点があることは否定してないよ

しかしながら、Vtuberという概念Youtuberから派生し、比較されるものであるからして、

スーパークラスYoutuberがもともと持っている「コンテンツ配信」という性質は、Vtuber本質たり得ない

2016-10-21

http://anond.hatelabo.jp/20161021100049

性癖性的嗜好スーパークラスから、足フェチ性癖と称してもなんの誤用でもないぞ。

アップキャスト普通は暗黙に行うことができるんだ。

2012-04-27

情報処理技術者試験

現場で役にたたない情報処理技術者試験

先日、DBを受けてきた。もちろん、無勉。

午後2の途中にスーパークラスサブクラス意味が解った。

これが午後1で解っていれば...

何かの間違いで受かってないかなー。

2008-07-04

javascript継承

javascriptスーパークラスのメソッドを簡単に呼び出したかった。それだけだった。

思いのほか長くなった。車輪を再発明した気がする。

var Class = inherit(SuperClass, {hoge: ...});

のように使い、スーパークラス継承したクラスを作る。

作ったクラスprototypeに、第二引数オブジェクトコピーされたスーパークラスインスタンスを持つ。

第一引数がnullだと、スーパークラスObjectを用いる。つまり、

var Class = inherit(null, {hoge: ...});

var Class = inherit(Object, {hoge: ...});

と同等となる。

また、第一引数が"prototype"をメンバに持たない普通オブジェクト、つまり、

var Class = inherit({hoge: ...});

だと

var Class = inherit(Object, {hoge: ...});

と同等となる。

var obj = new Class({hoge: ...});

インスタンスを作ると、引数オブジェクトコピーを持つオブジェクトとなる。

また、メソッド"initialize"が自動的に実行される。

ただし、コンストラクタ引数を渡さなかった場合は、initializeは実行されない。

オーバーイドしたメソッド内では

this.superapply(arguments);

としてスーパークラスのメソッドを呼べる。第一引数は呼び出すメソッドの引数配列とする。

このとき、呼び出し側のメソッドはコンストラクタやinheritでオーバーイドしたメソッドでなくてはならない。これは呼び出し側のメソッド名を記録する必要があるためである。

そうでない場合は第二引数にメソッド名を渡す必要がある。

var obj = new Class({});
obj.foo = function(){
        this.superapply(arguments);         // X
        this.superapply(arguments, "foo");  // O
};

<html><head>
<script type="text/javascript">
function inherit(superclass, override) {
	if (!superclass)
		superclass = Object;
	if (! "prototype" in superclass) {
		override = superclass;
		superclass = Object;
	}
	var that;
	var func;
	function superapply(arg, name) {
		var prev = {that: that, func: func};
		try {
			var my = this.superapply;
			if (!arg)
				arg = [];
			if (!name)
				name = arguments.callee.caller.caller.methodName;
			if (that &amp;&amp; func &amp;&amp; (!name || name == func.methodName)) {
				that = that.superapply.obj;
				name = func.methodName;
			} else if (name) {
				that = my.obj;
				func = arguments.callee.caller.caller;
				func.methodName = name;
			} else {
				throw new Error("methodName is null");
			}
			var result;
			if (func === that[name]) {
				result = this.superapply(arg, name);
			} else {
				func = that[name];
				func.methodName = name;
				result = func.apply(this, arg);
			}
		} finally {
			that = prev.that;
			func = prev.func;
		}
		return result;
	};
	var prototype = new superclass();
	prototype.superapply = function(){superapply.apply(this, arguments)};
	prototype.superapply.obj = superclass.prototype;
	if (override)
		for (var i in override) {
			prototype[i] = override[i];
			if (typeof override[i] == "function")
				prototype[i].methodName = i;
		}
	var subclass = function(obj) {
		this.superapply = function(){superapply.apply(this, arguments)};
		this.superapply.obj = prototype;
		if (obj) {
			for (var i in obj) {
				this[i] = obj[i];
				if (typeof obj[i] == "function")
					this[i].methodName = i;
			}
			this.initialize();
		}
	};
	subclass.prototype = prototype;
	subclass.prototype.constructor = subclass;
	return subclass;
}
var C1 = inherit(Object, {
fn: "C1",
initialize:
	function(){
		alert("C1.initialize");
		this.second(this.fn);
	},
second:
	function(a){
		alert("C1.second: "+a);
	}
});
var C2 = inherit(C1, {
fn: "C2",
initialize:
	function(){
		alert("C2.initialize");
		this.superapply();
//	},
//second:
//	function(a){
//		alert("C2.second: "+a);
//		this.superapply([a]);
	}
});
var C3 = new C2({
fn: "C3",
//initialize:
//	function(){
//		alert("C3.initialize");
//		this.superapply();
//	},
second:
	function(a){
		alert("C3.second: "+a);
		this.superapply([a]);
	}
});
</script>
</head><body>
</body><html>

methodNameなんとかならんもんか。

2008-07-02

javascript継承方法の決め手

やっぱりprototype.jsClass.create?

使った事無いけどスーパークラスのメソッド呼び出しできるんだっけ?

http://iandeth.dyndns.org/mt/ian/archives/000664.html

とか参考に自分で書いたら段々でかくなって、4行が今57行w

でもまだバグあり機能不足。絶対車輪の再発明してる。

やっぱ言語サポートないと辛いわ。こんなに大変だと思わなかった。

って事で「javascript継承方法の決め手」なーい?と聞いてみる。

欲しいのは、多重継承が可能で、オーバーイドした子クラスのメソッドから、簡単にオーバーイドされてる親クラスのメソッド呼びたい。ただし、thisは子クラスオブジェクトのままで、しかも何段でもチェーンをたどれるように。

それとも、あきらめて、クラス名付きで直接親メソッド呼んだ方が良いのかな。やっぱり。

ま。とりあえずシュミグラマだから趣味に走ってみるけれども。

2007-08-21

http://anond.hatelabo.jp/20070821025318

趣味グラマーのおいらに言わせりゃ、オブジェクト指向だなんだとかっこいい言葉を使っちゃいるけど、現状の実態は構造化のなれの果てのような気がする。

というかなんか酷い。こんな現状ならオブジェクト指向なんかない方がいい。

結局使われ方だってメンバっつうか、メソッドレベルクラス化だし、

なんていうのかな・・・

たとえるのなら、

windowsフォルダの階層を無駄に山のようにつくって、迷路のようにした挙句、

プロはこんな風にあらかじめ決まったフォルダ構造を導入すると何がどこにあるかわかるんだ!

とかいっちゃいながら、結局なにをどこにしまったかわらなくなって、案内用のドキュメントをつくったりしてる、

そんな滑稽な姿がおもいうかぶんだ。

いや、100人月いくぐらいのサイズのものだったらわかるよ?

そうやった方が効率的だし、再利用効くよね。

でも、ファイル数個格納するのにこのフォルダ数は意味ないだろ?的な、

そんなレベルオブジェクト化が多いような気がするんだ。

大変だ!このままじゃ利用しにくいからデスクトップショートカットつくろう!

これがスーパークラスだー!

とか、なんつうか本末転倒。

オブジェクト指向もほどほどにねー。

 
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん