Buscar

livroprogramaojavacelioazevedo-140614184225-phpapp02

Prévia do material em texto

PROGRAMAÇÃO JAVA 
 
• CONCEITOS DE PROGRAMAÇÃO 
 
• ORIENTAÇÃO A OBJETOS 
O QUE É PROGRAMAÇÃO 
 Uma linguagem de programação é um método padronizado para 
expressar instruções para um computador. É um conjunto de regras 
sintáticas e semânticas usadas para definir um programa de 
computador. 
 Uma linguagem permite que um programador especifique 
precisamente sobre quais dados um computador vai atuar, como 
estes dados serão armazenados ou transmitidos e quais ações devem 
ser tomadas sob várias circunstâncias. 
 O conjunto de palavras constitui o código fonte de um software. Esse 
código fonte é depois traduzido para código de máquina, que é 
executado pelo processador. 
 Uma das principais metas das linguagens de programação é permitir 
que programadores tenham mais produtividade, permitindo expressar 
suas intenções mais facilmente do que quando comparado com a 
linguagem de máquina. Assim, linguagens de programação são 
projetadas para que possam ser mais facilmente entendidas por 
programadores, sendo ferramentas para que programadores possam 
escrever programas mais organizados e com maior rapidez. 
 
INTERPRETAÇÃO E COMPILAÇÃO 
 
 Uma linguagem de programação pode ser convertida, ou traduzida, 
em código de máquina por compilação ou interpretação, que juntas 
podem ser chamadas de tradução. 
 Se o método utilizado traduz todo o texto do programa (também 
chamado de código), para só depois executar o programa, então diz-
se que o programa foi compilado e que o mecanismo utilizado para a 
tradução é um compilador (que por sua vez nada mais é do que um 
programa). 
 A versão compilada do programa tipicamente é armazenada, de forma 
que o programa possa ser executado um número indefinido de vezes 
sem que seja necessária nova compilação, o que compensa o tempo 
gasto na compilação. 
CONCEITOS DE PROGRAMAÇÃO 
Programação estruturada 
 
 Programação estruturada é uma forma de programação de 
computadores que preconiza que todos os programas possíveis 
podem ser reduzidos a apenas três estruturas: seqüência, decisão 
e iteração. A Programação estruturada orienta os programadores 
para a criação de estruturas simples em seus programas, usando 
as sub-rotinas e as funções. Apesar de ter sido sucedida pela 
programação orientada por objetos, pode-se dizer que a 
programação estruturada ainda é marcantemente influente, uma 
vez que grande parte das pessoas ainda aprendem programação 
através dela. Porém, a orientação a objetos superou o uso das 
linguagens estruturadas no mercado. 
 
 Cobol, PHP, Perl e Python C são exemplos. 
PROGRAMAÇÃO ORIENTADA A OBJETOS 
 Orientação a objetos, também conhecida como Programação 
Orientada a Objetos é um paradigma de análise, projeto e 
programação de sistemas de software baseado na composição e 
interação entre diversas unidades de software chamadas de objetos. 
Em alguns contextos, prefere-se usar modelagem orientada ao 
objeto, em vez de programação. 
 O funcionamento deste sistema se dá através do relacionamento e 
troca de mensagens entre estes objetos. Na programação orientada a 
objetos, implementa-se um conjunto de classes que definem os 
objetos presentes no sistema de software. Cada classe determina o 
comportamento através de métodos e atributos de seus objetos, 
assim como o relacionamento com outros objetos. 
 C++, C♯, VB.NET, Java, Object Pascal, Objective-C, SuperCollider, 
Ruby e Smalltalk são exemplos. 
JAVA 
 
 É uma linguagem de programação orientada a objetos desenvolvida 
na década de 1990 por uma equipe de programadores chefiada por 
James Gosling, na empresa Sun Microsystems. Hoje, vendida para a 
Oracle. Diferentemente das linguagens convencionais, que são 
compiladas para código nativo, a linguagem Java é compilada para um 
bytecode que é executado por uma máquina virtual. A linguagem de 
programação Java é a linguagem convencional da Plataforma Java, 
mas não sua única linguagem. 
 
ESTRUTURA DE UM BYTECODE 
 
APPLETS, APLICAÇÃO E APPLETVIEWER 
O que é uma APPLET? 
 Applet é um programa especial escrito em Java adaptado para instalação e 
execução dentro de páginas HTML. Estas páginas podem então ser visualizadas 
num browser. 
O que é uma APLICAÇÃO? 
 Aplicação é um programa mais geral escrito na linguagem Java. Não requer um 
browser para sua execução. De fato, Java pode ser usada para criar todo tipo de 
aplicações que usualmente você implementa com outras linguagens mais 
convencionais. 
O que é o APPLETVIEWER? 
 O Appletviewer que mostra apenas a área onde é executada applet. Depois de 
testar bem seu código com o Appletviewer. 
APPLET EM HTML 
<HTML> 
<HEAD> 
<TITLE> Java </TITLE> 
</HEAD> 
<BODY> 
<APPLET CODE=”nome.class” WIDTH=300 HEIGHT=100> 
</APPLET> 
</BODY> 
</HTML> 
 
Disparadas quando se carrega a página HTML 
EXERCÍCIO 
 Criar no Notepad (Bloco de notas) um arquivo que 
contenha o seguinte conteúdo: 
 
class helloworld { 
public static void main (String args[]) { 
System.out.println(“Hello World!”); 
} 
} 
 
 Não se esqueça de salvar o arquivo como “todos os 
arquivos” com o seguinte nome: helloworld.java 
COMPILANDO 
 Para compilar a aplicação, basta digitar o comando no prompt: 
 
javac helloworld.java 
 
 Este comando irá gerar o arquivo helloworld.class, que é o bytecode 
da aplicação. Para executar o bytecode , basta digitar o comando: 
 
java helloworld 
 
 
CASO SEJA NECESSÁRIO 
 
Configure o caminho do Java no prompt ou na variáveis de ambiente em 
“sistema” painel de controle do Windows: 
 
Ex: 
set path=%path%;C:\Program Files\Java\jdk1.7.0_07\bin 
 
Variáveis de ambiente: 
 
path=%path%;C:\Program Files\Java\jdk1.7.0_07\bin 
MÁQUINA VIRTUAL 
Em uma linguagem de programação como C e Pascal, temos a seguinte 
situação quando vamos compilar um programa: 
 
 
CÓDIGO FONTE 
O código fonte é compilado para 
código de máquina específico de 
uma Plataforma sistema 
operacional. 
Muitas vezes o próprio código fonte 
é desenvolvido visando uma única 
plataforma! Esse código executável 
(binário) resultante será executado 
pelo sistema operacional e, por 
esse motivo, ele deve saber 
conversar com o sistema 
operacional em questão. 
 
 
UM POUCO MAIS SOBRE ORIENTAÇÃO A OBJETOS 
Existem, basicamente, duas metodologias de desenvolvimento de software: 
a Programação Estruturada e a Programação Orientada a Objetos. 
Na primeira, o objetivo consiste em separar os dados da funcionalidade do 
programa. Neste caso, as entidades são representadas de forma tal que 
satisfaçam as restrições da linguagem de programação utilizada. Isso acaba 
gerando programas que são difíceis de manter e compreender, principalmente 
se eles forem muito grandes. 
Na segunda, a linguagem de programação é que tem de satisfazer as restrições 
e requisitos das entidades. Isso permite a construção de modelos mais 
realísticos do mundo, e, portanto, mais fáceis de serem mantidos e 
compreendidos. 
EXEMPLO – REPRESENTAÇÃO DE UM CARRO 
Vamos tomar como exemplo a representação de um carro. Vamos descobrir que cada 
metodologia modela de forma diferente esse carro. 
 
Na Programação Estruturada, por exemplo, um carro é representado por um conjunto de 
funções responsáveis por ligar, frear, estacionar, acelerar e assim por diante. Um conjunto 
separado de variáveis define a cor do carro, seu modelo, fabricante e demais características. 
 
Você deve então inicializar (atribuir valores) às variáveis do carro e chamar algumas das 
funções para manipular estas variáveis para que o carro funcione. 
 
Já na Programação Orientada a Objetos, o carro é vistocomo uma integração de seus 
comportamentos (suas funções) e atributos (variáveis) que mantêm o estado atual do carro. 
A integração destes atributos e comportamentos resulta em um objeto. A criação deste 
objeto é simples e faz com que ele seja inicializado ao mesmo tempo sem comandos 
adicionais. 
BIBLIOTECAS 
Isto é, temos um código executável para cada sistema operacional. É necessário 
compilar uma vez para Windows, outra para o Linux, e assim por diante, caso a 
gente queira que esse nosso software possa ser utilizado em várias plataformas. 
Esse é o caso de aplicativos como o OpenOffice, Firefox e outros. 
 
A sua aplicação se utiliza das bibliotecas do sistema operacional, como, por 
exemplo, a de interface gráfica para desenhar as “telas”. A biblioteca de interface 
gráfi•ca do Windows é bem diferente das do Linux. 
Precisamos então reescrever um mesmo pedaço da aplicação para diferentes 
sistemas operacionais, já que eles não são compatíveis. 
 
BYTECODE JAVA E SUA VANTAGEM 
 
Já o Java utiliza do conceito de máquina virtual, onde existe 
entre o sistema operacional e a aplicação, uma camada extra 
responsável por interpretar o que sua aplicação deseja fazer 
para as respectivas chamadas do sistema operacional onde 
ela está rodando no momento. 
DIAGRAMA BYTECODE 
JVM – JAVA VIRTUAL MACHINE 
Seu programa ganha independência de sistema operacional. Ou, melhor ainda, 
independência de plataforma em geral: não é preciso se preocupar em qual 
sistema operacional sua aplicação está rodando, nem em que tipo de 
Máquina, confi•gurações, etc. 
Máquina virtual é um conceito bem mais amplo que o de um interpretador. 
Como o próprio nome diz, uma máquina virtual é como um “computador de 
mentira": tem tudo que um computador tem. Sua aplicação roda sem nenhum 
envolvimento com o sistema operacional! Apenas conversando com a Java 
Virtual Machine (JVM). 
VARIÁVEIS 
 
 Variáveis são alocações de memória nas quais 
