Programação em Java – Iniciação II – Por Bruno Rodrigues
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)
Este artigo tem mais de um ano
Recomendo que o próximo tutorial tenha uma pequena secção a explicar algumas das excepções mais comuns em Java. Normalmente costuma ser onde os iniciados tem mais chatices. 🙂
Mas realmente esqueci-me de dizer, o tutorial está bem bom. Good job 😀
Muito bom sem dúvida.. Agora vou ter de ir fazer os trabalhos de casa
Está muito bom este tutorial, mas, se me permites, tenho aqui alguns reparos a fazer.
“…recorrendo a uma LP dum paradigma funcional (como a linguagem C).”
Esta afirmação, na minha opinião, está errada. A linguagem C enquadra-se no paradigma imperativo e não funcional. Paradigma funcional implica algo que não tem sequência e é digamos “intemporal”. Ora, um programa C implica uma sequência de instruções que são executadas ao longo do tempo e , por isso, enquadra-se no paradigma imperativo.
Um exemplo do paradigma funcional é o Haskell.
Os operados bitwise que referes como pertencentes aos operadores lógicos, na minha opinião não estão bem enquadrados. Esses operadores não retornam um “booleano”. São operações sobre bits e aí referes bem o “bitwise”.
De resto, está muito bom e quero dar aqui os meus parabéns.
Espero que consideres esta crítica como algumas reflexões sobre o que li.
cumps
Olá,
Sim, tens toda a razão, deveria ser “imperativo” e não “funcional”. Funcional é o bom do Haskell, LISP,etc.. 🙂
Obrigado pelo reparo, é o que dá fazer as coisas às tantas da manhã 😛
Corrigido.
A propósito, grande tutorial!
Bom dia. Não sou da área de informática mas os posts estão bons e apelativos a uma breve incursão de exploração :)… Parabéns. Só iria sugerir a disponibilização das duas “aulas” em pdf para uma consulta mais fácil e offline ;).
Desde já o muito obrigado.
Cumps
Muito bom tutorial. É uma linguagem que nunca usei (por não saber), mas agora tenho tudo para me tornar um Master 🙂
Parabén Bruno pelo excelente tutorial.
Cumps
Exclente este post. Eu acabei a pouco o curso de programador e o java sem duvidas e a linguagem de eleição.
Mas como disse estou a começar e este post deveria ter aparecido a 3 anos atras!!!
Bruno por favor continua sim!!!
Não era Bruno mas sim o Sr. Hélio Moreira.
Desculpem.
Sou eu (Bruno) que faço os artigos e o Hélio coloca-os no site 😉
Bem então muito obrigado aos dois!!!
Uma sugestão ou um pedido…para quando um tutorial para SERVLET???Ligação á base de dados???
Um abraço.
Sinceramente acho que está um tutorial algo para o complexo e nota-se muitos erros de português, devias ter revisto melhor o artigo. De resto até está bastante completo.
Erros de português?!
É possível mas assim à primeira não identifico nenhum. Quando assim fôr diz onde estão para que possa ser corrigido. Obrigado pelo reparo 🙂
Quanto ao tutorial estar complexo isto é iniciação para quem já tem noções de programação e não para leigos na matéria como já foi dito por alguém no meu anterior artigo.
Só detectei 1 erro de Português, na parte das “Palavras Reservadas”.
Onde está:
“…nos nossos programas, à que ter em atenção as …”
Deveria estar:
“…nos nossos programas, há que ter em atenção as…”
Tutorial muito bom, no meu entender.
Gostaria de dar os parabéns ao autor do tutorial e às pessoas que tornam possível a sua publicação.
Não vi nenhum erro de português…
Isto é porque ele não conseguiu acompanhar a “complexidade” do artigo.
Excelente post Bruno, no entanto tenho um reparo a fazer… qdo dizes “Ex.: se a variável ‘int i = 10’ e fizermos ‘i++’, i ficará com o valor 11.” isto é verdade no entanto tb existe o ++i e aqui existe diferenças onde o i++ devolve i só dps é q incrementa enqto o ++i, primeiro incrementa só dps é q devolve.
Ex.:
int i = 10;
int j = 11;
System.out.println(++i);
Devolve -> 11
System.out.println(j++);
Devolve -> 10
Eu digo isto pq existe mta gente boa que não sabe a diferença.
Cumps e continua o excelente trabalho
Tens toda a razão, como já disse este tutorial foi feito com pouco tempo e sempre às tantas da noite, tentei que não escapasse nada mas nem sempre se consegue.
Thanks pelo feedback 🙂
Os leitores também andam por cá para ajudar. Uma das formas é eventualmente corrigir o que pretensamente possa estar incompleto.
Há que dar utilidade a este magnifico auditório 😀
Vitor, agora só falta dar a conhecer aqui aos leitores do pplware um pco do java para web.
Com as famosas frameworks do Java como Java server faces (jsf), Richfaces,Facelets, Spring, Acegi …
Ai sim, um pessoal iria ficar maravilhado com esse mundo que é “recente” e visto não existir mts tutoriais sobre isto pela net.
A meu ver é uma excelente linguagem para web que é segura, rápida, intuitiva e bastante robusta.
Claro e percebo. A meu ver é sempre bem vindo tutoriais sobre java.
Reparo importante:
int j = 11;
System.out.println(++i);
Devolve -> 11
System.out.println(j++);
Devolve -> 10
Sendo j = 11, “System.out.println(j++);” devolverá 11, e não 10, como colocaste. 😉
Claro, gralha minha!! :p mas ficou a ideia. 😀
no 2º caso, estás a incrementar ou decrementar? acho que está mal. o resultado deveria ser 11. Ou estou errada.
Excelente post!
Tenho apenas um comentário a fazer. Penso que este exercício não é adequado a uma iniciação em programação. Pelo menos, os primeiros exercícios que eu fiz quando estava nas aulas de IP da FCT não eram assim. Acho que fazer um contactBook e depois uma bankAccount eram as melhores soluções para depois fazer este exercício.
Olá,
Como referi não tenho a mínima experiência a fazer exercicios, nunca fui professor por isso, fiz o melhor que soube (apesar de ter noção que não deve estar grande coisa) 😀
O tutorial está excelente mesmo! Foi só pena o exercício mas deixa, agora vamos ver as resoluções.
Abraço
Melhor mesmo era fazer um microMatrix. 😀
microMatrix?
Sim. microMatrix é o projecto final da cadeira de IP este semestre na FCT.
Isso é tudo uma questão de preço 😛
Ja agora. Para quando um tutorial de F# ?
É possivel obter este tutorial em PDF???
Obrigado.
Muito bom. Parabéns pelo esforço. Lido com Java há muitos anos e foi agradável recordar o início quando aprendi.
Na altura foi a minha primeira linguagem de programação, quando entrei no curso (Engª Informática @FCTUC) e senti grande dificuldade em entender o “ciclo for”. Hoje em dia programo com a facilidade com que falo. É engraçado estas coisas. 😛
Reparo:
· Operadores de Comparação:
o Maior do que: >
o Menor do que: >
— não deveria ser —
· Operadores de Comparação:
o Maior do que: >
o Menor do que: <
Bom Post. Parabéns. Continua.
Pois, devia 🙂
Thanks
Oi Bruno,
é sempre de louvar o tempo consagrado aos outros.
Anseio pelo próximo episódio deste excelente tutorial !
Cumps
Muito obrigado pelo feedback 🙂
Excelente trabalho!! Obrigado por partilhar.
Era interessante uma tutorial de java sobre ligação a SQL server, fazia-me muito jeito nesta altura…
Cumprimentos e parabéns pelo tutorial 😉
Tenho pena que não tenham existido mais topicos de Java. Há alguma tempo que procuro ajuda sobre a elaboração de um programa em Java para criação de um fluxograma. Tenho grande parte do código que posso disponibilizar, se alguém poder ajudar, fico muito agradecido.
Parabens, grande tutorial.
No entanto, quando tento aceder a pagina 2 ou 3 recebo este erro:
Error 503 Service Unavailable
Service Unavailable
Guru Meditation:
XID: 790840455
Varnish cache server
Mais alguem com o mesmo erro?
boa tarde,
Ao tentar exportar para pdf
ocorre o seguinte erro:
TCPDF error: Alpha channel not supported: https://pplware.sapo.pt/wp-content/uploads/2010/01/java2012-300×260.png