Métodos Get e Set em Java. Como eles funcionam

Estou tentando entender melhor do que consegui até agora ... é para me ajudar com a aula, mas não com qualquer tarefa específica; Estou procurando informações mais conceituais que não encontrei no meu livro ou nos tutoriais. Em um nível puramente teórico, entendo por que o encapsulamento é poderoso para a programação OO, mas preciso entender melhor o que está acontecendo especificamente. Continuo me confundindo sobre o caminho pelo qual os dados fluem e me pergunto de onde estamos obtendo e configurando dados. Espero que essa não seja a exceção à regra "não há perguntas estúpidas".

Considerar

 public class Employee
 {
    private int empNum;
    public int getEmpNum()
    {   return empNum;   }
    public void setEmpNum(int Emp)
    {   empNum = emp;   }
 }

Minha interpretação disso: Usandoint Emp passado de algum lugar, definimos a variável empNum declarada noset... método. Nós entãoget... nessa variável e retorne-a ao método de chamada. Isso é um bom entendimento?

Considere ainda:

import.javax.*
public class CreateEmp
{
    public static void main(String[] args)
    {
         int ssn;
         ssn = JOptionPane.showInputDialog(null,"enter ssn");
         Employee newEmp = new Employee(123456789);
         JOptionPane.showMessageDialog(null,"Employee ID " + newEmp.getEmpNum);
     }
 }

Com esta classe, não preciso explicitamenteset uma variável porque declararnew Employee(123456789) envia automaticamente esse valor para oset... método. Oreturn no método Employee retorna o valor resultante para o método de chamada e disponibiliza essa variável, nesse caso, para a saída da minha caixa de diálogo. Eu tenho um controle sobre isso?

Aqui é onde eu fico confuso. Com o meu entendimento, como observado acima - o que pode estar errado - nunca consigo decidir o melhor lugar para colocar a lógica. Por exemplo: eu colocaria a caixa de diálogo "inserir número do funcionário" noEmployee class, com uma condição para executar ONLY se o parâmetro passado para o método for nulo. Na minha opinião, ao entender o fluxo de dados, o objetivo da classe é obter um número de funcionário. Se um não for fornecido como padrão, será necessário criar. Não tenho certeza se esse pensamento é uma prática recomendada ou se estou me preparando para problemas mais tarde.

Adoraria ouvir algumas opiniões sobre se estou entendendo corretamente o que está acontecendo.

questionAnswers(10)

yourAnswerToTheQuestion