Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

Resolução

package com.github.lucasdevrj.exercicios.sistemaescolar;

import java.time.LocalDate;
import java.time.Period;

public abstract class Pessoa {

    private String nome;
    private LocalDate dataDeNascimento;

    public Pessoa(String nome, LocalDate dataDeNascimento) {
        this.nome = nome;
        this.dataDeNascimento = dataDeNascimento;
    }

    public String getNome() {
        return nome;
    }

    public int getIdade() {
        LocalDate dataAtual = LocalDate.now();
        int idade = Period.between(dataDeNascimento, dataAtual).getYears();
        return idade;
    }

    public abstract void exibirDados();
}
package com.github.lucasdevrj.exercicios.sistemaescolar;

import java.time.LocalDate;

public class Aluno extends Pessoa {

    private double nota;

    public Aluno(String nome, LocalDate dataDeNascimento, double nota) {
        super(nome, dataDeNascimento);
        this.nota = nota;
    }

    @Override
    public void exibirDados() {
        System.out.printf("Aluno: %s - Idade: %d - Nota: %.2f\n", getNome(), getIdade(), nota);
    }
}
package com.github.lucasdevrj.exercicios.sistemaescolar;

import java.time.LocalDate;

public class Docente extends Pessoa {

    private String disciplina;

    public Docente(String nome, LocalDate dataDeNascimento, String disciplina) {
        super(nome, dataDeNascimento);
        this.disciplina = disciplina;
    }

    @Override
    public void exibirDados() {
        System.out.printf("Docente: %s - Idade: %d - Disciplina: %s\n", getNome(), getIdade(), disciplina);
    }
}
/**
 * Você está desenvolvendo um sistema de gestão para uma escola, onde é necessário
 * organizar informações de alunos e docentes. Cada pessoa na escola possui dados
 * básicos, como nome e idade. No entanto, cada grupo também possui características
 * próprias: os alunos possuem uma nota final e os docentes são responsáveis por uma disciplina.
 *
 * Crie um programa que:
 *
 * Defina uma classe Pessoa com os atributos nome e idade.
 * Crie as classes Aluno e Docente, ambas herdando de Pessoa, adicionando:
 * Para Aluno: um atributo nota.
 * Para Docente: um atributo disciplina.
 * Instancie dois objetos Aluno e dois objetos Docente
 * Exiba as informações no terminal.
 * Exemplo de entrada:
 *
 *
 * aluno1.exibirDados();
 * aluno2.exibirDados();
 *
 * docente1.exibirDados();
 * docente2.exibirDados();
 *
 * Saída esperada:
 *
 * Aluno: Julia - Idade: 16 - Nota: 8.5
 * Aluno: Caio - Idade: 17 - Nota: 7.2
 * Docente: Marta - Idade: 40 - Disciplina: Matemática
 * Docente: Roberto - Idade: 38 - Disciplina: História
 */

package com.github.lucasdevrj.exercicios.sistemaescolar;

import java.time.LocalDate;

public class Principal {
    public static void main(String[] args) {
        Aluno aluno = new Aluno("Mário", LocalDate.parse("1996-05-20"), 7.0);
        Aluno aluno2 = new Aluno("Lúcio", LocalDate.parse("1999-07-09"), 4.0);
        Docente docente = new Docente("Claúdio", LocalDate.parse("2002-02-12"), "Java");
        aluno2.exibirDados();
        aluno.exibirDados();
        docente.exibirDados();
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
beleza?

1 resposta
solução!

Oi, Lucas. Tudo bem com você?

Obrigado por compartilhar mais uma resolução. Seu projeto atende aos conceitos trabalhados sobre herança e polimorfismo, e também demonstra iniciativa ao adaptar a modelagem proposta pelo exercício. Em vez de armazenar diretamente a idade, você optou por utilizar LocalDate e calcular esse valor por meio de Period, o que deixa a informação sempre atualizada e representa uma abordagem bastante utilizada em aplicações reais.

Na sua opinião, se o sistema evoluísse para incluir funcionários administrativos, você manteria a classe Pessoa abstrata ou criaria novos métodos comuns para todas as subclasses?

Parabéns pela implementação e pelas adaptações realizadas. Continue compartilhando suas soluções no fórum, pois elas enriquecem bastante as discussões e o aprendizado coletivo.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!