podemos guardar dados. Elas têm um nome, 
tipo e valor. Toda vez que necessite usar de 
uma variável você precisa declará-la e só 
então poderá atribuir valores a mesma. 
DECLARANDO VARIÁVEIS 
 As declarações de variáveis consistem de um tipo e um nome de variável: como 
segue o exemplo: 
int idade; 
String nome; 
boolean existe; 
 
 Os nomes de variáveis podem começar com uma letra, um sublinhado ( _ ), ou 
um cifrão ($). Elas não podem começar com um número. Depois do primeiro 
caracter pode-se colocar qualquer letra ou número. 
DECLARANDO VARIÁVEIS 
 
 
• Int a ; // declaração de uma variável 'a' 
 //iniciada a 0 (valor por padrão). 
 
 
• Int b = 8; // declaração de uma variável 'b' iniciada a 8. 
TIPOS DE VARIÁVEIS 
 Toda variável deve possuir um tipo. Os tipos 
que uma variável pode assumir são uma das 
três “coisas” a seguir: 
 
• Uma das oito primitivas básicas de tipos de 
dados. (tipos de informação mais usuais e básicos – boolean “true 
or false”, char UNICODE 16 bits, inteiros e Reais) 
• O nome de uma classe ou interface. 
• Um Array. (checaremos mais adiante) 
 
TIPOS DE VARIÁVEIS 
Os oito tipos de dados básicos são: inteiros, números de ponto-
flutuante, caracteres e booleanos (verdadeiro ou falso). 
 
Tipo Tamanho Alcance (tipos inteiros) 
byte 8 bits - 128 até 127 
short 16 bits - 32.768 até 32.767 
int 32 bits - 2.147.483.648 até 2.147.483.647 
long 64 bits - 9223372036854775808 até 9223372036854775807. 
 
“Existem dois tipos de números de ponto-flutuante: float ( 32 bits, precisão simples) 
e double (64 bits, precisão dupla).” 
 
ATRIBUIÇÕES A VARIÁVEIS 
Após declarada uma variável a atribuição é feita simplesmente usando o 
operador ‘=’: 
 
Exemplo: 
idade = 18; 
existe = true; 
CARACTERES ESPECIAIS 
Caracter Significado 
 \n Nova Linha 
 \t Tab 
 \b Backspace 
 \r Retorno do Carro 
 \f “Formfeed” (avança página na impressora) 
 \\ Barra invertida 
 \’ Apóstrofe 
 \” Aspas 
 \ddd Octal 
 \xdd Hexadecimal 
OPERADORES ARITMÉTICOS 
Operador Significado Exemplo 
 
+ soma 3 + 4 
- subtração 5 -7 
* multiplicação 5 * 5 
 / divisão 14 / 7 
 % módulo 20 % 7 
COMENTÁRIOS 
Java possui três tipos de comentário, o /* e */ como no C e C++. Tudo o que 
estiver entre os dois delimitadores será ignorado: 
 
