Gostaria de ajuda para resolver um exercicio

estou fazendo faculdade e o professor passou um exercicio que e o seguinte Desenvolva um sistema para cadastro de Curso com seus Alunos Classe
Curso:
Atributos: int código, cargaHoraria, sala
String nome, nomeProfessor;
double valorCurso;
int quantidadeAlunos;
Métodos: public Curso(int cod, int ch, int sala, String n, String nP, double v, ArrayList
alunos)
Getters and Setters

Classe CursoEspecializacao extends Curso:
Atributos: boolean latoSensu;
double adicionalDiploma;
Métodos: public CursoEspecializacao (int cod, int ch, int sala, String n, String nP,
double v, int qntAlunos, boolean lS)
public void setAdicionalDiploma(); // método que seta o adicional diploma.

 O adicional diploma deverá ser calculado da seguinte forma:
o Se a turma tiver até 10 alunos → R$ 25,00 por aluno
o Se a turma tiver até 30 alunos → R$ 20,00 por aluno
o Acima de 30 alunos → R$ 18,00 por aluno

Classe CursoMestrado extends Curso:
Atributos: boolean strictoSensu;
double adicionalDiploma;
Métodos: public CursoMestrado (int cod, int ch, int sala, String n, String nP, double v,
int qntAlunos, boolean lS)
public void setAdicionalDiploma(); // método que seta o adicional diploma.
 O adicional diploma deverá ser calculado da seguinte forma:
o Se a turma tiver até 5 alunos → R$ 45,00 por aluno
o Se a turma tiver até 15 alunos → R$ 43,00 por aluno
o Se a turma tiver até 30 alunos → R$ 40,00 por aluno
o Acima de 30 alunos → R$ 36,00 por aluno

Classe CursoDoutorado extends Curso:
Atributos: boolean strictoSensu;
int mesesParaDefesa;
double adicionalDiploma;
Métodos: public CursoMestrado (int cod, int ch, int sala, String n, String nP, double v,
int qntAlunos, boolean lS)
public void setAdicionalDiploma(); // método que seta o adicional diploma.
 O adicional diploma deverá ser calculado da seguinte forma:
o Se faltam 24 meses para defesa → R$ 1500,00
o Se faltam 12 meses para a defesa → R$ 2000,00
o Se faltam 6 meses para a defesa → R$ 3000,00
o Caso contrário → R$ 4000,00.
 Além disso, o adicional diploma terá desconto com reajuste percentual de acordo
com a quantidade de alunos presentes no programa da seguinte forma:
o 7% se a turma tiver até 3 alunos.
o 12% se turma tiver até 7 alunos
o 15% se a turma tiver mais de 7 alunos.

Classe Controle Geral:
Responsável em ler todas as informações para o cadastramento dos CursosEspecializacao
CursoMestrado e CursoDoutorado e crie um Arraylist para cada tipo de Curso, colocando
em um ArrayList do tipo de cada classe implementada. Obs. Pelo menos 2 objetos de
cada tipo (Utilize o showInputDialog para ler os atributos normais e o showInputDialog
com opções para selecionar o tipo de Curso “Especializacao” “Mestrado” “Doutorado”
que está sendo cadastrado. Repita este processo enquanto o usuário desejar continuar,
controle isso usando o showConfirmDialog. Ao final, apresente uma caixa de diálogo
usando o showOptionDialog usando as opções de escolha definidas acima para escolher
qual dos Arraylists será impresso pelo showMessageDialog contendo todos os dados
armazenados naquele Arraylist.

o exercicio e meio extenso mais eu estou com uma duvida sobre como fazer essa classe geral e gostaria de uma ajuda nela e sobre como irei usar o metodo public void setAdicionalDiploma();

Você pode usar if -> else, não tem muito segredo.

Agora se você quiser radicalizar, tem o padrão Strategy.
Mas pra esse caso o melhor, em minha visão, seria o padrão command, pois o fluxo das operações é muito natural.

Por questões de simplicidade use o if -> else.
Mas você teria mais conhecimento para situações diversas usando os padrões acima com as alterações que você considerar necessárias.

Recomendação, para este caso:

Menos recomendado, neste caso:

Obs.: como você pode ver, há mais de uma forma de resolver o mesmo problema.
Minha preferência por command se justifica pelo comportamento semelhante a uma “lista ligada” de pessoas onde você perguntaria a cada participante que se o nome dele é João, ai ele diria, não sou eu, veja com o próximo, até encontrar um, sendo que neste caso, obrigatoriamente a fila terá 1 João e somente 1, caso contrário haverá um erro na aplicação mas ai é só trabalhar com lógica, para este erro não ocorrer.

Você pode alterar o padrão para atender a sua necessidade.