Você está na página 1de 24

_____________________________________________________________________________________

LINGUAGEM JAVA seja executado em seu computador. A


linguagem Java é diferente, pois seus
programas são compilados E
História Rápida da Linguagem interpretados. Com o compilador, você
Em 1991, um grupo de engenheiros da inicialmente transforma seu programa
Sun Microsystems foi encarregado de em uma linguagem intermediária,
criar uma nova linguagem que pudesse chamada bytecode. Esse código é
ser utilizada em pequenos equipamentos independente de plataforma, e é mais
como controles de TV, telefones, fornos, tarde interpretado por um interpretador
geladeiras, etc. Essa linguagem deveria Java. A compilação acontece apenas
dar a esses aparelhos a capacidade de uma vez; a interpretação acontece
se comunicar entre si, para que a casa todas as vezes que seu programa é
se comportasse como uma federação. executado.
Deveria ainda ser capaz de gerar
códigos muito pequenos, que pudessem A figura abaixo mostra como isso
ser executados em vários aparelhos acontece.
diferentes, e praticamente infalível.

Os engenheiros escolheram o C++ como


ponto de partida. Orientada a objetos,
muito poderosa e gerando pequenos
programas, parecia a escolha correta.
Para solucionar o problema da execução Você deve pensar nos bytecodes como
em várias arquiteturas, eles utilizaram o instruções de máquina para a Java
conceito da máquina virtual, onde cada Virtual Machine (ou JVM). Todos os
fabricante iria suportar algumas funções produtos que conseguem executar
básicas que os programas utilizariam. programas em Java (como um browser
que executa applet‟s) possuem uma
Até hoje a linguagem resultante deste cópia da JVM.
projeto não é utilizada em aparelhos
eletrodomésticos. Ao invés disso, o Java Bytecodes Java tornam possível a
se tornou um das linguagens de tecnologia “escreva uma vez, execute
programação mais utilizadas no planeta. em qualquer lugar”. Você pode
compilar seu programa Java em
Vantagens do Java (Por Que Estudar qualquer plataforma que possua um
Essa Linguagem ?) compilador. Os bytecodes gerados
Na maioria das linguagens de podem ser
programação, você precisa compilar ou
interpretar um programa para que ele
interpretados em qualquer plataforma que possua uma JVM. Veja na figura abaixo:

1
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

A Plataforma Java

Por plataforma, entendemos o conjunto


de hardware e software no qual um
programa executa. Alguns exemplos de
plataformas muito usadas são o
W indows, o Linux, o MacOS. A
plataformaJava é diferente, pois não
envolve hardware; ela utiliza a plataforma
de hardware das outras. Erros Comuns de Conceito Sobre Java

A plataforma Java tem dois Muita gente pensa muita coisa sobre
componentes: Java, e muita coisa errada. A seguir
listamos algumas idéias erradas mais
· Java Virtual Machine (Java VM ou comuns.
JVM)
· Java Application Programming Java é uma linguagem fácil de aprender.
Interface (Java API) Nenhuma linguagem poderosa como o
A API Java é uma coleção de Java é fácil de aprender. É sempre fácil
componentes de software prontos, que escrever programas do tipo “Alo Mundo”.
incluem desde estruturas para Aprender a lidar com if, while e tipos do
manipulação de arquivos até a Java é uma tarefa simples; a parte
construção de aplicativos gráficos. A API complexa vem da orientação a objetos
é organizada como um grupo de e das classes presentes na linguagem.
bibliotecas com classes e interfaces; Temos mais de 1.500 classes e
essas bibliotecas são chamadas de interfaces diferentes. A descrição de cada
pacotes. uma cabe em um livro de 600 páginas.

A figura abaixo mostra o esquema de O ambiente Java facilita a


funcionamento da plataforma Java: programação.

2
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

Você vai aprender Java usando o da linguagem Java. Com exceção do


notepad e o prompt do DOS. Não é o nome, as semelhanças terminam aí.
melhor ambiente do mundo,
especialmente se comparado às Instalando o ambiente
linguagens visuais que temos hoje, como
o VisualBasic. Em um ambiente de alta Para o desenvolvimento de aplicativos
produtividade, o uso do Java deve ser utilizando o Java, é necessário a
muito racional, levando em conta as instalação do compilador Java, das API‟s
dificuldades da codificação. e da JVM. A instalação do ambiente
segue o mesmo esquema da instalação
Java será a linguagem universal no de qualquer produto para W indows.
futuro.
É possível, em teoria. Mas existem Devemos fazer o download da versão
muitos sistemas com códigos nativos mais apropriada via ftp ou http e executar
que são perfeitos da maneira que o arquivo, para que o produto se instale.
estão hoje, e por isso não devemos As versões para W indows, Linux e
“mexer”. O Java não é recomendado para Solaris pode ser obtido em:
solucionar todos os problemas. http://java.sun.com
http://www.java.com/pt_BR/download/
Java é apenas mais uma linguagem
como qualquer outra. Meu primeiro programa Java

A linguagem Java, apenas pelo fato de Como a maioria das linguagens de


permitir que um programa seja programação, o fonte de seu programa
executado em qualquer plataforma, já em Java deve ser criado a partir de um
realizou revolução suficiente. Além editor de texto que gere arquivos em
disso, a linguagem foi desenhada para formato ASCII. É possível utilizar
se utilizar da rede, e os conceitos de editores como o W ord e o W ordpad,
ambiente multitarefa auxiliam o produto a mas o texto deve ser salvo sem
ter poucas comparações no mercado formatação. O editor ideal é o notepad.
hoje. O programa fonte em Java deve ser
salvo obrigatoriamente com a extensão
Todos os programas Java tem que .java. Salve no notepad o arquivo
ser executados dentro de um utilizando aspas duplas, assim:
navegador.
“AloMundo.java”
Um dos usos do Java é a confecção
de applets. Java também serve para Vamos então criar uma pasta chamada
programar aplicativos, servlets, CURSO (md curso) para que possamos
JavaBeans, componentes e uma grande organizar os programas e exercícios que
gama de produtos. faremos.

Javascript é uma versão simplificada do Execute o Notepad agora, e vamos digitar


Java. nosso primeiro programa em Java. Copie
Javascript é uma linguagem utilizada em as linhas abaixo:
navegadores. Ela foi inventada pela
Netscape, e sua sintaxe é semelhante à class AloMundo {
public static void main(String args[]) {
3
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

computador usa e o modelo que o


System.out.println(“Alo Mundo !”); problema lhe apresenta.
Isso geralmente leva o programador a
} modelar o problema apresentado para o
} modelo utilizado em alguma linguagem.
Não se preocupe em entender o código; é Se a linguagem escolhida for LISP, o
apenas um exemplo, e explicaremos problema será traduzido como listas
esses comandos mais tarde. Salve o encadeadas. Se for Prolog, o problema
arquivo como AloMundo.java (letras será uma cadeia de decisões. Assim, a
maiúsculas e minúsculas são representação da solução para o
importantes). problema é característica da linguagem
usada, tornando a escrita difícil.
A seguir, vamos compilar o programa. A
compilação irá gerar os bytecodes. Do A orientação a objetos tenta solucionar
prompt do DOS, execute: esse problema. A orientação a objetos é
javac AloMundo.javaSe não houver erro, geral o suficiente para não impor um
depois de alguns segundos você deve modelo de linguagem ao programador,
ter acesso ao prompt novamente. Para permitindo a ele escolher uma estratégia,
executar o programa, representando os aspectos do problema
em objetos. Assim, quando se "lê" um
java AloMundo programa orientado a objeto, podemos
ver não apenas a solução, mas também
Você deve ter recebido como resposta a a descrição do problema em termos do
frase “Alo Mundo !”. Isso significa que próprio problema. O
tudo está certo com seu ambiente e você programadorconsegue "quebrar" o
acabou de criar seu primeiro programa grande problema em pequenas partes
em Java. que juntas fornecem a solução.