/* Este comentário ficará visível somente no código o compilador ignorará 
completamente este trecho entre os delimitadores 
*/ 
Duas barras (//) também podem ser usadas para se comentar uma linha: 
 
Exemplo: 
int idade; // este comando declara a variável idade 
/** e */ 
 
E finalmente os comentários podem começar também com /** e 
terminar com */. 
Este comentário é especial e é usado pelo javadoc e para gerar uma 
documentação API do código. 
EXERCÍCIO 
//A (public static void main( String args[] )) corresponde à declaração de um método. Classes podem ter um ou mais métodos. 
//Para a execução de um aplicativo deve sempre existir pelo menos o método main. Como os métodos podem retornar 
//informações, a palavra-chave void é empregada e nenhuma informação é devolvida. Este método possui ainda, entre parêntesis, 
//parâmetros de entrada dados por String args[]. 
//O comando da linha 5 realiza a impressão de uma cadeia de caracteres contidas entre as aspas duplas, empregando um objeto 
//de saída padrão, o System.out. Portanto, o método System.out.println exibe uma linha de texto na janela de comando. 
//É importante notar, também, que esta instrução, assim como todas as outras, é seguida de ponto-e-vírgula (;). Declaração da 
//classe testamensagem com apenas um método. Esta classe deve estar em um arquivo testamensagem1.class. Salve primeiro 
como testamensagem1.java 
public class testamensagem1 { 
 
// Exibe uma mensagem. 
 public static void main (String[] args) { 
 System.out.println(“Java Rules the Universe!"); 
 }// fim do método. 
} // fim da classe. 
 
CLASSES E OBJETOS 
Classes são como moldes que geram instâncias de um certo tipo. 
Para definir uma classe, use a palavra chave class e o nome da classe. 
 
Exemplo: 
class Minhaclasse{ 
... 
} 
Se esta classe é uma subclasse de outra classe, use extends para indicar a 
superclasse. 
Exemplo: 
class Minhaclasse extends SuperClasse{ 
... 
} 
DEFININDO VARIÁVEIS DE INSTÂNCIA 
As variáveis de instância, aparentemente, são declaradas e definidas quase 
exatamente da mesma forma que as variáveis locais, a principal diferença é que a 
alocação delas é na definição da classe. Exemplo: 
 
class Bike extends Veículo { 
String tipo; 
int correia; 
int pedal; 
} 
DEFININDO VARIÁVEIS DE INSTÂNCIA 
 
• Variáveis de instância de classe são como as variáveis de classe, exceto 
que cada subclasse possui sua própria cópia. Como é uma variável 
privada, a variável de instância de classe deve começar com uma letra 
minúscula. Variáveis de instância de classe suportam o comportamento 
de uma classe herdada, com cada classe possuindo seu próprio estado. 
 
OBJETOS 
Objetos são instâncias de uma classe. Quando um objeto é criado ele 
precisa ser inicializado, ou seja para umaúnica classe de nome 
• Estudante de Graduação podemos ter vários objetos durante a 
execução de um programa. 
• Estudante de graduação André; Identificação 940718; Curso 
Computação / Estudante de graduação Luiza , Identificação 893249, 
Curso Medicina... A classe representa somente o molde para a criação 
dos objetos, estes sim contém Informação. 
O atributo Identificação pode ter o valor 940718 por exemplo para a 
instância (objeto) André da classe Estudantes de Graduação. 
REPRESENTAÇÃO GRÁFICA 
 
Uma classe e suas instâncias 
REPRESENTAÇÃO 2 
Cada estudante (ou instância) poderia ser modelado, 
desenhado como: 
MAIS SOBRE CLASSES 
Uma classe é um modelo usado para definir vários objetos com características semelhantes. Um 
programa é constituído de uma classe ou de um conjunto de classes. Os elementos básicos de uma 
classe são chamados membros da classe e podem ser divididos em duas categorias: 
As variáveis, que especificam o estado da classe ou de um objeto instância desta classe. 
Os métodos, que especificam os mecanismos pelos quais a classe ou um objeto instância desta 
classe podem operar. O esqueleto de uma classe apresenta-se da seguinte maneira: 
 
class NomeDaClasse 
{ 
 TipoDaVariahvel1 variahvel1; 
 TipoDaVariahvel2 variahvel2; 
 ... 
 
 TipoDeRetorno1 mehtodo1() 
 { 
 ... 
 } 
 
 TipoDeRetorno2 mehtodo2() 
 { 
 ... 
 } 
 ... 
} 
MAIS SOBRE OBJETOS 
 
Um Objeto é uma instância de uma classe. Um objeto precisa ser declarado 
e criado. Na declaração, a seguinte instrução declara que a 
variável nomeDoObjeto refere-se a um objeto instância da classe NomeDaClasse: 
NomeDaClasse nomeDoObjeto; 
Na criação, a seguinte instrução cria (em memória) um novo objeto instância da 
classe NomeDaClasse, que será referenciado pela 
variável nomeDoObjeto previamente declarada : 
nomeDoObjeto = new NomeDaClasse(); 
As duas instruções acima podem ser combinadas numa só: 
NomeDaClasse nomeDoObjeto = new NomeDaClasse(); 
 
 
EXEMPLO DE UMA CLASSE (INSTÂNCIA) 
 // Classe 
class animal 
 { 
 // Atributo 
protected string especie; 
// Construtor 
public animal(string especie) 
 { 
this.especie = especie; 
 } 
 // Execução 
static void Main(string[] args) 
 { 
// Instâncias 
 cachorro = new animal("Canis lupus familiaris"); 
 gato = new animal("Felis catus"); 
 lobo = new animal("Canis lupus"); } 
} 
REPRESENTAÇÃO DE HERANÇA 
 
Uma subclasse só pode herdar de uma única superclasse diretamente. 
CONSTANTES 
Para declarar uma constante, use a palavra chave final antes da declaração da 
variável e inclua um valor inicial para esta variável. 
 
Exemplo: 
 
final float pi=4.141592; 
final boolean debug=false; 
final int maxsize = 40000; 
 
CONSTANTES – CONTINUA 
Você pode alterar o seu valor apenas uma vez... ou na hora da declaração 
da variável, ou posteriormente no código, desde que seja uma única vez. 
 
final int a = 2; 
a = 3; 
 
Não compila porque você já atribui um valor 2 para a variável a. 
CONSTANTES - CONTINUA 
Constantes são o oposto das variáveis. A diferença está em não podermos atribuir um novo 
valor, pois ele recebe um valor final imutável. Isso ajuda na hora que temos que lembrar de algum número 
muito grande ou muito pequeno, ou até mesmo um valor que aparentemente não nos diz nada, mas que 
significa alguma coisa. Um exemplo bem simples seria 000000. Mas, o que é 000000? É difícil saber o que 
ele significa, mas é muito mais fácil entender que preto em Java é Color.BLACK. Ou seja BLACK é uma 
constante que guarda sempre o mesmo valor (000000). 
Para criarmos uma constante em Java é muito simples. Primeiro nos atemos ao fato de que uma constante 
criada dentro de uma classe deve ser acessada por qualquer membro da classe, então, por definição, essa 
constante é também global ou estática (static). Como uma constante não muda seu valor, então, marcamos 
ela com a palavra chave final, que fará com que o valor nunca seja modificado. Toda constante é um dado, 
portanto, o seu tipo de dado também é obrigatório declarar. 
Então, para declarar uma constante faríamos: 
static final long CONST1 = 1L; ou final long CONST2 = 1L; 
No qual, CONST1 seria uma constante global (ou seja, foi declarada no corpo da classe) e CONST2 seria 
uma constante local (ou seja, foi declarada no corpo de alguma função ou método, por exemplo, dentro 
de main) 
CONSTANTES - CONTINUA 
No qual, CONST1 seria uma constante global (ou seja, foi declarada no corpo da 
classe) e CONST2 seria uma constante local (ou seja, foi declarada no corpo de 
alguma função ou método, por exemplo, dentro de main) 
Para ilustrar bem o uso de constantes, vamos calcular a área e o comprimento 
de um círculo. O porque deste cálculo é que necessitaremos de um número 
constante chamado PI. PI é um número irracional, ou seja, não há uma representação exata 
dele, mas, para o nosso exemplo, usaremos ele com uma precisão de 8 casas decimais. 
Portanto, nosso pi será do tipo double que valerá 3,14159265. Então, perceba que é muito 
mais fácil se lembrar da palavra pi do que do número 3,14159265. Além de, obviamente, 
digitarmos bem menos. 
Então, só para esclarecer o que irá acontecer: O cálculo da área do círculo equivale a raio² × 
pi, e o comprimento é medido em 2 × raio × pi, no qual o raio é a distância entre a borda do 
círculo e seu centro. Vamos usar um raio de 25cm. Vejamos o resultado a seguir. 
CONSTANTES - CÓDIGO 
public class Constantes { 
static final float PI = 3.14159265f; 
public static void main(String args[]) { 
 float raio = 25f; 
 float comprimento = raio * 2 * PI; 
 float area = (raio * raio) * PI; 
 System.out.println("Dados de um círculo de " + raio + "cm:\n“ 
 + "comprimento: " + comprimento + "cm\n“ 
 + "Área: " + area + "cm²"); 
} 
} 
ANATOMIA DE UMA CLASSE (livro “Use a 
Cabeça Java” 
MÉTODOS E ATRIBUTOS STATIC 
Métodos e atributos estáticos só podem acessar outros métodos e 
atributos estáticos da mesma classe, o que faz todo sentido já que 
dentro de um método estático não temos acesso à referência this, pois 
um método estático é chamado através da classe, e não de um objeto. 
ARRAYS 
Dentro de um bloco, podemos declarar diversas variáveis e usá-las: 
 
int idade1; 
int idade2; 
int idade3; 
int idade4; 
 
Isso pode se tornar um problema quando precisamos mudar a quantidade de 
variáveis a serem declaradas de acordo com um parâmetro. Esse parâmetro 
pode variar como por exemplo a quantidade de números contidos num bilhete de 
loteria. Um jogo simples possui 6 números mas podemos comprar um 
Bilhete mais caro com 7 números ou mais. 
CRIANDO UMA ARRAY 
Para facilitar esse tipo de caso podemos declarar um vetor (array) de 
Inteiros. Assim criando um objeto de array: 
 
int[] idades; 
 
O int[] é um tipo. Uma array é sempre um objeto, portanto, a variável 
idades é uma referência. Vamos precisar criar um objeto para poder 
usar a array. 
 
idades = new int[10]; 
 
RESULTADO 
O que •fizemos foi criar uma array de int de 10 posições e atribuir o endereço no 
qual ela foi criada. 
 
No caso do bilhete de loteria, podemos utilizar o mesmo recurso. Mais ainda, a 
quantidade de números do nosso bilhete pode ser defi•nida por uma variável. 
Considere que n indica quantos números nosso bilhete terá, podemos então 
fazer: 
 
int numerosDoBilhete[] = new int[n]; 
 
ARRAYS - DIFICULDADES 
 
• Aprender a usar arrays pode ser um problema em qualquerlinguagem. Isso porque envolve uma série de conceitos, sintaxe e 
outros. No Java, muitas vezes utilizamos outros recursos em vez 
de arrays, em especial os pacotes de coleções do Java. (Java 
collections framework) 
CONDICIONAIS 
O condicional contém a palavra chave if, seguido por um teste booleano. Um 
opcional else como palavra chave pode ser executado no caso do teste ser falso, 
Exemplo: 
 
if ( x < y) 
System.out.println(“ x e menor do que y”); 
else 
System.out.println(“ y e maior); 
 
Nota técnica: A diferença entre o if em Java e C ou C++ é que o teste deve 
retornar um valor booleano(true ou false). 
CONDIÇÃO BOOLEANA 
if (condicaoBooleana) { 
codigo; 
} 
 
Uma condição booleana é qualquer expressão que retorne true ou false. Para 
isso, você pode usar os operadores <, >, <=, >= e outros. Um exemplo: 
int idade = 15; 
if (idade < 18) { 
System.out.println("Não pode entrar"); 
} 
BLOCO 
Um bloco é definido por ({}) e contém um grupo de outros blocos. Quando um novo bloco é 
criado, um novo escopo local é aberto e permite a definição de variáveis locais. As variáveis 
definidas dentro de um bloco só podem ser vistas internamente a este, e são terminadas ou 
extintas no final da execução deste(}). 
void testblock(){ 
int x = 10, w=1; 
if (x> w) 
{ // inicio do bloco 
int y=50; 
System.out.println(“dentro do bloco”); 
System.out.println(“x:” + x); 
System.out.println(“y:” + y); 
} // final do bloco 
System.out.println(“w:” + w); 
System.out.println(“y:” + y); // erro variável não conhecida 
} 
STRING 
A String guarda uma cadeia de caracteres, uma frase completa. Strings São 
objetos que contém uma cadeia de caracteres. São imutáveis, portanto uma vez 
criadas não podem ser alteradas. Caso ocorra uma concatenação de Strings, um 
novo objeto é criado, e o antigo, automaticamente removido. 
 
class Conta { 
int numero; 
String dono; 
... 
EXERCÍCIO 
Crie um arquivo testaidade.java e o compile para calcular a idade seguinte de alguém com 20 anos: 
 
class testaidade { 
public static void main(String[] args) { 
// imprime a idade 
int idade = 20; 
System.out.println(idade); 
// gera uma idade no ano seguinte 
int idadeNoAnoQueVem; 
idadeNoAnoQueVem = idade + 1; 
// imprime a idade 
System.out.println(idadeNoAnoQueVem); 
} 
} 
IDEs 
JCreator é um poderoso Ambiente de desenvolvimento integrado criado pela 
Xinox Software tendo as versões Pro e LE(Learn Edition) que suporta o 
desenvolvimento em Java,JavaScript,XML, HTML. 
Um interativo entorno de desenvolvimento (IDE) para JAVA que com 
algumas características como as que se seguem: 
 
• Manuseamento de projetos em uma interface semelhante à do Microsoft Visual Studio; 
• Definição de esquemas de cor XML; 
• Reutilização de código de projetos existentes usando diferentes versões do JDK; 
• Modelos pré-definidos; 
• Permite manusear e intercâmbiar código com sua integração entre Ant e CVS. 
• Personalização da interface do usuário. 
 
Além desse IDE há diversos outros conhecidos também como o Netbeans e o Eclipse. 
EXERCÍCIO – USANDO O JCREATOR 
Botão Iniciar e localize o Jcreator. Clique nele. Na janela que abrir, selecione New 
project... e Basic Java Applet. Coloque o nome como ola_internet.java 
Na janela que abrir construa a seguinte applet. Logo após, compile, clicando em play. 
 
import java.awt.*; 
import java.applet.*; 
 
public class ola_internet extends Applet { 
 
 public void init() { 
 } 
 
 public void paint(Graphics g) { 
 g.drawString(“Ola internet!!", 50, 60 ); 
 } 
} 
 
EIS NA SEGUINTE HTML CRIADA 
<HTML> 
<HEAD> 
</HEAD> 
<BODY BGCOLOR="000000"> 
<CENTER> 
<APPLET 
 code = “ola_internet.class" 
 width = "500" 
 height = "300" 
 > 
</APPLET> 
</CENTER> 
</BODY> 
</HTML> 
JCREATOR E NETBEANS 
 
• Nesses ambientes de desenvolvimento 
integrado (IDE) você poderá desenvolver os 
mesmos exercícios já realizados no bloco de notas. 
 
ENCAPSULAMENTO 
 
 
 
 
 
 
 
 
 
O encapsulamento é a técnica para agregação das partes de um subprograma 
(dados e códigos) numa forma que seja tratada como uma unidade indivisível 
pelas demais partes do programa. Quando queremos que o objeto retorne o 
nome da referencia desse objeto, por exemplo, deixamos com que um atributo 
chamado Nome possa ser acessado de qualquer parte do programa e não 
sabemos se ele é de um atributo de retorno ou de modificação, utilizamos os 
métodos assessores Get e Set. 
 
Por exemplo, quando queremos receber algum valor utilizamos o método get + 
o nome do atributo com a inicial capitalizada, como vemos no 
exemplo getNome já quando queremos modificar ou repassar um valor 
utilizamos o set da mesma forma como apresentada acima, 
exemplo setNome os padrões gets sempre retornam algum valor já os sets 
geralmente somente modificam estes valores. Vamos ver um método get: 
 
 
MÉTODO ENCAPSULADO 
public String getNome () { 
 return nome; 
 
} 
 
• Então para ter um método encapsulado utilizamos um modificador de acesso 
que geralmente é public o tipo de retorno que ele terá que neste caso é String e 
o nome do método e o tipo de retorno dele. Uma coisa que devemos saber é que 
o retorno sempre tem que ser alcançável e do mesmo tipo. 
MÉTODO ENCAPSULADO 
public String getNome(){ 
 if (this.nome == null){ 
 return 1; 
 } else { 
 return 2; 
 
 } 
} 
 
ESCONDER 
A idéia de ENCAPSULAR é esconder todos os membros de uma classe, além 
de esconder como funcionam as rotinas (no caso métodos) do nosso sistema. 
Encapsular é fundamental para que seu sistema seja suscetível a mudanças: 
Não precisaremos mudar uma regra de negócio em vários lugares, mas sim em 
apenas um único lugar, já que essa regra está encapsulada. 
 
(veja o caso do método saca) 
 
MÉTODO SACA 
CONSTRUTORES 
Quando usamos a palavra chave new, estamos construindo um objeto. Sempre quando o 
new é chamado, ele executa o construtor da classe. O construtor da classe é um bloco 
declarado com o mesmo nome que a classe: 
 
class Conta { 
int numero; 
Cliente titular; 
double saldo; 
double limite; 
// construtor 
Conta() { 
System.out.println("Construindo uma conta."); 
} 
// .. 
} 
CONSTRUTORES - CONTINUAÇÃO 
Então, quando •fizermos: 
 
Conta c = new Conta(); 
 
A mensagem “construindo uma conta” aparecerá na tela. É como uma rotina de 
inicialização que é chamada sempre que um novo objeto é criado. Um construtor 
pode parecer, mas não é um método. 
CONSTRUTORES - CONCLUSÃO 
O interessante é que um construtor pode receber um argumento, podendo assim 
inicializar algum tipo de informação: 
 
class Conta { 
int numero; 
Cliente titular; 
double saldo; 
double limite; 
// construtor 
Conta(Cliente titular) { 
this.titular = titular; 
} 
// .. 
} 
Recapitulando: ATRIBUTOS E MÉTODOS 
 
Atributos: Definem características de objetos, e.g., a 
classe Pessoa tem os Atributos Nome, Endereço, Telefone e Sexo. 
 
Métodos: Definem o comportamento (funções) dos objetos, tendo seus 
nomes normalmente definidos por verbos, ações. Para a 
classe Pessoa, por exemplo, podem haver os métodos 
Comprar, Vender e Alugar. 
 
 
 
EXERCÍCIO 
Utilize um IDE ou o bloco de notas para criar um programa que faz um carro 
andar. Você vai precisar criar duas classes em arquivos diferentes para poder 
executar o projeto. Uma classe será o carro, propriamente dito,a outra será o 
executor da primeira (a chave do carro). Compile as duas classes .java e rode o 
executor. Os dados são Carro.java e TestaCarro.java e devem estar na mesma 
pasta. IDES recomendados: Eclipse, Jcreator e Netbeans. 
 
O código fonte segue a seguir como exemplo: 
 
 
class Carro.java 
class Carro { 
 
String cor; 
String modelo; 
double velocidadeAtual; 
double velocidadeMaxima; 
 
//liga o carro 
void liga() { 
System.out.println("O carro esta ligado"); 
} 
 
//acelera uma certa quantidade 
void acelera(double quantidade) { 
double velocidadeNova = this.velocidadeAtual + quantidade; 
this.velocidadeAtual = velocidadeNova; 
} 
 
//devolve a marcha do carro 
int pegaMarcha() { 
if (this.velocidadeAtual < 0) { 
return -1; 
} 
if (this.velocidadeAtual >= 0 && this.velocidadeAtual < 40) { 
return 1; 
} 
if (this.velocidadeAtual >= 40 && this.velocidadeAtual < 80) { 
return 2; 
} 
return 3; 
} 
} 
 
class TestaCarro.java 
class TestaCarro { 
public static void main(String[] args) { 
Carro meuCarro; 
meuCarro = new Carro(); 
meuCarro.cor = “Vermelho"; 
meuCarro.modelo = "Ferrari"; 
meuCarro.velocidadeAtual = 0; 
meuCarro.velocidadeMaxima = 300; 
 
// liga o carro 
meuCarro.liga(); 
 
// acelera o carro 
meuCarro.acelera(100); 
System.out.println(meuCarro.velocidadeAtual); 
} 
} 
 
 
Duke – mascote do java 
POR QUE JAVA? 
Por que Java? 
Linguagem muito poderosa embora simples 
Permite portabilidade 
 
Muito usada em programação em rede 
 
 Server Programming 
 Aplicações de e-commerce, e-business, etc. 
 Aplicações para acesso via Internet, intranet, etc 
HISTÓRICO DO JAVA 
Em 1991, na Sun Microsystems, foi iniciado o Green Project, o berço do Java, uma linguagem de 
programação orientada a objetos. Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James 
Gosling. O objetivo do projeto não era a criação de uma nova linguagem de programação, mas antecipar e 
planejar a “próxima onda” do mundo digital. Eles acreditavam que em algum tempo haveria uma 
convergência dos computadores com os equipamentos e eletrodomésticos comumente usados pelas 
pessoas no seu dia-a-dia. 
 
Para provar a viabilidade desta idéia, 13 pessoas trabalharam arduamente durante 18 meses. No verão de 
1992 eles emergiram de um escritório de Sand Hill Road no Menlo Park com uma demonstração funcional 
da idéia inicial. O protótipo se chamava *7, um controle remoto com uma interface gráfica touchscreen. Para 
o *7 foi criado um mascote, hoje amplamente conhecido no mundo Java, o Duke. O trabalho do Duke no *7 
era ser um guia virtual ajudando e ensinando o usuário a utilizar o equipamento. O *7 tinha a habilidade de 
controlar diversos dispositivos e aplicações. James Gosling especificou uma nova linguagem de 
programação para o *7. Gosling decidiu batizá-la de “Oak”, que quer dizer carvalho, uma árvore que ele 
podia observar quando olhava pela sua janela. 
HISTÓRICO DO JAVA – PARTE 2 
O próximo passo era encontrar um mercado para o *7. A equipe achava que uma boa idéia seria controlar 
televisões e vídeo por demanda com o equipamento. Eles construíram um demo chamado MovieWood, mas 
infelizmente era muito cedo para que o vídeo por demanda bem como as empresas de TV a cabo 
pudessem viabilizar o negócio. A idéia que o *7 tentava vender, hoje já é realidade em programas interativos 
e também na televisão digital. Permitir ao telespectador interagir com a emissora e com a programação em 
uma grande rede cabos, era algo muito visionário e estava muito longe do que as empresas de TV a cabo 
tinham capacidade de entender e comprar. A idéia certa, na época errada. 
A sorte é que o boom da Internet aconteceu, e rapidamente uma grande rede interativa estava se 
estabelecendo. Era este tipo de rede interativa que a equipe do *7 estava tentando vender para as 
empresas de TV a cabo. E, da noite para o dia, não era mais necessário construir a infra-estrutura para a 
rede, em um golpe de sorte, ela simplesmente estava lá. Gosling foi incumbido de adaptar o Oak para a 
Internet e em janeiro 1995 foi lançada uma nova versão do Oak que foi rebatizada para Java. A tecnologia 
Java tinha sido projetada para se mover por meio das redes de dispositivos heterogêneos, redes como a 
Internet. Agora aplicações poderiam ser executadas dentro dos Browsers nos Applets Java e tudo seria 
disponibilizado pela Internet instantaneamente. Foi o estático HTML dos Browsers que promoveu a rápida 
disseminação da dinâmica tecnologia Java. 
HISTÓRICO DO JAVA - CONCLUSÃO 
A velocidade dos acontecimentos seguintes foi assustadora, o número de usuários cresceu rapidamente, 
grandes players, como a IBM anunciaram suporte para a tecnologia Java. Desde seu lançamento, em maio 
de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programação 
na história da computação. Em 2003 Java atingiu a marca de 4 milhões de desenvolvedores em todo 
mundo. Hoje são cerca de 9 milhões de desenvolvedores. 
 
Java continuou e continua crescendo e hoje é com certeza um padrão para o mercado oferecendo 
qualidade, performance e segurança ainda sem nenhum competidor a altura. Java tornou-se popular 
pelo seu uso na Internet e hoje possui seu ambiente de execução presente em web browsers, mainframes, 
SOs, celulares, palmtops e cartões inteligentes, entre outros. 
 
VÍDEOS 
 
ASSISTA OS VÍDEOS SOBRE O HISTÓRICO DO JAVA 
HERANÇA E POLIMORFISMO 
Herança: É a capacidade de criar subclasses a partir de uma 
superclasse. Essas subclasses herdam, então, todas as características 
da superclasse. É normalmente definida como uma associação do tipo 
"é um", e.x., Cliente é uma Pessoa. 
 
Polimorfismo: É o princípio pelo qual uma subclasse sobrescreve um 
comportamento (método) herdado de sua superclasse. Por exemplo, a 
classe Pessoa implementa o método Comprar, mas a classe Cliente, 
derivada da classe Pessoa, precisa de algo mais específico, 
envolvendo mais dados. Então a classe Cliente sobrescreve o 
método Comprar, tornando-o mais específico. 
 
 
HERANÇA 
Primeiramente cria-se a classe Pessoa.java com o código abaixo: 
 
package heranca; 
 Pessoa.java 
public class Pessoa { 
 String nome, 
 idade, 
 endereco= "R: Java ,501"; 
 
 public void ImprimeNome(){ 
 System.out.println("o nome é:"); 
 System.out.println("Endereco: " + endereco); 
 } 
 } 
HERANÇA 
Cria-se a classe Fornecedor.java: 
 
package heranca; 
 
Fornecedor.java 
 
public class Fornecedor extends Pessoa { 
 
 String cnpj; 
 
 public void ImprimeNome (){ 
 System.out.println("O nome do fornecedor é : " + nome + "\n Cnpj: " + cnpj); 
 } 
} 
HERANÇA 
Cria-se a classe Cliente.java: 
 
package heranca; 
 
public class Cliente extends Pessoa { 
 
 String cpf; 
 
 public void ImprimeNome (){ 
 
 System.out.println("Nome do cliente é : " + nome + "\n Nº CPF: " + cpf + "\n Seu endereco :" + 
endereco); 
 
 } 
 } 
HERANÇA - CONCLUSÃO 
A classe Principal será a executora. 
 
package heranca; 
public class Principal { 
 public static void main(String[] args) { 
 
 Cliente c = new Cliente(); 
 c.nome="Luiz"; 
 c.cpf="073.777.796-21"; 
 c.ImprimeNome(); 
 Fornecedor f = new Fornecedor (); 
 
 f.nome="Deltatronic";f.cnpj="073.856.9856.52-10"; 
 
 f.ImprimeNome(); 
 } } 
HERANÇA - EXERCÍCIO 
 
• Faça o exemplo como exercício através do 
Netbeans/Eclipse e execute o programa. 
HERANÇA – OUTRO EXEMPLO 
A classe herda (têm) todos atributos e métodos visíveis em outra classe: 
Exemplo: 
 
class a { 
public void metodo1() { 
} 
 
private void metodo2() { 
} 
} 
 
class b extends a { 
//b tem metodo1 porque herdou 
//b não tem metodo2 porque não é visivel para herança 
} 
POLIMORFISMO OU SOBRECARGA 
Os métodos em Java podem ser sobrecarregados, ou seja, podem-se criar métodos com o 
mesmo nome, mas com diferentes assinaturas (parâmetros) e diferentes definições. Quando 
se chama um método em um objeto, o Java casa o nome do método, o número de 
argumentos e o tipo dos argumentos e escolhe qual a definição do método a executar. Para 
criar um método sobrecarregado, é necessário criar diferentes definições de métodos na sua 
classe, todos com o mesmo nome, mas com diferentes parâmetros (número de argumentos 
ou tipos). 
 
No exemplo a seguir veremos a definição da classe Retângulo, a qual define um Retângulo 
plano. A classe Retângulo têm quatro variáveis para instanciar, as quais definem o canto 
superior esquerdo e o canto inferior direito do retângulo: 
x1, y1, x2 e y2. 
POLIMORFISMO OU SOBRECARGA 
class Retangulo { 
int x1 = 0; 
int y1 = 0; 
int x2 = 0; 
int y2 = 0; 
} 
 
Quando uma nova instância da classe Retângulo for criada, todos as suas variáveis são 
inicializadas com 0. Definindo um método construaRetang (): este método recebe quatro 
inteiros e faz um “resize” do retângulo de acordo com as novas coordenadas e retorna o 
objeto retângulo resultante ( note que os argumentos possuem o mesmo nome das variáveis 
instanciáveis, portanto deve-se usar o this para referenciá-las ): 
POLIMORFISMO OU SOBRECARGA 
Retangulo construaRetang ( int x1, int y1, int x2, int y2 ) { 
this.x1 = x1; 
this.y1 = y1; 
this.x2 = x2; 
this.y2 = y2; 
return this; 
} 
 
Querendo-se definir as dimensões do retângulo de outra forma, por exemplo 
pode-se usar o objeto Point ao invés de coordenadas individuais. Faremos a 
sobrecarga do método construaRetang (), passando agora como parâmetro dois 
objetos Point: 
 
POLIMORFISMO OU SOBRECARGA 
Retangulo construaRetang (Point superiorEsquerdo, Point inferiorDireito) { 
x1 = superiorEsquerdo.x; 
y1 = superiorEsquerdo.y; 
x2 = inferiorDireito.x; 
y2 = inferiorDireito.y; 
return this; 
} 
 
Porém querendo-se definir um retângulo usando somente o canto superior 
esquerdo e uma largura e altura do retângulo pode-se ainda definir mais um 
método construaRetang (): 
POLIMORFISMO OU SOBRECARGA 
Retangulo construaRetang (Point superiorEsquerdo, int largura, int altura) 
{ 
x1 = superiorEsquerdo.x; 
y1 = superiorEsquerdo.y; 
x2 = (x1 + largura); 
y2 = (y1 + altura); 
return this; 
} 
POLIMORFISMO OU SOBRECARGA - CONCLUSÃO 
Para finalizar o exemplo mostra-se a seguir um método para imprimir as coordenadas do 
retângulo e um main para fazer o teste: 
 
 
import java.awt.Point; 
class Retangulo { 
int x1 = 0; 
int y1 = 0; 
int x2 = 0; 
int y2 = 0; 
Retangulo construaRetang ( int x1, int y1, int x2, int y2 ) { 
this.x1 = x1; 
this.y1 = y1; 
this.x2 = x2; 
this.y2 = y2; 
return this; 
} 
Retangulo construaRetang (Point superiorEsquerdo, Point inferiorDireito) { 
x1 = superiorEsquerdo.x; 
y1 = superiorEsquerdo.y; 
x2 = inferiorDireito.x; 
y2 = inferiorDireito.y; 
return this; 
} 
public static void main ( String args[] ) { 
 
Retangulo retang = new Retangulo(); 
System.out.println ( “Chamando construaRetang com 
coordenadas 25, 25, 
50, 50 :” ); 
retang.construaRetang ( 25, 25, 50, 50 ); 
retang.imprimaRetangulo (); 
System.out.println ( “--------------------------------------------“); 
System.out.println ( “Chamando construaRetang com os pontos 
(10, 10) 
, (20, 20) :” ); 
retang.construaRetang ( new Point (10,10) , new Point (20, 20) 
); 
retang.imprimaRetangulo (); 
System.out.println ( “--------------------------------------------“); 
System.out.println ( “Chamando construaRetang com os pontos 
(10, 10) 
, largura (50) e altura (50) :” ); 
retang.construaRetang ( new Point (10,10) , 50, 50); 
retang.imprimaRetangulo (); 
System.out.println ( “--------------------------------------------“); 
}} 
POLIMORFISMO OU SOBRECARGA - CONCLUSÃO 
Retangulo construaRetang (Point superiorEsquerdo, 
int largura, int altura) 
{ 
x1 = superiorEsquerdo.x; 
y1 = superiorEsquerdo.y; 
x2 = (x1 + largura); 
y2 = (y1 + altura); 
return this; 
} 
void imprimaRetangulo () { 
System.out.print ( “Retângulo: < “ + x1 + “, “ + y1 ); 
System.out.println ( “, “ + x2 + “, “ + y2 + “>”); 
} 
EXERCÍCIO 
Descubra os dados de salário do Funcionário Zeus construindo duas 
classes do Java. Salve-as como Funcionario.java e TestaFuncionario.java e 
depois as compile. 
 
Faça isso utilizando um IDE ou mesmo o bloco de notas se preferir. 
 
Execute o programa. 
class Funcionario.java 
class Funcionario { 
double salario; 
 String nome; 
 //seus outros atributos e métodos 
void bonifica(double aumento) { 
 //o que fazer aqui dentro 
} 
double calculaGanhoAnual() { 
 return 0; 
 //o que fazer aqui dentro 
} 
} 
class TestaFuncionario.java 
class TestaFuncionario { 
 
public static void main(String[] args) { 
Funcionario f1 = new Funcionario(); 
 
f1.nome = "Zeus"; 
f1.salario = 100; 
f1.bonifica(50); 
 
System.out.println("salario atual:" + f1.salario); 
System.out.println("ganho anual:" + f1.calculaGanhoAnual()); 
 
} 
} 
 
ÁREAS DE APLICAÇÃO DO JAVA 
Até hoje, a plataforma Java já atraiu mais de 9 milhões de desenvolvedores de 
software. Ele é usado em todo grande segmento do setor e está presente em 
uma grande gama de dispositivos, computadores e redes. 
 
A versatilidade, eficiência, portabilidade de plataforma e segurança da tecnologia 
Java, a tornam a tecnologia ideal para a computação de rede. De laptops a 
datacenters, consoles de games a supercomputadores científicos, telefones 
celulares à Internet, o Java está em todos os lugares! 
ÁREAS DE APLICAÇÃO DO JAVA 
• 1,1 bilhão de desktops executam Java; 
• 930 milhões de download do Java Runtime Environment a cada ano; 
• 3 bilhões de telefones celulares executam Java; 
• Telefones Java são lançados a cada ano em um número 31 vezes maior que a 
Apple e a Android juntas; 
• 100% de Blu-ray players executam Java; 
• 1,4 bilhões de Placas Java são fabricadas a cada ano; 
• Decodificadores Java, impressoras, câmeras Web, games, sistemas de navegação 
automotiva, casas lotéricas, dispositivos médicos, estações de pagamento de 
estacionamento, etc; 
 
Para conhecer mais informações sobre as áreas de aplicação Java, explore 
o java.com. 
 
OS DESENVOLVEDORES ESCOLHEM JAVA 
O Java foi testado, refinado, estendido e comprovado por uma comunidade dedicada. Mais de 9 milhões de 
desenvolvedores Java fazem dele tornam a maior e a mais ativa comunidade de desenvolvimento do 
planeta. Com sua versatilidade, eficiência e portabilidade, o Java tornou-se inestimável para os 
desenvolvedores permitindo que eles: 
 
• Gravem um software em uma plataforma e o executem virtualmente em qualquer outra plataforma. 
• Criem programas que possam ser executados dentro em um web browser e acessem web services 
disponíveis. 
• Desenvolvam aplicações do servidor para fórunson-line, armazenamentos, pesquisas, processamento de 
forms HTML e mais. 
• Combinem aplicações ou serviços usando a linguagem Java para criar aplicações ou serviços altamente 
personalizáveis. 
• Gravem aplicações potentes e eficientes para telefones celulares, processadores remotos, produtos de 
consumo de baixo custo e praticamente qualquer outro dispositivo com pulso digital. 
 
 
CRESCIMENTO DO JAVA 
Atualmente, o Java tem crescido muito na área de engenharia e sistemas de informação. 
O conceito de aplicação Java para o desenvolvimento de outros softwares não poderia ser 
diferente, com isso levou as universidades a realizar a implantação em seu ensino de 
softwares de simulação como exemplo, C & C++ com o intuito de transformar o aluno em um 
bom profissional de mercado. Nesse crescente mercado, várias empresas buscam 
desenvolver softwares para as mais diversas aplicações. É aí que surgem os grandes 
desafios, como o de permitir a interoperabilidade entre os múltiplos dispositivos distintos e o 
de desenvolver núcleos de aplicações que possam ser usados em aparelhos computacionais 
diversos, como exemplo, as câmeras digitais, os PDAs, os celulares, os novos aparelhos de 
TV digital, entre muitos outros. 
 
Nesse contexto, a linguagem Java surge como uma solução poderosa no desenvolvimento 
de aplicações multiplataforma, devido a fornecer uma quantidade de pacotes para as mais 
diversas necessidades tecnológicas dos dias atuais. 
CRESCIMENTO DO JAVA – PARTE 2 
Java tem como eficiência, devido sua criação ter sido realizada para ser utilizada em 
computadores pequenos, ela exige pouco espaço e pouca memória. Java é muito mais eficiente 
que grande parte das linguagens de “scripting” existentes, embora seja cerca de 20 vezes mais 
lenta que C, o que não é um marco definitivo. Com a evolução da linguagem, serão criados 
geradores de “byte-codes” cada vez mais otimizados que trarão as marcas de performance da 
linguagem mais próximas das de C++ e C. 
É perceptível que a linguagem Java é excelente para desenvolver aplicações comerciais e 
para ser usada em universidades. Java pode ser vista como uma fusão de várias tecnologias 
que vêm sendo desenvolvidas na área de computação, de modo que estudantes dessa 
linguagem tem a oportunidade de tomar contato com vários tópicos recentes: programação 
concorrente, sistemas distribuídos, orientação a objetos, protocolos da Internet, e uma série de 
outros assuntos fáceis de praticar nessa linguagem. 
Com isso o aluno provido do conhecimento de linguagem Java, aplica, toma decisões, modela 
informações ao ponto de ter o resultado esperado ou exato, se a construção dos parâmetros e 
a programação estiverem corretos. 
SEMELHANÇAS 
Java tem a aparência de C ou de C++, embora a filosofia da linguagem seja diferente, 
havendo grandes semelhanças entre alguma destas linguagens. O aluno de Engenharia por 
exemplo que programa em qualquer uma delas, ou em uma linguagem orientada a objetos, 
se tornará um bom programador Java em menos tempo. Java também possui características 
herdadas de muitas outras linguagens de programação: Smalltalk, Eiffel, 
Modula-3, etc. 
 
Muitas das características desta linguagem não são totalmente novas. Java é uma feliz 
união de tecnologias testadas por vários centros de pesquisa e desenvolvimento de 
software. 
 
 
ESTRUTURAS DAS APLICAÇÕES JAVA 
 
• Agora você entenderá a estrutura básica do Java 
(Arquivo fonte , classes, métodos , método main), 
assim como a anatomia básica dessas respectivas 
estruturas. 
 
ARQUIVOS FONTE (SOURCE FILE) 
Em Java, cada classe (class) é colocada em um arquivo source, esses arquivos representam partes de uma 
aplicação ou toda a aplicação(no caso de programas muito pequenos). 
Arquivos source são gerados com a extensão .java e podem ser facilmente criados 
utilizando o notepad por exemplo. Esses arquivos devem possuir o mesmo nome da 
classe que possuem. 
 
CLASSES 
 
Em uma classe Java são colocados os métodos (methods), funções ou 
procedimentos. Todo o código deve estar em alguma classe, pois quando 
executamos algum aplicativo java nós estamos, na verdade, executando 
uma classe. 
 
Diferentemente de um arquivo fonte que só pode conter uma classe, uma 
classe pode conter vários métodos. Em java a classe deve estar em um 
Arquivo Fonte (Source File) e deve ir com um par de chaves “{}”, são 
nessas chaves que serão colocados os métodos. Lembrando que uma 
classe sempre inicia com letra maiúscula. 
Listagem 1: Exemplo de uma classe contida em um Source File 
MyClass.java 
 
1 
2 
3 
public class MyClass{ 
// código vai aqui 
} 
MÉTODOS (METHODS) 
Os métodos, funções ou procedimentos são onde declararemos o código das nossas aplicações 
java. 
 
Assim como classes, os métodos em java devem ser escritos acompanhados de um par de chaves 
“{}” no final. Lembrando que um método sempre inicia com letra minúscula. 
 
Listagem 2: Exemplo de um método contido em uma Classe 
 
public class MyClass{ 
public void meuMetodo(/*argumentos*/){ 
} 
} 
 
Agora que vimos a estrutura básica do código em java, vamos analisar melhor o 
código e tentar entender o que declaramos quando criamos classes ou métodos. 
ANATOMIA DE UMA CLASSE EM JAVA 
 
public class MyClass{ 
public void meuMetodo (/*argumentos*/){ 
} 
} 
 
public = Refere-se a visibilidade desta classe. Quando dizemos que uma classe é de 
visibilidade “public” , estamos dizendo que esta classe poderá ser acessada por 
outras classes. 
class = Mostramos que estamos criando uma classe. 
MyClass = Refere-se ao nome da classe que estamos criando. Nesse caso , o nome da 
minha classe será “MyClass”. 
{ } = As chaves indicam até onde certa classe ou método se estende. O código que 
queremos inserir nesta classe deverá ser escrito dentro do espaço das chaves. 
ANATOMIA DE UM MÉTODO 
public class MyClass{ 
public void meuMetodo(/*argumentos*/){ 
 } 
 } 
public = Do mesmo modo que uma classe, refere-se a visibilidade deste método. Quando dizemos 
que o método é de visibilidade “public” , estamos dizendo que este método poderá ser acessado por 
outras classes. 
void = Refere-se ao tipo de retorno que esse método terá. Nesse caso, como o tipo de retorno é 
“void”, ou seja , “vazio”, esse método não retornará valor nenhum. 
meuMetodo = Assim como numa classe, refere-se ao nome do método que estamos criando. Nesse 
caso, o nome do meu método será “meuMetodo”. 
(/*argumentos*/ ) = Refere-se aos argumentos que serão passados para esse método, sendo 
opcional. Caso não seja necessário passar argumentos, simplesmente deixaríamos os parênteses 
vazios “( ) “. De contrário énecessário escrever o tipo da variável a ser passada e um nome para 
essa variável “(int valor)”. { } = As chaves indicam até onde certa classe ou método se estende. O 
código que queremos inserir nesta classe deverá ser escrito dentro do espaço das chaves. 
O MÉTODO MAIN 
Quando o java virtual machine (JVM) inicia, ele procura na sua classe principal 
(executora) por um método muito específico, chamado de método main. Uma 
aplicação Java obrigatoriamente deverá possuir pelo menos uma classe e um método 
main, pois é por esse método main que o JVM começará a executar. 
Como o método main é padrão para qualquer aplicação java, há algumas regras que 
devem ser cumpridas para o funcionamento desse método. Por regra , todo método 
main deverá ser : Público, estático , sem retorno(void), com nome de “main”, e deverá 
receber como argumento um array do tipo String. 
 
Exemplo de um método main contido em uma Classe:public class MyClass{ 
public static void main(String[] args){ 
} 
} 
ANATOMIA DO MÉTODO MAIN 
public class MyClass{ 
public static void main(String[] args){ 
} 
} 
public = Do mesmo modo que um método comum, refere-se a visibilidade deste método. Quando 
dizemos que o método é de visibilidade “public” , estamos dizendo que este método poderá ser 
acessado por outras classes. 
static = Nos garante que somente haverá uma, e não mais que uma, referência para nosso método, 
main, ou seja, todas as instâncias da classe irão compartilhar a mesma cópia do método main. 
void = Assim como um método comum, refere-se ao tipo de retorno que esse método terá. Nesse 
caso, como o tipo de retorno deve ser “void”, ou seja , “vazio”, esse método não retornará valor 
nenhum. 
(String[] args ) = Refere-se aos argumentos que serão passados para esse método, sendo obrigatório no 
caso do método Main. 
{} = Assim como um método comum , As chaves indicam até onde certa classe ou método se estende. O 
código que queremos inserir neste método deverá ser escrito dentro do espaço das chaves. 
DE MANEIRA MAIS CLARA E MAIS 
public significa que a classe pode ser acessível a qualquer parte do código class para 
introduzirmos o nome da classe 
static significa que não é necessário criar um objeto para usar esse método. 
void significa que esse método realiza uma tarefa mas não retorna nenhuma 
informação ao completá-la. 
main (pronuncia men) (Para um aplicativo ser executado, um dos métodos deve se 
chamar main. 
O parâmetro "String [] args" indica que o método main recebe significa um array de 
Strings. 
Double é o tipo de dado mais complexo que há em Java e o maior valor possível de se 
armazenar é 1,797.693.134.862.315.7E+308. Muito mais que 
qualquer programador precisa. 
extends está informando que a classe herda métodos e atributos de determinada 
classe. 
DE MANEIRA MAIS CLARA E MAIS 
protected oculta as informações para as classes que instanciarem os métodos e 
atributos dela, portanto eles são acessíveis diretamente pelas classes que herdam as 
informações delas. 
private indica que a classe ou o pacote está encapsulado, por herança, oculta 
completamente. 
construtor - todas as informações que serão iniciadas junto com o projeto estarão no 
construtor. ex: initcomponents (definir posições da tela por exemplo, titulo, tamanho, 
etc). 
instanciar - criar objeto. 
Instancia é a declaração de um objeto que foi definido por uma classe. Objeto é a 
concretização da classe e Classe é a abstração de objetos que tenham atributos 
comuns. 
Buffer é uma região da memória, temporária, para armazenar informações. 
DE MANEIRA MAIS CLARA E MAIS 
classe - molde 
objeto - produto desse molde. Objeto é uma representação computacional de uma 
entidade do mundo real. 
import - os termos que seguem o import são as bibliotecas utilizadas. 
Return serve para a mesma finalidade que no DOS. Return (ou teclar ENTER, por 
exemplo) é um comando que instrui o programa para executar algo 
que ele está aguardando ou mesmo não executar nada. o return serve para encerrar 
um método, retornando o que a assinatura disse que iria retornar. 
 
Por exemplo: 
public int metodo(){ 
return 1; // porque o método retorna int 
} 
} 
DE MANEIRA MAIS CLARA E MAIS 
Ou no caso de void, não retornaria nada... 
só seria usado caso quisesse finalizar o método por alguma condição. 
 
public void qualquercoisa (int numero){ 
if(numero == 1) 
return; 
else 
numero = 1; 
//agora nao precisa de return pois o método já chegou ao fim. 
} 
 
MÉTODOS E CONSTRUTORES 
Uma das dúvidas entre métodos e construtores é de que se são a mesma coisa ou não. 
A resposta simples é essa: Qualquer método que não seja o construtor é um método comum. 
 
Os métodos comuns devem ser executados explicitamente. Os métodos construtores são executados na 
instanciação de um objeto. 
 
No exemplo: 
 
public class Gato { 
public void Gato() { 
system.out.println("Um gato foi criado"); 
} 
 
public void miar() { 
system.out.println("MIAU"); 
} 
} 
 
A classe Gato tem um construtor, que deve ser de mesmo nome, isto é a função Gato ... quando você 
instancia o objeto Gato g = new Gato(); o construtor é executado e um gato foi criado e impresso no 
console. Para executar o método comum Miar, chame gato.miar(); 
POLÊMICAS SOBRE O “MÉTODO CONSTRUTOR 
ESPECIAL” 
 
 
• O construtor não é um método: Não é herdado, não pode ser chamado 
duas vezes, não existe invocação virtual. Mas, internamente, na JVM 
(Java Virtual Machine), ele é tratado como um método especial, sem 
essas características. 
 
 
IMPORTANDO BIBLIOTECA DE ENTRADA/SAÍDA 
 
• Agora vocês poderão inserir e receber dados em seu programa 
Java. 
 
• Façam isso começando com: import java.io.*; no início do código. 
 
 
EXERCÍCIO 
Crie um novo programa Hello para a inserção de dados, com uma entrada 
interativa de string. 
Salve-o como Hello.java 
 
import java.io.*; 
 
class Hello { 
 
 public static void main(String[] args) throws IOException { 
 BufferedReader in; 
 in = new BufferedReader (new InputStreamReader (System.in)); 
 System.out.print("Digite o seu nome: "); 
 String name = in.readLine(); 
 System.out.println("Hello, " + name); 
 } 
} 
 
 
DESCREVENDO O CÓDIGO 
O comando import é necessário para indicar ao compilador onde encontrar as definições das 
classes IOException, InputStreamReader e BufferedReader. 
 
A cláusula throws IOException é necessária porque o método main() está usando construtores e 
métodos que disparam esta exceção. Em Java, esta espécie de exceção deve ser capturada ou 
novamente disparada como está aqui. 
 
O construtor da classe InputStreamReader cria um objeto InputStreamReader, anexado ao objeto 
System.in que representa o teclado de entrada. Este objeto controla cada caracter que é digitado no 
teclado. 
 
O construtor de classe BufferedReader guarda cada caracter que provém do objeto anônimo 
InputStreamReader, acumulando-os como um string em seu buffer. 
O método readLine() retorna o string que foi acumulado no buffer do objeto. 
 
 
EXERCÍCIO 
Crie um programa em Java que adivinha o ano que você nasceu, com uma entrada interativa 
numérica. 
Declare as Variáveis necessárias. Ao término, salve-o como YearOfBirth.java e o compile: 
 
import java.io.*; 
 
class YearOfBirth { 
 public static void main(String[] args) throws IOException { 
 BufferedReader in; 
 in = new BufferedReader (new InputStreamReader (System.in)); 
 System.out.print("Digite sua idade: "); 
 String input = in.readLine(); 
 int age = Integer.parseInt(input); 
 System.out.println("você tem " + age + " anos agora."); 
 int year = 2013 - age; 
 System.out.println("Assim, você provavelmente nasceu em " + year); 
 } 
} 
RESUMO 
O que é código fonte? 
Código fonte é o código do programa ainda aberto num formato em que um 
compilador possa abrir e alterá-lo. 
 
O que é linguagem de alto nível? 
É aquela linguagem q se aproxima da linguagem humana. 
 
E linguagem de baixo nível? 
Seria uma linguagem que se assemelha a linguagem da máquina. Ex. O Assembly. 
 
O que é compilador? 
É um programa para escrever e abrir códigos que criam um programa ou arquivo. 
RESUMO – PARA FIXAR (ALGORITMO) 
EXEMPLO DE UM ALGORITMO QUE CALCULA A MÉDIA ARITMÉTICA: 
 
INÍCIO (início do programa) 
 
 DECLARE NOME COMO STRING ( declarando como uma cadeira de caracteres) 
 DECLARE N1,N2,N3,N4, MA COMO REAL (declarando como númerosreais) 
 LEIA NOME, N1, N2, N3, N4 (lendo as variáveis declaradas) 
 MA<-(N1+N2+N3+N4)/4 (fórmula para o cálculo) 
 ESCREVA MA, N1, N2, N3, N4, NOME (escrevendo os resultados) 
 
FINAL ALGORITMO (fim do programa) 
RESUMO – PARA FIXAR (ALGORITMO) 2 
EXEMPLO DE UM ALGORITMO QUE CALCULA A BASE DO 
RETÂNGULO: 
 
INÍCIO (início do programa) 
 
 DECLARE A, B, H COMO REAL (declarando as variáveis como números reais) 
 LEIA B, H (lendo as variáveis declaradas) 
 A<-(B*H) (fórmula para cálculo) 
 ESCREVA B, H, A (escrevendo os resultados) 
 
FINAL ALGORITMO (fim do programa) 
O QUE BAIXAR DO SITE DA ORACLE/SUN? 
• JVM = É a virtual machine, esse download não existe, ela sempre vem acompanhada. 
• JRE = Java Runtime Environment, ambiente de execução Java, formado pela JVM e 
bibliotecas, tudo que você precisa para executar uma aplicação Java. Mas nós precisamos 
de mais. 
• JDK = Java Development Kit: Nós, desenvolvedores, faremos o download do JDK do 
Java SE (Standard Edition). Ele é formado pela JRE somado a ferramentas, como o 
compilador. 
Tanto o JRE e o JDK podem ser baixados do site http://java.sun.com, hoje gerenciado pela 
Oracle. Para encontrá-los, acesse o link Java SE dentro dos top downloads. Consulte o 
apêndice de instalação do JDK para maiores detalhes. 
INSTALAÇÃO DO JAVA 
Como já foi visto anteriormente, a VM é apenas uma especificação e devemos 
baixar uma implementação. Há muitas empresas que implementam uma VM, 
como a própria Oracle, a IBM, a Apache e outros. 
 
A da Oracle é a mais usada e possui versões para Windows, Linux e Solaris. 
Você pode baixar o SDK acessando: 
 
http://www.oracle.com/technetwork/java/ 
 
Nesta página da Oracle, você deve escolher o Java SE, dentro dos top 
downloads. Depois, escolha o JDK e seu sistema operacional. 
INSTALAÇÃO DO JAVA 
 
• O Java Software Development Kit (SDK) reúne em um só pacote todas as 
bibliotecas de classes e outras ferramentas de software que você necessita para 
desenvolver programas em Java. O SDK é fornecido sem custo algum, e on-line 
pela Sun/Oracle. 
INSTALAÇÃO NO UBUNTU 
Cada distribuição Linux tem sua própria forma de instalação. Algumas já trazem 
o Java junto, outras possibilitam que você instale pelos repositórios ofi•ciais e em 
alguns casos você precisa baixar direto da Oracle e con•figurar tudo 
manualmente. 
 
No Ubuntu, basta ir no terminal e digitar: 
 
sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update 
sudo apt-get install oracle-java7-installer 
Caso queira utilizar o openjdk, a distribuição opensource, basta fazer 
sudo apt-get install openjdk-7-jdk 
INSTALAÇÃO NO FEDORA 
No linux fedora, você faria com su -c "yum install java-1.7.0-openjdk". 
Se você já tiver outras versões instaladas no seu Ubuntu, pode utilizar: 
 
sudo update-alternatives –config java para escolher entre elas. 
 
Uma instalação mais braçal, sem usar repositório , pode ser feita baixando o 
instalador no próprio site da Oracle. É um tar.gz que possui um .bin que deve ser 
executado. Depois, é necessário apontar JAVA_HOME para esse diretório e 
adicionar JAVA_HOME/bin no seu PATH. 
INSTALAÇÃO ATRAVÉS DO WINDOWS 
Para instalar o JDK no Windows, primeiro baixe-o no site da Oracle. É um 
simples arquivo executável que contém o Wizard de instalação: 
 
http://www.oracle.com/technetwork/java/ 
 
 
PROCEDIMENTOS DA INSTALAÇÃO 
1 - Dê um clique duplo no arquivo jdk-<versão>-windows-i586-p.exe e espere até 
ele entrar no wizard de instalação. 
 
 
 
 
 
2 - Aceite os próximos dois passos clicando em Next. Após um tempo, o instalador 
pedirá para escolher em que diretório instalar o SDK. Pode ser onde ele já oferece como 
padrão. Anote qual foi o diretório escolhido, vamos utilizar esse caminho mais adiante. A 
cópia de arquivos iniciará: 
PROCESSO DA INSTALAÇÃO 
3 - O instalador instalará também o JavaFX. Após isso, você será direcionado à uma página onde você pode, opcionalmente, criar 
uma conta na Oracle para registrar sua instalação. 
CONFIGURANDO O AMBIENTE 
Precisamos con•figurar algumas variáveis de ambiente após a instalação, para 
que o compilador seja acessível via linha de comando. Caso você vá utilizar 
diretamente algum IDE, provavelmente não será necessário realizar 
esses passos. 
 
1) Clique com o botão direito em cima do ícone Computador e selecione a opção 
Propriedades. 
 
2) Escolha a aba “Configurações Avançadas de Sistema” e depois clique no botão 
“Variáveis de Ambiente” 
CONFIGURANDO VARIÁVEL DE AMBIENTE 
FINALIZANDO A CONFIGURAÇÃO 
3) Nesta tela, você verá, na parte de cima, as variáveis de ambiente do usuário corrente e, 
embaixo, as variáveis de ambiente do computador. Clique no botão Novo... da parte de baixo. 
 
4) Em Nome da Variável digite JAVA_HOME e, em valor da variável, digite o caminho que 
você utilizou na instalação do Java. Provavelmente será algo como: 
C:\Program Files\Java\jdk1.7.0_07\bin ou a versão referente à sua JDK. Depois clique em 
OK. 
 
 
 
