Programação em Java – Iniciação - Por Bruno Rodrigues
Date : 10 de Dezembro de 2009
Este vai ser o meu primeiro artigo no Pplware, como tal, antes de mais peço desculpa por qualquer parte deste post “menos bem conseguida”. Quero-vos falar da Linguagem de Programação (LP) Java. O Java é uma LP object-oriented que surgiu no início dos anos 90, criada pela Sun.
Obviamente, dirão alguns, estas estatísticas poderão estar a mostrar resultados tendenciosos mas, o que é certo é que qualquer que seja a fonte que encontrem, encontrarão sempre o Java pelo menos no top 5, o que diz muito das suas potencialidades.
Principais Vantagens
Não basta dizer que Java é bom só porque sim, quanto a mim, eis as principais “virtudes” do Java enquanto LP:
Object-Oriented;
Multi-Plataforma ("write once, run anywhere" – apesar de às vezes não ser bem assim); Garbage Collector;
Sintaxe muito user-friendly e, quanto a mim, muito intuitiva mesmo para novatos; Programas muito bem estruturados devido à organização por packages e classes e, devido à capacidade de hierarquizar estas últimas;
Bom mecanismo para apanhar e tratar excepções;
Web-Services, Applets, Manuseamento de ficheiros, e muito muito mais do qual espero vir a ter tempo para falar futuramente).
O que eu preciso para programar em Java no meu PC
Para começar a programar em Java não precisa de muita coisa. Antes de mais precisa de fazer o download do JDK (atenção que somente o JRE Java Runtime Environment não serve) -Java Development Kit. Poderá fazê-lo do seguinte site: http://java.sun.com/products/archive/. Em seguida, aconselho a instalação de um IDE - Integrated Development Environment - para desenvolver em Java. Para iniciar talvez um mais simples como o Notepad++ ou o GEdit seja o indicado, no entanto, se pretender avançar a fundo na programação em Java, deverá recorrer a uma ferramenta mais completa pois estas ajudam (e muito!) a aumentar a produtividade.
Recomendo, pela minha experiência, o Netbeans (da Sun tal como o Java) ou, o meu preferido, Eclipse. Estes programas poderão ter uma curva de aprendizagem não muito acentuada inicialmente mas, o tempo investido nos mesmos acabará por compensar a longo prazo (no futuro vou tentar escrever uns quantos tutoriais acerca dos mesmos).
Estrutura e Sintaxe
Definição e Diferenças entre Classe e Objecto
Para programar em Java é fundamental perceber o que são classes e objectos. Sendo esta uma linguagem object-oriented, o que o programador faz é nada mais do que definir os objectos e as mensagens com que será possível comunicar com os primeiros.
No caso da imagem anterior, o utilizador definiu o objecto tendo no seu interior os métodos A, B, C, D e E. Definiu que o utilizador teria acesso aos métodos A, B e C e, que ao “pressionar o botão A” este internamente accionaria o “botão D” e que, ao pressionar os “botões” B ou C, este accionam o “botão” E. Não é necessário haver acções internas interligadas, poderia-se definir um “botão F” possível de aceder do exterior da “caixa” que quando o utilizador
pressiona-se limitava-se a realizar as suas acções.
Quanto às diferenças, se me perguntarem “O que entendes entre classe e objecto? Mas quais são as diferenças?”, eu diria que classe é um modelo ou especificação que define um tipo de objecto enquanto que o objecto em si é uma ferramenta, uma forma de comunicação entre o utilizador e o seu programa, ferramenta essa que apresenta um conjunto de variáveis e métodos definidos na classe. A comunicação é feita enviando mensagens para os objectos. Essas mensagens não são nada mais do que “chamar” os métodos que o objecto disponibiliza para o exterior.
Como definir uma classe
A primeira declaração é sempre o package onde a classe se insere (caso esteja dentro de algum obviamente). Em seguida são adicionados os imports de outras packages (bibliotecas) das quais pretendemos utilizar alguns objectos e respectivos métodos, na classe que estamos a definir.
O nome da classe é sempre igual ao nome do ficheiro onde ela está a ser criada (ou seja, o ficheiro teria o nome MinhaClasse.java).
O método com o mesmo nome da classe é nada mais do que o construtor desta. O construtor de uma classe é um método (função) especial que não retorna qualquer valor e que, é
E, para finalizar, declaramos e definimos todos os métodos da nossa classe. Caso este seja um ficheiro que será executado, deverá conter um método “especial”, o método main, que é
declarado da forma indicada. Comentários
Para comentar uma linha individualmente utiliza-se ‘//’, para comentar um bloco utiliza-se ‘/* texto a comentar */’.
Modificadores de Acesso
Os modificadores de acesso são palavras reservadas que, quando colocados na declaração de classes, métodos ou variáveis, modificam/limitam o modo como se pode aceder aos mesmos. Existem os seguintes modificadores de acesso:
subclasse;
public – sem qualquer restrição de acesso;
static – a declaração de um método ou de uma variável static serve para:
aquando a declaração de uma variável dentro de uma classe, para que todas as instâncias de objectos dessa classe possam aceder a essa variável como sendo comum entre todas elas. Ou seja, quando alteram a variável numa das
instâncias criadas, o seu valor será alterado em todas as instâncias daquele mesmo objecto;
quando utilizado na definição de um método para que este seja utilizado apenas na sua classe e não nas instâncias da mesma.
Juntamente com estes últimos, podemos ainda utilizar dois outros modificador: abstract e final.
O abstract quando se aplica a métodos, serve para indicar que o método em causa deverá ser definido nas suas subclasses (classes que herdem a classe onde o método foi definido). No caso das classes, indica que a classe não está completamente definida e como tal não pode ser instanciada (utilizado, por exemplo, em Interfaces).
Já o final, utiliza-se para declarar constantes, ou seja, valores que não são alterados durante a execução de um programa.
Declaração de variáveis
Vamos agora ver alguns aspectos relacionados com a síntaxe da linguagem. A declaração das variáveis obedece à seguinte forma:
Ou seja,
[modificador de acesso] tipoVar nomeVar[ = valorInicial];
Nos objectos que são estruturas de dados pode-se (deve-se – sempre que seja possível dentro do contexto – diria eu) definir a seguir ao tipo do objecto o tipo de dados que o objecto recebe entre . Para qualquer declaração de um objecto, deverá inicializar-se (não é obrigatório mas terá de ser feito antes de ser utilizado) o mesmo recorrendo ao método especial new().
O que difere um método de outro em Java é a sua assinatura (nome, valor de retorno e parâmetros de entrada. Como tal, um método poderá ser definido da seguinte forma:
É possível utilizar-se um método de uma classe chamando o mesmo dentro dessa mesma classe se este for static ou, declarando um objecto do tipo ClasseDoMetodoAChamar e chamar o dito método (A.B – chama o método B sobre o objecto A, ou seja, o objecto A disponibiliza o método B para para ser invocado e nós invocamo-lo utilizando a notação objecto(ponto)método ).
Quando uma classe faz extends de uma outra classe, está a herdar todos os métodos e variáveis definidos na classe que foram criados nessa classe. No entanto, se essa última classe definir uma variável/método que já exista na classe herdada, será feito um override, ou seja, ignora a criação prévia na “classe pai” (o termo é superclasse). Vejam o exemplo
seguinte:
O Java não suporta herança múltipla, ou seja, apenas pode “extender” uma classe. No entanto, pode implementar (implements) várias Interfaces como vamos ver.
Nested Classes
São classes definidas dentro de classes e que serão utilizadas no contexto destas últimas.
Exemplos de Código
Soma 2 números
Compilar e executar os nossos programas
Para correr os programas que desenvolvemos, temos de primeiro compilar o ficheiro .java por nós criado e depois correr o executável gerado. Para tal:
% java NomeFicheiro
Notas:
O nome do ficheiro contendo código tem de ter o nome da classe executável mais a extensão .java
A compilação da classe dá origem a um ficheiro com o mesmo nome, mas com a extensão .class
Para executar, chama-se o nome da classe e não o nome do ficheiro (ex: java Hello e não java Hello.class)
Notas Finais
Nos próximos tutoriais irei dar a conhecer alguns aspectos mais “avançados” não mencionados neste tutorial. Espero que tenham gostado e que seja útil a alguém.
Links Úteis:
Produtos Java (JRE, JDK, JCE, etc) Fórum Java Programming