【クラス・構造体メニュー】> 【静的メンバ】STEP: 3 クラスのメンバの更新 (paizaランク C 相当) [難易度: 1524 ±18]
※リンク先へ移動するためには[paiza]へのログインが必要です。
エンジニアであり、社員を管理を管理する立場にあるあなたの会社には、効率的に社員を管理するために、次のようなメンバ変数とメンバ関数を持つ社員クラス class employee
が存在しています。
メンバ変数整数 number, 文字列 name
メンバ関数
getnum(){
return number;
}
getname(){
return name;
}
しかし、この社員クラスについて、社員番号や名前が変わった際にいちいち手動で更新するのは面倒だと感じたあなたは、引数に元の社員番号と新しい社員番号を指定すれば、新しい社員番号に更新してくれる関数 change_num
と 引数に元の名前と新しい名前を指定すれば、新しい名前に更新してくれる関数 change_name
を作成することにしました。
入力で make number name
と入力された場合は変数にnumber, name
を持つ社員を作成し、getnum n
と入力された場合は n 番目に作成された社員の number を、getname n
と入力された場合は n 番目に作成された社員の name を出力してください。
また、 change_num n newnum
と入力された場合は、n 番目に作成された社員の number を、 newnum に変更し、 change_name n newname
と入力された場合は、n 番目に作成された社員の name を、 newname に変更してください。
解答例
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?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; } public function change_num($newnum) { $this->number = $newnum; } public function change_name($newname) { $this->name = $newname; } } $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; case "change_num" : $newnum = $s[2]; echo ($employee[$num-1]->change_num($newnum)); break; case "change_name" : $newname = $s[2]; echo ($employee[$num-1]->change_name($newname)); break; } } ?> |