データ構造とアルゴリズム分析-第1章Javaクラス(02)


Personという名前のクラスを作成し、人の名前と年齢をそれぞれ表す2つのデータドメインを含む.このような方法には、いずれかのデータドメインを設定して取得する方法が含まれる必要があります.また、次のテストを行う方法も含まれています.
  • 2つのPersonオブジェクトが等しいか--同じ名前と年齢があるかどうか
  • 一人が他の人より年上か
  • 最後に、人の名前と年齢からなる文字列を返すtoStringメソッドも求めます.
    プログラムプレゼンテーションクラスの各メソッドを書く
    コード実装
    package com.crazycoder2010.datastructure.ch01;
    
    public class Person {
    	private String name;
    	private int age;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	@Override
    	public boolean equals(Object obj) {
    		if(obj == null || !(obj instanceof Person)){
    			return false;
    		}
    		Person that = (Person)obj;
    		boolean isAgeEquals = this.age == that.age;
    		if(!isAgeEquals){
    			return false;
    		}
    		if(this.name == null){
    			if(that.name == null){
    				return true;
    			}else{
    				return false;
    			}
    		}else{
    			return this.name.equals(that.name);
    		}
    	}
    	
    	public boolean isOlderThan(Person person){
    		return this.age > person.getAge();
    	}
    	@Override
    	public String toString() {
    		return "name:"+this.name+",age:"+this.age;
    	}
    }
    
    テストコード
    package com.crazycoder2010.datastructure.ch01;
    
    public class PersonTest {
    	public static void main(String[] args) {
    		Person person = new Person();
    		person.setName("Kevin");
    		person.setAge(20);
    		System.out.println(person);
    		Person person2 = new Person();
    		person2.setName("Kevin");
    		person2.setAge(20);
    		System.out.println(person.equals(person2));//true
    		System.out.println(person.equals(new Person()));//false
    		System.out.println(person.equals(null));//false
    		Person person3 = new Person();
    		person3.setName("Kevin");
    		System.out.println(person.equals(person3));//false
    		person3.setAge(28);
    		System.out.println(person.isOlderThan(person3));//false
    	}
    }
    
    実行出力結果
    name:Kevin,age:20
    true
    false
    false
    false
    false