Dicas sobre organização

Olá pessoal, estou começando agora em java e gostaria de algumas dicas de organização na hora de programar.
Por exemplo em um programinha para cadastro de clientes usando array, eu crio a “janela” na classe Main? ou meu Main ja deverá ser direto a janela inicial?
O arrayList é criado dentro da classe cliente?

Desculpa se errei a área de postagem.
Espero que tenham entendido e possam me ajudar.

Obrigado e abraços!!!

Cara, procure deixar suas classes mais coesas possíveis, ou seja cada classe não deve ser responsável por fazer vários tipos de tarefas diferentes.
Crie uma classe pra “janela”, outra para clientes, outra para as operações referentes ao cadastro de clientes(CRUDCliente), outra com seu método main que fará a chamada a “janela”.
Quanto ao seu ArrayList<Cliente>, você coloca na classe das operações do cadastro, já que é ela que vai ser responsável por manipular o seu arraylist.

É assim que eu faria.

Abs,

Olá Garauth,

Existe algo chamado Model-view-controller (MVC) que é um padrão de arquitetura de software.

Você está começando, mas usar um padrão, é uma boa prática e é melhor começar certo até para
facilitar tua visão das coisas.

Então em resumo (embora você possa encontrar muito material sobre isso na net), nesse
processo a gente procura separar tudo em muitas classes cada uma tratando de uma parte
e dentro de um pacote proprio.

Então vc cria 3 pacotes (Modelagem, Visao e Controle).

No pacote Controle você pode colocar a tua classe Main, ou qualquer classe principal que
organize as coisas. Inclusive uma classe, por exemplo, de Deposito ou Banco onde você
vai colecionar aquilo que precisa guardar. Nela iria, por exemplo a Lista de Clientes.

No pacote visao vao as classes de tela. O Frame de cadastro do cliente vai nele. E todas
as outrs telas que serão vistas pelo usuario.

E na modelagem vai as classes de base, como a classe cliente. Então o usuario entra na
tela de Cadastro de Clientes. Preenche os campos. E clica num botao Salvar.

Nesse botao, no codigo dele, você instancia um objeto da classe Cliente. Coloca nos
atributos dele as informacoes vindas dos campos digitados. E por fim mando o objeto
de cliente para guardar no deposito, ou no banco usando a classe do pacote Controle.

Ou seja, cada classe fazendo o seu papel. Nada de misturar tela com lista.

Então isso tudo envolve você conhecer Orientacao a objetos e MVC.

Boa sorte. Se precisar avise.

“Muita hora nessa calma” … :lol:

Seguinte, como disse o henriqueluz, pense em responsabilidades … procure na literatura de OO sobre responsabilidades. Uma classe nao deve fazer nem mais nem menos daquilo q lhe diz respeito, simples e complicado assim.

Eu sempre digo q OO vc nunca sabe td.

O livro ‘Explicando Padrões de Projeto’ de Alan Shalloway, me trouxe umas ideias bastante válidas sobre essa questão.

Valeu

O q disse o JoaoBluSCBR sobre MVC tbm é bastante válido. Havia me esquecido do MVC.

Pessoal, muito obrigado mesmo!!!
Sabia que encontraria ajuda aqui, mas vocês além de saberem muito, sabem explicar muito bem!
Obrigado de novo…
Abraços

Depois de tudo que escrevi e outros também.

Fiquei pensando na situação do Galauth que apenas pediu pra saber se vai tudo na mesma classe.

Então, explicando:

Pode ir tudo na mesma classe. Mas só naqueles programinhas básicos que aparecem na apostila. Nesses, o Main já é um JFrame, com os campos, e vc digita e nesses campos e a informação é colocada numa lista e a própria classe Cliente geralmente é interna. E daí já tem um método no próprio main que corre a lista e faz um System.out.println mostrando tudo que foi cadastrado.

Bem, isso só serve para aprender, não serve para mais nada.

Então tudo que dissemos acima era para alguém que queira aprender a fazer programas que serão usados, que tem que ser organizados pois o que for cadastrado serão gravado e usado em outras partes do sistema. E nesses casos sempre se precisa separar tudo e em muitas, muitas classes.

Boa sorte.

Como disse o grande Martin Fowler um dia qualquer: “Quem vê um sistema bem projetado as vezes tem se a impressão d q nunca ocorre nenhum processamento, pq parece uma eterna delegação d responsabilidades d classe p/ classe”. Claro q nao foi assim q ele escreveu pq eu nao me lembro, mas a ideia é + ou - essa.

Muito bacana isso, e uma realidade.