FINALIZANDO A INSTALAÇÃO 
5) Abra o prompt, indo em Iniciar, Executar e digite cmd. 
No console, digite javac -version. O comando deve mostrar a versão do Java 
Compiler e algumas opções javac -version. 
 
6) No console, digite javac -version. O comando deve mostrar a versão do Java 
Compiler e algumas opções. 
INSTALAÇÃO NO MAC OS X 
 
• O Mac OS X já traz o Java instalado junto como sistema operacional até a 
versão 10.6. As versões mais novas, do Lion em diante, o instalador do Mac vai 
perguntar se você deseja baixá-lo quando for rodar sua primeira aplicação Java, 
Algum IDE. 
IMPLEMENTAÇÃO DE ORIENTAÇÃO A OBJETO EM JAVA 
CLASSES E OBJETOS 
Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por 
exemplo, um programa de controle de estoque de uma livraria pode conter vários clientes e vários 
livros. As classes descrevem as informações armazenadas e os serviços providos por um objeto. 
Em outras palavras, são padrões a partir dos quais os objetos são criados (código). Em um 
programa orientado a objetos, um objeto é uma instância de uma classe. Os objetos que são 
instâncias de uma mesma classe armazenam os mesmos tipos de informações e apresentam o 
mesmo comportamento. Em Java uma classe é definida pela palavra-chave class seguida do nome 
da classe. Para ilustrar os novos conceitos, vejamos o exemplo da conta corrente. A conta corrente 
é uma classe que é definida da seguinte maneira: 
 
