復習。というわけでオブジェクト指向の続編
id:hiko_s のところで学習中のオブジェクト指向。ちょうど良いので自分も復習しておく。
なんか「userTale」になっているというのはややスルーして。
containsKeyというメソッドをHashTableに対して使いたいらしいのだが、containsKeyはJavaでいうところのMap、.NETではHashTableなのかもしれないけど、その要素が複数以上ある場合にのみ意味を持つ。
ということは「あるキーが存在するか」を調べるのは「複数のユーザのクラス」に対してであり、さしずめUsersListといったようなクラスを作ってしまった方がいいかもしれない。
そして
User user1 = new User(); user.name = "なまえ1"; user.age = 10; User user2 = new User(); user.name = "なまえ2"; user.age = 20; UserList.add(user1); UserList.add(user2);
的な。
ほいでUserListクラスの中だが(文法はもはや何の言語かわけわかw)
class UserList { private Hashtable h = new Hashtable(); public void add(User u){ // 本当は既にそのキーの値を持つデータがないことを保証する h[u.name] = u; } public boolean containsKey(String key) { return h.containsKey(key); } public User getUserByKey(String key) { return h[key]; } }
な感じになるんじゃないでしょうか。
この場合、名前が「なまえ1」のユーザの年齢を取得するには
UserList ulist; ulist = getAllUser(); // なんかわかんないけどユーザ全体をインスタンスに取る関数があるものとする if(ulist.containsKey("なまえ1")) { // User u = ulist.getUserByKey("なまえ1"); // Integer age = u.getAge(); Console.writeln( ulist.getUserByKey("なまえ1").getAge()); }
みたいになる。