Exercícios Olhando à sua volta é possível perceber


muitos exemplos de objetos do mundo
–Altere o programa AloMundo para que real: seu cachorro, sua mesa, sua
ele imprima seu nome completo. televisão, sua bicicleta. Esses objetos
–Altere o programa AloMundo e faça tem duas características básicas, que
com que ele imprima seu nome em são o estado e o comportamento.
duas linhas separadas.
Por exemplo, os cachorros tem nome,
Objetos cor, raça (estados) e eles balançam o
O Que São Objetos ? rabo, comem, e latem (comportamento).
Uma bicicleta tem 18 marchas, duas
Quando temos um problema e queremos rodas, banco (estado) e elas brecam,
resolve-lo usando um computador, aceleram e mudam de marcha
necessariamente temos que fazer um (comportamento).
programa. Este nada mais é do que uma
serie de instruções que indicam ao De maneira geral, definimos objetos como
computador como proceder em um conjunto de variáveis e métodos, que
determinadas situações. Assim, o grande representam seus estados e
desafio do programador é estabelecer a comportamentos.
associação entre o modelo que o
4
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

Exercício

- Imagine um exemplo de objeto diferente


dos vistos até agora. Para esse objeto,
relacione possíveis métodos e atributos.
Mas um objeto sozinho geralmente não
é muito útil. Ao contrário, em um
programa orientado a objetos temos
Veja a ilustração: muitos objetos se relacionando entre si.
Uma bicicleta encostada na garagem
Temos aqui representada (de maneira nada mais é que um pedaço de ferro
lógica) a idéia que as linguagens e borracha. Por si mesma, ela não tem
orientadas a objeto utilizam. Tudo que capacidade de realizar nenhuma tarefa.
um objeto sabe (estados ou variáveis) e Apenas com outro objeto (você)
tudo que ele podem fazer utilizando a bicicleta, ela é capaz de
(comportamento ou métodos) está realizar algum trabalho.
contido no próprio objeto.
A interação entre objetos é feita através
No exemplo da bicicleta, poderemos de mensagens. Um objeto “chama” os
representar o objeto como no exemplo métodos de outro, passando parâmetros
abaixo: quando necessário. Quando você passa
a mensagem “mude de marcha” para o
objeto bicicleta você precisa dizer qual
marcha você deseja.

A figura a seguir mostra os três


componentes que fazem parte de uma
mensagem:
- objeto para o qual a mensagem é
dirigida (bicicleta)
- nome do método a ser executado (muda
Temos métodos para mudar a marcha, a marcha)
cadência das pedaladas, e para brecar. - os parâmetros necessários para a
A utilização desses métodos altera os execução do método.
valores dos estados. Ao brecar, a
velocidade diminui. Ao mudar a marcha,
a cadência é alterada.

Note que os diagramas mostram que as


variáveis do objeto estão no centro do
mesmo. Os métodos cercam esses
valores e os “escondem” de outros
objetos. Deste modo, só é possível ter
A troca de mensagens nos fornece ainda
acesso a essas variáveis através dos
um benefício importante. Como todas as
métodos. Esse tipo de construção é
interações são feitas através delas, não
chamada de encapsulamento, e é a
importa se o objeto faz parte do mesmo
construção ideal para objetos.
programa; ele pode estar até em outro
5
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

computador. Existem maneiras de enviar modelo. Assim, é possível ir em uma loja


essas mensagens através da rede, e comprar várias unidades de bicicletas
permitindo a comunicação remota entre essencialmente idênticas. Mas não
objetos. podemos dizer que todas são o mesmo
objeto, simplesmente por serem
Assim, um programa orientado a objetos parecidas.
nada mais é do que um punhado de
objetos dizendo um ao outro o que Em orientação a objetos, dizemos que
fazer. Quando você quer que um um (ou mais) objetos pertencem a uma
objeto faça alguma coisa, você envia a classe quando eles são muito
ele uma "mensagem" informando o que semelhantes, de acordo com certos
quer fazer, e o objeto faz. Se ele precisar padrões. Assim, dependendo da
de outro objeto que o auxiliar a realizar situação, alguém pode dizer que sua
o "trabalho", ele mesmo vai cuidar de bicicleta é um veículo, pois ele anda
enviar mensagem para esse outro objeto. sobre rodas e carrega uma pessoa. Se
Deste modo, um programa pode realizar seguirmos esse padrão, uma
atividades muito complexas baseado motocicleta também é um veículo, assim
apenas em uma mensagem inicial. como um automóvel ou até um avião (ué,
não anda sobre rodas quando decola ou
Você pode definir vários tipos de objetos pousa ? Não carrega uma pessoa ?). Na
diferentes para seu programa. Cada verdade, quando programamos em
objeto terá suas próprias características, linguagens orientadas a objetos, antes
e saberá como interpretar certos de tudo nós construimos as classes, os
pedidos. A parte interessante é que modelos, para depois usá-las na criação
objetos de mesmo tipo se comportam de de objetos daquele tipo.
maneira semelhante. Assim, você pode
ter funções genéricas que funcionam para Voltando ao nosso exemplo das
vários tipos diferentes, economizando bicicletas. Quando elas são construídas,
código. os fabricantes tiram vantagem do fato
que elas tem as mesmas características,
Vale lembrar que métodos são diferentes e podem construir várias delas a partir de
de procedimentos e funções das uma mesma planta. Seria muito custoso
linguagens procedurais, e é muito fácil fazer um novo projeto para cada bicicleta
confundir os conceitos. Para evitar a que eles fossem construir.
confusão, temos que entender o que são
classes. Exercícios
- Agrupe em classes os objetos abaixo:
Classes
avião elefante computador tigre
Até agora, comentamos sobre o que é calculadora motocicleta formiga
um objeto e como ele se relaciona com
outros objetos. Falaremos agora a Na orientação a objetos, quando
respeito de classes. programamos, tentamos visualizar os
objetos necessários para resolver um
Sua bicicleta é apenas uma das várias problema. Se eu estou criando um
que existem. A sua bicicleta específica programa de controle de estoque, eu vou
foi feita por um fabricante, e tem certas necessitar de uma classe que
características que seguem uma linha ou represente os ítens que tenho nesse
6
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