class ContaCorrente { 
// Definição dos métodos e atributos 
 } 
VARIÁVEIS 
Cada variável tem um nome e um tipo que define o comportamento estático do 
objeto. Em Java para cada variável são especificados: um modificador 
(opcional), o nome, o tipo e o valor inicial (opcional) do atributo. Por exemplo, a 
classe ContaCorrente possui as variáveis saldo (saldo da conta corrente) e nome 
(nome do dono da conta). As variáveis de uma classe podem ser de instância ou 
de classe. Cada classe possui as suas próprias cópias das variáveis de 
instância, enquanto que as variáveis de classe são compartilhadas. 
VARIÁVEIS 
CLASSE ContaCorrente 
Cada instância da classe ContaCorrente (objeto) terá as mesmas variáveis (saldo e nome), 
porém, elas podem ter valores diferentes em cada instância. A variável de classe 
(dinheiroTotal), porém, é compartilhada por todos os objetos. Por isso, possui o mesmo valor 
para todos os objetos e se um objeto modificar o seu valor, o novo valor é visto por todos os 
outros objetos. 
MÉTODOS 
Os métodosdefinem os serviços que podem ser solicitados a uma instância 
(objeto), ou seja, o comportamento dinâmico de um objeto. A definição de um 
método em Java inclui um modificador (opcional), o tipo do dado retornado após 
a execução do método, o nome do método, o nome e tipo dos parâmetros e o 
código delimitado por chaves ( { } ). Por exemplo, na classe ContaCorrente 
podem ser definidos os métodos: 
 
