Para Iniciantes: Crie, Compile e Execute Programas Java Rapidamente
Para Iniciantes: Crie, Compile e Execute Programas Java Rapidamente
Para Iniciantes: Crie, Compile e Execute Programas Java Rapidamente
Java
para iniciantes
Herbert Schildt
O autor
O autor de best-sellers Herbert Schildt escreve incansavelmente sobre programação
há quase três décadas e é uma das principais autoridades na linguagem Java. Seus
livros de programação venderam milhões de cópias no mundo inteiro e foram tra-
duzidos para diversos idiomas. É autor de vários livros sobre Java, incluindo Java:
The Complete Reference, Herb Schildt’s Java Programming Cookbook e Swing: A
Beginner’s Guide. Ele também escreveu sobre C, C++ e C#. Embora tenha interesse
em todas as áreas da computação, seu foco principal são as linguagens de progra-
mação, incluindo compiladores, interpretadores e linguagens de controle robótico.
Também tem grande interesse na padronização de linguagens. Schildt tem gradua-
ção e pós-graduação pela Universidade de Illinois. Seu site é www.HerbSchildt.com.
O editor técnico
Dr. Danny Coward trabalhou em todas as edições da plataforma Java. Ele conduziu
a definição dos Java Servlets para a primeira versão da plataforma Java EE e para
além dela, os serviços web para a plataforma Java ME, e a estratégia e planejamento
de Java SE 7. Fundou a tecnologia JavaFX e, mais recentemente, projetou o maior
acréscimo feito ao padrão Java EE 7, a API Java WebSocket. Da codificação em Java
ao projeto de APIs com especialistas da indústria e ao trabalho por vários anos como
executivo do Java Community Process, ele adquiriu uma perspectiva singularmente
ampla de vários aspectos da tecnologia Java. Além disso, é autor de JavaWebSo-
cket Programming e de um livro ainda a ser publicado sobre Java EE. Dr. Coward
tem graduação, mestrado e doutorado em Matemática pela Universidade de Oxford.
CDU 004.438Java
.....................................................................................................................................
A ntes de poder se adiantar mais em seu estudo de Java, você precisa conhecer a
classe. Classe é a essência de Java. Ela é a fundação na qual toda a linguagem
Java se estrutura, porque define a natureza de um objeto. Como tal, ela forma a base
da programação orientada a objetos em Java. Dentro de uma classe, são definidos
dados e o código que age sobre eles. O código fica contido em métodos. Já que as
classes, objetos e métodos são fundamentais para Java, eles serão introduzidos neste
capítulo. Ter um entendimento básico desses recursos permitirá que você escreva
programas mais sofisticados e compreenda melhor certos elementos-chave de Java
descritos no próximo capítulo.
que especifica como construir um objeto. É importante deixar uma coisa bem clara:
uma classe é uma abstração lógica. Só quando um objeto dessa classe é criado é que
existe uma representação física dela na memória.
Outro ponto: lembre-se de que os métodos e variáveis que compõem uma clas-
se são chamados de membros da classe. Os membros de dados também são chama-
dos de variáveis de instância.
// declara métodos
tipo método1(parâmetros) {
// corpo do método
}
tipo método2(parâmetros) {
// corpo do método
}
// ...
tipo métodoN(parâmetros) {
// corpo do método
}
}
Embora não haja essa regra sintática, uma classe bem projetada deve definir
apenas uma entidade lógica. Por exemplo, normalmente, uma classe que armazena
nomes e números de telefone não armazena também informações sobre o mercado
de ações, a média pluviométrica, os ciclos das manchas solares ou outros dados não
relacionados. Ou seja, uma classe bem projetada deve agrupar informações logi-
camente conectadas. A inserção de informações não relacionadas na mesma classe
desestruturará rapidamente seu código!
Até o momento, as classes que usamos tinham apenas um método: main( ).
Você verá como criar outros em breve. No entanto, observe que a forma geral de uma
classe não especifica um método main( ). O método main( ) só é necessário quando
a classe é o ponto de partida do programa. Alguns tipos de aplicativos Java, como os
applets, também precisam de um método main( ).
Capítulo 4 Introdução a classes, objetos e métodos 103
Uma definição class cria um novo tipo de dado. Nesse caso, ele se chama Vehi-
cle. Você usará esse nome para declarar objetos de tipo Vehicle. Lembre-se de que
uma declaração class é só uma descrição de tipo; ela não cria um objeto real. Logo, o
código anterior não faz nenhum objeto de tipo Vehicle passar a existir.
Para criar realmente um objeto Vehicle, você usará uma instrução como a mos-
trada abaixo:
Vehicle minivan = new Vehicle(); // cria um objeto Vehicle chamado minivan
Após essa instrução ser executada, minivan será uma instância de Vehicle. Portanto,
terá realidade “física”. Por enquanto, não se preocupe com os detalhes da instrução.
Sempre que você criar uma instância de uma classe, estará criando um objeto
contendo sua própria cópia de cada variável de instância definida pela classe. Logo,
todos os objetos Vehicle conterão suas próprias cópias das variáveis de instância
passengers, fuelcap e mpg. Para acessar essas variáveis, você usará o operador pon-
to (.). O operador ponto vincula o nome de um objeto ao nome de um membro. A
forma geral do operador ponto é mostrada aqui:
objeto.membro
Portanto, o objeto é especificado à esquerda e o membro é inserido à direita. Por
exemplo, para atribuir o valor 16 à variável fuelcap de minivan, use a instrução a
seguir:
minivan.fuelcap = 16;
Em geral, podemos usar o operador ponto para acessar tanto variáveis de instância
quanto métodos.
Este é um programa completo que usa a classe Vehicle:
/* Um programa que usa a classe Vehicle.
Antes de avançar, examinemos um princípio básico: cada objeto tem suas pró-
prias cópias das variáveis de instância definidas por sua classe. Logo, o conteúdo das
variáveis de um objeto pode diferir do conteúdo das variáveis de outro. Não há co-
nexão entre os dois objetos exceto pelo fato de serem do mesmo tipo. Por exemplo,
se você tiver dois objetos Vehicle, cada um terá sua própria cópia de passengers,
fuelcap e mpg, e o conteúdo dessas variáveis será diferente entre os dois objetos. O
programa abaixo demonstra esse fato. (Observe que a classe que tem main( ) agora
se chama TwoVehicles.)
// Este programa cria dois objetos Vehicle.
class Vehicle {
int passengers; // número de passageiros
int fuelcap; // capacidade de armazenamento de combustível em galões
Capítulo 4 Introdução a classes, objetos e métodos 105
Como você pode ver, os dados de minivan são totalmente diferentes dos contidos em
sportscar. A ilustração a seguir mostra essa situação.
passengers 7
minivan
fuelcap 16
mpg 21
passengers 2
sportscar
fuelcap 14
mpg 12
106 Java para Iniciantes
Essa declaração faz duas coisas. Em primeiro lugar, ela declara uma variável chamada
minivan da classe Vehicle. Essa variável não define um objeto. Em vez disso, ela pode
apenas referenciar um objeto. Em segundo lugar, a declaração cria uma cópia física do
objeto e atribui à minivan uma referência a ele. Isso é feito com o uso do operador new.
O operador new aloca dinamicamente (isto é, aloca no tempo de execução)
memória para um objeto e retorna uma referência a ele. Essa referência é, mais ou
menos, o endereço do objeto na memória alocado por new. A referência é então
armazenada em uma variável. Logo, em Java, todos os objetos de uma classe devem
ser alocados dinamicamente.
As duas etapas da instrução anterior podem ser reescritas desta forma para
mostrarmos cada etapa individualmente:
Vehicle minivan; // declara uma referência ao objeto
minivan = new Vehicle(); // aloca um objeto Vehicle
A primeira linha declara minivan como referência a um objeto de tipo Vehicle. Por-
tanto, minivan é uma variável que pode referenciar um objeto, mas não é um objeto.
Por enquanto, minivan não referencia um objeto. A próxima linha cria um novo ob-
jeto Vehicle e atribui à minivan uma referência a ele. Agora, minivan está vinculada
a um objeto.