/* File: Name.java
 * Author: Stanley Pieda
 * Date: 2014
 * Description: Sample solution to Exercise 3
 */
public class Name {
	private String first;
	private String middle;
	private String last;
	
	public Name(String first, String middle, String last){
		this.first = first;
		this.last = last;
		this.middle = middle;
	}
	
	public Name(String first, String last){
		this(first, "unknown", last);
	}
	
	public Name(String first){
		this(first, "unknown", "unknown");
	}
	
	public Name(){
		this("unknown", "unknown", "unknown");
	}
	
	public String getFirst(){
		return first;
	}
	
	public String getMiddle(){
		return middle;
	}
	
	public String getLast(){
		return last;
	}

	public String getFullName(){
		StringBuilder builder = new StringBuilder();
		builder.append(first).append(" ");
		builder.append(middle).append(" ");
		builder.append(last);
		return builder.toString();
	}
}
_________________________________________________________________

/* File: Person.java
 * Author: Stanley Pieda
 * Date: 2014
 * Description: Sample solution to Exercise 3
 */
public class Person {
	private Name name;
	private int age;
	
	public Person(String first, String middle, String last, int age){
		this.name = new Name(first, middle, last);
		this.age = age;
	}
	
	public Person(Name name, int age){
		this(name.getFirst(), name.getMiddle(), name.getLast(), age);
	}
	
	public String details(){
		StringBuilder builder = new StringBuilder();
		builder.append(name.getFullName()).append(" ");
		builder.append("age: ").append(age);
		return builder.toString();
	}
}
___________________________________________________________________________

/* File: PersonTester.java
 * Author: Stanley Pieda
 * Date: 2014
 * Description: Sample solution to Exercise 3
 */
public class PersonTester {
	public static void main(String[] args) {
		Person person1 = new Person("a1", "b1", "c1", 11);
		Person person2 = new Person(new Name("a2", "b2", "c2"), 22);
		Person person3 = new Person(new Name("a3", "c3"), 33);
		Person person4 = new Person(new Name("a4"), 44);
		Person person5 = new Person(new Name(), 55);
		System.out.println(person1.details());
		System.out.println(person2.details());
		System.out.println(person3.details());
		System.out.println(person4.details());
		System.out.println(person5.details());
	}
}