verificaSaldo: retorna o saldo da conta corrente; 
depositaValor: deposita um valor especificado x na conta; 
retiraValor: retira um valor especificado x da conta; 
 
A definição da classe ContaCorrente com as variáveis e métodos é a seguinte: 
CLASSE ContaCorrente COM OS MÉTODOS E VARIÁVEIS 
class ContaCorrente { 
static float dinheiroTotal; 
float saldo; 
String nome; 
float verificaSaldo ( ) { 
return saldo; 
 } 
 void depositaValor (float valor) { 
 saldo = saldo + valor; 
 dinheiroTotal += valor; 
 } 
 void retiraValor (float valor) { 
 if (saldo>=valor) { 
 saldo = saldo – valor; 
 dinheiroTotal -= valor; 
 } 
 } 
 } 
INSTANCIANDO UMA CLASSE 
Em um programa Java, os objetos são criados (as classes são instanciadas) 
através do operador new. A execução do comando new cria um objeto de um 
determinado tipo (classe) e retorna uma referência a este objeto. Por exemplo: 
ContaCorrente minhaConta; minhaConta = new ContaCorrente (“Maria”); Na 
primeira linha tem-se o nome da variável (minhaConta) na qual o identificador do 
objeto será armazenado. Na segunda linha é criado o objeto do tipo 
ContaCorrente com o comando new que retorna o identificador do objeto que é 
armazenado na variável minhaConta. O enunciado acima poderia ser escrito 
também da seguinte maneira: ContaCorrente minhaConta = new ContaCorrente 
(“Maria”); 
O OPERADOR THIS 
Java inclui um valor de referência especial, chamado this, que é usado dentro de qualquer método para referir-se 
ao objeto corrente. O valor de this refere-se ao objeto do qual o método corrente foi chamado. Em Java é 
permitido que variáveis locais (dentro de um método) tenham o mesmo nome de variáveis de instância. Para 
definir que se está acessando a variável de instância, usa-se o this. Por exemplo, a classe ContaCorrente 
poderia ter os seus métodos construtores declarados da seguinte maneira: 
 
