Programação orientada a aspectos (POA)

Ola pessoal tenho que construir uns aspecto de um sistema de login, fale conosco, e cadastro, eu nao sei por onde começar algem pode me ajudar???

package Visao;

import Modelo.VO.Area;
import Modelo.VO.Email;
import Modelo.VO.Questao;
import Modelo.VO.Usuario;
import Modelo.VO.Visitante;
import Modelo.RN.VisitanteRN;
import java.awt.Container;
import java.net.*;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import org.jvnet.substance.skin.SubstanceSaharaLookAndFeel;


public class FaleConosco extends javax.swing.JFrame {

    private String ip;
    private int user;
    private int codigoarea;
    private int existeuser;
    private int existeemail;
    private int codigouser;
    private int codigoemail;
    private int codigoquestao;
    private boolean ehemail;
    private List ehvisitante;
    private List emailatendente;
    private List codigoatendente;
    private Object[] listaatendentes;
    Area area = new Area();
    Email email = new Email();
    Usuario usuario = new Usuario();
    Questao questao = new Questao();
    Visitante visitante = new Visitante();
    VisitanteRN vrn = new VisitanteRN();

    /** Creates new form FaleConosco */
    public FaleConosco() {
        initComponents();
        setLocationRelativeTo(null);
        this.listarArea();
    }

    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanelContato = new javax.swing.JPanel();
        tNome = new javax.swing.JTextField();
        tEmail = new javax.swing.JTextField();
        Lnome = new javax.swing.JLabel();
        Lemail = new javax.swing.JLabel();
        Lmensagem = new javax.swing.JLabel();
        jScrollPaneMsg = new javax.swing.JScrollPane();
        aTMensagem = new javax.swing.JTextArea();
        jPanelArea = new javax.swing.JPanel();
        CBarea = new javax.swing.JComboBox();
        bEnviar = new javax.swing.JButton();
        Lcamposobrigatorios = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Fale Conosco");

        jPanelContato.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Contato", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(0, 102, 102))); // NOI18N

