/*   
 * Copyright (c) 1997-1999 Departamento de Informática - UFPE
 */

/**
 * Esta classe modela uma pessoa, com dados sobre seu nome, ano de
 * nascimento e estado civil.
 */
class Pessoa {

    /**
     * O ano em que a pessoa nasceu.
     */
    private int anoDeNascimento;

    /**
     * O (primeiro) nome da pessoa.
     */
    private String nome;

    /**
     * O sobrenome da pessoa.
     */
    private String sobrenome;

    /**
     * O estado civil. Neste modelo simplificado, há apenas dois estados:
     *  casado ou não (solteiro).
     */
    private boolean casado = false;

    /**
     * Cria uma nova pessoa, a partir de todos os seus dados.
     *
     * @param nom        O nome da pessoa.
     * @param sobrenom   O sobrenome da pessoa.
     * @param ehCasada   Indica se a pessoa &eacute; casada ou não.
     * @param anoNasc    O ano de nascimento da pessoa.
     */
    public Pessoa (String nom, String sobrenom, boolean ehCasada,
                                                           int anoNasc) {
        nome = nom;
        sobrenome = sobrenom;
        casado = ehCasada;
        anoDeNascimento = anoNasc;
    }

    /**
     * Cria uma nova pessoa, assumindo que a mesma &eacute; solteira.
     *
     * @param nom        O nome da pessoa.
     * @param sobrenom   O sobrenome da pessoa.
     * @param anoNasc    O ano de nascimento da pessoa.
     */
    Pessoa (String nom, String sobrenom, int anoNasc) {
        nome = nom;
        sobrenome = sobrenom;
        casado = false;
        anoDeNascimento = anoNasc;
    }

    /**
     * Retorna o nome completo da pessoa.
     */
    String nomeCompleto() {
        return (nome + " " + sobrenome);
    }

    /**
     * Retorna o ano de nascimento da pessoa. <p><i>Observe que o
     * m&eacute;todo que retorna o atributo essencial pode ter o mesmo
     * nome do atributo. Distingue-se um do outro pela presença ou
     * ausência de "()" após o nome.</i>
     */
    int anoDeNascimento() {
        return anoDeNascimento;
    }

    /**
     * Retorna o estado civil (simplificado) da pessoa.
     *
     * @return <b>true</b> se a pessoa for casada. <b>false</b> caso
     *          contrário.
     */
    boolean estadoCivil() {
        return casado;
    }

    /**
     * Retorna o s&eacute;culo de nascimento da pessoa.
     */
    int seculoDeNascimento() {
        return (anoDeNascimento / 100);
    }

    /**
     * Retorna a idade da pessoa, dado o ano corrente.
     */
    int idade(int anoCorrente) {
        return anoCorrente - anoDeNascimento;
    }

    /**
     * M&eacute;todo para testes.
     */
    public static void main(String args[]) {
        Pessoa p = new Pessoa("Fernando", "Henrique", true, 1935);
        System.out.println (p.nomeCompleto());
        System.out.println ("Idade: " + p.idade(1997));
        System.out.print ("Ele(a) e' ");
        if (p.estadoCivil())
            System.out.println ("casado(a).");
        else
            System.out.println ("solteiro(a).");
    }
}
