Portal Chamar Táxi

Manual de Java

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
As classes em funcionamento



Descrição das classes, dos objetos e como se relacionam.

Por Victorino Blanco González






Como dita o título deste ponto um objeto é precisamente isso: "Uma classe em movimento". Podemos ver a relação entre classe e objeto deste modo.

Suponhamos por exemplo uma classe chamada "Mamífero". Como na "vida real" você pode encontrar pela rua com "Pessoas", "Cachorros", "Gatos" ... que evidentemente pertencem a essa classe "Mamífero", mas você não vai encontrar com um "Mamífero" por si só.

Mais ou menos essa é a relação entre classe e objeto. Uma classe é uma especificação de como deve ser um objeto para pertencer a essa classe e por conseguinte, um objeto é um exemplar individual de uma classe.

Tomando como exemplo nossa classe "Fichas" vemos que todas as fichas têm que ter uma cor como característica que a defina. Ou seja, nossos objetos "ficha" serão fichas brancas, pretas, etc.

Na hora de "agir" portanto será feito sobre um objeto em concreto. Em um objeto pode se acessar a seus métodos e às variáveis membros que tiver, sempre claro que sejam ambos declarados na classe como acessíveis.

A acessibilidade para métodos e variáveis depende em primeira instância da acessibilidade à classe a qual pertencem. Se a classe for acessível então depende em segunda instância destas normas:

Acessibilidade de variáveis e métodos: depende dos seguintes modificadores de acesso que se coloca (ou não) diante da variável em sua declaração ou do método em sua definição.
"public": Dá acessibilidade completa à variável, pode-se ver desde a própria classe, dentro e fora do mesmo "package" e em qualquer "subclasse" da classe na que se declara, estando no mesmo ou em diferente "package".
"protected": Pode-se acessar desde a própria classe, desde o mesmo "package" e desde qualquer "subclasse", porém não se pode ver desde uma classe de outro "package".
"private": Só se pode acessar desde a própria classe.
"package": É a opção por padrão (como se não fosse colocado nada). Proporciona acessibilidade desde o próprio "package" e portanto, logicamente desde a própria classe e ademais desde qualquer subclasse que esteja dentro do mesmo "package".

Uma vez tendo claras as normas sobre a acessibilidade em Java, veremos alguns exemplos de utilização dos objetos em Java.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Utilização dos objetos em Java




Descrição dos objetos. Como cria-los ou instancia-los a partir das classes e de sua utilização.

Por Victorino Blanco González






O primeiro que há que fazer para utilizar um objeto é tê-lo, não é? Portanto, vamos entender primeiro como se criam os objetos para depois utiliza-los.

Instanciação de objetos:

Para instanciar um objeto o método que se utiliza é "new". "New" cria um objeto da classe que lhe especificarmos, porém, antes disso temos que declarar a variável que conterá esse novo objeto. Vejamos em nossa classe Tabuleiro vista anteriormente.

Fichas estadoTabuleiro[][];
public Tabuleiro(){estadoTabuleiro=new Fichas [6][7];};

Nessas duas linhas se engloba todo o mecanismo de criação de um objeto. Na primeira linha se declara uma variável "estadoTabuleiro" da classe "array". A classe "array" é uma classe utilitária de Java que está incluída em "Java.lang" e portanto, como já comentei uma vez e explicarei melhor mais adiante, se encontra disponível desde qualquer programa em Java.

À princípio esta variável está vazia, não contém nenhum objeto, porém está "preparada" para conter um objeto da classe "array".

Na segunda linha desse código há mais o que comentar: Trata-se da definição de um construtor simples para a classe "Tabuleiro".

Quando se executa uma sentença "new" para criar um objeto de uma classe, o que realmente se faz é chamar ao método construtor correspondente a essa classe. Por exemplo, se executamos esta sentença:

Tabuleiro meuTabuleiro = New Tabuleiro();
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Estamos chamando ao método anterior:

public Tabuleiro(){estadoTabuleiro=new Fichas [6][7];};

Portanto o que conseguimos é criar a variável interna de "Tabuleiro", que chamamos "estadoTabuleiro" como um objeto "array" de dimensões 6x7 que são as dimensões de um tabuleiro de "quatro em linha". Como vemos, igual que com nossa classe tabuleiro e qualquer outra classe, também usamos "new" para criar o "array".

Por último, e como se pode compravar, para definir um construtor para nossa classe simplesmente definimos um método que como peculiaridade tem o mesmo nome da classe na qual se define. Enquanto ao seu modificador de acesso o normal é que seja "public", porém, pode ser também "private" em cujo caso só será acessível através de um método "static" da mesma classe. Já explicaremos este último melhor, por agora simplesmente temos só que saber que existe.

Passo de mensagens:

Como "passo de mensagens" entende-se em programação orientada a objetos o que sempre chamamos em programação tradicional: "chamada a uma função". No fundo se pensamos vemos basicamente que:
Em primeiro lugar: Os programas "sobre o papel" são as classes.
Em segundo lugar: As classes "sobre papel" se relacionam com outras classes. Por exemplo, nossa classe Ficha utiliza para definir seu parâmetro "cor" à classe "String" própria de Java.
Em terceiro lugar: Na "vida real", ou seja, em funcionamento, as classes mostram-se como "objetos".
Como conclusão: São os objetos os que colaboram e se relacionam com outros objetos, e o fazem mediante o "passo de mensagens".
Para executar um método de uma classe se utiliza esta sintaxe:

NomeDaClasse.nomeDoMetodo(parâmetros do método);

Os passos de mensagens têm uma vantagem com respeito Às chamadas à função das linguagens tradicionais. A vantagem é que sempre levam um parâmetro implícito: O objeto ao que pertence o próprio método. Veremos com um exemplo muito simples.

Imaginamos um método e uma função que simplificam uma fração passada como parâmetro. A diferença seria a seguinte ao utilizar tanto o método como a função.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Programação tradicional:

fracao_simp = simplifica_fracao(fracao);
/*fracao_simp salva o resultado
de aplicar a funcao simplifica_fracao
ao parametro fracao*/

Programação orientada a objetos:


ObjetoFracao.simplificaFracao();
/*este caso poderiamos entender como que
simplemente decimos a fracao que se
simplifique a ela mesma "como ela sabe" */

Como vemos em Programação orientada a objetos não se passa como parâmetro a fração a simplificar visto que é o mesmo objeto que é a fração e o que por sua vez possui o método para simplifica-la de acordo com seus atributos internos.

Acesso às variáveis internas de um objeto:

Para acessar a uma variável interna de um objeto esta tem que ser acessível segundo as normas vistas anteriormente. No caso de que simplesmente podamos acessá-la com a seguinte sintaxe:

NomeDaClasse.nomeDaVariavelInterna;
 
Topo