Depois de no primeiro artigo ter dado a conhecer a linguagem e ter introduzido os conceitos de objecto e mensagem, nesta 2ª parte, falando-vos ainda a título introdutório, vou começar por falar de algumas boas práticas da programação em Java para, em seguida, mostrar-vos os básicos para começarem a escrever os vossos programas (tipos de variáveis e operadores, estruturas condicionais, ciclos, etc..). E tenham em atenção que hoje vai haver trabalho de casa!
Boas Práticas a Programar
Muito importante em qualquer LP, não fugindo o Java à regra, são os standards que se devem seguir quando se programa e que, diferem um pouco de linguagem para linguagem. Seguir este tipo de normas, acima de tudo, facilita quem mais tarde vai agarrar no nosso código pois, para além de tornar o código “mais limpo”, torna mais fácil a sua compreensão. É também, pelas razões que iremos ver, uma forma de tornar o nosso trabalho mais produtivo.
Vou-vos falar das “boas regras” específicas do Java e de como programar numa LP object-oriented (OO).
Programar por Objectos
É um erro algo frequente utilizar-se uma LP object-oriented para programar como faríamos recorrendo a uma LP dum paradigma imperativo (como a linguagem C). No tutorial anterior expliquei o que era um objecto, agora vamos imaginar um objecto no mundo real.
Suponhamos, o Objecto Computador. O Objecto Computador, poderia-se dizer, é constituído por outros tantos objectos – Rato, Monitor, Teclado, Colunas, etc. Cada um desses objectos, funciona independentemente do contexto em que estão inseridos, ou seja, seja qual for o Computador (Objecto no global com todos os seus componentes) a que “pertençam” cumprem a sua função. O fabricante, aquando da construção do Rato, não pensa que é para funcionar “naquele” Computador mas, em qualquer Computador. Isto exemplifica como o programador deverá programar numa LP OO.
O código por nós produzido, quando se utiliza uma linguagem OO, deverá ser modular pensando sempre na sua reutilização. Quer isto dizer que, quando nos propomos a construir o objecto “ComputadorTipoA” (ou seja, desenvolver a classe “ComputadorTipoA”), devemos construir os objectos (definir as classes) Rato, Monitor, Teclado, etc como módulos separados e independentes. Desta forma quando estamos a construir o “Rato”, não temos de nos preocupar com as funções, por exemplo, do teclado. Só temos de definir que o nosso Rato tem o comportamento que se esperaria de um objecto com esse nome e funcionalidade se, receber X como entrada, tendo nesse caso Y como saída/resultado.
Se procedermos desta forma para todos os objectos em causa, na classe ComputadorTipoA, dizemos que sempre que fôr construido um ComputadorTipoA, deve ser adicionado um Rato, um Monitor, etc, não havendo necessidade de estar a definir novamente esses objectos. As vantagens, como já devem ter percebido tem a ver com o facto de que, quando quisermos construir um objecto ComputadorTipoB, TipoC, etc, apenas haverá necessidade de definir os pormenores relativos ao Computador do tipo em causa, os componentes do mesmo já estão definidos, podendo ser reutilizados. A isto chama-se programação modular e, tem como mais valias:
· Abstracção e divisão de um problema maior, dividindo-o em pequenos problemas que, conjuntamente, resolverão a nossa questão inicial;
· Reutilização de código em projectos futuros, poupando desse modo tempo de desenvolvimento, o que leva a uma maior produtividade/lucro.
Convenção de nomes em java
É importante no nosso código, utilizar os standards de nomes para a LP na qual estamos a programar. Isso facilita a compreensão do nosso código. Para Java, utilizam-se as seguintes convenções:
· Nome de Ficheiros – estes deverão começar por maiúsculas e ter um nome o mais descritivo possível. Caso se deseje atribui um nome com várias palavras, a primeira letra de cada uma delas deverá ser maíuscula. Exs.: Automovel.java, AutomovelPesado.java, Circulo.java, FiguraGeometrica.java, etc;
· Nome de Classes – deverão ser idênticos ao nome dos ficheiros retirando, o “.java”. Exs.: Automovel, AutomovelPesado, Circulo, FiguraGeometrica, etc;
· Nome de Métodos – segue as regras dos ficheiros/classes com ligeiras modificações: a primeira letra é uma minúscula, caso seja um método de atribuição de um valor a uma variável deverá começar por “set”, caso seja um método para obter o valor atribuído a uma variável deverá começar por “get”. Exs.: getPesoAutomovel(), setCorAutomovel(), getRaioCirculo(), setTipoFiguraGeometrica();
· Nome de Variáveis – situação idêntica à dos métodos (no caso de variáveis não existirá gets nem sets). Exs.: contador, limiteMaximo, nomeGestorConta;
· Nome de Constantes – em maíusculas. Se contiver várias palavras, estas deverão ser separadas por underscore (‘_’). Exs.: CONSTANTE_GRAVITACIONAL, MAX_PESO_PERMITIDO;
Palavras Reservadas
Ao definir os nomes das variáveis e métodos nos nossos programas, à que ter em atenção as palavras reservadas existentes na LP. Tal como em outras, existem palavras que estão “proibídas” de ser utilizadas uma vez que estas são nomes de métodos/tipos pré-definidos. Em Java são as seguintes:
private, protected, public, abstract, class, extends, final, implements, interface, new, static, strictfp, synchronized, transient, volatile, break, case, continue, default, do, else, for, if, instanceof, return, switch, while, assert, catch, finally, throw, throws, try, import, package, boolean, byte, char, double, float, int, long, short, super, this, void, const, goto, null, true, false.
Comentários
Importante também em qualquer programa independentemente da LP utilizada para o desenvolver, são os comentários. Estes deverão ser feitos sempre que exista um qualquer passo menos óbvio nos nossos programas, facilitando assim a compreensão dos mesmos.
Uma ferramenta muito útil e que deve ser utilizada para fazer a documentação dos nossos projectos (a documentação técnica) é o Javadoc. Esta ferramenta já vem com o SDK que necessitamos de instalar para programar em Java, como demonstrado no anterior tutorial. Esta ferramenta, de uma forma simples, permite criar documentação no formato da API do Java, sendo por isso uma mais valia para todos os developers.
Para conseguir tal feito, os comentários nos nossos programas, ao invés de no formato normal, terão de estar num formato especial – muito simplista – que será reconhecido e compilado pelo próprio compilador do Java, tendo como output a API do nosso projecto em formato HTML. Vamos então ver como devemos construir os comentários nos nossos programas:
· Existem dois tipos de comentários no formato Javadoc: Class-level Comments e Member-level Comments, qualquer um deles começa por ‘/**’ e acaba em ‘*/’;
· Class-level comments são utilizados para descrever a classe e são colocados logo acima da linha de código que inicializa a classe:

