Menu usando tecnica orientada objeto

boa noite pessoal

seguinte, estou fazendo um exercicio de java de uma agenda e ai queria criar um menu de interação com o usuario e queria saber qual melhor forma…

seria assim…

public class Menu {

	private int opcao;
	private int contato = 1;
	private int telefone = 2;
	private int visualizar = 3;
	private int pesquisar = 4;
	

	public int menuPrincipal() {

		System.out.println("\nAgenda de Contatos\n");
		System.out.println("1 - Contato");
		System.out.println("2 - Telefone");
		System.out.println("3 - Visualizar Registros");
		System.out.println("4 - Pesquisar Registros");
		System.out.println("5 - Sair");
		System.out.print("Digite a opção: ");
	}

ai vem as classes contato, telefone, visualizar e pesquisar aonde eu tenho opcoes em cada uma…

ai queria saber como fazer isso usando conceito orientado objeto…

estou pensando em fazer isso como no livro do fowler aonde ele usa switch com classes

alguem poderia me clarear a ideia por favor

De uma olhada
http://javaaberto.blogspot.com.br/2012/07/introducao-java-jr-o-que-um-java-junior.html

http://www.facebook.com/JavaAberto

Primeiro deve criar uma classe que nada mais é que um molde para seu objeto.
Por exemplo quero criar um objeto Menu que so vai fazer a função de desenhar esse menu.

Mas, de um modo mais generico, melhor criar uma classe global para designer da tela.
Poderia criar um classe chamada clsLayout.

Ficaria assim:


import javax.swing.JOptionPane;

public class clsLayout {   

    public int DesenharMenu(){
        
        String desenha =  "1 - Menu 1\n"
                        + "2 - Menu 2\n"
                        + "3 - Menu 3\n\n"
                        + "Escolha uma opção: " ;

        int escolheu = Integer.parseInt(JOptionPane.showInputDialog(desenha));

        return escolheu; //retorna o menu escolhido
    }

}

import javax.swing.JOptionPane;

/**
 *
 * @author guga
 */
public class clsPrincipal {

    clsLayout layout = new clsLayout();

    public clsPrincipal() {
        confere();
    }

    private void confere(){
        switch(layout.DesenharMenu()){
            case 1:
                JOptionPane.showMessageDialog(null,"Escolheu menu 1");
            break;
            case 2:
                JOptionPane.showMessageDialog(null,"Escolheu menu 2");
            break;
            case 3:
                JOptionPane.showMessageDialog(null,"Escolheu menu 3");
            break;
            default: JOptionPane.showMessageDialog(null,"opção invalida");
        }
    }


    public static void main(String[] args) {
        clsPrincipal principal = new clsPrincipal();
    }

}

Seria interessante saber se você deseja implementar esta agenda em modo texto ou através de uma interface gráfica.
Levando em consideração o código que você apresentou, presumo que seja em modo texto… Neste caso o menu poderia ser criado no próprio método main da classe principal, usando a instrução switch para chamar os objetos/métodos apropriados de acordo com a opção escolhida.

Não ficou claro para mim a complexidade da agenda que você pretende criar, mas provavelmente uma classe Contato e outra Agenda, além da classe principal, sejam suficientes.
Nome e telefone seriam atributos da classe Contato. Ainda em Contato teríamos os métodos para adicionar e remover os contatos propriamente ditos.
Já visualizar e pesquisar registros seriam métodos da classe Agenda. Ou, ao invés de uma classe Agenda, você poderia criar um ArrayList Agenda que receberia os objetos de Contato, e transferir os métodos para visualização e pesquisa dos contatos para a classe principal.

Se pretende programar orientado à objetos, aconselho que dê uma olhada na teria sobre o assunto. Assim talvez fique mais claro essa abstração do mundo real na forma de classes e objetos…