estoque. Outra classe que represente as Pessoa irá enviar uma mensagem ao
ordens de compra. E assim por diante. interruptor que por sua vez irá enviar uma
mensagem para a lâmpada.
Nota: A classe é um modelo ou
protótipo, que define as variáveis e Uma coisa interessante é que não
comportamentos em comum que um interessa para a pessoa que está ligando
certo tipo de objeto específico contém. a lâmpada como o interruptor funciona:
importa que quando pressionado, a
No nosso exemplo, depois de criada a lâmpada acenda. Esta é uma das grandes
classe bicicleta, nos é possível criar a vantagens de se utilizar o conceito de
partir dela objetos que serão cópias objetos em informática. Umobjeto é como
idênticas da classe, mas cada uma delas uma caixa preta: não me importa como
terá seus próprios estados. O modelo ele faz as coisas, apenas o que tenho
pode fornecer dados que serão que fazer para que as coisas acontecam.
compartilhados entre todos os objetos ou
permitir que estes tenham dados Voltando ao exemplo da lâmpada, em
própiros. Nota: Objetos “derivados” de Java eu poderia definir uma lâmpada
uma classe são chamados instância de assim:
classe. lampada sala_de_aula = new lampada();

Para tornar o entendimento mais fácil, Se eu quiser ligar a lâmpada, é só


vamos ver um exemplo mais fácil e informar a ela o meu desejo, através de
prático. uma mensagem:

Inicialmente vamos pensar em um objeto sala_de_aula.ligar();


bem simples, como uma lâmpada.
E a lâmpada vai acender. Não me
As lâmpadas podem ter diversos importa como ela fez isso, me importa
formatos, cores e tamanhos, mas apenas que ela faça.
basicamente elas tem apenas uma
função, que é iluminar o ambiente. Sintaxe
Assim, imagine uma classe lâmpada.
Não basta um objeto estar definido para
Essa classe pressupõe apenas 2 ser utilizado. Se eu pretendo usar um
estados. Um objeto derivado dessa objeto, eu preciso cria-lo, e atribuir o
classe pode estar ligado ou desligado. controle desse objeto a um nome. A
Mas a lâmpada por si só não decide criação de objetos em Java é sempre
quando vai ligar ou desligar. Quem liga necessária, e é chamada de
ou desliga esse objeto lâmpada é um instanciação (por isso o objeto é
interruptor, acionado normalmente por chamado de instância).
uma pessoa. Quando eu crio o objeto sala_de_aula,
eu digo que ele é do tipo lâmpada e que
Para resolver esse problema, teremos eu quero que ele seja instanciado nesse
que definir um objeto baseado na classe momento (new lampada()). A partir de
lâmpada. agora, sala_de_aula é um objeto do tipo
definido e tem como funções tudo que
Teremos ainda um objeto da classe uma lâmpada pode fazer.
interruptor e outro da classe pessoa.
7
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

Classes, Atributos e Métodos em 1 ano a idade do objeto. Então, meu


