Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Acessando e modificando variáveis de Classes e Objetos

Visto para que servem os objetos e classe em Java, como declarar, criar uma classe e instanciar um objeto, vamos agora, nesta seção, colocar algumas variáveis dentro de nossa classe e aprender como atribuir valores para elas, bem como acessá-las.

Este tutorial é o primeiro passo para criarmos atributos (características) em nossas classes.


Variáveis de métodos e Variáveis de Classes

A diferença das variáveis declaradas nas classes daquelas declaradas no método 'main' ou em outros métodos (que você aprenderá a criar numa seção futura do curso), é que nos métodos elas são locais e temporárias.

Ou seja, as variáveis locais método podem ser acessadas somente dentro daquele método, e quando este acaba, seu valor é perdido.

Quando declaramos um objeto de uma classe, suas variáveis passam a existir a partir daquele momento até enquanto o objeto existir.
Quanto ao seu acesso, o Java provém artifícios interessantíssimos de segurança. Podemos declarar variáveis de uma classe como 'public' (que podem ser acessados de qualquer lugar do programa), 'private' (só elementos da própria classe podem acessar esses dados) e 'protected' (só elementos da própria classe e subclasses que podem ver essa variável).

Veremos mais isso em Encapsulamento, numa seção futura do nosso curso online de Java, quando falarmos mais sobre Orientação a Objetos. Por hora, saiba apenas que existe e para que servem - segurança e organização.


Criando classes com atributos

Voltando a nossa classe "Aluno", vamos criar 3 variáveis: "Nome", que vai receber o nome do aluno e "notaMat" e "notaFis" que vão receber a nota de matemática e física do aluno.
A nossa classe ficará:

public class Aluno {
    public String nome;
    public double notaMat,
                         notaFis;
}


Sim, simplesmente isso.
Declaramos as variáveis como 'public' porque vamos acessá-las de outra classe, a classe "PrimeiraClasse", que contém o método 'main'.
Quando estudarmos Métodos, mais adiante em nosso curso online de Java, veremos como declarar esses atributos de forma 'private', de modo que eles ficam inacessíveis à outras classes. E como vamos acessar esses dados então? Através de métodos dessa classe.
Assim podemos controlar como essas variáveis serão usadas.

Alterando e Acessando atributos de uma classe

Variáveis criadas, vamos dar valor a elas. Vamos usar a classe Scanner para perguntar ao usuário o nome do aluno e suas notas.

Note que, se estas variáveis estivesse na classe principal, que contém o método main, simplesmente atribuiríamos valores da seguinte forma:
notaMat = [numero]

Porém, essas variáveis não estão nessa classe. Estão em outra.
Então temos que acessar através do nome do objeto.
No meu caso, declarei o objeto Aluno com o nome "patropi", então para acessar seus elementos, simplesmente vamos usar:
patropi.notaMat

Ou seja: nomeDoObjeto.nomeDaVariavel;

Então, nossa classe principal, que instância um objeto, preenche o nome e duas notas do Aluno, depois mostra esses valores e a média será:

PrimeiraClasse.java

import java.util.Scanner;
        
public class PrimeiraClasse {

    public static void main(String[] args) {
        Aluno patropi = new Aluno();
        Scanner entrada = new Scanner (System.in);
        
        System.out.print("Nome do aluno: ");
        patropi.nome = entrada.nextLine();
        
        System.out.print("Nota em Matemática: ");
        patropi.notaMat = entrada.nextDouble();
        
        System.out.print("Nota em Física: ");
        patropi.notaFis = entrada.nextDouble();
        
        //Exibindo os dados
        System.out.printf("O aluno \"%s\" tirou %2.2f em Matemática, "
                + "%2.2f em Física e obteve média %2.2f\n", patropi.nome,
                                                        patropi.notaMat,
                                                        patropi.notaFis,
                                                        (patropi.notaMat+patropi.notaFis)/2);
    }
}

Aluno.java
public class Aluno {
    public String nome;
    public double notaMat, 
                  notaFis;
}


Dentro do printf usamos \" para exibir aspas duplas.

34 comentários:

Anônimo disse...