class ContaCorrente { 
 static float dinheiroTotal; 
 float saldo; 
 String nome; 
 public ContaCorrente (String nome) { 
 this.nome = nome; 
 saldo = 0; 
 } 
 ... // restante do código 
 } 
ITERAÇÃO 
A maior parte dos programas úteis utilizam objetos de dados que contêm 
seqüências de elementos numerados. Essas seqüências são facilmente 
processadas pela iteração (repetição) de blocos de comandos. Tais 
comandos de programação são denominados de laços, porque o fluxo de 
execução “faz a volta” para o início do bloco. Como a maioria das 
linguagens de programação modernas, Java possui três comandos de 
laços: o comando for, o comando while e o comando do ...while. 
 
A sintaxe do comando for é: 
 
for ( expr1; expr2; expr3 ) 
 comando; 
 
ITERAÇÃO - CONTINUAÇÃO 
• Onde que expr1 e expr3 são expressões quaisquer, expr2 é uma expressão booleana e 
comando é qualquer comando ou bloco de comando. As três expressões são usadas para 
controlar a iteração do comando ou bloco nessa ordem: 
 
1. Avaliar expr1; isto é chamado de expressão de inicialização. 
2. Avaliar a condição expr2; essa é chamada de condição de continuação. 
3. Se esse valor booleano é falso, sair imediatamento do laço. 
4. Executar comando; esse é chamado de corpo do laço. 
5. Avaliar expr3; essa é a chamada de expressão de atualização. 
6. Voltar ao passo 2. 
 
 
 
 
EXERCÍCIO 
Charles Babbage solicitou apoio financeiro ao governo britânico para construir 
seu computador . Ao descrever como seu computador poderia tabular funções, 
ele forneceu explicitamente o exemplo da função f(x) = x ao quadrado + x + 41. 
Esse polinômio é curioso porque parece gerar apenas números primos. Esse é o 
programa que a máquina diferencial de Babbage teria executado. 
 