· Member-level comments servem para fazer a descrição dos construtores da classe, dos métodos da mesma, etc:

Generalizando, ou comentários são construídos no seguinte formato:

As tags mais utilizadas em Javadoc – apesar de existirem outras mais – são as seguintes:
o @author: Autor da classe;
o @param: parâmetro do método ou do construtor;
o @return: o que o método retorna;
o @throws: descreve uma excepção que poderá ser lançada pelo método;
o @exception: descreve uma excepção;
o @version: versão de uma classe ou de um método
Depois de termos os nossos comentários num formato Javadoc, para construir a nossa API, temos de executar o seguinte comando (existem mais flags que podem ser adicionadas, estes são os parâmetros base):
javadoc –d directoria_destino_api –sourcepath path_src_projecto
Existe muito mais informações sobre Javadoc – tags, flags de compilação, etc –, o que aqui foi apresentado foi o básico para utilizar a ferramenta. Para os mais curiosos, podem obter mais informações nos seguintes links:
· http://pt.wikipedia.org/wiki/Javadoc
· http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javadoc.html
· http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
Operadores
Agora que já conhecem a linguagem, como deverão programar na mesma e como comentar os vossos projectos, vou passar a apresentar-vos os pormenores da mesma, de modo a que finalmente lancem mãos à obra. Vou começar por vos apresentar os operadores existentes em Java:
· Operadores Aritméticos:
o Soma: +
o Subtracção: –
o Multiplicação: *
o Divisão: /
o Resto da Divisão: %
· Operadores de Atribuição:
o += : op1 += op2 à op1 = op1 + op2
o -= : op1 -= op2 à op1 = op1 – op2
o *= : op1 *= op2 à op1 = op1 * op2
o /= : op1 /= op2 à op1 = op1 / op2
o %= : op1 %= op2 à op1 = op1 % op2
· Operadores Unários: O mais (+) e o menos (-). Para mudar o sinal do operando
· Operador Instanceof: Permite-nos saber se um objecto pertence a uma classe ou não:
o NomeObjecto instanceof NomeClasse
· Operadores de Incremento e Decremento: São os operadores que nos permitem incrementar ou decrementar uma unidade a uma variável:
o ++
o —
o Ex.: se a variável ‘int i = 10’ e fizermos ‘i++’, i ficará com o valor 11.
· Operadores de Comparação:
o Maior do que: >
o Menor do que: >
o Igual a: ==
o Diferente de: !=
o Maior do que: >=
o Menor do que: <=
· Operadores Lógicos:
o «E» Lógico: && (devolve true se ambos forem true)
o «Ou» Lógico: || (devolve true se um fôr true)
o Negação: ! (devolve true se fôr false e vice-versa)
o «E» Bitewise: & (devolve true se ambos forem true mas avalia ambos)
o «Ou» Bitewise: | (devolve true se um fôr true mas avalia ambos)
· Operador de concatenação de Strings: ‘+’
· Operadores de bits:
o Shift direita: >>
o Shift esquerda: <<
o And: &
o Or: |
Tipos de Dados Primários (página seguinte)



















