package oving4;

import java.util.ArrayList;

public class Person {
	private String name;
	private char gender;
	private Person mother;
	private Person father;
	private ArrayList<Person> children;

	Person() {
	}

	String getName() {
		return name;
	}

	char getGender() {
		return gender;
	}

	Person getMother() {
		return mother;
	}

	Person getFather() {
		return father;
	}

	int getChildCount() {
		return children.size();
	}

	Person getChild(int n) {
		if (n < 0 || n >= children.size()) {
			throw new IllegalArgumentException("invalid index");
		}
		return children.get(n);
	}

	void addChild(Person p) {
		if (isMale()) {
			p.father = this;
		} else {
			p.mother = this;
		}
		children.add(p);
	}

	void removeChild(Person p) {
	    for (int i = 0; i < children.size(); i++) {
		if (p.name == children.get(i).name) {
		    children.remove(i);
		    return;
		}
	    }
	    if (p.isMale() && this.father == p) {
		this.father = null;
		return;
	    }
	    if (p.isFemale() && this.mother == p) {
		this.mother = null;
		return;
	    }
	}

	void setMother(Person p) {
		mother = p;
	}

	void setFather(Person p) {
		father = p;
	}

	boolean isMale() {
		if (gender == 'M') {
			return true;
		}
		if (gender == 'F') {
			return false;
		}
		throw new IllegalArgumentException("Illegal gender");
	}

	boolean isFemale() {
		return !isMale();
	}
}
