Ajuda calculadora em java

Bom dia pessoal.
O professor ta pegando pesado com nós aqui, e não estou conseguindo evoluir em um código de calculadora de 35 botões.

O exercicio é este:

LEIA ATENTAMENTE AS INSTRUÇÕES:

Você deverá entregar uma calculadora virtual baseada na classe Calculadora.java,

import javax.swing.JFrame;
import java.awt.GridLayout;
import java.awt.Panel;

public class Calculadora extends JFrame {
private final GridLayout gridBotoes = new GridLayout(4,6,4,4);
private final GridLayout gridPainel = new GridLayout(2,1);
private final Panel visorPainel = new Panel();
private final Panel botoesPainel = new Panel();

public Calculadora()
{
    super("Calculadora");
    this.setLayout(gridPainel);
    this.add(visorPainel);
    this.add(botoesPainel);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(600,600);
    this.setVisible(true);
}



public static void main(String[] args) {
    Calculadora calculadora = new Calculadora();
}

}

//

A calculadora terá 35 teclas, dispostas em 5 linhas e 7 colunas.

A maioria das operações matemáticas pode ser executada com a class Math: Math (Java Platform SE 8 )

Verifique como funciona a calculadora de exemplo (calculadora - Google Search) para reproduzir a programação.

Significado das teclas especiais:

  • AC: esta tecla deve limpar o visor.
  • Ans: esta tecla deve guardar o valor do visor na memória se pressionada após um número ser digitado. se for acionada após um operador ser teclado (como +, -, etc), deve recuperar o valor armazenado.
  • EXP: esta tecla deve multiplicar o primeiro operando por 10 elevado a potência do segundo operando. Por exemplo, se o usuário digitar 2E2 e igual, a calculadora deve calcular 2 x 10^2 = 2 x 100 = 200.
  • log: calcula o logaritmo (o expoente) de uma potência na base 10. Por exemplo, log de 100 é igual a 2. O usuário tem que clicar em log, digitar o número e apertar igual.
  • A tecla Rad deve ser substituída por ? e deve abrir uma caixa de mensagem exibindo o nome do aluno.
  • ln: calcula o logaritmo (o expoente) de uma potência na base e. Por exemplo, ln de 7.38905609893 é igual a 2. O usuário tem que clicar em ln, digitar o número e apertar igual.
  • A tecla Deg deve ser substituída por BIN e deve abrir uma caixa de mensagem exibindo o número do visor em binário. Você pode converter um número inteiro em binário usando o método toBinaryString:
  • A tecla Inv deve ser substituída por HEX e deve abrir uma caixa de mensagem exibindo o número do visor em hexadecimal. Você pode converter um número inteiro em binário usando o método math

O que será avaliado:

  1. A classe compila (3)

  2. A classe executa (3)

  3. As operações são executadas corretamente (4)

Alguém consegue me ajudar a evoluir este código por favor?