Devido o nível da dificuldade do
assunto abordado creio eu que
ficaria melhor para fazer...

1 a classe Aluno com os

atributos, métodos e variáveis.
E na classe primeiraClasse
instanciar ou "chamar" os mesmos
alunos da classe Aluno.

exemplo...

Aluno FulanodeTal = new Aluno();

Anônimo disse...

Não esqueçam do "Case sensitive"

ou seja, pro JAVA as variáveis:

Aluno e ALUNO e aLUNO sao diferentes (!=)



Mesmo modo criado mesmo modo chamado

Aluno == Aluno

ok !!

Apostila Java Progressivo disse...

Caro Anônimo,

Seguindo o roteiro do curso, para os iniciantes, o assunto métodos ainda não foi tratado (será a próxima seção).

Essa lição é ensinando o básico de Classes e Objetos...só declarando, instanciando e acessando os elementos.

O próximo artigo já é uma introdução sobre os Construtores.

Apostila Java Progressivo disse...

Olá Anônimo de baixo, você está certo.

Conforme escrevemos em um dos primeiros artigos do curso, quando ensinamos a cria o primeiro programa em Java, a linguagem é mesmo case sensitive!

Unknown disse...

A sequência para mim, está perfeita, sem complicações, estou gostando muito do curso...

Unknown disse...

Para mim está perfeito, sem colocar nem tirar nada. Obrigado...

Java Progressivo disse...

A equipe agradece seu feedback, Alessandro.

A apostila de Java é feita pros leitores mesmo. É sempre bom quando retornam alguma sugestão, crítica ou elogio.

Bons estudos.

Unknown disse...

Realmente entender o conceito e funcionamento das classes e objetos é um pouco complicado no início. Mas esse curso tem sido bem esclarecedor. Estou gostando bastante.
Parabéns!!!!

Unknown disse...

Realmente,
O curso é ótimo.

Parabéns!

Anônimo disse...

Execente, Muito bom !!!!

Machado disse...

Perfeito!
Uma excelente aula. Eu sou totalmente leigo e estou adorando as aulas rsrsrs
OBRIGADO MESTRE!!!
=B

Anônimo disse...

Eu acho Java um saco.

Anônimo disse...

Esta de parabéns as aulas são top, gostaria de saber o significado disso
%s e %2.2f desde já obrigado e sucesso...

Unknown disse...

Bom eu estava estudando os tipos de números e lá vc disse que o computador só entende numero decimal com ponto. Ai eu fui fazer esse exemplo de "Acessando e modificando variáveis de Classes e Objetos". Quando o programa me solicitou a primeira nota eu estava coloca um número decimal com ponto (Ex:7.5). O programa tava dando erro. Fiquem revendo o código várias vezes, quando aí testei o mesmo número com virgula ao invés de ponto e o programa não apresentou erro. Você poderia explicar melhor esse lance dos números decimais na linguagem Java?

Apostila Java Progressivo disse...

Pois é Tarcísio, pelo que andamos ouvindo, tem algo diferente.

Creio que se instalar o Java com alguma opção pra língua portuguesa, ele faz essa troca naturalmente, pois para nós brasileiros o certo de um número decimal é com vírgula, e não ponto.

Anônimo disse...

aquele Aluno como tipo da variavel que ta meio confuso na explicação cara ;s

nanocardoso disse...

Java progressivo me desculpe mas essa é pro último post anônimo (eu sei que vc n vai publicar msm (mas tb sei que ta cheio de vontade)): "Cara você leu o conteúdo? Deixa de ser lerdo ohhh apagado... Um negócio simples desse... Tem que ler pow..."

dinbra948 disse...

Excelente aula!espero conseguir acompanhar tenho dificuldade em abstrair os conceitos de manipulação de classes.

dinbra948 disse...

Excelente aula! gostei muito, parece que programar em Java é muito bom depois que se aprende. É super versátil.

Unknown disse...

Muito bom esse material...Um dos melhores que já encontrei até hoje. Descomplicado e fácil de entender. Parabéns!

Anônimo disse...

O meu esta dando erro fiz igual o que esta ai e mesmo assim esta com erro,uso netbeans 8.0 alguém sabe o que pode ser

