/*
 * Copyright (c) 1997-2001 Centro de Informática - UFPE
 */

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

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

    // 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:
     * casada ou não (solteira).
     */
    private boolean casada;

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

    /**
     * Cria uma nova pessoa, assumindo que a mesma &eacute; solteira.
     *
     * @param nome           O nome da pessoa.
     * @param sobrenome      O sobrenome da pessoa.
     * @param anoNascimento  O ano de nascimento da pessoa.
     */
    public Pessoa (String nome, String sobrenome, int anoNascimento) {
        this.nome = nome;
        this.sobrenome = sobrenome;
        casada = false;
        this.anoNascimento = anoNascimento;
    }

    /**
     * Retorna o nome completo da pessoa.
     */
    public String getNomeCompleto() {
        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>
     */
    public int getAnoNascimento() {
        return anoNascimento;
    }

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

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

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

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

}