【クラス・構造体メニュー】> 【静的メンバ】STEP: 2 コンストラクタ (paizaランク C 相当) [難易度: 1445 ±17]
※リンク先へ移動するためには[paiza]へのログインが必要です。
エンジニアのあなたの会社には、既に次のような社員クラス class employee が存在しています。
メンバ変数整数 number, 文字列 name
メンバ関数
getnumber(){
return number;
}
getname(){
return name;
}
現状、この社員クラスの全てのメンバ変数・メンバ関数を設定するためには、インスタンス名.変数名
= 変数
といった具合に直接代入をしなくてはなりません。
それは面倒なので、コンストラクタという機能を用いて、インスタンスを作成する際に インスタンス名 = new クラス名(number,name)
とすることでメンバ変数を設定できるように書き換えましょう。
入力で make number name
と入力された場合は各変数に number , name を持つ社員を作成し、getnum n
と入力された場合は n 番目に作成された社員の number を、getname n
と入力された場合は n 番目に作成された社員の name を出力してください。
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php //Classを定義 class employee { //プロパティを定義 private $number; private $name; //インスタンス化するときに引数を受け取れるようにする public function __construct($number, $name) { $this->number = $number; $this->name = $name; } //数字を取得するメソッドを追加 public function getnum() { return $this->number; } public function getname() { return $this->name; } } $n = trim(fgets(STDIN)); for($i=0; $i<$n; $i++) { $s = explode(" ", trim(fgets(STDIN))); $commond = $s[0]; $num = $s[1]; switch($commond) { case "make" : $name = $s[2]; $employee[] = new employee($num, $name); break; case "getnum" : echo ($employee[$num-1]->getnum()). "\n"; break; case "getname" : echo ($employee[$num-1]->getname()). "\n"; break; } } ?> |