Classes e objetos
Autor: Sandoval | Publicado: 2011-03-15T15:46:00-07:00



&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CLASSES E OBJETOS
Uma classe é um tipo definido pelo usuário que contém o molde, a especificação para os objetos, algo mais ou menos como o tipo inteiro contém o molde para as variáveis declaradas como inteiros. A classe envolve, associa, funções e dados, controlando o acesso a estes, definí-la implica em especificar os seus atributos (dados) e seus métodos (funções).Um programa que utiliza uma interface controladora de um motor elétrico provavelmente definiria a classe motor. Os atributos desta classe&nbsp; seriam: temperatura, velocidade, tensão aplicada. Estes provavelmente seriam representados na classe por tipos como int ou float. Os métodos desta classe seriam funções para alterar a velocidade, ler a temperatura, etc.Um programa editor de textos definiria a classe parágrafo que teria como um de seus atributos uma String ou um vetor de Strings, e como métodos, funções que operam sobre estas strings. Quando um novo parágrafo é digitado no texto, o editor cria a partir da classe Parágrafo um objeto contendo as informações particulares do novo texto. Isto se chama instanciação ou criação do objeto.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ESPECIFICANDO UMA CLASSE
Suponha um programa que controla um motor elétrico através de uma saída serial. A velocidade do motor é proporcional a tensão aplicada e esta proporcional aos bits que vão para saída serial e passam por um conversor digital analógico.Vamos abstrair todos estes detalhes por enquanto e modelar somente a interface do motor como uma classe, a pergunta é que métodos e que atributos deve ter nossa classe, que argumentos e valores de retorno devem ter os métodos?
Representação da velocidade: 
A velocidade do motor será representada por um atributo inteiro (int). Usaremos a faixa de bits que precisarmos, caso o valor de bits necessário não possa ser fornecido pelo tipo , usaremos então o tipo long, isto depende do conversor digital analógico utilizado.
Representação da saída serial:
O motor precisa conhecer a sua saída serial, a sua ligação com o “motor do mundo real”. Suponha uma representação em hexadecimal do atributo endereço de porta serial, um possível nome para o atributo: enderecomotor. Não se preocupe em saber como usar a representação hexadecimal.
Alteração do valor da velocidade:
Internamente o usuário da classe motor pode desejar alterar a velocidade, cria-se então o método: public void altera_velocidade(int novav);. O código anterior corresponde ao cabeçalho do método ele é definido junto com a classe motor, associado a ela. O valor de retorno da função que “implementa” o método é void, poderia ser criado um valor de retorno (boolean) que indicasse se o valor de velocidade era permitido e foi alterado ou não era permitido e portanto não foi alterado.  O ato de invocar um método também é&nbsp; chamado de passar uma mensagem para o objeto que está executando este método.Não faz sentido usar, chamar, este método separado de uma variável do tipo motor, mas então porque&nbsp; na lista de argumentos da função não se encontra um motor? Este pensamento reflete a maneira de associar dados e código (funções) das linguagens procedurais. Em linguagens orientadas a objetos o código e os dados são ligados de forma diferente, a própria declaração de um tipo definido pelo usuário já engloba as declarações das funções inerentes a este tipo. O objeto ao qual é aplicado o método é passado de outra forma.Note que não fornecemos o código do método, isto não é importante, por hora a preocupação é com a interface definida pela classe: seus cabeçalhos de métodos e atributos. Apenas pense que sua interface deve ser flexível de modo a não apresentar entraves para a criação do código que seria feita numa outra etapa. Nesta etapa teríamos que imaginar que o valor numérico da velocidade deve ir para o conversor onde irá se transformar numa diferença de potencial a ser aplicada nos terminais do motor, etc.

Motorpublic int velocidade;public int endereco;public void altera_Velocidade(int novaVel);
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;OBJETOS EM JAVA
Objetos são instâncias de uma classe. Quando um objeto é criado ele precisa ser inicializado, ou seja para uma única classe de nome EstudanteDeGraduacao podemos ter vários objetos durante a execução de um programa.Estudante de graduação Andre; Identificação 940718; Curso&nbsp; Computacao | Estudante de graduação Luiza , Identificação 893249, Curso Medicina... A classe representa somente o molde para a criação dos objetos, estes sim contém informação, veja tópico CLASSES E OBJETOS.O atributo Identificação tem valor 940718 para a instância (objeto) André da classe Estudantes de Graduação.


Coleta automática de lixo: 
A desalocação do objeto é feita pela linguagem, (“automatic garbage collection”), você não precisa se preocupar com ela. Após o fecha chaves de main, a memória do objeto umcirc já pode ser liberada, o que normalmente não ocorre de imediato, pois o ambiente da linguagem executa um “tread” em baixa prioridade que libera de tempos em tempos os espaços inutilizados de memória, tirando proveito por exemplo de eventuais pausas de iteração do usuário com o programa. Por executar em um “tread” entenda paralelamente ou quase paralelamente, voltaremos a este tópico mais adiante.


      COMPILANDO UM   PRIMEIRO PROGRAMA:      
      
      
  
      1-Certifique-se de ter   adicionado a sua lista de path’s o path do compilador e interpretador Java. Javac e Java respectivamente.<!--[if supportFields]><span
  style='mso-element:field-begin'><span
  style='mso-spacerun:yes'> XE “Compilação”<![endif]--><!--[if supportFields]><span
  style='mso-element:field-end'><![endif]-->2-Crie o arquivo ao lado em   um diretório qualquer (“folder” para usuários mac) e salve com o nome: HelloInternet.Java
3-Chame o compilador Java para este arquivo: Javac HelloInternet.Java
4-Seu diretório deve ter   recebido um novo arquivo após essa compilação: HelloInternet.class
5-Chame o interpretador Java para este arquivo (omita a extensão .class   de arquivo): Java   HelloInternet
6-Observe o resultado na   tela: Hello   Internet!      


         //Comentario de uma linha
public class HelloInternet {

&nbsp; public static void main (String args[]) &nbsp; {
&nbsp; System.out.println("Hello   Internet!");
&nbsp; }

}
<!--[if gte vml 1]><v:shape
   id="_x0000_i1026" type="#_x0000_t75" style='width:57pt;height:57pt'>    <v:imagedata src="file:///C:\Users\sandoval\AppData\Local\Temp\msohtmlclip1\01\clip_image003.gif"
    o:href="file:///C:\JAVA\DOCS\MJAVATUT\RESULT~2.BMP"/>   <![endif]--><!--[if !vml]--><!--[endif]-->&nbsp;Hello   Internet!