Estudo de POO

Pessoal na faculdade dei essa matéria e falhei miseravelmente, como não peguei de novo a matéria estou estudando por conta própria.
Este é meu código hoje>
package lasoftware;

import java.util.Scanner;

public class Main {

public static void main(String[] args){
	Scanner t = new Scanner(System.in);
	Front obj1 = new Front();
	
	System.out.println("Type client's name: ");
	obj1.setNome(t.nextLine());
	System.out.println("Type client's family name");
	obj1.setSobrenome(t.nextLine());
	System.out.println("Type client's Id");
	obj1.setId(t.nextInt());
	System.out.println("Type client's salary");
	obj1.setSalario(t.nextDouble());
	obj1.imprimir();
	
	
}

}


package lasoftware;
import java.util.Scanner;

public class Front {
Scanner t = new Scanner(System.in);
String nome,sobrenome;
int id;
double salario;
//-----------------GETTER-------------------------
public String getNome(String n) {
return n;
}
public String getSobrenome() {
return sobrenome;
}
public int getId() {
return id;
}
public double getSalario() {
return salario;
}
//-----------------SETTER-------------------------

public void setNome(String nome) {
	this.nome = nome;
}
public void setSobrenome(String sobrenome) {
	this.sobrenome = sobrenome;
}
public void setId(int id) {
	this.id = id;
}
public void setSalario(double salario) {
	this.salario = salario;
}
//------------------PRINT----------------------
public void imprimir() {
	System.out.println("Client's Name: "+ nome);
	System.out.println("Client's Family name: "+ sobrenome);
	System.out.println("Client's Id: "+id);
	System.out.println("Client's salary: "+salario);
	
}

}

Alguem tem algo a acrescentar? Meu objetivo é programar para android, algumas dicas de POO ou android?

Mas, qual é a dúvida, pequeno padauan?

Darlan postei o meu codigo que ta bem no inicio e queria saber se alguem tem algo a acrescentar / melhorar. Estou estudando POO e queria fazer uns códigos por fazer mesmo.

Mas qual o contexto? O que está desenvolvendo?

O código não estava ruim, só tente manter a indentação e adote alguns padrões para não deixar o código ou até interface do usuário bagunçados.

Os métodos get e set possuem uma razão pra existir, eles fornecem acesso controlado às variáveis do objeto.

No seu código eles são inúteis já que as variáveis nome, sobrenome, id e salario não estão privadas e podem ser facilmente e indiscriminadamente modificadas assim:

obj1.nome = "Posso escrever qualquer coisa aqui";

Recomendo a leitura do artigo abaixo.

1 curtida

Se você, estiver fazendo estudo de POO, considere estudar sobre, classes abstratas, concretas, genericas e especializadas, herança, polimorfismo, interfaces, modelo anemico, SOLID e principalmente sobre abstração.

1 curtida

Olá Leo_Ramos!

Dividi a análise em algumas partes…

1 - Conforme já citado pelo wldomiciano, faltou configurar a visibilidade de seu atributos, na classe Front, ou seja, fazer com que eles só sejam acessíveis de dentro da própria classe Front. Conforme dito no outro comentário, a presença dos getters e setters se deve justamente a isso - não acessar atributos diretamente. Isso ajuda em diversos aspectos da sua aplicação, nos casos onde se faz necessário, por isso é bom pesquisar sobre modificadores e visibilidade. Para que os atributos se tornem privados, basta usar o modificador private (Exemplo: private String nome, sobrenome;). Feito isso, eles pararão de ser acessíveis diretamente pela classe Main (à princípio causará mensagem de erro), no entanto, bastará que sejam trocados, na própria classe Main, por seus devidos getters na parte onde seu conteúdo está sendo chamado para ser exibido e pelos seus setters na parte onde o conteúdo do atributo está sendo alterado.

2 - Percebi que você importou o pacote import java.util.Scanner; também na classe Front, no entanto, como dentro dela não há método trabalhando com entrada de dados pelo console, não será necessário, bastando que a importação ocorra apenas na classe Main.

3 - Bônus: Se quiser impressionar nesse exercício, crie uma classe trabalhe com o io de forma mais independente e completa. Por exemplo, uma classe console, em que, dentro dela, haja um método estático para inserir dados pelo teclado e um tratamento de exceções (usando blocos try/catch que lançam uma exceção - erro - quando é inserido um dado inválido). Pode experimentar, dentro dessa classe, no lugar de usar Scanner, usar BufferedReader, só pra variar um pouco o conhecimento. Em se tratando de um exercício onde você está perguntando o que pode melhorar, se quiser treinar mesmo, pode ser um ponto legal. Depois, ao invés de usar a classe Scanner dentro de Main, você usa um método estático da sua própria classe Console.

Se quiser ver uns projetinhos meus de exemplo, fica à vontade pra ver meu github nesse endereço: www.digivalle.com

Bons estudos!!

2 curtidas

Ah sim, brigadão cara. Meu professor na faculdade fazia get e set pra evitar digitar o mesmo código varias vezes. Ou foi isso que eu entendi, como falei, falhei miseravelmente nessa matéria.
Vou ler esse artigo ai.

1 curtida

Po brigado mesmo cara, e eu pensei q tava bom meu codigo hein, usando esses metodos…
kkkk isso que eu queria que o pessoal falasse mesmo do meu código, curti a sua ideia no bonus, vou ver como funciona esse BufferedReader.
Vou dar aquela olhada no seu github tbm pra voltar a usar o meu mesmo. Na real o meu eu so usava pra guardar os códigos dos exercicios, deve ta tudo horrivel por la.