Duvida estranha

5 respostas
Meth
Tava achando que os atributos funcionavam como registros e as classes as usavam como os funcoes usam... Se vc muda o valor de um atributo do registro no procedimento,muda para todos... Fiz um teste e nao funcionou...,agora eu fiquei sem entender a finalidade das variaveis fora de um bloco(atributos); achei que se uma classe chama-se determinado atributo e o modifica-se ,quando uma outra classe invoca-se o mesmo atributo ele estaria modificado..., vou colocar em pascal o que eu pensei que fosse pois eh o que eu domino,e sou muitoo ruim pra explicar as coisas... La vai: As duas funcoes fazem exatamente a mesma coisa das duas classes logo mais abaixo... Pascal
Program Pzim ;
 type
 conta = record
 saldo:real;
 dono:string;
 end;
 function main(var x:conta):string;
 
 
 begin
  x.saldo := 30000;
  main:='Valor de X alterado para 30000';
  
 end;
 
 function contaa(var x:conta):string;
  begin
  if x.saldo = 30000 then
  writeln('Comunicou!!')
  else
  writeln('Nao comunicou!!');
 
 end;
 var
 x:conta; 
 y:string;
 Begin
  writeln(main(x));
  writeln(contaa(x));
 End.
As duas classes ;JAVA
package objeto_classe;


public class Main {

    public static void main(String[] args) {
conta x;
x = new conta ();
x.saldo = 3000;
System.out.println("X com valor de 30000!!");
    }

}
package objeto_classe;


public class conta {
double saldo;
String dono;
public static void main(String [] args){
    conta x;
    x = new conta();
    if (x.saldo==30000){        System.out.println("Comunicou!!");
    }
 else{         System.out.println("Nao comunicou!!");
    }
 }
}

Eu fiquei sem entender pra serve um atributo...,e so mais uma duvida,existe alguma forma de fazer o valor do atributo valer para todas as classe????

5 Respostas

rmendes08
Meth:
Tava achando que os atributos funcionavam como registros e as classes as usavam como os funcoes usam... Se vc muda o valor de um atributo do registro no procedimento,muda para todos... Fiz um teste e nao funcionou...,agora eu fiquei sem entender a finalidade das variaveis fora de um bloco(atributos); achei que se uma classe chama-se determinado atributo e o modifica-se ,quando uma outra classe invoca-se o mesmo atributo ele estaria modificado..., vou colocar em pascal o que eu pensei que fosse pois eh o que eu domino,e sou muitoo ruim pra explicar as coisas... La vai: As duas funcoes fazem exatamente a mesma coisa das duas classes logo mais abaixo... Pascal
Program Pzim ;
 type
 conta = record
 saldo:real;
 dono:string;
 end;
 function main(var x:conta):string;
 
 
 begin
  x.saldo := 30000;
  main:='Valor de X alterado para 30000';
  
 end;
 
 function contaa(var x:conta):string;
  begin
  if x.saldo = 30000 then
  writeln('Comunicou!!')
  else
  writeln('Nao comunicou!!');
 
 end;
 var
 x:conta; 
 y:string;
 Begin
  writeln(main(x));
  writeln(contaa(x));
 End.
As duas classes ;JAVA
package objeto_classe;


public class Main {

    public static void main(String[] args) {
conta x;
x = new conta ();
x.saldo = 3000;
System.out.println("X com valor de 30000!!");
    }

}
package objeto_classe;


public class conta {
double saldo;
String dono;
public static void main(String [] args){
    conta x;
    x = new conta();
    if (x.saldo==30000){        System.out.println("Comunicou!!");
    }
 else{         System.out.println("Nao comunicou!!");
    }
 }
}

Eu fiquei sem entender pra serve um atributo...,e so mais uma duvida,existe alguma forma de fazer o valor do atributo valer para todas as classe????

Você deve declarar o atributo com a palavra chave static. Mas veja bem, eu acho que o seu problema não é esse. Acontece que em Java não existe escopo global como existe em Pascal ou Delphi (graças a Deus!!!). Como Java é uma linguagem organizada em torno da POO (Programação Orientada a Objetos) é interessante que você entenda o paradigma antes, e a apostila da Caelum é ótima para isso. Se você tentar pensar em Java exatamente como Pascal o sofrimento vai ser grande.

Meth

Realmente eu tou me batendo muito...,tou lendo e relendo a definicao de classe,objeto...,
Java eh muito mais abrangente que o pascal...,ta sendo um puto de um desafio pra mim aprender isso sozinho!!
Programacao procedural eh muitooo mais facil...
Ahh sim...onde eu colocaria o static??? =D

Fiz assim (so alterei essa classe e nao alterei a outra),e a msg "Nao comunicou" apareceu!!

package objeto_classe;


class conta {
static double saldo;
static String dono;
public static void main(String [] args){
    conta x;
    x = new conta();
    if (x.saldo==30000){        System.out.println("Comunicou!!");
    }
 else{         System.out.println("Nao comunicou!!");
    }
 }
}
rmendes08

Programacao procedural eh muitooo mais facil…

hehehe … é porque você ainda não teve que ler código de sistema procedural … principalmente quando você tem uma variável chamada “fValor” no escopo global e abaixo 2000 linhas que a utilizam de todas as maneiras possíveis …

M

Note: você cria um processo do Java para executar o primeiro trecho (que altera o valor para 30000). Após o valor ser alterado, a mensagem é exibida e a JVM é finalizada.

Quando você executa o segundo trecho (que inicia outro processo), o valor do saldo obviamente não será 30000. Será zero (que é o valor padrão para tipos numéricos em Java).

As variáveis globais funcionam, sim. Desde que se rode os diversos métodos no mesmo processo.

Além disso, em orientação a objetos existe o importante conceito de encapsulamento, que desencoraja o uso de variáveis dessa forma (a menos, é claro, que ela seja imutável).

Infelizmente existe um salto enorme entre programação estruturada e orientada a objetos. Não será viável tomar como referência linguagens como Pascal. Você terá que, praticamente, aprender a programar novamente (salvo, é claro, toda a parte de lógica).

rmendes08

marcobiscaro2112:
Note: você cria um processo do Java para executar o primeiro trecho (que altera o valor para 30000). Após o valor ser alterado, a mensagem é exibida e a JVM é finalizada.

Quando você executa o segundo trecho (que inicia outro processo), o valor do saldo obviamente não será 30000. Será zero (que é o valor padrão para tipos numéricos em Java).

As variáveis globais funcionam, sim. Desde que se rode os diversos métodos no mesmo processo.

Além disso, em orientação a objetos existe o importante conceito de encapsulamento, que desencoraja o uso de variáveis dessa forma (a menos, é claro, que ela seja imutável).

Infelizmente existe um salto enorme entre programação estruturada e orientada a objetos. Não será viável tomar como referência linguagens como Pascal. Você terá que, praticamente, aprender a programar novamente (salvo, é claro, toda a parte de lógica).

Assim, como se declara uma variável global em Java ?

Criado 7 de setembro de 2010
Ultima resposta 7 de set. de 2010
Respostas 5
Participantes 3