- Fórum
- OTServ
- Recursos
- Linguagens de Programação
- Java
- Utilizando Classes no Java
FE
programação
Utilizando Classes no Java
Por Felipe Moraes, 12 de set. de 2015 em Java
java
iniciante
básico
jre
classe
poo
otserv
1
1.9k
Por Felipe Moraes, 12 de set. de 2015 em Java
info
Grupo: Grão-Duque
Registrado: 02/10/06
Posts: 3.3k
Reputação: +151
Gênero: Masculino
Bom dia XTibia.
Neste tutorial, explicarei como criar classes e instancia-las, utilizando Java.
Recomendo a leitura dos seguintes tutoriais, para ter que tenha uma noção do que estamos fazendo
Esse aula, diferentemente da última, terá um teor mais prático.
Vamos lá.
Vamos Usar como exemplo, um sistema de um banco.
Uma forte canditada, seria uma entidade conta.
Para o nosso exemplo, usaremos uma conta poupança como referência, que não pode ter saldo negativo.
Primeiramente, o que toda conta tem que será importante em nosso exemplo ?
O que uma conta deve fazer ? Ou seja, qual será seu comportamento:
Veremos alguns exemplos abaixo:
Temos o modelo de como deverá ficar nosso objeto conta. Mas pra isso, precisamos definir uma classe, para que em tempo de execução, nosso objeto possua valores.
Precisamos definir os atributos dessa conta. São eles:
Nossa classe ficou assim:
public class Conta{ int numero; String cliente; double saldo; }Mas para rodar nosso programa, precisamos do nosso método main. Vamos então:
public class Testadora { public static void main(String[] args) { new Conta(); } }Sendo que, no exemplo acima, não temos nenhuma referência ao nosso objeto.
Precisamos de uma variável!
Do mesmo jeito que criamos uma variável do tipo inteira, por exemplo, criamos nossa variável do objeto.
Perceba que nosso tipo, ao invés de ser int, double ou String, é do tipo Conta.
Agora podemos instanciar:
Podemos encurtar essa leitura, ficando:
Além disso, podemos acessar e modificar os atributos de conta:
Além de tudo, vamos exibir agora o número, o titular e o saldo de nossa conta:
public class Testadora { public static void main(String[] args) { Conta conta1 = new Conta(); conta1.numero = 123; conta1.cliente = "João"; conta1.saldo = 1000.0; System.out.println("Número da conta: " +conta1.numero+ " o nome do titular: " +conta1.cliente+ " e o saldo atual da conta é: "+conta1.saldo); } }Podemos retirar o valor da conta, utilizando apenas:
Com isso, modificamos os atributos de um objeto do tipo conta, apenas utilizando o "."(ponto).
Entretanto, isso não é considerado uma boa prática. Vejamos o porquê.
Vamos lá!
Nosso método ficará assim:
public void sacar(int valorDoSaque){ }Public porque ele é um método público, isto é, qualquer outra classe de nosso sistema pode chamar esse método.
Void porque ele não vai retornar nada. Ele apenas vai executar a ação de sacar.
Nossa classe Conta ficará assim:
public class Conta{ private int numero; private String cliente; private double saldo; public void sacar(int valorDoSaque){ if(this.saldo >= valorDoSaque){ // Aqui, fazemos nossa verificação. O saldo atual tem que ser maior. this.saldo = this.saldo - valorDoSaque; //Se passar na condicional, vai realizar a subtração. System.out.println("Você acabou de sacar "+ valorDoSaque); //Vai exibir uma mensagem de confirmação }else{ // Caso NÃO passe na verificação, ou seja, se o saldo for menor que o saque System.out.println("Desculpe, mas você não possui saldo suficiente"); //Exibe uma mensagem } } }Vamos criar um método para depositar também:
public void depositar(int valorDeposito){ this.saldo = this.saldo + valorDeposito; System.out.println("Você depositou a quantia de " +valorDeposito); }Perceba também que, foi inserido antes dos nossos atributos o modificador private. Isso porquê agora, eles só serão acessíveis pela própia classe conta.
Como nossos atributos estão encapsulados, precisamos também de um método para consultar o saldo atual, certo ?
São o que chamamos de getters, pois eles vão recuperar (get = pegar) algum valor.
Vejamos sua implementação.
public int obterSaldo(){ return this.saldo; }Vejamos que ele retorna um valor do tipo inteiro, que nada mais é do que o nosso saldo.
Ele também não recebe nenhum parâmetros, afinal, ele não vai modificar nada.
Perceba o uso do this. Ele apenas quer dizer que estamos nos referenciando ao atributo saldo da própia classe. Isso ficará mais claro quando falarmos de herança.
Nossa classe Testadora ficará assim então:
public class Testadora { public static void main(String[] args) { Conta conta1 = new Conta(); // conta1.saldo = 1000.0; OPA! NÃO podemos mais nos referenciar aos atributos assim. conta1.depositar(1000.0); System.out.println("Saldo atual da conta é: " +conta1.obterSaldo()); conta1.sacar(700.0) System.out.println("Saldo atual da conta é: " +conta1.obterSaldo()); } }E aí, já se sente preparado ? Que tal você criar os getters e setters dos outros atributos para testar seu conhecimento ?
Qualquer dúvida, podem postar.
Para não me extender muito, vamos criar o método transfere, que vai transferir o saldo de uma conta para outra.
public void transferir(Conta contaDestino, double valorTransferencia){ this.saldo = this.saldo - valorTransferencia; contaDestino.depositar(valorTransferencia); }Perceba que, nosso método é um set, isto é, ele vai modificar valores, sem retornar nada.
Como parâmetro, devemos receber um outro objeto Conta, além do valor a ser transferido.
Primeiro vamos subtrair o valor da transferência da conta de origem, e depois realizar um depósito na conta de destino.
Vamos precisar instanciar 2 objetos conta em nossa classe Testadora.
// Veja que usamos variáveis diferentes. Cada uma aponta para um objeto diferente na memória Conta c1 = new Conta(); Conta c2 = new Conta(); // Depositamos os valores iniciais em cada conta. c1.depositar(1000.0); c2.depositar(100.0); // Vamos exibir o saldo das nossas contas System.out.println("Saldo da conta 1: " +c1.obterSaldo()); System.out.println("Saldo da conta 2: " +c2.obterSaldo()); // Aqui vamos transferir valor da conta 1(c1) para a conta 2(c2) a quanta de 200. // A conta que chamou o método é a conta de origem. A conta referenciada no parâmetro é a de destino. c1.transferir(c2, 200.0); // Exibir novamente os valores para notar as alterações System.out.println("Saldo da conta 1: " +c1.obterSaldo()); System.out.println("Saldo da conta 2: " +c2.obterSaldo());Muito bem pessoal, espero que tenham gostado desse tutorial, e que alguém possa ser beneficiado com ele.
Abraçoss e até a próxima !