        tNome.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tNomeActionPerformed(evt);
            }
        });
        tNome.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                tNomeFocusLost(evt);
            }
        });

        tEmail.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                tEmailFocusLost(evt);
            }
        });

        Lnome.setText("*Nome:");

        Lemail.setText("*E-mail:");

        Lmensagem.setText("*Mensagem:");

        aTMensagem.setColumns(20);
        aTMensagem.setRows(5);
        jScrollPaneMsg.setViewportView(aTMensagem);

        jPanelArea.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Area da Questao", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(0, 102, 102))); // NOI18N

        CBarea.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CBareaActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelAreaLayout = new javax.swing.GroupLayout(jPanelArea);
        jPanelArea.setLayout(jPanelAreaLayout);
        jPanelAreaLayout.setHorizontalGroup(
            jPanelAreaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelAreaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(CBarea, 0, 137, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanelAreaLayout.setVerticalGroup(
            jPanelAreaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelAreaLayout.createSequentialGroup()
                .addComponent(CBarea, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        bEnviar.setText("Enviar");
        bEnviar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bEnviarActionPerformed(evt);
            }
        });

        Lcamposobrigatorios.setForeground(new java.awt.Color(0, 102, 102));
        Lcamposobrigatorios.setText("*Campos Obrigatorios");

        javax.swing.GroupLayout jPanelContatoLayout = new javax.swing.GroupLayout(jPanelContato);
        jPanelContato.setLayout(jPanelContatoLayout);
        jPanelContatoLayout.setHorizontalGroup(
            jPanelContatoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelContatoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelContatoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelContatoLayout.createSequentialGroup()
                        .addGroup(jPanelContatoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPaneMsg, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE)
                            .addComponent(tEmail, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE)
                            .addComponent(Lemail)
                            .addComponent(Lmensagem)
                            .addComponent(tNome, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE)
                            .addComponent(Lnome))
                        .addGap(18, 18, 18)
                        .addComponent(jPanelArea, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(16, 16, 16))
                    .addComponent(bEnviar)
                    .addComponent(Lcamposobrigatorios))
                .addContainerGap())
        );
        jPanelContatoLayout.setVerticalGroup(
            jPanelContatoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelContatoLayout.createSequentialGroup()
                .addGap(22, 22, 22)
                .addComponent(Lnome)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanelContatoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanelArea, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanelContatoLayout.createSequentialGroup()
                        .addComponent(tNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(Lemail)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(tEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(Lmensagem)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPaneMsg, javax.swing.GroupLayout.DEFAULT_SIZE, 90, Short.MAX_VALUE)
                        .addGap(18, 18, 18)
                        .addComponent(bEnviar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(Lcamposobrigatorios)))
                .addGap(11, 11, 11))
        );

        getContentPane().add(jPanelContato, java.awt.BorderLayout.LINE_START);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void CBareaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CBareaActionPerformed
}//GEN-LAST:event_CBareaActionPerformed

    private void bEnviarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bEnviarActionPerformed
        questao.setDescricao(aTMensagem.getText());
        vrn.salvarQuestao(questao);

        /* codigoarea recebe o codigo conforme a area selecionada */
        codigoarea = vrn.verificarCodigoArea(CBarea.getSelectedItem().toString());

        /* Verifica o codigo do atendente conforme a area selecionada */
        setCodigoatendente(vrn.verificarAtendente(codigoarea));

        /* Array recebe a lista de codigos de atendentes */
        setListaatendentes((Object[]) getCodigoatendente().toArray());

        /* Verifica o email do atendente conforme o seu codigo */
        for (int i = 0; i < getCodigoatendente().size(); i++) {
            /* Lista de codigos de atendentes são passados por parametro para retorno do email do atendente */
            emailatendente = vrn.verificarEmailAtendente(getListaatendentes()[i]);
            for(Object o : emailatendente){
                /* o recebe itens da lista de emails */
                String emaildeenvio = (String) o;
                this.enviarEmail(emaildeenvio);
            }
        }

        /* Condição para quando o usuario nao existir */
        if (getExisteuser() == 0) {
            usuario.setNome(tNome.getText());
            usuario.setIp(this.obterIpLocal());
            vrn.salvarUsuario(usuario);
            setCodigouser(vrn.verificarCodigoUsuario());
            visitante.setCodigousuario(codigouser);
            visitante.setQuestao(questao);
            visitante.setCodigoarea(getCodigoarea());
        } /* Condição para quando o usuario existir */ else {
            visitante.setCodigousuario(existeuser);
            visitante.setQuestao(questao);
            visitante.setCodigoarea(codigoarea);
        }

        /* Condição para quando o email do usuario e o usuario não existir*/
        if ((getExisteemail() == 0) && (getExisteuser() == 0)) {
            email.setEmail(tEmail.getText());
            email.setCodigousuario(codigouser);
            email.setAtendente(null);
            vrn.salvarEmail(email);
            setCodigoemail(vrn.verificarCodigoEmail());
            visitante.setCodigoemail(codigoemail);
        } /* Condição para quando apenas o email não existir */ else if (getExisteemail() == 0) {
            email.setEmail(tEmail.getText());
            email.setCodigousuario(user);
            email.setAtendente(null);
            vrn.salvarEmail(email);
            setCodigoemail(vrn.verificarCodigoEmail());
            visitante.setCodigoemail(codigoemail);
        } /* Condição para quando não existir visitante */ else if (getEhvisitante() == null) {
            visitante.setCodigousuario(getUser());
            visitante.setCodigoemail(existeemail);
        } /* Condição para quando já existir visitante */ else {
            visitante.setCodigoemail(existeemail);
        }

        vrn.salvarVisitante(visitante);

        JOptionPane.showMessageDialog(rootPane, "Enviado com sucesso!");

        this.limparCampos(jPanelContato);
    }//GEN-LAST:event_bEnviarActionPerformed

    private void tNomeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tNomeActionPerformed
    }//GEN-LAST:event_tNomeActionPerformed

    private void tNomeFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tNomeFocusLost
        tNome.setText(tNome.getText().toUpperCase());
        setExisteuser(vrn.verificarUsuario(tNome.getText().toUpperCase()));
        /* Quando o usuário existir a variável "existeuser" passa a receber o valor do codigo */
        if (existeuser != 0) {
            setUser(existeuser);
        }
        setEhvisitante(vrn.verificarVisitante(existeuser));
    }//GEN-LAST:event_tNomeFocusLost

    private void tEmailFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tEmailFocusLost
        tEmail.setText(tEmail.getText().toLowerCase());
        setExisteemail(vrn.verificarEmail(tEmail.getText().toLowerCase()));
        setEhvisitante(vrn.verificarVisitante(existeuser));
        this.validarEmail(tEmail.getText(), tEmail);
    }//GEN-LAST:event_tEmailFocusLost

    public static void main(String args[]) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        try {
            UIManager.setLookAndFeel(new SubstanceSaharaLookAndFeel());
        } catch (Exception e) {
            System.out.println("Substance failed to initialize");
        }
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new FaleConosco().setVisible(true);
            }
        });
    }

    public void listarArea() {
        List dados;
        dados = vrn.consultarAreaCadastrada();
        for (Object o : dados) {
            Area avo = (Area) o;
            String descricao = avo.getDescricao();
            CBarea.addItem(descricao);
        }
    }

    public String obterIpLocal() {
        ip = "";
        try {
            InetAddress in = InetAddress.getLocalHost();
            ip = in.getHostAddress();

        } catch (Exception exc) {
            JOptionPane.showMessageDialog(rootPane, "Erro na captura do ip!");
        }
        return ip;
    }

    public void validarEmail(String email, JTextField tEmail) {
    }

    public void limparCampos(Container container) {
        aTMensagem.setText("");
    }

    public void enviarEmail(String emaildeenvio) {
        SimpleEmail simpleemail = new SimpleEmail();
        try {
            simpleemail.setDebug(true);
            /* o servidor SMTP para envio do e-mail */
            simpleemail.setHostName("smtp.gmail.com");
            /* autenticacao */
            simpleemail.setAuthentication("alunogps@gmail.com", "alunogps2010");
            simpleemail.setSSL(true);
            /* destinatário */
            simpleemail.addTo(emaildeenvio.toString());
            //simpleemail.addTo("kenjiisa_337@hotmail.com");
            /* remetente */
            simpleemail.setFrom(tEmail.getText());
            /* assunto do e-mail */
            simpleemail.setSubject("Teste");
            /* conteudo do e-mail */
            simpleemail.setMsg(aTMensagem.getText());
            //simpleemail.setMsg("Mensagem Testando Novamente");
            simpleemail.send();
        } catch (EmailException e) {
            JOptionPane.showMessageDialog(rootPane, "Impossivel enviar no momento!" + e.getMessage());
        }

    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox CBarea;
    private javax.swing.JLabel Lcamposobrigatorios;
    private javax.swing.JLabel Lemail;
    private javax.swing.JLabel Lmensagem;
    private javax.swing.JLabel Lnome;
    private javax.swing.JTextArea aTMensagem;
    private javax.swing.JButton bEnviar;
    private javax.swing.JPanel jPanelArea;
    private javax.swing.JPanel jPanelContato;
    private javax.swing.JScrollPane jScrollPaneMsg;
    private javax.swing.JTextField tEmail;
    private javax.swing.JTextField tNome;
    // End of variables declaration//GEN-END:variables

    public int getExisteuser() {
        return existeuser;
    }

    public void setExisteuser(int existeuser) {
        this.existeuser = existeuser;
    }

    public int getExisteemail() {
        return existeemail;
    }

    public void setExisteemail(int existeemail) {
        this.existeemail = existeemail;
    }

    public int getCodigouser() {
        return codigouser;
    }

    public void setCodigouser(int codigouser) {
        this.codigouser = codigouser;
    }

    public int getCodigoemail() {
        return codigoemail;
    }

    public void setCodigoemail(int codigoemail) {
        this.codigoemail = codigoemail;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public boolean isEhemail() {
        return ehemail;
    }

    public void setEhemail(boolean ehemail) {
        this.ehemail = ehemail;
    }

    public int getCodigoquestao() {
        return codigoquestao;
    }

    public void setCodigoquestao(int codigoquestao) {
        this.codigoquestao = codigoquestao;
    }

    public int getCodigoarea() {
        return codigoarea;
    }

    public void setCodigoarea(int codigoarea) {
        this.codigoarea = codigoarea;
    }

    public int getUser() {
        return user;
    }

    public void setUser(int user) {
        this.user = user;
    }

    public List getEhvisitante() {
        return ehvisitante;
    }

    public void setEhvisitante(List ehvisitante) {
        this.ehvisitante = ehvisitante;
    }

    public Object[] getListaatendentes() {
        return listaatendentes;
    }

    public void setListaatendentes(Object[] listaatendentes) {
        this.listaatendentes = listaatendentes;
    }

    public List getCodigoatendente() {
        return codigoatendente;
    }

    public void setCodigoatendente(List codigoatendente) {
        this.codigoatendente = codigoatendente;
    }

    public List getEmailatendente() {
        return emailatendente;
    }

    public void setEmailatendente(List emailatendente) {
        this.emailatendente = emailatendente;
    }
}

Esta é a class FaleConosco , se alguem tiver alguma ideia fico grato, a ja criei os aspectos validar cpf, cnpj, campo obrigatório, validar email, tenho que criar mais cinco e estou confuzo alguem pode me ajudar?
Não sei o que mais posso estar fazendo…
Muito Obrigado pessoal…

Pois bem cara primeiro você tem que definir quais são as entidades do seu sistema tipo, usuario e os frames.
Pra fazer o login é simples um frame com 2 jtextfields, login e senha, vc vai pegar os conteudso dos fields com o metodo gettext() e comparar, if(fieldlogin==login && flieldsenha==senha) , depois tu chama o frame principal onde dai você irá chamar os outros frames.
Espero ter ajudado.

utilizando a sua ideia do amigo que respondeu acima eu desenvolvi o seguinte aspecto

public aspect ConfirmacaoCO {
	public pointcut confirmarCO(): call (* Visao.FCadastro.verificar*(String, String)); 
    before(String campo, String compara): confirmarCO() && args (campo, compara){
        try {
        	if (!campo.equals(compara)){
       		 //Lconfirmaremail.setForeground(Color.red);
        		 JOptionPane.showMessageDialog(jPanelForm, "Email incompatível!");
        	}
       catch(Exception exc){
       	System.out.println("Campo obrigatório");
       }
   }
}

Porem este aspecto esta dando erro de sintaxe na linha do if alguem poderia me ajudar