ジーノ先生の 
文系的オブジェクト指向 
(2) コンストラクタの引数 
option
自己紹介 
• オブジェクト指向はむしろ文系向けと考える職業プログラマ 
• 受託系IT企業、ゲーム開発会社などで働く 
• 主な使用言語 
• Java / C/C++ / C# / VB 
• html / css / javascript / php / mysql 
• 趣味でゲームアプリを作ったりもするので、絵も描く 
• ジーノ先生はLine のスタンプ 
http://line.me/S/sticker/1015414
JavaScript のライブラリでよく見るパターン 
• コンストラクタの引数が1つだけ 
分かってる人から見ると何でもないですが、なぜそういう実装になっているのでしょう? 
優れた実装が「なぜそのような実装になっているか」を理解することで自分のプログラムの 
設計にも応用できるかもしれません。 
デザインパターンを勉強しろと言われるのはこういう理由からなのですが、身近な例の方が 
学びやすいと思います。 
例) 
http://docs.dev7studios.com/jquery-plugins/caroufredsel 
// Using custom configuration 
$('#carousel').carouFredSel({ 
items : 2, 
direction : "up", 
scroll : { 
items : 1, 
easing : "elastic", 
duration : 1000, 
pauseOnHover : true 
} 
});
実際に設計してみましょう 
• 前回はプロパティに名前のみを持つクラスを作成 
class Sheep { 
String mName; // 名前 
// コンストラクタ。オブジェクト生成時に呼び出される 
public Sheep(String name) { 
mName = name; 
} 
} 
• 今回は、身長と体重も定義できるようにしてみましょう
まずはそのまま 
• 身長・体重の定義を追加しました 
class Sheep { 
String mName; // 名前 
float mHeight; // 身長 
float mWeight: // 体重 
// コンストラクタ。オブジェクト生成時に呼び出される 
public Sheep(String name, float height, float weight) { 
mName = name; 
mHeight = height; 
mWeight = weight; 
} 
}
何かを追加する毎に、 
コンストラクタと、オブジェクト生成している箇所を全修正が発生!?
めんどうだけど一手間かけます 
• Option を追加 
• 人に物を頼む時はだらだら頼まず、まとめたメモを渡しますよね? 
class Sheep { 
public static class Option { 
public String mName; // 名前 
public float mHeight; // 身長 
public float mWeight: // 体重 
}; 
String mName; // 名前 
float mHeight; // 身長 
float mWeight: // 体重 
// 初期属性はOption で定義。 
public Sheep(Sheep.Option option) { 
mName = option.mName; 
mHeight = optoin.mHeight; 
mWeight = option.mWeight; 
} 
}
ではジーノ先生を作りましょう 
Sheep.Option option = new Sheep.Option(); 
option.mName = ”ジーノ”; 
option.mWeight = 60.0f; 
optoin.mHeight = 60.0f; 
Sheep jino = new Sheep(option); 
• あれ?JavaScript 版の無駄のない便利さから遠のいてる・・・ 
• 実装方法は更なる検討が必要そうです。 
• HashMapを使うのが近そうですが、Java的には・・・? 
• 今回の講座では各言語の立ち入った文法は扱わないのでここまでです。
まとめ 
• よいものに感動しましょう。 
• 大事なのは無感動にコピペしようとしないこと。 
• きちんと理解して自分の設計に応用しましょう。

ジーノ先生の文系的オブジェクト指向(2) - コンストラクタの引数