jardelsantana disse...
Este comentário foi removido pelo autor.
Anônimo disse...

Olá,

Fiz tudo conforme exemplo, mas recebi uma mensagem assim ao executar:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
symbol: class Aluno
location: class primeiraclasse.PrimeiraClasse


Parace que ele não consegue achar a classe Aluno, pois não reconhece o comando .

Alguma ideai do que eu possa ter errado?

Obrigado

Anônimo disse...

Q é PATROPI? ALGUEM ME EXPLICA

Anônimo disse...

Olá, tb me deparei com o erro "Exception in thread...", no meu caso, "alterei" o código que exibe as informações, e funcionou.

codigo tutorial:

//Exibindo os dados
System.out.printf("O aluno \"%s\" tirou %2.2f em Matemática, "
+ "%2.2f em Física e obteve média %2.2f\n", patropi.nome,
patropi.notaMat,
patropi.notaFis,
(patropi.notaMat+patropi.notaFis)/2);

-----------------------------------------

meu codigo:
System.out.printf("O aluno " + protopi.nome + "\nNota em Matematica: " + protopi.notMat + "\nNota em Fisica: " + protopi.notFis + "\nMedia Final: " + (protopi.notFis+protopi.notMat)/2);

Unknown disse...

Irá dar um erro se você digitar um numero com ponto = 3.0
por causa que ele vai ler a formulação do seu teclado que está em PT
então podemos resolver de duas formas.

1 - podemos usar tbm input.useLocale(Locale.US);

2 - donaFifi.notaF = Double.parseDouble(teclado.nextLine());

Unknown disse...

Curso show de bola, estou a aqui a cada etapa aprendendo bastante, tenho algum conhecimento, pois faço programações de robo abb, e tb tive uma experiencia em portugol, então muitas funções são bem parecidas. Mais estou aqui com vontade de aprender java.

Parabens instrutor, que possa ter mais pessoas com atitudes igual a sua, ensinando de um jeito facil e prazeroso de aprender.

att

marco disse...

Obrigado está clareando bastante, não sei o que seria se não tivesse o Java Progressivo!

Anônimo disse...

Boa tarde, muito bom o conteúdo do site e as explicações... Porém pra mim não ficou claro essa declaração:

System.out.printf("O aluno \"%s\" tirou %2.2f em Matemática, "
+ "%2.2f em Física e obteve média %2.2f\n", Pedro.nome,
Pedro.notaMat,
Pedro.notaFis,
(Pedro.notaMat+Pedro.notaFis)/2);

esses %2.2f mt confuso

Luan Felipe disse...

Perfeito, muito obrigado, o curso é simples e bem objetivo. O jeito vomo ele fala, como ele explica é bem natural, como se fosse de aluno para aluno.

Rodrigo Castro disse...

Cara, parabéns pelo ótimo trabalho. Super obrigado mesmo. Talvez eu tenha chegado atrasado aqui(em 2016), mas está sendo surpreendente o quão bem feito e eficiente é esse curso. Forte Abraço, e que o Universo te dê em dobro o retorno pelo esforço de disponibilizar e dividir o conhecimento com quem precisa. Forte Abraço!! Rodrigo.

Cássio Vidigal disse...

Comecei a acompanhar os tutorias do JavaProgressivo há 4 dias. Haviam uns 10 anos que eu não programava e já estou conseguindo implementar algumas coisas que certamente me ajudarão no meu doutoramento. Os textos são bem leves e os exemplos e exercícios são extremamente didáticos. Vou lembrar de colocar o JavaProgressivo nos agradecimentos na minha tese.

Unknown disse...

simplesmente ótimo...
sou programador a mais de 26 anos ... só que viciado em uma unica linguagem usada por uma grande software house... em busca de mais conhecimentos nunca quis estudar Java pq tinha MEDO ... nao ia entender....
Obrigado ... até o vovo aqui ta entendendo tudo ... estou me divertindo aprendendo

Anônimo disse...

Depois de muita pesquisa na net descobri que para solucionar o erro Exception in thread stack overflow error, basta acrescentar static nos objectos do tipo Aluno

Contribuir com o Java Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo


Tutoriais de Java