Crie esse mesmo programa de laço em Java e o execute, após a compilação: 
Class Babbage 
//programa que gera apenas números primos na função f(x) = X ao quadrado + x + 41 dos 
//100.000 primeiros números primos. 
 
class Babbage { 
 public static void main (String[] args){ 
 for (int x = 0; x < 100001; x++) { 
 int y = x*x + x + 41; 
 System.out.println("\t" + x + "\t" + y); 
 } 
 } 
} 
LAÇOS – LAÇOS ANINHADOS 
Laços são repetições de uma ou mais instruções até que uma condição 
seja satisfeita. O comando dentro de um laço pode ser de qualquer tipo. 
Geralmente ele é um bloco de comandos, freqüentemente alguns 
desses comandos são também laços. Nesse caso eles são chamados 
de laços aninhados. 
 
Essa área é relacionada à matemática e portanto a prática é importante. 
Tem haver com a Álgebra linear. 
 
 
EXERCÍCIO 
Crie um programa que imprima na tela uma Tabela de Multiplicação de 1 a 9. 
Utilize as variáveis necessárias. 
 
class MultiplicationTable { 
 public static void main(String[] args) { 
//Final indica que a entidade não pode ser alterada e ter outro valor e que a classe final não pode ser 
//uma subclasse 
 final int SIZE = 9; 
 for (int x = 1; x <= SIZE; x++) { 
 for (int y = 1; y <= SIZE; y++) { 
 int z = x*y; 
 System.out.print((z<10?" ":" ") + z); 
 } 
 System.out.println(); 
 } 
 } 
} 
O COMANDO WHILE 
O while é um comando usado para fazer um laço (loop), isto é, repetir um 
trecho de código algumas vezes. A idéia é que esse trecho de código seja 
repetido enquanto uma determinada condição permanecer verdadeira. 
 
int idade = 15; 
while (idade < 18) { 
System.out.println(idade); 
idade = idade + 1; 
} 
O COMANDO WHILE - CONTINUAÇÃO 
O trecho dentro do bloco do while será executado até o momento em que a 
condição idade < 18 passe a ser falsa. E isso ocorrerá exatamente no momento 
em que idade == 18, o que não o fará imprimir 18. 
 
int i = 0; 
while (i < 10) { 
System.out.println(i); 
i = i + 1; 
} 
 
Já o while acima imprime de 0 a 9. 
O COMANDO WHILE - CONCLUSÃO 
• O while é o mais simples de todos os ciclos: 
 
Exemplo: 
 
while ( boolean_expr ) 
statement; 
 
Ou seja: 
 
int i = 0; 
while (i < 10) { 
System.out.println("i = " + i); 
i++; 
} 
DO... WHILE 
• Os ciclos do… while têm o teste no fim do ciclo: 
 
Exemplo: 
do 
statement; 
while ( termination ); 
 
Ou seja: 
int i = 0; 
do { 
System.out.println("i = " + i); 
i++; 
} while (i < 10); 
 
DO... WHILE X WHILE 
while(CONDIÇÃO){ 
COMANDO(S); 
 } 
 
do{ 
COMANDO(S); 
 } while(CONDIÇÃO); 
 
• Ele funciona exatamente igual ao comando "while". A diferença é que a 
CONDIÇÃO só é analisada depois que os comandos são executados. Isso 
significa que o comando "do-while" sempre executa o conjunto de comandos ao 
menos uma vez. Mesmo que a condição seja inicialmente falsa. 
 
EXEMPLOS DO... WHILE 
Ex 1: 
while(true){ 
 System.out.println("Estou preso!"); //Como aqui CONDIÇÃO sempre é 
 verdadeira, este comando sempre será executado. } 
 
Ex 2: 
while(variavel==4){ 
 variavel+=(variavel*3); //O numero de vezes que este comando será executado 
depende do valor inicial da variável } 
 
DIFERENÇAS ENTRE SUPERCLASSE E SUBCLASSE 
• Super classe é a classe pai.

Continue navegando