Eu preciso criar um pequeno programa utilizando ArrayList
e estou com muitas duvidas:
O programa é um sistema de controle de ponto que deverá possuir o seguinte menu:
[1] Consultar dados de uma pessoa
[2] Cadastrar novo aluno
[3] Cadastrar novo professor
[4] Cadastrar novo administrativo
[0] Sair
Sendo que eu criei as seguintes classes para antender:
public abstract class Pessoa {
private final String nome;
private final String cpf;
private final String matricula;
//construtor
public Pessoa (String nome, String cpf, String matricula) {
this.nome = nome;
this.cpf = cpf;
this.matricula = matricula;
}
public String getNome(){
return nome;
}
public String getCpf(){
return cpf;
}
public String getMatricula (){
return matricula;
}
@Override
public String toString(){
return String.format("%s %s%nInformações da Pessoa: %s", getNome(), getCpf(), getMatricula());
}
}
import java.util.ArrayList;
public class Aluno extends Pessoa{
private ArrayList<Curso> cursos = new ArrayList<>(Curso);
//construtor
public Aluno (String nome, String cpf, String matricula,ArrayList<Curso> cursos){
super(nome,cpf,matricula); //construtor da superclasse
Curso curso = new Curso (cursos); //construtor da classe Curso passando o arraylist
}
public ArrayList<Curso> getCursos{
return cursos;
}
@Override
public String toString(){
return String.format("Os alunos são",super.toString(),"Os cursos são:",getCursos);
}
}
import java.util.ArrayList;
public class Professor extends Pessoa{
private ArrayList<Curso> cursos = new ArrayList<>(Curso);
private double salario;
private final int hora_aula = 40;
public Professor(String nome, String cpf, String matricula,ArrayList<Curso> cursos,double salario) {
super(nome, cpf, matricula); //construtor da superclasse
Curso curso = new Curso (cursos); //construtor da classe Curso passando o arraylist
this.salario = salario;
}
public double getSalario(){
//Para o calculo do salário do professor, precisa pegar o montante do total de horas aula do curso * Hora_aula (40)
//Como eu resgato isso no arraylist cursos?
return salario;
}
public ArrayList<Curso> getCursos{
return cursos;
}
@Override
public String toString(){
return String.format("Professor: %s%n%s: $%,.2f",super.toString(), "Salario", getSalario(),"Cursos",getCursos);
}
}
public class Administrativo extends Pessoa {
private double salario;
//construtor
public Administrativo (String nome, String cpf, String matricula,double salario){
super (nome,cpf,matricula); //construtor da superclasse
if (salario < 0.0)
throw new IllegalArgumentException("Salário deve ser maior que 0.0");
this.salario = salario;
}
public double getSalario(){
return salario;
}
@Override
public String toString(){
return String.format("Funcionário: %s%n%s: $%,.2f",super.toString(), "Salario", getSalario());
}
}
import java.util.ArrayList;
public class Curso {
private String nome;
private int horas;
//construtor
public Curso(ArrayList<Curso> cursos) {
// como atribuir valores do arraylist de curso nos atributos da classe?
// this.nome = cursos
// this.horas = cursos
}
public String getnome(){
return nome;
}
public int gethoras(){
return horas;
}
// Precisa de toString?
}
A dúvida é na classe Aluno:
Como eu receberia o ArrayList de Curso e depois passaria os dados dele para o construtor da classe Curso?