objeto ficaria:
Uma das grandes vantagens do Java e
nosso propósito de estudo é a class meuObjeto
capacidade de você definir seus próprios {
objetos. Como já comentado, um objeto String nome;
contém atributos (dados) e métodos int idade;
(funções para manipulação dos dados). String telefone;
Esses objetos irão ajudá-lo a resolver o public void aniversario()
problema apresentado e tornarão seu {
trabalho mais fácil. idade = idade + 1;
}
Vamos inicialmente criar um objeto }Agora, para um teste, poderíamos
simples, que contenha apenas fazer:
dados.class meuObjeto
{ meuObjeto amigo = new meuObjeto();
String nome; amigo.nome = "Joao"; amigo.idade = 33;
int idade; String telefone; amigo.telefone = "2223311";
} System.out.println ("Idade
antiga"+amigo.idade);
Você acabou de definir um objeto amigo.aniversario();
chamado meuObjeto. Temos nome, System.out.println ("Nova
idade e telefone como dados deste idade"+amigo.idade); Percebam que o
objeto. valor da idade foi alterado.
Mas não basta defini-lo para que ele nos Exercício
seja útil. Para isso, você deve instanciá- - Digitem o exemplo acima e façam o
lo, assim: mesmo funcionar. Nota: o esquema geral
para a definição de um método é
meuObjeto amigo = new meuObjeto(); tipo_do_dados_de_retorno
nome_do_metodo
A partir de agora, meu objeto amigo pode (argumentos)
ser utilizado para guardar dados. Eu {
posso incluir dados assim: corpo_do_metodo
}
amigo.nome = "Joao"; amigo.idade = 33;
amigo.telefone = "2223311"; No caso do método aniversario definido
acima, não temos nenhum tipo de
E quando eu precisar dos valores, eu retorno, por isso ele é do tipo void.
simplesmente os imprimo. Nota: para
facilitar nosso aprendizado, o comando Se precisarmos algum resultado de
para imprimir um dado é retorno, temos que indicar qual o tipo
System.out.println, e pode ser utilizado desse resultado.
assim:
Vamos definir outro método, que me
System.out.println (amigo.nome); retorna o numero de meses baseado na
Vamos agora criar um método para o idade. O método poderia ser definido
meuObjeto. Esse método vai se chamar assim:
aniversario, e ele serve para aumentar
8
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

int idadeEmMeses() Nota: Caso eu tenha mais de um


{ argumento, eles devem ser separados
return (idade * 12); por vírgulas. Nota2: Na definição do
} método com mais de um argumento, eu
tenho que prever as variáveis a serem
A instrução return vai indicar qual o recebidas.
valor a ser retornado nachamada do Exemplo:
método. Como temos um retorno, ele
dever ser utilizado ou apresentado. void qualquerCoisa (String nome, int
Podemos apresentá-lo assim: idade, String telefone) A chamada é
System.out.println amigo.qualquerCoisa ("paulo", 24,
(amigo.idadeEmMeses()); "2221133");

Nota: Se o valor for utilizado para Construção de Programas em Java


outros fins, devemos definir uma variável
do mesmo tipo do retorno para conter o Vocês podem estar se perguntando qual
resultado: a finalidade de criar métodos para alterar
valores dentro de um objeto. Nesses
int idade_em_meses = exemplos fica fácil perceber que é muito
amigo.idadeEmMeses(); mais fácil fazer uma atribuição simples
(amigo.idade=34) do que criar um
Às vezes, necessitamos do envio de método só para alterar a idade. Mas isso
argumentos (também chamados tem sentido de ser, em linguagens
parâmetros) para um método para que orientadas a objetos.
ele possa executar seu trabalho. A
passagem de parâmetro é feita na hora A ideia é que o objeto deve gerenciar
da chamada, e temos que criar o método seus próprios dados, que só devem ser
já levando em consideração a acessíveis ao "mundo exterior" através
quantidade de parâmetros que iremos de seus métodos (excetuando-se aqui
passar. os métodos e variáveis estáticas).

Assim, caso eu queira alterar ao atributo Então, pelo menos em teoria, cada
idade do objeto, eu poderia criar um atributo do meu objeto deve ter um
método assim: método para gravar dados e outro para
devolver o dado gravado. Isso vai permitir
void alteraIdade(int nova_idade) que esse objeto seja utilizado por
{ qualquer um, a qualquer tempo.

idade = nova_idade; Vamos passar então um pequeno código


} de um programa completo em Java para
que possamos ir comentando e
E a chamada ao método ficaria: esclarecendo.
amigo.alteraIdade(30);
import java.util.*;
Exercício public class Propriedades
- Implemente o exemplo acima. {
public static void main (String[] args)
{
9
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

System.out.println ("Bom dia... Hoje é linha depois de escrever o texto


dian"); System.out.println(new Date()); indicado.
}}
Logo na primeira linha temos "import...". Na ultima linha temos outra impressão.
É normal nas primeiras linhas de um Dessa vez, temos a instanciação de um
programa em Java a colocação da objeto do tipo Date, e seu valor é
instrução import. Essa instrução serve imediatamente impresso. Como não
para que nosso programa possa utilizar necessitamos do objeto, apenas
qualquer classe externa que ele queremos um valor impresso, não é
necessite. No caso, meu programa usa necessário criar uma variável apenas
uma função que retorna a data do para isso. Note que nem sempre isso é
sistema, e essa função faz parte de possível.
java.util. Assim, eu preciso importar
essas funções para que meu programa Métodos Construtores e Overloading
funcione. Isso será explicado melhor Como já apresentado, é sempre
quando falarmos a respeito de APIs. necessário instanciar um objeto para
poder utilizá-lo.
Na segunda linha, definimos o nome
desse objeto (em Java, chamado de Existe um método especial em uma
classe). É importante notar que o objeto classe que fornece instruções a respeito
deve ter omesmo nome do arquivo no de como devemos instanciar o objeto.
disco, caso contrário o programa não irá Esse método é chamado de construtor.
funcionar.
A função do construtor é garantir que o
Notamos ainda nessa mesma linha que objeto associado à variável definida será
essa classe é do tipo publica (public). iniciada corretamente. Sempre é
Isso quer dizer que esse objeto é necessário ter um construtor, e como na
acessível por outros objetos, que ele maioria das vezes esse construtor não
pode ser importado e usado. faz nada (além de instanciar o objeto),
não é necessário declara-lo. O Java faz
Na próxima linha, temos a definição do isso automaticamente para nós.
método main. Vemos novamente o
public, e a palavra static, indicando que Nota: O método construtor tem
esse método não pode ser instanciado, exatamente o mesmo nome da classe.
apenas usado do jeito que está. Vemos Assim, no exemplo:
que o método main admite uma lista de class meuObjeto
Strings como argumentos (chamado de {
args). Esses argumentos não são String nome;
necessários nesse programa, mas caso int idade;
necessitássemos de passar algum tipo String telefone;
de informação para o programa, essas public void aniversario()
informações estariam armazenadas na {
variável args. idade = idade + 1;
}
Na próxima linha, temos a impressão de }
um texto na tela. A única novidade é a
presença de um sinal n no final do Não temos construtor definido.
texto. Ele indica ao Java para pular de
10
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

Mas existem casos onde teremos meuObjeto amigo = new


necessidade de um construtor que faz meuObjeto("Joao", 32, "2223311");
algo, como na definição de String. Eu
posso definir uma String assim: A sobrecarga é um dos recursos mais
interessantes da orientação a objetos. E
String nome = new String(); Ou assim: não está restrito aos construtores;
String nome = new String ("Joao"); podermos definir o mesmo nome de
método para qualquer método.
Isso quer dizer que o objeto String tem Assim, tornamos o programa mais
pelo menos 2 construtores; um que inicia legível e temos menos nomes para
o objeto sem argumentos e outro que "inventar".
inicia com argumentos. Esse tipo de
artificio é chamado de sobrecarga (em Nota: Como os dois (ou mais) métodos
inglês, Overloading). tem o mesmo nome, a diferenciação de
qual método é executado depende da
Se eu quiser que meuObjeto tenha o quantidade e do tipo dos argumentos
mesmo tipo de funcionalidade do String, enviados.
eu defino dois construtores, assim:
Nota2: Quando não definimos
class meuObjeto construtores, o Java cria um sem
{ argumentos para nós. Quando eu
String nome; escolho definir o construtor, tenho que
int idade; definir para todos os tipos, inclusive o
String telefone; sem argumentos.
meuObjeto() // Esse é o construtor sem
argumentos Utilização das API’s
{
} Como já falado, existem muitos objetos
meuObjeto(String _nome, int _idade, prontos que a linguagem
String _telefone) //Construtor com Java nos proporciona.Como todos os
argumentos objetos, eles podem conter dados e tem
{ vários métodos para que possamos usá-
nome = _nome; idade = _idade; telefone los.
= _telefone;
} É importante para um programador Java
public void aniversario() conhecer o máximo desses objetos que
{ puder; eles facilitam o trabalho na
idade = idade + 1; medida que evitam que nós tenhamos o
} trabalho de inventar algo que já está
} pronto. Lembre que normalmente nós
não temos acesso aos atributos dessa
Agora meuObjeto pode ser instanciado classe; apenas a seus métodos.
como meuObjeto amigo = new
meuObjeto(); Quando executamos um import ... no
início do nosso programa, estamos
ou informando ao compilador Java quais as
classes que desejamos usar.

11
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

Assim, um import java.util.*; quer dizer: inalterados, ninguém vai perceber a


"eu vou utilizar alguns objetos do pacote diferença.
java.util". Um programa pode ter tantos
import quanto necessário. Como exemplo, vejamos o objeto
String. O String na verdade é um vetor
Isso permite que você utilize de caracteres.
componentes de pacotes baixados da
Internet, com utilização mais restrita. Eu não tenho permissão para acessar os
conteúdos internos desses caracteres;
Nota: Uma lista completa das APIs eu tenho que fazer isso utilizando um
existentes pode ser achada na lista de método. Assim, existem situações onde
links no final do curso. é interessante que meus objetos tenham
um certo controle sobre o que o
Conceito de Pacote programador pode fazer com eles, para
que não ocorram problemas. Para isso,
Um pacote pode ser entendido como temos três tipos de acesso a métodos e
uma série de objetos agrupados por atributos.
afinidade. Eles ficam "juntos" pois tem
funções semelhantes (como por exemplo Quando utilizamos a palavra public,
manipular texto). liberamos o acesso do atributo/método
para ser utilizado por qualquer um que
Quando nós vamos criar nossos importe o pacote ou o objeto.
próprios objetos para resolver um
problema, normalmente esses objetos No caso do private, ninguém pode
ficam todos no mesmo sub-diretorio; acessar o método/atributo daquele
entre eles estabelecemos uma relação de objeto, nem mesmo os objetos daquele
"amizade", e podemos considerá-los pacote ou objetos que herdam suas
como parte do mesmo pacote (default). características. Isso evita que certos
Estando no mesmo sub-diretório, certas métodos sejam acessados diretamente,
restrições de acesso entre esses objetos evitando erros.
mudam. Explicamos restrição de acesso
no tópico a seguir. Métodos/atributos protected podem ser
herdados, mas não alterados. Iremos
Tipos de Métodos: Públicos, Privados e comentar a respeito de herança mais à
Protegidos frente.

As restrições de acesso em Java Exemplo:


existem por dois motivos. O primeiro é
não permitir que o programador utilize class exemplo {
meus objetos da maneira que quiser. Eu public metodo1() { ... }
dito o que pode e o que não pode ser private metodo2() { ... }
utilizado. E o segundo motivo é que }
tudo que não for público
(econsequentemente não permite acesso) Nessa classe, o metodo1 pode ser
pode ser alterado na hora que eu executado por qualquer outro objeto. O
quiser. Contanto que os métodos de método metodo2 só pode ser executado
acesso (que são públicos) fiquem pelo próprio objeto.

12
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

Composição e Herança public Empregado (String _nome, String


Um dos conceitos mais interessantes _secao, double
das linguagens orientadas a objeto é a _salario)
reutilização de código. Mas para isso {
realmentefuncionar, você tem que nome = _nome; secao = _secao; salario =
conseguir fazer mais do que _salario;
simplesmente copiar código e altera-lo. }
Você deve ser capaz de criar uma nova public void aumentaSalario (double
classe usando outra classe já existente. percentual)
{
Existem duas maneiras diferentes de salario *= 1 + percentual / 100;}
fazer isso. Uma é chamada composição. String nome; String secao; double
A composição é geralmente utilizada salario;
quando se deseja utilizar as }
características de um objeto mas não sua Vamos supor agora que temos que
interface. necessitamos de um tipo especial do
objeto Empregado, que é o Gerente. O
Quando eu tenho um objeto do tipo carro Gerente tem secretária, e a cada
e uma outra pessoa vai utilizar um carro aumento ele recebe a mais 0,5% a título
com as mesmas funcionalidades, é mais de gratificação.
fácil ela construir um carro utilizando as
"peças" (que já estão prontas). Assim, Mas o Gerente continua sendo um
ela pode importar a classe carro e usar: empregado; ele também tem nome,
seção e salário.
carro meuCarro = new carro();
Assim, fica mais fácil utilizar a classe
A partir de agora, dentro do seu objeto, Empregado já pronta como um modelo,
você tem um objeto do tipo carro. O que e aumentar as funcionalidades. Isso é
você fez aqui foi compor um objeto. Seu chamado de herança.
objeto agora é do tipo composto, já
que ele possui mais do que um objeto Veja a classe Gerente no exemplo
dentro dele. abaixo:

Mas existe situações onde a composição class Gerente extends Empregado


não basta. É quando eu desejo utilizar o {
objeto existente para criar uma versão public Gerente (String _nome, String
melhor ou mais especializada dele. Isso _secao, double
é chamado herança. _salario, String _secretaria)
{
Imagina que eu tivesse uma classe super (_nome,_secao,_salario); // Aqui
chamada Empregado. Essa classe tem eu chamo a super classe do Gerente
como atributos o nome, seção e salário secretaria = _secretaria;
do empregado. Existe também um }
método para alterar o salário. public void aumentaSalario (double
percentagem)
class Empregado {
{ super.aumentaSalario (percentagem+0,5);
}
13
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

public String getSecretaria () O conceito de herança nos leva a


{ discutir outro: o polimorfismo. Podemos
return (secretaria); traduzir essa palavra pela capacidade de
} um objeto em saber qual o método que
public void setSecretaria (String deve executar. Apesar da chamada ser a
_secretaria) mesma, objetos diferentes respondem de
{ maneira diferente. Assim, quando
secretaria = _secretaria; chamamos aumentaSalario da chasse
}private String secretaria; Gerente, é esse método que será
} executado. Se a classe Gerente não
tivesse esse método, o método da classe
O que fizemos aqui foi literalmente nos Empregado seria executado. Caso a
aproveitarmos do código de outro classe Empregado também não tivesse
programa, especializando o objeto esse método, a classe da qual ele veio
Empregado. Adicionamos métodos a seria objeto do pedido.Como exemplo,
essa classe e mesmo alteramos um de imagine uma classe chamada Figura.
seus métodos (aumentaSalario) para Essa classe tem a habilidade de
refletir uma nova condição. Uma palavra desenhar a si mesma na tela. Se eu
que apareceu nessa classe foi a super. definir uma classe chamada Triangulo
Ela referencia a classe da qual essa se que estenda a classe Figura, ela pode
originou, a classe que foi estendida ou usar o método da super classe para
herdada. Assim, super.aumentaSalario desenhar a si mesma, sem necessidade
invoca o método aumentaSalario da de criar um método apenas para isso.
classe Empregado. A classe Gerente
poderia ter substituído completamente o Usando ainda nosso exemplo de
método ou fazer alterações, como Funcionário e Gerente. Se a classe
fizemos. Funcionário tivesse um método para
mudar a seção do funcionário, não seria
Assim, é sempre uma boa idéia sempre necessário definir um método igual para
pensar em construir objetos que possam a classe Gerente. Entretanto, quando eu
ser genéricos o suficiente para que invocasse o método
possam ser reaproveitados. Gerente.musaSecao(nova_secao), o
objeto saberia como se comportar, pois
Nota: Como referencia para nos auxiliar ele herdou essa “sabedoria” de sua
a determinar se devemos utilizar superclasse.
composição ou herança para construir
um objeto, sempre pense: Nota: Como todos os objetos definidos
são subclasses de Object, todas as
é para herança (um carro é um veiculo). classes que usamos ou definimos, por
contém para composição (um carro mais simples que sejam, tem certas
contém motor, freio, etc.). Nota 2: capacidades herdadas desta classe. Para
Quando não desejamos que um maiores detalhes, veja a API.
método ou atributo seja redefinido,
utilizamos a palavra reservada final. Exercícios
-Implemente o exemplo acima. Altere
Polimorfismo ou defina métodos usando o mesmo
nome (sobrecarga), defina atributos e

14
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

métodos private e public e teste sua boolean cpf_valido =


segurança. validaCPF("123123123");

Métodos Estáticos Nota: Os métodos estáticos são


Um último conceito importante diz utilizados em casos específicos. Um
respeito a métodos especiais. Eles foram programa orientado a objetos que é feito
criados para resolver situações especiais inteiramente de métodos estáticos não é
na orientação a objetos, e também para orientado a objetos :)
simplificar certas operações.
Exercício
Imagine uma classe, criado por outra
pessoa, que tenha apenas um método. - Crie uma classe que possua um método
A classe se chama validaCPF, e serve estático chamado Soma. Esse método
para verificar se um CPF é valido ou deve receber dois parâmetros e devolver
não. o resultado da soma destes parâmetros.
Use sobrecarga de métodos para que os
Segundo as "leis" da orientação a parâmetros possamser tanto do tipo
objetos, eu preciso instanciar um objeto inteiro (int) quanto do tipo fracionário
desse tipo e utilizar seu método para a (double).
verificação do valor. Isso é um tanto
quanto incômodo, pois eu simplesmente Apêndice A – Programação
necessito de uma funcionalidade, e não Fundamental
do objeto todo. Da mesma maneira, Nessa seção falamos sobre os conceitos
temos dezenas de funções matemáticas, básicos do Java, como tipos de dados,
físicas, estatísticas e outras que não nos loops, e métodos.
interessam.
Como não é trivial escrever programas
Gostaríamos apenas de enviar os que utilizam a interface gráfica, iremos
parâmetros e receber resultados, como inicialmente aprender como criar
se esses métodos fossem aplicativos, ou programas que não
funções.Nesses casos (e em alguns utilizam outros recursos além do prompt
outros) podemos criar esse método do DOS.
como estático (static). Um método Comentários
estático presente em uma classe não
obriga a instanciar um objeto para que eu É sempre interessante a colocação de
tenha acesso a seus serviços; ele serve comentários em programas. Os
apenas para que possamos aproveita-lo comentários permitem que a manutenção
em pequenas computações. Assim, a posterior do código seja mais rápida e
definição do validaCPF seria: serve para indicar o que o programa faz.
Os comentários em Java podem ser de
static boolean validaCPF(String dois tipos. Utiliza-se duas barras ( // )
numero_cpf) em qualquer posição da linha. Tudo o
{ que aparecer à direita das duas barras
código... será ignorado pelo compilador. Exemplo:
} a++; // Incremento da variável

Quando eu precisasse utilizar o código, Existem ocasiões onde várias linhas de


eu faria algo do tipo: comentário são necessárias. Nesse caso,
15
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

utilizamos os sinais de /* e */ para indicar


início e fim de bloco de comentários, Versao 1.0
como no exemplo: */

/* Programa de Exemplo – Esse


programa não faz nada. Criado por Fábio
Mengue em Outubro de 2000
Tipos de Dados

O Java é uma linguagem que necessita que todas as variáveis tenham um tipo
declarado. Existem 8 tipos primitivos em Java. Seis deles são numéricos, um é o
caracter e o outro é o booleano. Os tipos inteiros guardam valores numéricos sem parte
fracionária. Valores negativos são permitidos.

Na maioria das ocasiões, o tipo int é suficiente. Não se pode esquecer que como Java é
portável, esses valores são os mesmos para qualquer plataforma de hardware.Os tipos
primitivos que representam valores com ponto flutuante:

Normalmente utilizamos o double na maioria das situações onde é necessária a


representação desse tipo de número, pois sua precisão é maior.

Nota: Números do tipo float aparecem com um sufixo F. (3.04F). Se o número


aparecer sem o F, ele é considerado double.

O tipo caracter serve para representar apenas uma letra ou número.

16
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

Esse tipo serve para representar caracteres usando a tabela Unicode. Dessa tabela faz
parte a tabela ASCII e mais alguns caracteres especiais.

Nota: O tipo caracter é sempre representado por aspas simples („h‟). Caracteres
representados por aspas duplas (“h”) na verdade são strings.

O tipo booleano pode assumir apenas dois valores, true ou false. Esse tipo é usado
apenas para testes lógicos.

Declaração de Variáveis Assim, torna-se necessário converter o


tipo, em uma operação chamada de
A declaração de variáveis em Java, como cast. Essa conversão nada mais é do que
em várias outraslinguagens, exige que o indicar o tipo desejado, como no
tipo da variável seja declarado. Você exemplo:
inicia a declaração indicando o tipo da
variável e o nome desejado, como no double x = 9.345 int z = (int)x;
exemplo: A variável z terá como valor o número 9.
As conversões permitidas sem cast são:
int a; byte b; char ch; byte->short->int->long->float->double e
char-> int
Note que todas as declarações
terminam com o ponto-e-vírgula. Os Constantes
nomes das variáveis devem ser iniciados
com qualquer letra, seguidas por uma Você pode definir constantes em Java
seqüência de letras ou dígitos. O utilizando a palavra reservada final.
tamanho do nome da variável não tem Essa palavra indica que você definiu o
limites. valor da uma variável e que esse valor
É possível declarar várias variáveis em não pode ser modificado. Normalmente
uma linha, bem como atribuir valores a as constantes são definidas em caixa
elas na declaração, como nos exemplos alta, como no exemplo:
abaixo:
final double TEMPERATURA = 25.4;
int a,b;
int a = 10; // Isto é uma inicialização Operadores

Conversões Entre Tipos Os operadores aritméticos + - * / são


utilizados para a adição, subtração,
Java não tem problemas para atribuir multiplicação e divisão. A divisão retorna
um tipo int para um double resultado inteiro se os operadores forem
– ele vai tratar o valor como double. inteiros, e valores de ponto flutuante em
Assim sempre que uma atribuição for caso contrário. Se for necessário ter o
efetuada o tipo mais representativo será valor do resto da divisão, utilizamos o %
utilizado. Entretanto, existem ocasiões (função mod).
onde queremos representar o valor
inteiro de um tipo double, por exemplo.
17
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

É possível utilizar operadores na entre dois valores, usamos o sinal ==


atribuição das variáveis, como no (dois sinais de igual).
exemplo: O operador usado para verificar a
diferença (não igual) é o !=. Temos
int n = 5; ainda os sinais de maior (>), menor
int a = 2 * n; // a = 10 (<), maior ou igual (>=), menor ou igual
Existe também a possibilidade de utilizar (<=).
atalhos para operações:
Existem operadores lógicos AND (&&),
x += 4; // equivalente a x = x + 4; OR (||).

A exponenciação é feita por uma função Strings


da biblioteca matemática. Essa biblioteca
tem dezenas de operações específicas. Todos os outros valores que utilizamos
em Java com exceção dos tipos
double y = Math.pow (x, b); // x é elevado explicados acima (ditos primitivos) são
a b (xb) objetos. Um dos objetos mais utilizados é
o String (com S maiúsculo);
Incremento e Decremento O String é uma sequencia de caracteres.

O uso de contadores em programas é String e = “”; // String vazia. Note as


muito comum. Existem maneiras de aspas duplas. String oi = “Bom dia”;
realizar incrementos e decrementos em As strings podem ser concatenadas,
variáveis utilizando o sinal ++ e o --. Veja utilizando o sinal de +, como
nos exemplos:int a = 12; no exemplo:String um = “Curso”; String
a++ // a agora vale 13 dois = “Java”; String result = um + dois;
Nota: Uma String não deve ser
O uso do incremento e do decremento comparada com outra usando o sinal ==,
depende da posição onde eles se pois elas são objetos.
encontram na expressão. Existem
ocasiões em que quero a expressão Existe um método especial para
calculada e o valor seja incrementado comparar objetos, utilizando o equals.
depois. Em outros casos, o valor deve Assim, a comparação da String a coma
ser incrementado e a expressão avaliada String b seria:
ao final.
a.equals(b);
Acompanhe o exemplo:
Nota 2: O objeto String em Java tem mais
int m = 7; de 50 métodos diferentes.
int n = 7;
int a = 2 * ++m; // a vale 16, m vale 8 int Vetores e Matrizes
b = 2 * n++; // b vale 14, n vale 8
Vetores são estruturas utilizadas para
Operadores Relacionais e Booleanos armazenar dados afins. Esses dados
podem ser de qualquer tipo, desde
Esses operadores servem para avaliar variáveis primitivas até objetos
expressões. Para verificar a igualdade complexos.
Um vetor pode ser definido assim:
18
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

int[] vetor = new int[100]; Assim, é permitido a definição de


variáveis com mesmo nome, desde que
Aqui temos um vetor de 100 posições elas não estejam compartilhando o
(de 0 a 99) de valores inteiros. Os mesmo escopo. A definição dos blocos
elementos do vetor podem ser ajuda a tornar o programa mais legível e
acessados segundo sua posição: a utilizar menos memória, além de
vetor[30] indicar quais os comandos a serem
executados pelas instruções condicionais
E podemos iniciar seus valores na própria e os loop, que veremos a seguir:
inicialização, como abaixo:
if (expressão) comando ou { bloco }
int[] impares = {2,3,5,7,9,11,13} else // opcional
comando ou { bloco } // opcional
É possível definir vetores de várias Desvia o fluxo de acordo com o resultado
dimensões. É muito usado em da expressão. A expressão pode ser algo
matemática o conceito de matriz, que em simples ou composto. O else é opcional.
Java é definida como: Se for necessário mais de um comando,
é necessário colocar o bloco das
int[][] matriz = new int[5][6]; instruções entre { } .

E os valores são acessados da mesma return


maneira que os vetores. O comando return serve para 2
Controle De Fluxo Do Programa propósitos: mostrar qual valor deve ser
retornado do método (se ele não for void)
Apresentamos aqui os comandos que e para encerrar a execução do método
nos permitem controlar o fluxo do imediatamente.
programa e expressões condicionais em
Java. Mas antes temos que aprender a Os comandos que utilizamos para
delimitar blocos e conceituar o escopo. executar a mesma porção de código
Um bloco nada mais é uma séries de várias vezes são chamados de
linhas de código situadas entre um abre comandos de iteração, ou comandos de
e fecha chaves ( { } ). Podemos criar loop.
blocos dentro de blocos. Dentro de um
bloco temos um determinado escopo, while (expressão)
que determina a visibilidade e tempo de comando ou { bloco }
vida de variáveis e nomes. Por exemplo: A expressão é avaliada uma vez antes
do comando. Caso seja verdadeira, o
{ comando é executado. Ao final do
int x = 10; comando, a expressão é avaliada
// aqui eu tenho acesso ao x novamente. Se for necessário mais de
{ um comando, é necessário colocar o
int z = 20; bloco das instruções entre { } .
// aqui eu tenho acesso ao x e ao z
} do
// aqui eu tenho acesso ao x; o z esta comando ou { bloco }
fora do escopo while (expressão);
}
19
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

O comando é executado, e a expressão existem vários valores a serem


é avaliada no final. A única diferença testados. Assim, identificamos a variável
entre o dowhile e o while é que no a ser testada, e colocamos uma linha
primeiro o comando é sempre executado case para cada possível valor que a
pelo menos uma vez. Se for necessário variável pode assumir. No final, nos é
mais de um comando, é necessário permitido colocar uma linha default para
colocar o bloco das instruções entre { } . o caso da variável não assumir nenhum
dos valores previstos. O break no final de
for (inicialização; expressão; passo) cada comando serve para evitar
comando ou { bloco } comparações inúteis depois de
Uma variável é iniciada na parte de encontrado o valor correto. Se for
inicialização. A expressão é testada a necessário mais de um comando, é
cada execução do comando, e enquanto necessário colocar o bloco das
for verdadeira, a(s) instrução(es) instruções entre { } .
contidas no bloco é (são) executada(s).
Outras instruções
Ao final, passo é executado.
Ainda existem centenas de outras
Nota: É possível a inicialização de mais instruções que podem ser utilizadas em
de uma variável e a execução de mais de Java. A maioria delas faz referência a
uma instrução no passo, dividindo as métodos de objetos e classes, que
instruções com virgulas, como abaixo: existem para realizar operações
específicas.
for (int i=0, j=1; i < 10 && j != 11; i++, j++) Mas não precisamos nos limitar às
funções definidas pela linguagem. Temos
break a possibilidade de criar nossas próprias
O comando termina a execução de um funções, utilizando procedimentos
loop sem executar o resto dos simples para realizar tarefas complexas
comandos, e força a sadia do loop. (tradicionalmente chamadas de funções).
Além disso,podemos ainda estender a
continue API, com classes específicas de outros
O comando termina a execução de um fabricantes.
loop sem executar o resto dos
comandos, e volta para o início do loop Apêndice B - Objetivos do Desenho da
para uma nova iteração. Linguagem Java

switch (variável) Simples – A linguagem Java é na


{ verdade uma versão mais “limpa” do C++.
case (valor1): comando ou { bloco } A idéia era que a linguagem deveria
break; evitar consumir um grande tempo para o
case (valor2): comando2 ou { bloco2 } treinamento de programadores;
break; entretanto, ela deveria utilizar as
... técnicas mais modernas de construção
default: comando_final ou { bloco final de software.
}
} Orientada a Objetos – Há trinta anos o
O comando switch serve para conceito de orientação a
simplificar certas situações onde
20
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

objetos existe na programação. Hoje dados nas diferentes arquiteturas, de


em dia, ele é sinônimo de modo que um inteiro num PC representa
modernidade, eficiência e a mesma quantidade de bits em uma
extensibilidade, em um universo cujas estação de trabalho. Assim, um programa
expectativas mudam muito rapidamente. Java é totalmente independente de
hardware e software.
Familiar – O Java se manteve o mais
perto possível do C++. Alta Performance – A performance de
Removendo suas complexidades e um programa Java é relacionada
mantendo sua sintaxe, é possível a uma estritamente à performance do
grande gama de programadores iniciar interpretador. A JVM Java permite que se
diretamente a programação nessa execute o código do usuário na máxima
linguagem. velocidade possível; todas as outras
tarefas ficam em segundo plano. Ainda
Robusta – Java foi criada para assim, se for necessário uma
desenhar programas confiáveis. performance ainda maior, é possível
O interpretador verifica continuamente a compilar o bytecode para código nativo
execução dos programas, protegendo o da máquina.
sistema de erros. A linguagem também
evita que vícios prejudiciais por parte dos Multi-Tarefa – Sistemas orientados à
programadores possam causar rede necessitam executar várias tarefas
instabilidade no sistema operacional. ao mesmo tempo. Java permite a
Não é necessária a alocação de construção de um modelo onde podem
memória, e uma série de erros de ser executadas threads concorrentes.
bibliotecas podem ser descobertos Esse modelo tem controle de
imediatamente, na própria compilação. concorrência, sincronização e
monitoramento presentes na própria
Segura – A tecnologia do Java foi linguagem. Além disso, o Java tem um
desenhada para utilizar sistemathreadsafe que evita qualquer tipo
extensivamente a rede e os ambientes de conflito entre as várias tarefas.
distribuídos. Nessas arquiteturas,
segurança é um dos parâmetros Apêndice C – Dicas para a Construção
principais. Um aplicativo em Java não de Classes
pode ser invadido via rede, pois suas
restrições de segurança não permitem Sempre mantenha seus dados como
acessos não autorizados. private.

Neutralidade – Java foi criada para É a dica principal. Se seus atributos


funcionar em uma grande variedade de forem todos public, você estará violando
plataformas de hardware. seus bytecodes o encapsulamento. Você vai necessitar
permitem a criação de um programa em de métodos para alterar os valores, o
qualquer plataforma e sua execução em que dá um pouco mais de trabalho, mas
qualquer plataforma. a experiência mostra que o formato dos
dados pode ser alterado, mas a forma de
Portabilidade – A neutralidade de alterá-los muda muito pouco.
arquitetura é apenas um dos pontos que
indicam a portabilidade de um sistema. Sempre inicialize seus dados.
Além disso, o Java uniformiza os tipos de
21
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

Java não fará a inicialização de variáveis Essa dica é vaga, pois a complexidade
locais para você. Não confie nos valores depende de quem olha. Entretanto, se
padrão, sempre prefira fazê-lo você houver oportunidade de dividir uma
mesmo. grande classe em duas ou mesmo
três, devemos aproveitar a
Não utilize muitos tipos básicos em oportunidade. Mas claro que isso tem um
uma classe. limite: dividir sua aplicação em 10 classes
A idéia aqui é substituir os tipos básicos de 1 método cada normalmente vai fazer
que são relacionados entre si por outras seu programa ser mais lento.
classes.
Faça o nome de suas classes e
Como exemplo: métodos fazer sentido. Assim como as
variáveis devem ter nomes que
private String rua; private String cidade; representam o dado que elas contém,
private String estado; private String classes devem seguir o mesmo princípio.
cep;Nesse caso, teremos uma maior Uma convenção usada é que a classe
legibilidade usando uma classe deve ser um substantivoseguido de um
chamada endereco, que contenha todos adjetivo ou de um gerúndio. A
esses atributos. convenção dos métodos propõe que eles
devem ser iniciados por letras
Nem todos os atributos necessitam de minúsculas, e cada palavra envolvida
métodos. com o método tem sua primeira letra
Imagine uma classe que represente os maiúscula (como em
empregados da sua empresa. Você converteTemperatura). Quando estamos
provavelmente não necessita ter um falando de métodos cuja função é
método para alterar a data de recuperar dados, iniciamos o método
contratação de uma pessoa, uma vez usando a palavra set, e quando o
que o objeto está construído. Então isso método recupera os dados, usamos get
pode ser resolvido no constructor, sem a (setSalario, getSalario).
necessidade de um método.
Apêndice D – Erros Mais Comuns e
Use definições padrão para suas Suas Soluções
classes. Problemas de Compilador
Sempre use um padrão. Isso torna muito
mais fácil a manutenção e entendimento Erro: Bad command or file name
de código. Normalmente, o padrão usado (Windows 95/98) ou
em Java é: The name specified is not recognized as
an internal or external command, operable
Escopo público Escopo de pacote program or batch file (Windows NT)
Escopo privado Caso essa mensagem de erro apareça
E em cada uma dessas seções, quando da execução do javac ou do
java, isso quer dizer que o seu sistema
Constantes Construtores Métodos não está encontrando esses programas.
Métodos Estáticos Instâncias de O mais comum é a falta da informação
variáveis Variáveis Estáticas no PATH do computador.

Divida classes que estão muito Para solucionar o problema, procure


complexas. ajuda no menu do sistema operacional
22
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

relacionado a como alterar ou adicionar perceber que não existe sentido,


elementos no PATH. apresenta a outra mensagem.

Erros de Sintaxe Quando erros sintáticos acontecem, o


Se você não digitou corretamente bytecode não é gerado. É necessário
alguma instrução do seu programa, o corrigir o problema e tentar novamente.
compilador vai indicar o erro. A
mensagem normalmente mostra o tipo do Erros Semânticos
erro, a linha onde o erro foi detectado, o Além dos erros sintáticos, existem
código naquela linha e a posição do erro também os erros semânticos. Por
na linha. Segue uma amostra: exemplo, se você tentou incrementar
uma variável que não foi iniciada:

O erro indica a falta de um “;” no final da


linha. Erros de Execução
Um erro comum é tentar executar uma
Às vezes podem ocorrer erros onde o classe utilizando-se da extensão.
compilador não consegue entender o Quando quero compilar o programa,
que você pretendia, e mensagens de faço javac MeuProg.java
erro confusassão geradas. No exemplo
abaixo, também temos a falta de um Quando vou executá-lo, faço java
“;”, mas as mensagens são um tanto MeuProg
quanto diferentes: Não é necessária a extensão. Se o
usuário a especificar, uma mensagem
do tipo Can´t find class MeuProg.class

Outro problema comum é a criação de


uma classe sem o método main(). Toda
classe dita “executável” deve possuir
esse método. A falta dele gera uma
mensagem assim:

In class MeuProg: void main(String


argv[]) is not defined

O compilador processa o count++, e E por último, não esquecer que é


como não há o sinal “;”, ele pensa que necessário recompilar o programa a cada
ainda esta avaliando uma expressão. alteração. Se você altera seu código mas
Assim temos a primeira mensagem. A parece que isso não surte efeito, o
segunda acontece quando o problema pode estar aí.
compilador tenta “juntar” a primeira
expressão com a segunda, e ao AVALIAÇÃO

23
_________________________________________________________________________________________________
www.simplesead.com.br
_____________________________________________________________________________________

01 - Por plataforma, entendemos o ponto e vírgula.


conjunto de hardware e software no qual
um programa executa. a) CERTO
b) ERRADO
a) CERTO
b) ERRADO 08 - A função do construtor é garantir que
o objeto associado à variável definida seja
02 - A plataforma Java tem dois iniciado após encontrado um erro na
componentes: Java Virtual Machine (Java função.
VM ou JVM) e Java Application
Programming Interface (Java API). a) CERTO
b) ERRADO
a) CERTO
b) ERRADO 09 - String nome = new String(): Isso quer
dizer que o objeto String tem pelo menos
03 - A API Java é uma coleção de 2 construtores; um que inicia o objeto sem
componentes de software prontos, que argumentos e outro que inicia com
incluem desde estruturas para argumentos.
manipulação de arquivos até a construção
de aplicativos gráficos. a) CERTO
b) ERRADO
a) CERTO
b) ERRADO 10 - Métodos/atributos protected podem
ser herdados e alterados.
04 - O Javascript é uma versão
simplificada do Java. É uma linguagem a) CERTO
utilizada em navegadores. b) ERRADO

a) CERTO Bibliografia/Links Recomendados


b) ERRADO
- Centro de Computação da Unicamp
05 - A classe é um modelo ou protótipo, - http://java.sun.com/docs/white/langenv/
que define as variáveis e comportamentos -
em comum que um certo tipo de objeto http://pt.scribd.com/doc/18510556/Java-
específico contém. Basico
- Thinking In Java – Eckel, Bruce.
a) CERTO Prendice Hall PTR. (www.phprt.com,
b) ERRADO www.bruceeckel.com)
- Just Java – Linden, Peter Van Der.
06 - A instrução return vai indicar qual o Makron Books, SunSoft
valor a ser retornado na chamada do Press.
método. - Core Java 2 – Fundamentals –
Horstmann, Cay S. – Cornell, Gary. The
a) CERTO Sun Microsystems Press.
b) ERRADO

07 - Caso eu tenha mais de um


argumento, eles devem ser separados por
24
_________________________________________________________________________________________________
www.simplesead.com.br

Você também pode gostar