Você está na página 1de 135

PROGRAMAÇÃO

DE SISTEMAS I

Professor Esp. Ronie Cesar Tokumoto

GRADUAÇÃO

Unicesumar
Reitor
Wilson de Matos Silva
Vice-Reitor
Wilson de Matos Silva Filho
Pró-Reitor de Administração
Wilson de Matos Silva Filho
Pró-Reitor Executivo de EAD
William Victor Kendrick de Matos Silva
Pró-Reitor de Ensino de EAD
Janes Fidélis Tomelin
Presidente da Mantenedora
Cláudio Ferdinandi

NEAD - Núcleo de Educação a Distância


Diretoria Executiva
Chrystiano Mincoff
James Prestes
Tiago Stachon
Diretoria de Design Educacional
Débora Leite
Diretoria de Graduação e Pós-graduação
Kátia Coelho
Diretoria de Permanência
Leonardo Spaine
Head de Produção de Conteúdos
Celso Luiz Braga de Souza Filho
Gerência de Produção de Conteúdo
Diogo Ribeiro Garcia
Gerência de Projetos Especiais
Daniel Fuverki Hey
Supervisão do Núcleo de Produção
de Materiais
Nádila Toledo
Supervisão Operacional de Ensino
Luiz Arthur Sanglard
Coordenador de Conteúdo
Fabiana de Lima
Design Educacional
Ana Claudia Salvadego, Isabela Agulhon Ventura
Iconografia
Ana Carolina Martins Prado

C397 CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a Projeto Gráfico


Distância; TOKUMOTO, Ronie Cesar. Jaime de Marchi Junior
José Jhonny Coelho
Programação de Sistemas I. Ronie Cesar Tokumoto. Arte Capa
Maringá-Pr.: UniCesumar, 2017. Reimpressão - 2018 Arthur Cantareli Silva
135 p.
“Graduação - EaD”. Editoração
Fernando Henrique Mendes
1. Programação 2. Sistemas . 3. Engenharia 4. EaD. I. Título. Revisão Textual
Silvia Caroline Gonçalves
ISBN 978-85-459-0839-5
CDD - 22 ed. 005 Ilustração
CIP - NBR 12899 - AACR/2 Bruno Cesar Pardinho

Ficha catalográfica elaborada pelo bibliotecário


João Vivaldo de Souza - CRB-8 - 6828

Impresso por:
Viver e trabalhar em uma sociedade global é um
grande desafio para todos os cidadãos. A busca
por tecnologia, informação, conhecimento de
qualidade, novas habilidades para liderança e so-
lução de problemas com eficiência tornou-se uma
questão de sobrevivência no mundo do trabalho.
Cada um de nós tem uma grande responsabilida-
de: as escolhas que fizermos por nós e pelos nos-
sos farão grande diferença no futuro.
Com essa visão, o Centro Universitário Cesumar
assume o compromisso de democratizar o conhe-
cimento por meio de alta tecnologia e contribuir
para o futuro dos brasileiros.
No cumprimento de sua missão – “promover a
educação de qualidade nas diferentes áreas do
conhecimento, formando profissionais cidadãos
que contribuam para o desenvolvimento de uma
sociedade justa e solidária” –, o Centro Universi-
tário Cesumar busca a integração do ensino-pes-
quisa-extensão com as demandas institucionais
e sociais; a realização de uma prática acadêmica
que contribua para o desenvolvimento da consci-
ência social e política e, por fim, a democratização
do conhecimento acadêmico com a articulação e
a integração com a sociedade.
Diante disso, o Centro Universitário Cesumar al-
meja ser reconhecido como uma instituição uni-
versitária de referência regional e nacional pela
qualidade e compromisso do corpo docente;
aquisição de competências institucionais para
o desenvolvimento de linhas de pesquisa; con-
solidação da extensão universitária; qualidade
da oferta dos ensinos presencial e a distância;
bem-estar e satisfação da comunidade interna;
qualidade da gestão acadêmica e administrati-
va; compromisso social de inclusão; processos de
cooperação e parceria com o mundo do trabalho,
como também pelo compromisso e relaciona-
mento permanente com os egressos, incentivan-
do a educação continuada.
Seja bem-vindo(a), caro(a) acadêmico(a)! Você está
iniciando um processo de transformação, pois quando
investimos em nossa formação, seja ela pessoal ou
profissional, nos transformamos e, consequentemente,
Pró-Reitor de
Ensino de EAD
transformamos também a sociedade na qual estamos
inseridos. De que forma o fazemos? Criando oportu-
nidades e/ou estabelecendo mudanças capazes de
alcançar um nível de desenvolvimento compatível com
os desafios que surgem no mundo contemporâneo.
O Centro Universitário Cesumar mediante o Núcleo de
Educação a Distância, o(a) acompanhará durante todo
Diretoria de Graduação
e Pós-graduação este processo, pois conforme Freire (1996): “Os homens
se educam juntos, na transformação do mundo”.
Os materiais produzidos oferecem linguagem dialógica
e encontram-se integrados à proposta pedagógica, con-
tribuindo no processo educacional, complementando
sua formação profissional, desenvolvendo competên-
cias e habilidades, e aplicando conceitos teóricos em
situação de realidade, de maneira a inseri-lo no mercado
de trabalho. Ou seja, estes materiais têm como principal
objetivo “provocar uma aproximação entre você e o
conteúdo”, desta forma possibilita o desenvolvimento
da autonomia em busca dos conhecimentos necessá-
rios para a sua formação pessoal e profissional.
Portanto, nossa distância nesse processo de cresci-
mento e construção do conhecimento deve ser apenas
geográfica. Utilize os diversos recursos pedagógicos
que o Centro Universitário Cesumar lhe possibilita. Ou
seja, acesse regularmente o AVA – Ambiente Virtual de
Aprendizagem, interaja nos fóruns e enquetes, assista
às aulas ao vivo e participe das discussões. Além dis-
so, lembre-se que existe uma equipe de professores
e tutores que se encontra disponível para sanar suas
dúvidas e auxiliá-lo(a) em seu processo de aprendiza-
gem, possibilitando-lhe trilhar com tranquilidade e
segurança sua trajetória acadêmica.
AUTOR

Professor Esp. Ronie Cesar Tokumoto


Pós-graduado em Gestão Escolar Integrada e Práticas Pedagógicas pela
Faculdade Eficaz (2015), em tutoria em Educação a Distancia pela Faculdade
Eficaz (2013), e em Docência no Ensino Superior pelo Centro Universitário
Maringá (Unicesumar/2013). Bacharel em Informática pela Universidade
Federal do Paraná (UFPR/2001). Atualmente é tutor mediador no EaD/
Unicesumar e professor na rede estadual de ensino do Paraná, em Sarandi, e
em cursos Técnicos Profissionalizantes. Tem experiência em Coordenação de
Curso Técnico (2013), e em palestras e eventos organizados para o mesmo
curso.

Para informações mais detalhadas sobre sua atuação profissional, pesquisas e


publicações, acesse seu currículo, disponível no endereço a seguir:

http://lattes.cnpq.br/2653232632701400
APRESENTAÇÃO

PROGRAMAÇÃO DE SISTEMAS I

SEJA BEM-VINDO(A)!
Caro(a) aluno(a), este material visa permitir que os conceitos fundamentais do desenvol-
vimento de sistemas utilizando a linguagem de programação Java sejam conhecidos e
compreendidos de forma simples e objetiva.
O mercado de trabalho para desenvolvedores Java está aquecido, dando sinais de que
tende a crescer ou, pelo menos, de se manter forte por um bom tempo, devido à evo-
lução da TI (Tecnologia da Informação) e das características favoráveis que a linguagem
oferece.
A primeira unidade trata dos conteúdos básicos referentes à própria linguagem, como
um resumo de sua história, características que a linguagem possui e oferece aos seus
desenvolvedores, versões disponíveis de aplicações possíveis e de que forma são orga-
nizados os chamados pacotes disponibilizados pela Oracle, atual proprietária da própria
linguagem em si, criada pela Sun, a qual foi adquirida pela referida empresa há algum
tempo.
Na segunda unidade, são tratados conceitos relativos à linguagem em si, como as cer-
tificações oficiais sobre o desenvolvimento em linguagem Java, oferecidas pela Oracle,
assim como os conceitos básicos sobre o processo de desenvolvimento de aplicações
em Java, seu ambiente de desenvolvimento, plataforma de execução e formas de pro-
gramação na linguagem. Também são tratados os conceitos do processo de compilação
e execução de códigos em linguagem Java usando os utilitários do pacote JDK de de-
senvolvimento.
Na terceira unidade, são vistos os conceitos de programação em linguagem Java, junta-
mente com os princípios da programação envolvendo os conceitos de tipos de dados,
variáveis, constantes e operadores. Também são vistos detalhes complementares ini-
ciais como o uso de comentários e do utilitário de documentação do pacote JDK. O uso
da identação para um correto alinhamento de instruções também é tratado.
Já na quarta unidade, são vistos os conceitos de fluxo de dados, juntamente com o uso
de sua entrada e saída por meio de bibliotecas padrão Java. Também são vistos os con-
ceitos de vetores e matrizes que representam importantes estruturas de dados.
Na última unidade, temos conteúdos relacionados ao tratamento de exceções que
possam ocorrer em tempo de execução e que sejam previsíveis, além de um pequeno
exemplo de aplicação para auxiliar na compreensão do conteúdo geral da disciplina e
no entendimento da fase de testes.
Assim, por meio de todo esse conteúdo, aliado à disciplina complementar de Programa-
ção de Sistemas II, será possível oferecer um material de aprendizado para uso futuro na
carreira profissional.
09
SUMÁRIO

UNIDADE I

FUNDAMENTOS DA LINGUAGEM JAVA

15 Introdução

16 Histórico Resumido da Linguagem Java

18 Características da Linguagem Java

20 Segurança

22 Versões e Extensões em Java 

25 Desenvolvimento de Software Em Java

27 Considerações Finais

31 Referência

32 Gabarito

UNIDADE II

PARTICULARIDADES DA LINGUAGEM JAVA

35 Introdução

36 Ambiente de Desenvolvimento Java

38 Plataformas Java

41 Formas de Programação em Java

42 Tipos de Aplicativos 

44 Pacotes de Desenvolvimento

45 Compilação e Execução
10
SUMÁRIO

50 Considerações Finais

54 Referências

55 Gabarito

UNIDADE III

INTRODUÇÃO À PROGRAMAÇÃO JAVA

59 Introdução

60 Fundamentos de um Programa Java

61 Instruções Básicas

72 Expressões

74 Identação e Espaçamento

77 Considerações Finais

83 Referências

84 Gabarito

UNIDADE IV

MANIPULAÇÃO DE DADOS

87 Introdução

88 Fluxo de Dados

89 Entrada de Dados

91 Saída de Dados

95 Vetores e Matrizes
11
SUMÁRIO

100 Considerações Finais

104 Referências

105 Gabarito

UNIDADE V

COMPLEMENTOS E ESTUDO DE CASO

109 Introdução

110 Tratamento de Exceções

117 Exemplo de Aplicação

121 Fase de Testes

123 Atualizações e Novas Versões

129 Considerações Finais

133 Referências

134 Gabarito

135 Conclusão
Professor Esp. Ronie Cesar Tokumoto

FUNDAMENTOS DA

I
UNIDADE
LINGUAGEM JAVA

Objetivos de Aprendizagem
■■ Conhecer a história e conceitos básicos da linguagem Java.
■■ Compreender os aspectos que tornam a linguagem segura.
■■ Compreender as possibilidades de desenvolvimento de software em
linguagem Java.
■■ Compreender os conceitos de versão e extensão em Java.
■■ Compreender como ocorre uma das formas de desenvolvimento de
software.

Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Histórico resumido da linguagem Java
■■ Características da linguagem Java
■■ Segurança
■■ Versões e extensões em Java
■■ Desenvolvimento de software em Java
15

INTRODUÇÃO

Ao iniciar os estudos sobre a programação de sistemas utilizando a linguagem


Java, temos uma grande ferramenta de trabalho para conhecer e explorar, de
forma a construir uma base de conhecimento para preparar futuros profissio-
nais da área de desenvolvimento, complementando o aprendizado obtido em
outras disciplinas e linguagens, como a linguagem C.
Nesta primeira unidade, serão tratados os aspectos fundamentais do desen-
volvimento de aplicações em Java, como sua história e demais detalhes referentes
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

à poderosa e popular ferramenta de trabalho.


Iniciando os estudos por meio da história da linguagem, é possível com-
preender o motivo de sua criação e de que forma ocorreu sua evolução, desde a
implementação até as atuais modificações que mantêm a linguagem atual e aten-
dendo às necessidades do mercado.
São expostas também algumas características da linguagem, citando-se a
conexão com o desenvolvimento voltado à Internet e à forma pela qual são gera-
das aplicações em Java.
Segurança é um requisito muito importante no desenvolvimento de apli-
cações e a linguagem Java permite um bom nível de segurança pela forma de
desenvolvimento e execução de suas aplicações.
Nesta unidade são apresentadas informações sobre como esse nível de segu-
rança é garantido e de que forma isso ajuda na popularização da linguagem para
o desenvolvimento de projetos para as mais diversas finalidades.
Também será trabalhada a versatilidade da linguagem na criação de diferen-
tes tipos de aplicação para as mais diversas plataformas (sistemas operacionais).
Finalmente, a forma como pode ser desenvolvida uma aplicação é tratada para
mostrar que existem diversas alternativas de softwares próprios para o desenvol-
vimento de aplicações, chamados de ambientes integrados de desenvolvimento,
capazes de oferecer diversos recursos de auxílio ao desenvolvimento de software.

Introdução
16 UNIDADE I

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
HISTÓRICO RESUMIDO DA LINGUAGEM JAVA

Olá caro(a) aluno(a), neste primeiro tópico, é importante citar que a linguagem
foi concebida durante a década de 1990, na Sun Microsystems. Seus idealizadores
foram James Gosling, Patrick Naughton, Chris Warth, Ed Frank e Mike Sheridan.
Inicialmente com o nome de Oak, o qual, posteriormente, foi alterado para Java
em 1995 (MANZANO, 2011), seu propósito inicial não era a Internet, mas apa-
relhos domésticos como linguagem para programação embarcada.
Com a popularização da World Wide Web, o propósito da linguagem ser
independente de plataforma ou hardware impulsionou a evolução da linguagem
para que pudesse se adequar às necessidades da programação web. Sua forma
singular de programação e a forma como permitia que o uso da Internet fosse
muito mais interativo e repleto de novas possibilidades garantiram essa onda
de profissionais interessados em desenvolver aplicações com a nova linguagem.
Assim como a tecnologia e a Internet, a linguagem teve atualizações em ver-
sões que foram sendo criadas para atender novas demandas e oferecer melhorias
para o desenvolvimento web. A Sun desenvolvia novos pacotes para as novas
versões, denominadas como J2SE, acrescidas de números indicativos da versão
a partir 2, versões como J2SE 1.3, 1.4 e 5 foram surgindo e agregando funções
ao desenvolvimento de programas. Conforme citado por Manzano (2011), a
versão J2SE 5 representou uma segunda revolução na linguagem e, por isso,

FUNDAMENTOS DA LINGUAGEM JAVA


17

mudou o padrão de numeração definido pelas duas versões anteriores, pois além
de melhorias no ambiente de desenvolvimento e alguns recursos importantes,
a quinta versão reformulou certos aspectos da linguagem. Ela agregou recursos
como os tipos genéricos, uma evolução no uso do laço de repetição for, uso de
anotações, enumerações, uso de importação estática e argumentos em quanti-
dades variáveis, por exemplo.
A versão seguinte, Java SE 6 (forma reduzida de Java Plataform, Standard
Edition 6), gerou aprimoramentos nas bibliotecas APIs, novos pacotes e otimi-
zações para a execução dos softwares desenvolvidos.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Na versão seguinte, Java SE 7, novos recursos foram adicionados, como mais


incrementos em suas bibliotecas APIs, melhorias no tratamento de exceções e
mudanças no uso da instrução switch.
Um ponto marcante da versão 7 foi o fato de ser uma primeira versão lançada
após a aquisição da empresa Sun pela Oracle, em 2009, fato que, como sempre
ocorre em negociações entre grandes companhias de tecnologia, cria muita apre-
ensão no mercado. A Figura 1 mostra uma versão do mascote Duke utilizado
oficialmente pela companhia para representar seu novo produto.

Figura 1- Mascote Duke criado para o projeto *7 de 1992


Fonte: Oracle (2009, on-line)1.

Histórico Resumido da Linguagem Java


18 UNIDADE I

Em 2016, foi lançada a versão 8, que promete grandes mudanças, as quais incluem
a transformação na ideia da programação embarcada para a tendência da “Internet
das Coisas”, programação em nuvem, possibilidade do uso de objetos genéricos,
melhoria no tratamento de exceções, lambdas e anotações. Parte das novas fun-
cionalidades fará parte do escopo do livro por serem relevantes aos conteúdos do
material, e os demais conteúdos podem ser buscados em outras fontes de pesquisa
complementares sugeridas ao longo das unidades (ORACLE, [2017], on-line)2.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

CARACTERÍSTICAS DA LINGUAGEM JAVA

Algumas características fundamentais da linguagem Java são a programação


baseada no paradigma orientado a objetos que, diferentemente do paradigma
estruturado, é baseia no conceito de classes instanciadas em objetos indepen-
dentes para melhorar o reuso de código.
Além da reusabilidade, a portabilidade também é uma característica impor-
tante da linguagem, a qual garante que um mesmo código possa ser compilado e

FUNDAMENTOS DA LINGUAGEM JAVA


19

executado em diferentes plataformas (“write once, run anywhere”). Essa carac-


terística também melhora a possibilidade de divulgação de aplicações e sua
distribuição, pois, sendo portátil, não é necessário criar versões específicas e,
assim, toda aplicação acaba sendo multiplataforma. Possui recursos de rede por
meio de bibliotecas para lidar com protocolos TCP/IP, HTTP e FTP, mantendo
níveis de segurança aceitáveis pela restrição de execução.
Outra característica que ajudou a popularização da linguagem Java foi sua
sintaxe baseada na linguagem C++ que já era popular há muito tempo, além da
linguagem C++ conter uma grande quantidade de bibliotecas disponíveis para
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

facilitar a codificação. A linguagem JAVA, assim como a linguagem C++, não se


utilizam de ponteiros nem registros, pois ambos os elementos podem ser subs-
tituídos por outros do paradigma orientado a objetos que permitem o uso de
recursos que podem ser até superiores em termos de programação e resultados
computacionais (desempenho, facilidade de implementação e controle). Além
dessas características, algumas técnicas, como desalocação automática de memó-
ria por meio de coletor de lixo e carregamento independente de componentes
(classes) em tempo de execução.
Por ser uma linguagem com boa ortogonalidade (pouca redundância no desen-
volvimento de código), acaba proporcionando facilidade no desenvolvimento e
interpretação de código. Permite programação web através de APIs próprias para
trabalho com protocolos TCP/IP, FTP e HTTP, além de possibilidade de integra-
ção com linguagens próprias para web, como HTML e Javascript. Por ser uma
linguagem fortemente tipada, os dados processados são mais precisos e passí-
veis de validação, reduzindo a ocorrência de imprevistos em tempo de execução.
■■ Realiza a inicialização básica automática de variáveis criadas facilitando
a prevenção de erros decorrentes de dados indevidos já existentes na área
reservada em memória para cada variável criada.
■■ Permite programação de aplicações concorrentes que possam aproveitar
recursos avançados de hardware por meio de técnicas como multithreads
(processos podem responder solicitações concorrentemente ou simul-
taneamente), e monitores (sincronia entre duas ou mais tarefas que
compartilham recursos).

Características da Linguagem Java


20 UNIDADE I

O código fonte JAVA é compilado e gerado o código bytecode, que posterior-


mente se executado por uma JVM em tempo real. Esse processo reduz eficiência
computacional, mas pela portabilidade proporcionada, acaba se tornando menos
relevante para a maioria das aplicações atuais devido os melhores recursos de
hardware e software.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Conhecer bem sua ferramenta de trabalho é fundamental e o mesmo vale
na programação. Como se preparar para um mercado tão competitivo?

SEGURANÇA

Um ponto importante no desenvolvimento de programas em Java é que, o código é


compilar na geração do software. Códigos maliciosos não são executados diretamente

FUNDAMENTOS DA LINGUAGEM JAVA


21

sobre o sistema operacional, pois a interpretação dos arquivos intermediários Java


(bytecode) e applets é restrita aos ambientes próprios para esses arquivos.
Assim, não tendo acesso livre fora do ambiente de interpretação de byteco-
des, não há motivo para códigos maliciosos se infiltrarem nesses tipo de arquivo
e acabarem não sendo efetivos.
Além da segurança embutida pelo próprio sistema de uso de aplicações em
Java, existem diversas outras formas de aumentar o nível de segurança e da garantia
de uma correta execução por meio de diversos mecanismos adicionais, na forma
de outros softwares que tenham função de segurança agregados ao sistema ope-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

racional, como antivírus e ferramentas de proteção a invasões e perdas de dados.


Também existe a segurança que pode ser implementada na própria aplica-
ção por meio de mecanismos de segurança programados como autenticação de
usuários, tratamento de exceções, validação de dados, e recursos programados
como backup automático, por exemplo.

Segurança
22 UNIDADE I

VERSÕES E EXTENSÕES EM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 2 - Tela de download do plugin Java para navegadores, versão 8
Fonte: Java ([2017], on-line)2.

Em decorrência das contínuas evoluções da linguagem, mudanças ocorreram


em sua forma de uso e nas aplicações desenvolvidas de acordo com as demandas
do mercado. Assim, um recurso largamente utilizado até então - os chamados
applets, que são aplicações criadas para serem executadas como elementos em
páginas da Internet - perderam sua força devido às guerras travadas entre as
empresas desenvolvedoras de software para web.
Estas resolveram utilizar os recursos oferecidos pelo Javascript e HTML 5,
que acabaram por substituir estas aplicações feitas em Java devido à necessidade
do uso de plugins adicionados aos navegadores, os quais geravam dependência
das mudanças que muitas vezes mostravam incompatibilidades entre applets
criados em diferentes implementações da linguagem e versões dos plugins.
A proposta da versão 8 da linguagem Java é oferecer melhores condições
para a produção de software embarcado, podendo criar uma nova onda na área
de Tecnologia da Informação.

FUNDAMENTOS DA LINGUAGEM JAVA


23

J2ME (MICRO-EDITION FOR PDAS AND CELL PHONES)

Pacote de desenvolvimento próprio para aplicativos para dispositivos móveis


e embarcados, em que a forma como essas aplicações se comportam difere das
demais plataformas devido às restrições físicas, como tamanho da tela e desem-
penho de hardware (ORACLE, [2017], on-line)2.
Aplicações para smartphones, tablets, aparelhos GPS, e eletrônicos mais
modernos em geral, que contenham sistemas embarcados como geladeiras, reló-
gios e TVs do tipo Smart, os quais possuam recursos como acesso à Internet,
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

baseiam-se na ideia de uma forte otimização no desenvolvimento de código para


se adequar a recursos mais limitados de hardware em termos de memória tem-
porária e permanente, principalmente. Alguns dispositivos são potentes, mas
apenas uma porcentagem dos usuários desse tipo de tecnologia possui apare-
lhos com grande poder computacional.
Em função dessa disparidade de equipamentos, códigos otimizados permi-
tem que todos tenham acesso aos aplicativos desenvolvidos, independentemente
do dispositivo que utilizado ou do potencial do hardware a ser usado; é possível
ajustar o código para adequar o desempenho do software, permitindo que sof-
twares sejam embarcados em dispositivos diversos.
Na onda da “Internet das coisas”, objetos antes capazes de funcionalidades
bem específicas puderam adicionar novas funções com a inclusão de tecnologia
e softwares embarcados capazes de adicionar novas funcionalidades aos obje-
tos. Roupas inteligentes capazes de realizar monitoramentos e eletrodomésticos
conectados à Internet são exemplos de como a tecnologia está sendo capaz de
alterar a forma de utilização dos objetos.
Importa destacar a preocupação que há quanto à evolução tecnológica, a qual
está sendo retardada pela falha na infraestrutura necessária para oferecer ser-
viços de conectividade de qualidade, a fim de que os dispositivos possam estar
conectados em qualquer lugar e com boa velocidade de transmissão e recepção
de dados. Além da infraestrutura desequilibrada em todo planeta, não existem
padronizações a produção desses dispositivos o que gera diferenças na produ-
ção de software e suas etapas, desde o desenvolvimento até o uso.

Versões e Extensões em Java


24 UNIDADE I

J2SE (STANDARD EDITION)

Pacote padrão para desenvolvimento e execução de aplicações Java contendo o


compilador Javac e a máquina virtual JVM, além das bibliotecas (API) da lin-
guagem, e alguns utilitários como Javadoc (ORACLE, [2017], on-line)1.

J2EE (ENTERPRISE EDITION)

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Pacote mais completo que o J2SE, pois além dos componentes citados neste
pacote, são incluídas as funcionalidades para a produção de aplicações corpo-
rativas (ORACLE, [2017], on-line)2.

JMX (JAVA MANAGEMENT EXTENSIONS)

Pacote para desenvolvimento de aplicações distribuídas, baseadas em web, imple-


mentado para a versão 5 da linguagem, mantendo seu uso em versões posteriores
(ORACLE, [2017], on-line)2.

O mercado de desenvolvimento em Java sofre alterações frequentes e tipos


de aplicações que, em determinado momento, podem ser muito populares.
Com o passar do tempo, pode praticamente desaparecer, como é o caso
dos applets que, por mudanças nas políticas dos desenvolvedores de na-
vegadores, estão deixando de manter a compatibilidade com plugins flash
necessários para execução dos applets.
Esses plugins servem como máquinas virtuais Java integrados aos nave-
gadores para executar os miniaplicativos desenvolvidos e que tiveram um
auge recente como opções de marketing e entretenimento na Internet.
Fonte: o autor.

FUNDAMENTOS DA LINGUAGEM JAVA


25
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

DESENVOLVIMENTO DE SOFTWARE EM JAVA

O desenvolvimento de software é uma das áreas mais importantes dentro do


mercado de tecnologia da informação e depende diretamente de escolhas que
são feitas durante o processo, desde a qualidade e quantidade de componentes
da equipe para o projeto, até a escolha de quais linguagens poderão ser utiliza-
das no desenvolvimento dos softwares. Aliado a isso, é fundamental que, além
do sucesso dos projetos, os custos e tempo sejam minimizados e a qualidade do
produto seja mantida em bons níveis para aceitação.
Usar a linguagem Java como alternativa para codificação faz com que o pro-
gramador lide com uma forma diferente de trabalho e funcionamento, na qual o
código fonte não gere um arquivo executável, a exemplo do que ocorre com as lin-
guagens de programação compiladas para o desenvolvimento de software em geral.
Nesta linguagem, o código deve ser criado e salvo com extensão java em
qualquer ambiente de desenvolvimento integrado (IDE) ou editor de textos sem
formatação de tipo algum como nas demais linguagens de programação, pois
não são considerados arquivos de texto como os arquivos do tipo doc utilizados
na produção de documentos contendo formatações, imagens e outros elementos
não utilizados em arquivos de código de quaisquer linguagens de programação.
Temos como exemplos de IDEs populares utilizados pelos profissionais
de desenvolvimento de software a Netbeans ou Eclipse como opções muito
populares entre os desenvolvedores, pelo fato de serem eficientes e gratuitas.

Desenvolvimento de Software Em Java


26 UNIDADE I

O desenvolvimento por meio de editores de texto simples, como o Bloco de


Notas, que faz parte dos acessórios do sistema operacional Windows, é uma
opção viável, pois por já fazer parte do sistema operacional, sabe-se que é total-
mente compatível e que não depende da aquisição de softwares adicionais para o
desenvolvimento. Isso aumenta o nível de segurança para o hardware a ser utili-
zado pela não necessidade de buscas na Internet para download desses softwares
com ambientes de desenvolvimento integrado. Nos livros de programação I e
II, durante o desenvolvimento de exemplos em Java, foi utilizado como padrão
o desenvolvimento sem o uso destes ambientes integrados para não tirar o foco

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
da programação em si.
A forma com que se desenvolvem os códigos não influencia a qualidade dos
softwares criados, mas pode influenciar o tempo de desenvolvimento e o modo
de trabalho durante a codificação.
Para focar o estudo na linguagem em si, serão desconsiderados o uso de quais-
quer ferramentas simplificadoras como IDEs (conforme citado) ou Frameworks, os
quais trazem muita facilidade, pois eliminam etapas importantes do aprendizado.
Paralelamente ao estudo da disciplina, é normal que você busque outras
fontes ou alternativas de desenvolvimento de códigos. Porém, para a disciplina
em si, deve ser focado o desenvolvimento baseado no que é visto na mesma,
desconsiderando alternativas pesquisadas, pois isto prejudica a avaliação dos
conhecimentos.

FUNDAMENTOS DA LINGUAGEM JAVA


27

CONSIDERAÇÕES FINAIS

Nesta unidade, foi possível observar que uma série de detalhes indica os moti-
vos da grande popularidade da linguagem Java e servem de parâmetro para o
início dos estudos da linguagem.
Tendo sua história inicialmente indicando uma finalidade distinta do atual
uso da linguagem, seu uso para desenvolvimento de aplicações para diferentes
sistemas operacionais e tendo forte ligação com a Internet, temos que a lin-
guagem Java evolui de forma a acompanhar as mudanças que ocorrem com a
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Internet e sua rápida evolução.


Suas características indicam que, por ser uma linguagem com boa facilidade
de aprendizado e bons níveis de segurança, tornou-se preferência entre os pro-
fissionais desenvolvedores de sistemas em função da chamada portabilidade, a
qual permitiu o desenvolvimento de uma única versão de uma aplicação para
diferentes sistemas operacionais.
Outro ponto fundamental é a possibilidade de criação de uma variedade de
aplicações por meio de diferentes pacotes de desenvolvimento disponibilizados e indi-
cados para o desenvolvimento de aplicações para dispositivos móveis, por exemplo.
Também foram tratadas opções de desenvolvimento de aplicações por meio de
ambientes integrados capazes de oferecer ferramentas facilitadoras do trabalho de
programadores com recursos automatizados e de auxílio à construção de código.
Assim, é possível observar que a linguagem Java permite que sejam cria-
das aplicações com tranquilidade, pois, além de recursos muito bons da própria
linguagem, há ferramentas que auxiliam o processo de desenvolvimento e per-
mitem que o profissional tenha ajuda no desenvolvimento de suas aplicações.
Dando continuidade, na segunda unidade, será focada a parte relativa ao
ambiente e às plataformas de execução de aplicações, além das opções de aplica-
ções que podem ser desenvolvidas para diferentes fins. Finalmente, é explanado
o processo de compilação e execução de códigos.

Considerações Finais
28

CERTIFICAÇÕES
Existem certificações diversas que podem ser feitas para comprovar conhecimentos
avançados em programação Java, além de proporcionar um incremento no currículo
pessoal. Essas certificações são importantes para o mercado de trabalho, pois são com-
provações que mostram o preparo do profissional dentro de uma especialidade e ser-
vem de parâmetro para contratações.
Alguns tipos de certificações da Oracle para Java podem ser Oracle Certified Enterprise
Architect (OCEA), Oracle Certified Mobile Application Developer (OCMAD), Oracle Certi-
fied Developer For Java Web Services (OCDJWS), Oracle Certified Business Component
Developer (OCBCD), Oracle Certified Web Component Developer (OCWCD), Oracle Cer-
tified Java Developer (OCJD), Oracle Certified Java Programmer (OCJP), Oracle Certified
Java Associate (OCJA) (ORACLE, [2017], on-line)2.
Cada certificação se presta a uma habilidade específica de uma plataforma e linguagem
Java. Todos os testes são realizados por uma empresa chamada Person VUE, sendo acei-
tos internacionalmente (ORACLE, [2017], on-line)2.
Observando as opções existentes de certificações, vemos que existe uma sequência ló-
gica que pode ser seguida de forma que a construção do conhecimento seja gradativa
e mais eficiente.
Ter diferencial no mercado de trabalho por meio de certificações diversas é muito im-
portante, mas não adianta ter certificações e não ser capaz de aplicar o que é visto na
teoria em prática com eficiência.
É preciso praticar muito os conceitos vistos para que sejam realmente úteis para o mer-
cado de trabalho, pois na área de tecnologia, o saber notório é muito comum e por
vezes suficiente para muitas empresas.
Mas os melhores empregos demandam exigências e responsabilidades maiores que jus-
tificam maiores salários e cargos em empresas que tendem a crescer rapidamente, da
mesma forma que podem também desaparecer, pois a área de tecnologia se modifica
rapidamente.
Para o mercado, tanto a graduação quanto a certificação são diferenciais curriculares,
assim como a experiência de trabalho. Para se destacar, é interessante acumular todos
esses diferenciais.
Fonte: o autor.
29

1. A linguagem Java possui uma característica fundamental que é a programação


baseada em um paradigma de programação específico. Com as novas imple-
mentações, está agregando conceitos de outro paradigma. Quais os nomes
desses dois paradigmas aos quais se refere o enunciado?
2. Uma das bases da implementação da linguagem Java foi a linguagem C++, que
serviu de base para boa parte da sintaxe do Java. Diversos recursos de uma lin-
guagem são utilizados na outra, mas existem dois que não estão presentes de-
vido à forma como é programar em java e seu paradigma. Cite esses recursos
importantes que são implementados de forma distinta em Java com rela-
ção à linguagem C++.
3. Uma forte característica da linguagem Java é a sua portabilidade de código. O
que vem a ser característica?
4. Para garantir esta portabilidade citada na questão anterior, um código em Java
não é executado diretamente, como ocorre na interpretação de linguagens
como HTML, mas por meio de passos. Um desses passos é a compilação do códi-
go escrito em linguagem Java em um tipo de arquivo intermediário e compatí-
vel com a plataforma a ser interpretada. Como se chama esse arquivo interme-
diário gerado pelo compilador Java e como se chama o compilador?
5. Dentre os tipos de aplicações desenvolvidas em Java temos um chamado J2ME,
voltado para um destes tipos. Descreva qual seria este tipo de aplicação e
para qual tipo de uso.
MATERIAL COMPLEMENTAR

Java - Como Programar - 8. ed. 2010


Paul J. Deitel e Dr. Harvey M. Deitel
Editora: Prentice Hall
Sinopse: Já em sua oitava edição, este livro completo
aborda inúmeros conceitos associados à programação
em linguagem Java, abordando desde a programação
básica, teoria do paradigma orientado a objetos e
criação de interfaces gráficas.
31
REFERÊNCIAS

MANZANO, J. A. N. G. Java 7 - programação de computadores: guia prático de


introdução, orientação e desenvolvimento. 1 ed. São Paulo: Érica, 2011.
ORACLE, University. JAVA SE. [on-line]; Disponível em: http://education.oracle.com/
pls/web_prod-plq-dad/ou_product_category.getPage?p_cat_id=267. Acesso em
29 mai. 2017.

REFERÊNCIAS ON-LINE

1
Em: <https://www.java.com/pt_BR/download/win10.jsp> Acesso em: 29 mai. 2017
2
Em: <http://www.oracle.com/technetwork/articles/javaee/javaee6overview-
-part2-136353.html> Acesso em: 08 jun. 2017
GABARITO

1) Ponteiros e Registros.
2) Orientado a Objetos e Funcional.
3) Capacidade de um mesmo código poder ser executado em diferentes platafor-
mas e sistemas operacionais sem a necessidade de alterações no código, tendo
apenas que utilizar para cada plataforma a JVM compatível e adequada.
4) Bytecode gerado pelo compilador Javac.
5) É relativo às aplicações para dispositivos móveis com menor capacidade de
hardware, normalmente como telas menores ou hardware menos potente em
termos de processamento ou armazenamento temporário e permanente.
Professor Esp. Ronie Cesar Tokumoto

PARTICULARIDADES DA

II
UNIDADE
LINGUAGEM JAVA

Objetivos de Aprendizagem
■■ Complementar os conceitos iniciais vistos na unidade anterior.
■■ Conhecer como se pode desenvolver software em Java tendo acesso
a exemplos de plataformas e ambientes de desenvolvimento.
■■ Saber como pode ocorrer o processo de programação em Java.
■■ Conhecer quais são os tipos de aplicativos criáveis em Java.
■■ Entender conceitos de pacotes de desenvolvimento e como ocorre a
compilação e execução em Java.
■■ Compreender como ocorre o processo de uso de uma aplicação
desenvolvida.

Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Ambiente de desenvolvimento Java
■■ Plataformas Java
■■ Formas de programação em Java
■■ Tipos de aplicativos
■■ Pacotes de desenvolvimento
■■ Compilação e execução
35

INTRODUÇÃO

Iniciamos uma nova etapa de estudos. Essa segunda unidade complementa a


unidade anterior, em que vimos conceitos relacionados à história da linguagem
Java, e detalhes mais técnicos como suas características e funcionalidades que
permitiram à linguagem se tornar tão popular.
Nesta unidade, damos continuidade ao conhecimento de aspectos da lin-
guagem Java, mencionando aspectos de como é o funcionamento de aplicações
em linguagem Java, tratando de como estas aplicações necessitam de um sof-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

tware para interpretação das aplicações em cada diferente sistema operacional.


Comentaremos também como as evoluções tecnológicas afetam constan-
temente o mercado de desenvolvimento, criando demandas e abrindo espaços
para novas linguagens e oportunidades, fazendo com que constantes mudanças
na implementação da linguagem Java sejam necessárias para manter sua atrati-
vidade entre os profissionais.
As opções de aplicações diferentes possíveis de serem desenvolvidas também
são retomadas para reforçar sua flexibilidade na criação de software e acrescentar
pontos adicionais sobre tipos de aplicações e o uso de interfaces gráficas em projetos.
Recursos complementares, como bibliotecas com conteúdo pronto para uso
em novos projetos são citados para mostrar, a exemplo do que ocorre em outras
linguagens, que criar um banco de bibliotecas prontas pode facilitar e melhorar
o processo de desenvolvimento.
Para o trabalho com Java, é preciso ter instalado na estação de trabalho um
pacote de desenvolvimento de acordo com a plataforma instalada para realizar
os procedimentos de compilação e execução de aplicações, além de outros recur-
sos adicionais citados ao longo do livro.
Para finalizar, o processo em si de compilação e geração do arquivo inter-
mediário para execução é tratado na última parte da unidade, exemplificando
de que forma proceder para realizar estas etapas do desenvolvimento e teste de
aplicações.
Seguindo adiante, na próxima unidade serão tratados os fundamentos da
programação na linguagem Java e os primeiros aspectos como tipos de dados e
instruções básicas já poderão ser conhecidos.

Introdução
36 UNIDADE II

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
AMBIENTE DE DESENVOLVIMENTO JAVA

Olá, caro(a) aluno(a). É importante citar que neste primeiro tópico, indepen-
dentemente da opção de editor ou ambiente de desenvolvimento utilizado para
criar programas em Java, um arquivo contendo código na linguagem Java com
extensão “java” é convertido para criar arquivos bytecode com extensão “class”
através de um compilador Javac, por exemplo.
Em um ambiente de desenvolvimento, o compilador Javac é componente pré-
-instalado ou que pode ser adicionado no caso de ambientes que podem aceitar
mais de uma linguagem de programação diferentes. Este ambiente é capaz de
compilar o código Java para geração do arquivo bytecode e interpretar o código
em tempo real para testes de execução de dentro do próprio ambiente de desen-
volvimento (MANZANO, 2011).
Bytecodes são interpretados e executados por meio de máquinas virtu-
ais chamadas de Java Virtual Machine (JVM), que funcionam como um tipo
de software que emula um ambiente padrão para execução de código bytecode
próprio para cada plataforma na qual seja executado. Esse arquivo intermediá-
rio bytecode elimina incompatibilidades entre um programa Java codificado e
as diversas plataformas em que pode ser executado, pois a máquina virtual Java
tem versão própria para cada plataforma (MANZANO, 2011).
A JVM carrega o arquivo bytecode para memória principal do hardware,
verifica o arquivo na busca de possíveis ameaças ao próprio sistema operacio-
nal em que será executado, e, por fim, o programa é executado de forma híbrida
entre interpretação e compilação Just-in-Time (JIT) (MANZANO, 2011).

PARTICULARIDADES DA LINGUAGEM JAVA


37

Basicamente, no processo de execução de bytecodes em uma JVM, o compi-


lador converte partes essenciais destes arquivos bytecode utilizados com maior
frequência em código de máquina para melhorar o tempo de execução, e os
demais componentes do bytecode são interpretados de acordo com a execução
em função de não serem elementos prioritários à execução.
A Figura 1 mostra um diagrama simplificado do processo completo que
ocorre na linguagem Java, desde a criação do código até a execução do software
compilado. É importante observar que o diagrama não se altera para as diversas
plataformas em que seja desenvolvido.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Figura 1 - Diagrama simplificado da criação de software com Java


Fonte: o autor.

Programar em linguagem Java oferece uma vantagem muito interessante, que


influenciou em sua grande popularização - chamada de portabilidade -, na qual um
mesmo código pode ser utilizado em diferentes sistemas operacionais. Por meio da
portabilidade, códigos criados em linguagens que contemplam esta característica
reduzem o tempo de desenvolvimento de softwares por não serem necessárias ver-
sões diferentes para cada plataforma em ques serão executados (MANZANO, 2011).
Na área de desenvolvimento de software, a redução de tempo não é a única
vantagem, pois a portabilidade facilita a contratação de mão de obra especiali-
zada, e a mesma necessita de um menor tempo de desenvolvimento devido a não
necessidade de desenvolver mais de uma versão do mesmo software.

Muitos profissionais da programação dizem que aplicações em Java são len-


tas e as descartam em situações com exigência de desempenho. Mas então,
por que existem equipamentos que rodam com Java?

Ambiente de Desenvolvimento Java


38 UNIDADE II

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
PLATAFORMAS JAVA

Aplicações desenvolvidas em Java permitem forte portabilidade, o que é comen-


tado diversas vezes em qualquer literatura sobre a linguagem, já que representa
um de seus grandes trunfos, que permitiram a rápida e enorme popularização da
linguagem.
No caso da linguagem Java, é usado um software emulador chamado de
máquina virtual (JVM) e as chamadas API Java (Java Application Programming
Interface), que são compostas por coleções de componentes de software prontos,
contendo classes e métodos prontos para manipulação de estruturas de arquivos
ou construção de aplicações gráficas, por exemplo (MANZANO, 2011).
Esta forma de desenvolvimento permite que cada sistema operacional dife-
rente, chamado de plataforma dentro do aprendizado neste livro, possua uma
JVM adaptada ao seu sistema e permita que um mesmo código desenvolvido
em Java possa ser executado em qualquer plataforma sem a necessidade de alte-
rações no código, salvo em casos em que algum recurso for inexistente ou não
contemplado pela própria linguagem para determinada plataforma.

Figura 2 - Ilustração sobre plataformas de execução de aplicações

PARTICULARIDADES DA LINGUAGEM JAVA


39

Cada API é como um arquivo contendo classes, métodos e interfaces agrupa-


das em pacotes, mas estes conceitos serão abordados no decorrer do livro em
momentos oportunos e se necessário.
Tendo forte atuação no mercado de aplicativos para a plataforma Android
da Google, conseguiu muito de sua popularidade por meio da Internet, tendo
aplicativos desenvolvidos em uma quantidade absurda por grandes empresas
desenvolvedoras e programadores independentes.
No caso da plataforma Android, o desenvolvimento de aplicações permitiu
que a linguagem se popularizasse e muitos bons programadores saíssem do ano-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

nimato para reconhecimento quase instantâneo, por meio de aplicativos muito


bem sucedidos. Em outras plataformas, como Linux e Windows, também acabou
sendo muito utilizada a linguagem devido à portabilidade e capacidade de, além
do desenvolvimento de softwares completos, pequenos plugins chamados Applets,
que foram populares por muito tempo para dinamizar a navegação na Internet.
É possível perceber que a grande comunidade de desenvolvedores Java
continua criando componentes e aplicações o tempo todo, incentivando cons-
tantemente grandes evoluções na linguagem, devido à gama de profissionais de
desenvolvimento de diversos tipos de software que utilizam a linguagem Java e se
adaptam às evoluções e necessidades do mercado da tecnologia da Informação.
Atualmente, com a evolução da Internet das Coisas, a qual permitiu que o
hardware estivesse cada vez mais próximo do usuário em dispositivos antes igno-
rados em termos de software (como relógios), a linguagem se adapta às novas
necessidades de aplicações e, assim, mantém-se forte no mercado.
Pode ocorrer de alguma linguagem mais recentes no mercado, como as lin-
guagens Go da Google, Hack do Facebook, ou Swift da Apple, desbancarem o
reinado das linguagens C, C++ e Java no mercado de desenvolvimento. Mas ainda
parece algo pouco provável, por motivos de portabilidade reduzida ou inexis-
tente, ou menor flexibilidade no desenvolvimento de diferentes tipos de software.

Plataformas Java
40 UNIDADE II

Linguagens de programação têm o poder de criar software, mas a correta


escolha entre as linguagens é baseada em diversos aspectos, já que muitas
linguagens são específicas para certos sistemas operacionais e plataformas,
ou para desenvolver tipos específicos de aplicação.
Além disso, aspectos como popularidade e recursos que a linguagem possui
para facilitar o desenvolvimento também são importantes na definição da
ferramenta de trabalho.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Conhecer mais de uma linguagem de programação amplia a oferta de op-
ções de trabalho, mas é bom sempre ter uma linguagem principal, sobre a
qual o desenvolvedor possua um maior domínio e seja capaz de produzir
aplicações mais complexas.
A dúvida persiste em relação a qual linguagem focar e qual a primeira a
aprender. É interessante buscar as linguagens líderes em popularidade e
com maior volume de desenvolvedores que a utilizam, pois a chance de a
linguagem durar um tempo maior é grande. Mas é preciso levar em conside-
ração a forma como o desenvolvedor queira trabalhar e o tipo de software
que desejo programar.
Fonte: o autor.

PARTICULARIDADES DA LINGUAGEM JAVA


41

FORMAS DE PROGRAMAÇÃO EM JAVA


Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

A linguagem Java é bastante versátil e permite a criação de diversos tipos de sof-


tware, sendo que estes podem ser utilizados em diferentes finalidades, desde que
sejam executados pelas JVM adequadas para cada sistema operacional em desk-
tops comuns, notebooks ou equipamentos como dispositivos móveis, por exemplo.
Outra forma bastante comum é a criação de “miniaplicativos” ou applets, que
são executados como complementos para navegadores utilizando appletviews
para implementar funções adicionais a páginas web como jogos ou anúncios
interativos, como já mencionado.
Um ponto a ser observado é que estes appletviews precisam ser compatíveis
e estarem disponíveis nos navegadores, permitindo atualizações constantes por
parte de seus desenvolvedores. No entanto, isso pode causar um inconveniente,
pois algumas aplicações prontas e funcionais podem não ser totalmente compa-
tíveis com as atualizações dos appletviews e podem gerar erros em sua execução
ou falhas repentinas (MANZANO, 2011).
A criação de bibliotecas é uma excelente forma de divulgação do profissio-
nal e de contribuição para a comunidade de desenvolvedores, espalhados ao
redor do mundo, pois proporciona contato com profissionais que podem vir a
ser grandes parceiros de trabalho.
Aplicativos para dispositivos móveis e softwares de maior porte, como jogos,
também são responsáveis por boa parte dos profissionais da área de desenvol-
vimento, permitindo a estes ganhos financeiros diretos com a venda destes
aplicativos, ou ganhos com itens para estas aplicações como ocorre com grande
quantidade de jogos, os quais, muitas vezes, são até disponibilizados gratuita-
mente, mas possuem diversos itens pagos.

Formas de Programação em Java


42 UNIDADE II

Sistemas complexos podem ser desenvolvidos na linguagem Java por meio


do agrupamento de diversas classes nos chamados “pacotes”, os quais permi-
tem que aquelas que estejam ali incluídas possam se comunicar e funcionar
conjuntamente.
É interessante observar que o dia a dia mostra novas oportunidades, e que o
contato com empresas e comunidades pode gerar inúmeras formas de trabalho
com a linguagem, no desenvolvimento de variados softwares com finalidades
específicas.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
TIPOS DE APLICATIVOS

Além de possibilitar formas de programação diferenciadas de acordo com o


tipo de software a ser desenvolvido, é possível criar dois tipos básicos diferentes
de software. O primeiro é voltado a sistemas que necessitam de melhor desem-
penho em detrimento de uma interface amigável, ou, de forma alternativa, que
sejam executados em terminais simples ou servidores em modo texto, chama-
dos de softwares de modo console (MANZANO, 2011).
Estes softwares não apresentam o tipo de interface gráfica padrão dos atu-
ais sistemas operacionais, mas são adequados para softwares que rodam em
segundo plano ou que não necessitem de interface gráfica para facilitar seu uso,

PARTICULARIDADES DA LINGUAGEM JAVA


43

permitindo uma aparência simples, porém capaz de atender às necessidades para


as quais foram desenvolvidos.
Outra categoria de software é a desenvolvida para modo gráfico, que gera
códigos maiores, de menor desempenho em geral, mas com uma interface muito
mais amigável, própria para uso constante em sistemas operacionais gráficos
como Windows, Linux, Android e OSX. Estas aplicações oferecem vantagens
em troca da perda de desempenho como melhor aparência e experiência para
usuários quando conectados ou não à Internet, e são responsáveis pela popu-
larização dos softwares, computadores e dispositivos móveis principalmente.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Com a inclusão de interfaces gráficas, a gama de aplicações aumenta e é pos-


sível pensar em aplicativos para desktops com sistemas operacionais de modo
gráfico como Windows, Linux, IOS e Android, por exemplo, usando ou não
conexão em rede ou Internet.
Por meio das conexões possíveis, vemos que é possível criar aplicações Cliente/
Servidor, comerciais ou não, como sistemas empresariais ou jogos, e aplicações
que possam usufruir dos benefícios da Internet, como aplicações para e-busi-
ness, que podem conter funções de e-commerce também.
Também é possível aproveitar a Internet e a forte divulgação que ela promove
para oferecer aplicativos (APPs) diversos para dispositivos móveis que possam
ter as mais diversas utilidades e com ou sem custos. Bibliotecas próprias e com-
ponentes para aplicações de maior porte também são formas de trabalho com
grande potencial, pois as comunidades de desenvolvedores costumam estar sem-
pre de olho em soluções prontas para partes de seus projetos (MANZANO, 2011).
Também podemos nos deparar com melhores implementações de soluções
desenvolvidas por um profissional que consulte uma comunidade em busca de
aperfeiçoamento profissional e de otimizações para suas aplicações.
A variedade e quantidade de opções de desenvolvimento na área de progra-
mação em geral é vasta, variando com as inovações e tendências do mercado de
tecnologia da informação. Entretanto, cabe ao profissional a busca por estas ino-
vações ou permanecer no campo de atuação ao qual já esteja adaptado.

Tipos de Aplicativos
44 UNIDADE II

PACOTES DE DESENVOLVIMENTO

Da mesma forma que surgem diferentes implemen-


tações da linguagem Java, surgem os pacotes de
desenvolvimento para profissionais chamados de JDK
(Java SE Development Kit). Tais pacotes são distri-
buídos gratuitamente pela Internet, atualmente em
sites com a logo Oracle, e são fundamentais para o
desenvolvimento do aprendizado dos conteúdos deste

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
material (ORACLE, [2017], on-line)1.
Complementarmente, temos diversas alternativas
úteis para o desenvolvimento de aplicações, sabendo
que a combinação de diferentes softwares pode ofere-
cer recursos para programação mais abrangente em
termos de tipos de aplicações possíveis.
O ambiente Netbeans criado pela Sun é um dos mais utilizados, assim como
o JDeveloper da Oracle, que atualmente é a plataforma de desenvolvimento ofi-
cial para a linguagem Java. Para uso de serviços agregados a Bancos de Dados
há a instalação de softwares como o HypersonicSQL, que é totalmente voltado
para uso de aplicações Java, Apache Derby que faz parte do pacote de distribui-
ção Java sob o nome de JavaDB, e PostGreeSQL, que concorre diretamente com
outro servidor MySQL (ORACLE, [2017], on-line) 1.
Para a criação de servidores web para Java, duas opções populares são o Jetty,
concorrente do Apache Tomcat, que possui uma versão customizada chamada
JBossWeb, disponibilizado pela JBoss.

Existem várias opções disponíveis de ferramentas para a produção de códi-


go em Java, com seus pontos positivos e também negativos. Sendo assim,
com um conhecimento prévio das mesmas, qual a melhor ferramenta para
se utilizar?

PARTICULARIDADES DA LINGUAGEM JAVA


45
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

COMPILAÇÃO E EXECUÇÃO

Existem ambientes de desenvolvimento para Java, mas independentemente de


qual seja utilizado, o resultado final pode ser o mesmo, pois a lógica envolvida
no código e o correto uso de palavras reservadas, classes e seus métodos é que
realmente determinam a funcionalidade da aplicação a ser criada.
Usando o ambiente do PROMPT DE COMANDO (CMD na busca do
Windows), é preciso observar que o local em que se encontra armazenado o
compilador Java e seus componentes em seu disco, precisa estar contemplado
como parte do caminho padrão do sistema para acesso a aplicativos (PATH). A
Figura 7 mostra um exemplo de PATH já contendo o caminho para o compi-
lador JAVAC na máquina e, caso não esteja, é preciso buscar pela pasta em que
esteja localizado o compilador, como no exemplo da figura 7.
Pode-se selecionar o caminho indicado como indicado na figura 7 para
copiar e colar este caminho no comando PATH, após incluir um sinal de ponto
de vírgula (;) adicional no final do caminho PATH já existente, como ficou na
figura 7 (;C:\Program Files\Java\jdk1.8.0_77\bin).
Assim, temos que o comando PATH mostra como estão os caminhos padrões
para localização de aplicações e um comando similar a:
PATH=C:\ProgramData\Oracle\Java\javapath;
C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;

Compilação e Execução
46 UNIDADE II

C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Skype\Phone\;
C:\Program Files\Java\jdk1.8.0_77\bin.

Ajusta quais são as pastas e discos válidos como padrões.


As Figuras 6 e 7 ajudam no processo de ajuste do caminho para simplificar o
uso dos recursos do pacote JDK de desenvolvimento Java indicando como obter
o caminho para a pasta em que estão os recursos e como conferir pelo Prompt
de Comando do sistema operacional Windows, por exemplo.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 6 - Exemplo de janela para buscar o caminho do compilador JAVAC
Fonte: o autor.

Figura 7 - Exemplo de Prompt indicando o caminho padrão com o comando PATH


Fonte: o autor.

PARTICULARIDADES DA LINGUAGEM JAVA


47

Após o ajuste do ambiente de trabalho, é possível incluir o código em um editor


simples qualquer como o Bloco de Notas do Windows, confome mostra a Figura 8.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Figura 8 - Exemplo de código Java digitado em editor de texto simples


Fonte: o autor.

Depois de digitar o código, grave-o em local adequado para seus estudos como uma
pasta exclusiva para os códigos do livro e outros para exercício da linguagem, lem-
brando que todo arquivo Java será gravado com o nome da classe principal (seguindo
as regras de nomenclatura do sistema operacional), e a extensão java como na figura 9.
Observe que, no caso do Bloco de Notas, é interessante indicar o tipo como
Todos os arquivos para que a gravação não corra o risco e crie um arquivo do
tipo TXT ao invés de java. Sem esta opção, poderia ser criado um arquivo seme-
lhante a Ex1.java.txt, o que não seria compreendido pelo compilador javac.
A Figura 9 mostra a tela de gravação de arquivos, na qual podemos escolher
o local para gravação, em que é indicado respeitar uma organização de locais
de gravação para as diferentes aplicações desenvolvidas, e a indicação do nome
para o arquivo fonte, respeitando a regra de este nome ser igual ao da classe con-
tida no código.

Compilação e Execução
48 UNIDADE II

Esta é mais uma precaução do que uma ação obrigatória, pois para outras
situações ou sistemas operacionais, pode acontecer do editor usar todo o nome
digitado “Nome.java” como nome do arquivo.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 9 - Exemplo de gravação no aplicativo Bloco de Notas
Fonte: o autor.

Após a correta gravação do arquivo, pode-se utilizar o prompt de comando para


compilar o código Java e depois executar o aplicativo criado, confome mostra a
Figura 10, na qual temos a sequência de todos os passos para realizar esta tarefa.
Primeiramente, usa-se o comando E: para seguir ao disco desejado, no qual
esteja gravado o arquivo de extensão java, lembrando que cada programador
organiza seus arquivos em disco como achar melhor, podendo, inclusive, gra-
var tudo referente aos estudos em um pendrive vazio. Em seguida, é usado o
comando CD para seguir até a pasta de trabalho. O comando DIR permite lis-
tar os arquivos contidos na pasta escolhida.
Assim, estando no local correto e tendo encontrado o arquivo com o código
desejado, é possível realizar a compilação por meio do JAVAC, indicando o nome
do arquivo com o programa (Ex1.java por exemplo). Depois, caso não ocorram

PARTICULARIDADES DA LINGUAGEM JAVA


49

erros, um arquivo do tipo CLASS é gerado contendo a conversão de linguagem


Java para Bytecode, que pode ser interpretada e executada pelo JAVA confome
a Figura 10.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Figura 10 - Exemplo de acesso ao arquivo JAVA, sua compilação e execução


Fonte: o autor.

Com isso, encerrando a unidade, vemos que a proposta do material é de ensi-


nar os fundamentos da linguagem Java e da programação orientada a objetos,
sem depender de ambientes integrados e receitas prontas.

Compilação e Execução
50 UNIDADE II

CONSIDERAÇÕES FINAIS

Nesta unidade foram vistos diversos conceitos complementares à unidade ante-


rior, sendo possível conhecer mais aspectos da linguagem e compreender o
motivo de sua popularidade e eficiência.
O ambiente em que são desenvolvidas as aplicações é muito importante,
pois mostra de que forma linguagem Java, a qual possui uma forma um pouco
diferente da maioria das demais linguagens de programação, desenvolve suas
aplicações para garantir uma forte portabilidade entre as diferentes plataformas

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
utilizadas em diferentes meios de execução de aplicações, como computadores
e dispositivos móveis.
Complementando o ambiente de desenvolvimento, são citados os diferen-
tes sistemas operacionais que oferecem diversas plataformas de execução para
as aplicações criadas e que, independentemente dessas diferenças, permitem
que um mesmo código em Java possa ser executado em diferentes plataformas,
devido a sua portabilidade.
Seguindo os conceitos tratados na unidade, há comentários sobre as formas
de programação que destacam tipos diferentes de soluções com os quais um
determinado desenvolvedor pode se especializar indicando se inclusive, áreas
já ultrapassadas no mercado, mas que ainda apresentam situações de uso que já
garantiram o trabalho de muitos profissionais.
Assim, as diferentes formas de criar software em linguagem Java são descritas
oferecendo possibilidades diversas e indicando soluções mais simples para fins
específicos, como software para máquinas sem necessidade de interface gráfica,
sendo mais leve e eficiente, ou soluções mais complexas com interface gráfica
para equipamentos como dispositivos móveis.
Finalizando a unidade, são tratados os pacotes utilizados para o desenvol-
vimento de software e o processo de compilação e execução de aplicações em
diferentes plataformas.
Com esse preparo, já é possível ingressar em uma nova unidade, contem-
plando os primeiros pontos a serem vistos em relação à linguagem Java e seus
conceitos iniciais de desenvolvimento de aplicações.

PARTICULARIDADES DA LINGUAGEM JAVA


51

Em Linux, para preparar o ambiente para programação em Java é preciso instalar o pa-
cote Java JDK, seguindo os passos indicados a seguir. Vale lembrar que tais passos po-
dem ser alterados devido às novas versões e à descontinuidade do pacote indicado no
conteúdo a seguir.
Abrir uma janela terminal para, em seguida, usar o comando “su” para entrar em modo
super usuário inserindo a senha necessária para tal.
Em seguida, entrar na pasta Downloads, com o comando “cd downloads”, e finalmente,
o comando de instalação “rpm –jvh jdk-7-linux-i586.rpm”.
Depois de baixado o pacote, usar “mkdir/usr/java/jdk1.7.0/jre/classes” para criar uma
pasta Classes para trabalho e remover o arquivo de instalação com o comando “rm jdk-
-7-linux-i586.rpm”.
Após instalado, é preciso que o Java seja visível em toda extensão do ambiente Linux e,
para isso, é preciso manipular variáveis de ambiente do sistema operacional.
Siga a sequência de comandos a seguir para servir de guia para o processo, iniciando
com “cd /etc/profile.d” para acessar a pasta indicada, digitando em seguida, “touch /etc/
profile.d/java.sh”.
Depois, use novamente “cd /etc/profile.d”, seguido do comando “joe” para poder editar
as variáveis de ambiente, como indicado a seguir:
#!/bin/sh
JAVA_HOME=”usr/java/jdk1.7.0”
CLASSPATH=”.:$CLASSPATH:$JAVA_HOME/jre/classes”
PATH=”$JAVA_HOME/bin:$PATH”
export JAVA_HOME CLASSPATH PATH
Finalmente, utilize [CTRL+K] seguido de [X] para gravar o arquivo como “java.sh”.
Assim, temos uma das possíveis formas de se instalar e preparar o ambiente Java em
Linux, lembrando que, em caso de falha no processo, a Internet oferece diversas varia-
ções em que é possível encontrar atualizações regulares do ambiente Java.
Fonte: o autor.
52

1. Um bom profissional de desenvolvimento de software se prepara para garantir


uma melhor qualificação em termos de conhecimento e experiência profissio-
nal. Iniciantes não possuem a experiência ainda, mas podem se preparar
através de que recursos?
2. A JVM é por meio por interpretar e executar arquivos bytecode gerados pelo
compilador Javac. Esta chamada máquina virtual aceita arquivos compilados
com uma extensão específica gerada por meio do arquivo de código gravado
com outra extensão específica. Cite as duas extensões.
3. Existem duas formas essenciais de desenvolvimento de aplicações em Java. Uma
delas se da por meio da linha de comandos para compilar e executar programas
através de utilitários próprios para tais tarefas inclusas no pacote JDK. Como se
chama a alternativa de desenvolvimento que oferece alguns recursos adi-
cionais, além dos oferecidos pelo compilador e JVM de linha de comando?
4. A linguagem C++ gera aplicações por meio do seu processo de compilação, o
qual serve para criar arquivos que podem ser executados, independentemente
de outros softwares. No caso da linguagem Java, isso não ocorre e a aplicação
precisa da JVM pa-ra ser executada. Qual o motivo desta diferença?
5. É possível desenvolver aplicações de tipos diferente, e com funções distintas em
Java. Este é um exemplo da versatilidade da linguagem. Um destes tipos se cha-
ma applet e aos poucos está sendo descontinuado. Por que esta situação está
ocorrendo?
MATERIAL COMPLEMENTAR

Java Para Iniciantes: crie, compile e execute


programas Java rapidamente - 6 ed. 2015
Herbert Schildt
Editora: Bookman
Sinopse: Conheça os fundamentos da programação
Java com Herbert Schildt, autor best-seller de
publicações sobre programação. O livro aborda
recursos avançados e básicos de forma muito bem trabalhada.

Material Complementar
54
REFERÊNCIAS

MANZANO, J. A. N. G. Java 7 - programação de computadores: guia prático de


introdução, orientação e desenvolvimento. 1 ed. São Paulo: Érica, 2011.
ORACLE, University; Java SE. [on-line] Disponível em: <http://education.oracle.
com/pls/web_prod-plq-dad/ou_product_category.getPage?p_cat_id=267>. Aces-
so em 30 mai. 2017.
55
REFERÊNCIAS
GABARITO

1) Cursos livres ou técnicos, Graduações, Especializações e Certificações na área.


Participação em eventos e palestras também ajudam no conhecimento, além
de proporcionar a criação de uma rede de contatos.
2) .JAVA e CLASS.
3) IDE (Ambiente Integrado de Desenvolvimento).
4) As aplicações em Java não são executáveis como em C++ devido à premissa de
todo código Java ser portátil independentemente da plataforma, sendo que o
arquivo bytecode de uma aplicação pode ser executado em várias plataformas,
ao passo que na linguagem C++ é preciso recompilar o programa após corrigir
as incompatibilidades da linguagem com cada versão de sistema operacional.
5) Os navegadores, aos poucos, estão descartando o uso de plugins que não pos-
sam ser incluídos no próprio código deles e necessitam de terceiros para de-
senvolver as mas atualizações esse. Assim, aos poucos, os navegadores estão
deixando de ser compatíveis com este tipo de aplicativo.
Professor Esp. Ronie Cesar Tokumoto

INTRODUÇÃO À

III
UNIDADE
PROGRAMAÇÃO JAVA

Objetivos de Aprendizagem
■■ Conhecer os conceitos básicos da programação Java.
■■ Compreender como elaborar instruções comuns.
■■ Saber identificar operadores e suas regras de uso.
■■ Compreender a elaboração de expressões na linguagem.

Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Fundamentos de um programa Java
■■ Instruções básicas
■■ Expressões
■■ Identação e espaçamento
59

INTRODUÇÃO

Nas unidades anteriores, foram apresentados os aspectos fundamentais da lin-


guagem Java e a forma pela qual ela permite a criação de diferentes tipos de
software, por meio de um processo particular de compilação e execução de apli-
cações, no qual uma máquina virtual adaptada a cada plataforma de execução se
encarrega de interpretar o projeto e manter a portabilidade do código sem que,
geralmente, haja a necessidade de alterações.
Nesta unidade, são iniciados os estudos da linguagem em si, mostrando os
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

conceitos fundamentais da linguagem Java em relação a todos os aspectos ini-


ciais que devem ser conhecidos.
Dentro das instruções básicas, será tratada a questão documental de um
código, por meio de comentários e documentação gerada por um utilitário con-
tido no pacote de desenvolvimento.
Os tipos de dados mais importantes da linguagem também são citados, mos-
trando diferenças entre eles e indicando, a partir de exemplos, como devem ser
utilizados em variáveis e constantes. É válido destacar que variáveis são pontos
fundamentais da programação e não poderiam deixar de ser citadas devido a
sua expansão para o título de atributos dentro da programação em Java orien-
tada a objetos.
Os chamados “tipos de dados” associados a estas variáveis representam a
base de toda a funcionalidade de uma aplicação, já que, em geral, todo software
se baseia no fundamento de servir como meio para que ocorra o processamento
de dados de entrada, gerando dados de saída que podem representar informa-
ções mais complexas.
Atrelado à ideia de tipo de dado, será tratado o uso de operadores, os quais
permitem realizar modificações em conteúdos de variáveis, podendo também
ser utilizados em diversas outras funções, como cálculos que podem utilizar,
inclusive, valores definidos para constantes.
Complementando os conteúdos da unidade, temos os conceitos de criação
de expressões, utilizando operadores, e da chamada identação de código, que
permite uma melhor leitura e compreensão de códigos.

Introdução
60 UNIDADE III

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
FUNDAMENTOS DE UM PROGRAMA JAVA

Daremos início a mais uma unidade, caro(a) aluno(a). Neste primeiro tópico, é
importante citar que toda a construção de código Java segue regras, as quais pre-
cisam ser respeitadas de forma que, além da sintaxe, a semântica de um código
possa ser validado pelo compilador da linguagem para que um arquivo byte-
code válido possa ser gerado.
O uso do paradigma de orientação a objetos é uma destas regras essenciais
e, sem ela, não é possível criar programas em Java válidos para um compilador
(ORACLE, [2017], on-line)1. Temos basicamente dois tipos de arquivos usa-
dos na programação Java: um corresponde ao código escrito em si, gravado em
arquivo do tipo JAVA, e outro que é gerado pelo compilador em formato byte-
code do tipo CLASS, como citado anteriormente.
Como o arquivo JAVA é um arquivo texto comum, não é preciso utilizar
recurso especial além de um editor de textos simples para codificar programas
em Java, assim como em outras linguagens compiláveis.
Existem diferentes formas de programação em Java, nas quais é possível criar
softwares aplicativos no modo console, em que não existe interface gráfica e a
programação não é fundamentada na web.
Pode-se criar software para o modo gráfico utilizando pacotes próprios para
uso de recursos, como janelas e desenho de forma geral, amplamente voltado
para plataformas com interface gráfica como Windows e Linux, além de amplo
uso em plataformas web como Android.

INTRODUÇÃO À PROGRAMAÇÃO JAVA


61

INSTRUÇÕES BÁSICAS

Um programa criado em qualquer que


seja a linguagem de programação tende a
utilizar certos recursos básicos comuns a
diversas linguagens e também na maioria
dos problemas a serem resolvidos.
A seguir, serão apresentados alguns
destes recursos, os quais devem ser com-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

preendidos para se formar uma base de


conhecimento inicial que dará suporte
para o aprendizado futuro de conceitos
mais avançados ou inovações que venham
a complementar os contidos neste material.

COMENTÁRIOS

O processo de programação exige muito mais trabalho intelectual em rela-


ção ao trabalho manual de digitação, e cada profissional possui sua forma de
implementar código. Assim, todo o ciclo de vida de um software envolve o desen-
volvimento de código, mas também envolve a manutenção do mesmo enquanto
estiver sendo utilizado.
Alguns softwares chegam a ser utilizados por décadas, mesmo que ocorram
evoluções tecnológicas de hardware e software, pois mudanças em certos siste-
mas são inviáveis devido ao seu tamanho e complexidade. Softwares em geral
sofrem manutenções esporadicamente e estes softwares legados também, mas
independentemente de qual seja o software, muitas vezes é preciso adicionar
novas funcionalidades ou adequar outras já existentes.
Para facilitar o trabalho de manutenção, o uso de comentários dentro do
código facilita a interpretação do que foi logicamente implementado e permite
que, além do próprio programador que gerou o código, outros possam com-
preender e realizar a manutenção necessária no mesmo com maior facilidade.

Instruções Básicas
62 UNIDADE III

É preciso ter em mente que um software pode ter um ciclo de vida mais longo
que o responsável pela sua criação dentro da empresa responsável pelo desen-
volvimento e/ou manutenção do mesmo por tempo indeterminado.
Importa observar que os comentários não são obrigatórios em programas;
seu uso não influencia a lógica do código, até porque qualquer comentário colo-
cado dentro de um código é descartado já no processo de compilação e geração
do arquivo bytecode por não ter função na execução do software.
Podemos utilizar // ou /** e */ para delimitar comentários, sendo a primeira
forma para comentários de linha única, e a outra forma para delimitar blocos de

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
comentários como indicado nos exemplos a seguir:

//código1
// Comentário de linha única.
/* Início de bloco de comentário
Que pode seguir por linhas abaixo até que seja encontrado
O símbolo de fim do bloco de comentários */

Uma instrução pode ser colocada na mesma linha, desde que antes do símbolo
indicador de comentário para não perder sua função por transformar-se em
parte do texto do comentário. Já no bloco de comentários, quaisquer instruções
colocadas entre o espaço delimitador de início e fim do comentário perde sua
função, pois estando dentro de um comentário, qualquer conteúdo é descartado
pelo compilador (DEITEL, 2010).

INTRODUÇÃO À PROGRAMAÇÃO JAVA


63

JAVADOC

O chamado comentário de documentação inicia com o indicador /** e termina


com o outro indicador */, permitindo que as informações sejam adicionadas
dentro desses blocos de comentários, podendo, posteriormente, ser utilizados
pelo utilitário Javadoc e faz parte do pacote JDK, para inserir tais comentários
em arquivos HTML. É uma boa forma de documentar programas e, por meio
de tags que representam os comandos da sintaxe para o Javadoc, podem extrair
do código o texto que possa ser utilizado (FLANAGAN, 2006).
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Em geral, essas tags iniciam com o símbolo @ e possuem funções diversas,


que serão resumidas para que sejam úteis durante o processo de desenvolvi-
mento de código Java (FLANAGAN, 2006).
■■ A tag @author serve para identificar a autoria do código, assim como @
since indica a versão onde alterações ocorreram no código, e @version
serve para especificar versões de classes.
■■ {@code} é utilizada para que trechos de código possam ser colocados den-
tro do código real a ser compilado sem que o compilador enxergue esse
código como compilável e o ignore como um comentário de texto qualquer.
■■ A tag @deprecated pode servir para anotações em trechos de código
não mais utilizados e que são mantidos para fins de retorno de versão de
código ou alterações que possam ser desfeitas no futuro, por exemplo.
■■ Para melhorar o controle sobre as tags @deprecated, podemos usar as tags
@see ou {@link} que indicam pontos do código que podem ser conside-
rados relacionados ou substitutos do código indicado por @deprecated.
■■ A tag {@docRoot} indica o caminho para o local em disco em que esteja
armazenada a documentação Javadoc.
■■ Usando @param é possível documentar parâmetros utilizados em um
código, assim como @return serve para documentar valores de retorno
de métodos de classes.

Existem outras tags mais capazes de oferecer demais funcionalidades a essa fer-
ramenta de documentação. Algumas das principais tags utilizadas pelo utilitário
Javadoc na confecção de documentação estão listadas na Tabela 1.

Instruções Básicas
64 UNIDADE III

Tabela 1 - Lista de tags reconhecidas pelo utilitário Javadoc

TAG SIGNIFICADO
@author Indica o autor de uma classe ou do método.
@deprecated Identifica classes ou métodos já ultrapassados. É interessante
informar nessa tag os métodos ou classes que podem ser usa-
das como alternativas mais recentes.
@link Indica um link para outro documento através de um URL.
@param Mostra parâmetros passados a um método.
@return Mostra o tipo de retorno de um método.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
@see Indicação das referências de classes ou métodos para auxiliar a
compreensão.
@since Indica quando classes ou métodos foram incluídos no projeto
da aplicação.
@throws Indica tipos de exceções que podem ser tratados por métodos
na aplicação.
@version Informa a versão de uma classe em um projeto.
Fonte: SCHILDT (2013, p. 594).

No exemplo do código 2 é possível observar de que forma pode ser colocado um


comentário estilo Javadoc em um código Java qualquer.

INTRODUÇÃO À PROGRAMAÇÃO JAVA


65

//código2
Import java.io.*;
/**
* Classe genérica para soma
* @author Tokumoto
* @version 1.0
*/
public class calcula {
public double soma (double valor1, double valor2) {
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

/**
* Soma dois valores recebidos como argumentos
* @param valor1 e valor2 representam valores do tipo double
* @return a soma dos parâmetros é o resultado retornado
*/
return (valor1 + valor2);
}
}

VARIÁVEIS E CONSTANTES

Nomes aceitos com um ou mais caracteres alfanuméricos, sendo que o primeiro


obrigatoriamente precisa ser alfabético. A linguagem é case sensitive e nomes
podem incluir o caractere _.
Por ser uma linguagem tipada, toda declaração de variável precisa da declara-
ção do tipo associado de valor aceito e se, antes da declaração do tipo for incluída
a palavra final, a variável não poderá ter seu valor inicialmente atribuído modi-
ficado e esta se torna uma constante.
Além de variáveis, é possível bloquear outros elementos com a palavra-chave
final, como classes que se tornam privadas e métodos que não permitem mais
sua modificação por classes que herdem a mesma por meio de uma técnica da
orientação a objetos chamada polimorfismo e que será vista na segunda disci-
plina nas Unidades I e II.

Instruções Básicas
66 UNIDADE III

Tendo como sintaxe básica a forma [final] <tipo> nome [<= valor>]; podemos
ilustrar a declaração de algumas variáveis de tipos diferentes através do código 3.

//código3
import java.lang.String;

public class Variaveis{


public static void main(String[] args) {
int a;

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
int b, c;
int d = 0;
double e;
char f;
char g = ‘ ‘;
String h;
}
}

TIPOS DE DADOS

Tipos de dados são fundamentais na linguagem Java por ela ser fortemente
tipada e exigir que toda estrutura de dados criada tenha tipos para os dados
aceitos pelas mesmas, definido para a devida alocação de memória durante o
processo de execução.
A Figura 1 mostra os tipos básicos mais utilizados no desenvolvimento, indi-
cando também a quantidade de bits ocupados em memória, delimitando valores
limite para armazenamento nessas estruturas de dados.

INTRODUÇÃO À PROGRAMAÇÃO JAVA


67

Quadro 1 - Ilustração dos tipos básicos de dados aceitos.

Nome e bits ocupados Descrição


byte (8 bits) Números inteiros (128 a 127)
short (16 bits) Números inteiros (-32768 a 32767)
int (32 bits) Números inteiros (-2147483648 a 2147483647)
long (64 bits) Números inteiros (-9,22 . 10-17 a 9,22 . 1017)
float (32 bits) Números reais de ponto flutuante
double (64 bits) Números reais de ponto flutuante
char (16 bits) Caracteres Unicode UTF-16 de ‘\u0000’ a ‘\zffff’
boolean (1 bit) Valores 0 e 1 representativos para falso e verdadeiro
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Fonte: o autor.

Todos os tipos têm usos indicados de acordo com a maneira como serão utiliza-
dos os dados coletados durante a execução de um programa em variáveis usadas
para armazenar idade, peso ou altura, por exemplo. Cada variável é declarada
com o tipo de dado que seja adequado ao seu propósito no programa como, por
exemplo, a idade que utiliza números inteiros, ou em peso e altura, que necessi-
tam de números do tipo ponto flutuante (MANZANO, 2011).
Além dos tipos básicos, algumas bibliotecas (APIs), oferecem tipos adicionais
de dados para facilitar o desenvolvimento de novos programas que necessitem
de dados mais específicos. Um tipo bem conhecido se chama string, contido na
Classe String de uma API bastante utilizada no desenvolvimento, em que cadeias
de caracteres podem ser armazenadas nesse tipo de dado.
Toda variável tem a função de armazenar dados, assim como constantes que
também utilizam espaços de memória para tal finalidade. No entanto, uma dife-
rença fundamental é que as constantes têm, como princípio básico, a ideia de que
um valor atribuído a ela não será alterado em tempo de execução. No caso das vari-
áveis, sendo elas fortemente tipadas ou não, a função se mantém, variando a forma
como ocorre esse armazenamento de dados, pois, para cada dado a ser alocado em
uma variável, existe uma quantidade adequada de memória necessária a ser alocada.
No caso de linguagens fortemente tipadas, essa quantidade de memória é
determinada pela escolha do tipo de dado que será aceita pela variável. Porém,
em linguagens fracamente tipadas, a alocação é feita de forma diferente, pois não
há como garantir sempre, antes da execução, qual tipo de valor será alocado à
variável, alterando em tempo de execução a quantidade de memória que seria
necessária para esse dado (MANZANO, 2011).
Instruções Básicas
68 UNIDADE III

OPERADORES ARITMÉTICOS

Na programação, os operadores são fundamentais, pois permitem que valores


sejam trabalhados para gerarem novos valores desejados dentro da lógica do
programa. Os operadores mais simples e de uso mais frequente são os aritmé-
ticos, utilizados para realizar cálculos matemáticos em geral, sendo que alguns
dos símbolos usados são diferentes daqueles aprendidos nas escolas, conforme
citado por Manzano (2011).
■■ O operador de som (+) pode ter duas funcionalidades. Como operador

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
unário de sinal, indicando a positividade de um valor numérico, e como
operador de soma, o qual realiza o cálculo a partir de dois valores para
gerar um terceiro valor de resultado.
■■ O mesmo ocorre com o operador subtração (-), que também serve como
operador unário de indicação de sinal para números negativos e como
operador para subtração de dois valores, gerando também um terceiro
valor resultante da operação.
■■ A multiplicação representada pelo asterisco (*) é um operador apenas
para a realização do cálculo entre dois valores numéricos, resultando um
terceiro valor, assim como o operador para divisão aritmética indicada
pela barra (/), que também se utiliza de dois valores para gerar um ter-
ceiro valor de resultado.
■■ O operador de resto indicado pelo símbolo de porcentagem (%), realiza
um cálculo não convencional da matemática. O chamado resto da divisão
é o valor que sobra após a divisão entre dois valores numéricos, podendo
valer zero, em caso de divisões perfeitas, ou valores maiores, quando o
primeiro valor não é múltiplo do primeiro.
■■ Os operadores unários de incremento (++) e decremento (--), são utili-
zados para alterar valores de variáveis realizando um cálculo simples em
que é acrescentada ou reduzida uma unidade do valor da variável a qual
se aplica algum desses operadores.

Existem também métodos que realizam a função de operadores não padrões


da linguagem, que são incluídos à programação a partir de bibliotecas especí-
ficas como Math. Exemplos de métodos dessa API so Math.pow, que realiza a

INTRODUÇÃO À PROGRAMAÇÃO JAVA


69

potenciação por meio de parâmetros passados a ele, representando os valores de


base e expoente necessários para a realização do cálculo, assim como o método
Math.sqrt, que recebe um valor como parâmetro para realizar o cálculo da raiz
quadrada desse valor.

OPERADORES RELACIONAIS E LÓGICOS

Outro tipo de operador é o relacional, o qual não realiza cálculos, sendo utilizado
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

para comparações em expressões lógicas para desvios condicionais, por exemplo.


Os operadores maior (>), menor (<), maior ou igual (>=), e menor ou igual
(<=) são também utilizados na matemática com a diferença para os símbolos ≥ e
≤, que não existem como caracteres no teclado e foram substituídos por combina-
ções de símbolos existentes em todos os modelos de teclado (MANZANO, 2011).
Os operadores de igualdade (==) e diferença (!=) também são representa-
dos por símbolos diferentes, mas mantêm o significado igual ao da matemática,
como sinais de = e ≠ respectivamente. Eles são essenciais para elaborações de
condições em desvios de fluxo e laços de repetição.
Os operadores lógicos E (&), OU (|), Negação (!) e OU Exclusivo (^) são
importantes na construção de expressões lógicas por permitirem a construção
de expressões lógicas maiores e mais complexas, em que são avaliadas múltiplas
condições, se necessário.
Existem variações disponíveis para os operadores OU e E que, em certos
casos, podem aumentar o desempenho do programa durante a execução, já que
funcionam de forma distinta por avaliarem de uma forma particular uma expres-
são, sendo chamados de operadores de curto-circuito || (OU curto-circuito), e
&& (E curto-circuito).
Operadores de curto-circuito só avaliam a segunda opção caso valer à pena,
pois AND precisa de dois V para ser verdadeiro e OR pelo menos o primeiro V
já seria suficiente.

Instruções Básicas
70 UNIDADE III

Operadores lógicos podem servir como operadores bit a bit para realizar
deslocamento de bits como & e |, e isso pode ser confundido com operado-
res lógicos. Cuidado.

OPERADOR DE ATRIBUIÇÃO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
O símbolo de igualdade (=) usado na matemática (e que foi substituído na lin-
guagem Java por uma dupla igualdade ==), tem uma função muito importante,
chamada atribuição.
A atribuição é a forma pelo qual é possível atribuir dores diretamente a uma
variável, alocando o valor na posição de memória previamente reservada a ela,
de acordo com o tipo de dado atribuído no momento de sua declaração. Durante
esse processo, pode ocorrer uma conversão automática de tipos quando o tipo
a ser atribuído for compatível com o tipo receptor esse que seja superior àquele
do valor a ser atribuído (MANZANO, 2011).
Pode-se usar o sistema de coerção “cast” para forçar tipos incompatíveis a acei-
tarem uma atribuição forçada, independentemente do tipo que automaticamente
seria usado ou se for uma conversão permitida pelo compilador naturalmente.
Por exemplo, a coerção pode ser utilizada seguindo a sintaxe (tipo) <expres-
são>, na qual é indicado o tipo para forçar a mudança de tipo, lembrando que
funciona apenas se o valor contido na variável for compatível com o tipo dese-
jado (DEITEL, 2010).
Um exemplo poderia ser escrito como y= (int) x; no qual, caso estivesse toda
a instrução dentro do esperado em termos de valores e tipos, seria y uma vari-
ável que deveria aceitar valores inteiros convertidos de x.

INTRODUÇÃO À PROGRAMAÇÃO JAVA


71

PRECEDÊNCIA ENTRE OPERADORES

Dada a existência de muitos operadores, é importante conhecer a ordem na qual


são realizadas as operações em uma expressão, pois essa ordem afeta diretamente
os resultados caso não seja observadas e devidamente utilizada.
Expressões simples da matemática são fortemente influenciadas pela ordem
em que as operações são colocadas nas expressões, e qualquer mudança de opera-
dores e valores em relação ao seu posicionamento numa expressão normalmente
muda a resolução.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Observe a Figura 5 e perceba como pequenas mudanças em uma expressão


afetam seu resultado. Em cada variação da expressão, temos diferentes resultados,
e podemos observar na mudança da expressão 1 para a expressão 2 que a passa-
gem da multiplicação para o início da expressão já tem influência no resultado.
Na passagem da expressão 1 para a expressão 3, na mesma Tabela 2, tam-
bém é obtido um resultado diferente pela mudança de posição dos símbolos na
expressão, mostrando a influência de uma correta elaboração de uma expressão.
Tabela 2 - Exemplo de expressões matemáticas

EXPRESSÃO 1 EXPRESSÃO 2 EXPRESSÃO 3

5*2+3 2+3*5 5+2*3


10 + 3 2 + 15 5+6
13 17 11
Fonte: o autor.

A seguir, temos uma lista com a ordem de precedência de operadores, con-


forme a Tabela 3, indicando a ordem do operador com maior prioridade para o
operador com menor prioridade, mostrando aqueles que naturalmente seriam
utilizados antes em um expressão.

Instruções Básicas
72 UNIDADE III

Tabela 3 - Ordem de precedência de operadores

++, -- (pós fixo) Incremento e decremento após o uso de uma variável.


++, --, ~, !, +(unário), Incremento e decremento antes do uso de uma variá-
-(unário), (cast) vel, negação, sinais de positivo e negativo

*, /, % Multiplicação, divisão e resto


+, - Soma e subtração
>>, >>>, << Deslocamento de bits (direita, direita sem sinal, e
esquerda)
>, >=, <, <=, instanceof Operadores relacionais maior, maior ou igual, menor,

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
menor ou igual, operador de instância de objetos
==, != Igualdade e diferença lógica
& Operador E lógico
| Operador | lógico
&& Operador E lógico de curto-circuito
|| Operador | lógico de curto-circuito
?: Operador condicional
=, op= Atribuição ou atribuição com cálculo (+, -, *, /, &)
Fonte: o autor.

EXPRESSÕES

Expressões representam todo tipo de instrução relacionada à manipulação de


valores e englobam desde a atribuição de valores a variáveis até expressões mate-
máticas mais complexas, contendo operadores diversos e conversões de valores.
Operadores, variáveis e literais são componentes de expressões. Pode ocorrer
a conversão de tipos em uma expressão, mas precisam ser todos compatíveis
(FLANAGAN, 2006).
A atribuição é a forma mais comum de expressão, pois todo valor de entrada
em um programa depende da sua atribuição a um atributo ou parâmetro, por
exemplo. Expressões matemáticas podem ser simples, utilizando apenas um

INTRODUÇÃO À PROGRAMAÇÃO JAVA


73

operador, conter cálculos mais elaborados, bem como


podem utilizar funções contidas em bibliotecas exter-
nas ao conjunto básico de comandos da linguagem.
No código4, temos um exemplo de código que rea-
liza alguns cálculos simples, e que consegue, por meio
da biblioteca MATH, obter o valor da constante matemá-
tica PI para utilizá-la em um dos cálculos. Temos também
uma expressão simples de conversão de valor absoluto em
porcentagem utilizando uma variável inteira inicializada
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

com valor 100 para a realização do cálculo.

//código4
import java.lang.Math;
class Expressoes
{
public static void main(String[] args)
{
int porcentagem = 100;
System.out.println(“0,5 equivale a “ + 0.5*porcentagem + “%”);
System.out.println(“O valor de PI é “, Math.PI);
System.out.println(“Para calcular a área de um círculo, usa-se a fórmula
PI x (RAIO x RAIO)”);
System.out.println(“Um círculo de raio 10 tem área igual a “ + Math.PI *
(10*10));
}
}
* 0.5 ao invés de 0,5 na fórmula
** concatenação de strings com sinal + ao invés de vírgula
*** O mesmo nas linhas abaixo

Expressões
74 UNIDADE III

IDENTAÇÃO E ESPAÇAMENTO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
A identação serve para organizar um código em níveis e auxilia a leitura e compre-
ensão de um código, sem influenciar sua lógica ou funcionamento na linguagem
Java, diferentemente do que pode ocorrer em outras linguagens. O espaçamento
também não prejudica a codificação em Java, ajudando apenas a leitura e com-
preensão de códigos, principalmente, em expressões longas e instruções com
muitos parâmetros.
Algumas linguagens podem inclusive se basear na identação para indicar o
aninhamento de instruções contidas em outras, como ocorre em blocos de ins-
truções pertencentes a estruturas condicionais e laços de repetição. Sem uma
correta identação, padrões de codificação em empresas são perdidos e a manu-
tenção em códigos já criados se torna mais custosa pela dificuldade de se ler,
compreender e procurar pontos específicos a serem alterados em um código
sem o espaçamento.
No exemplo do código5, podemos observar bem a importância da identação
já em exemplos pequenos de código, em que quanto mais à esquerda, mais o ele-
mento deve representar uma estrutura primária como uma classe, por exemplo.
Já elementos mais à direita representam elementos que fazem parte de elemen-
tos como classes e métodos, assim como estruturas de desvios e laços, os quais
podem conter entre os símbolos de { e }, blocos de instruções e estruturas iden-
tadas mais à direita para indicar que estejam dentro do escopo da estrutura ao
qual estejam associados (MANZANO, 2011).
No código5, podemos observar um exemplo do mesmo código, visto ante-
riormente, sem a identação, mostrando como sua leitura e compreensão podem

INTRODUÇÃO À PROGRAMAÇÃO JAVA


75

ser prejudicados, lembrando que sua lógica e funcionamento não são alterados
em função de falta de espaçamento na linguagem Java.

//código5
import java.lang.Math;
class Expressoes
{
public static void main(String[] args)
{
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

int porcentagem = 100;


System.out.println(“0,5 equivale a “ + 0.5*porcentagem + “%”);
System.out.println(“O valor de PI é “ + Math.PI);
System.out.println(“Para calcular a área de um círculo, usa-se a fórmula
PI x (RAIO x RAIO)”);
System.out.println(“Um círculo de raio 10 tem área igual a “ + Math.PI *
(10*10));
}
}
* 0.5 ao invés de 0,5 na fórmula
** concatenação de strings com sinal + ao invés de vírgula
*** O mesmo nas linhas abaixo

O desenvolvimento de software é algo complexo, sendo necessário muito empenho para


se criar bons programas. Entretanto, a manutenção associada a estes pode demandar
maior esforço. Isso ocorre devido a fatores como a falta de documentação do software,
ou, pelo menos, a existência de comentários no mesmo, auxiliando a sua interpretação.
Outro ponto é a falta de identação correta, que facilita a leitura organizada do código,
mostrando onde iniciam e finalizam blocos de instruções e estruturas maiores de ele-
mentos, como métodos e classes.
É bom lembrar que, em muitos casos, a manutenção de um software não é realizada
pelo mesmo profissional ou equipe de desenvolvimento que criou a aplicação, e isso
pode gerar demora extra na manutenção.
Fonte: o autor.

Identação e Espaçamento
76 UNIDADE III

Ao final desta unidade, é possível perceber quais são os elementos essenciais para
se iniciar os estudos da linguagem, como tipos e operadores, sem os quais pou-
quíssimos códigos podem ser produzidos.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.





















INTRODUÇÃO À PROGRAMAÇÃO JAVA


77

CONSIDERAÇÕES FINAIS

Nesta terceira unidade, foram explicados os aspectos iniciais da linguagem Java,


contemplando aspectos básicos de programação comuns a todas as linguagens,
mas que, por especificidades de cada uma delas, devem ser discutidos.
Iniciando com a parte de documentação, foram tratadas tanto a forma de
como comentar o próprio código quanto o uso de um utilitário chamado Javadoc,
o qual faz parte do pacote de desenvolvimento JDK para uma documentação
externa ao código.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Em seguida, a unidade tratou de citar e explanar vários aspectos de como


são utilizados e organizados os dados dentro da programação em Java, defini-
dos como tipos de dados. Estes se referem a dados simples de diversos tipos, os
quais são armazenados em variáveis e constantes para uso dentro das aplicações
nas mais diversas situações.
Um uso muito comum para variáveis é o simples armazenamento dinâ-
mico de dados, mas estes podem ser manipulados por instruções ou expressões
que podem envolver cálculos matemáticos ou não. Para criar estas expressões,
são utilizados operadores de diferentes tipos e com funções específicas defini-
das por símbolos, os quais podem ser utilizados em diferentes situações dentro
da programação e permitir que cálculos e tomadas de decisões ocorram dentro
de aplicações desenvolvidas.
Os operadores utilizados em situações variadas foram divididos em catego-
rias para organizá-los estes como operadores aritméticos, relacionais e lógicos,
formando conjuntos de operadores para cada situação específica.
Complementando a unidade, temos a parte relacionada - a identação -, res-
ponsável por facilitar a leitura e interpretação +de código devido à disposição
em blocos alinhados.
Na sequência do livro, a Unidade 4 trará conceitos relacionados à continui-
dade dos estudos da linguagem, tratando de meios de o usuário se comunicar
com a aplicação.

Considerações Finais
78

JAR
A extensão JAR se refere a compactação de classes Java, de forma a criar um pacote de
classes representando ou não uma aplicação completa, por meio de um utilitário que
faz parte do pacote JDK de desenvolvimento Java.
Com a popularização da linguagem, outras ferramentas de compactação acrescentaram
em seus algoritmos de compactação o padrão JAR e também são capazes de gerar estes
arquivos.
Todo arquivo jar possui um arquivo manifesto na pasta META-INF/MANIFEST.MF. Este
arquivo manifesto contém as definições de uso do conteúdo compactado e funcionam
como arquivos executáveis, tendo uma de suas classes determinadas como a responsá-
vel por iniciar a execução da aplicação.
Main-Class:Aplicacoes.Classe é uma entrada possível para este arquivo manifesto cria-
do na compactação. Usando o comando java -jar exemplo.jar, podemos executar a
aplicação direto do arquivo JAR. Isto permite maior segurança do conteúdo do arquivo
compactado.
Como exemplo, podemos imaginar que temos uma aplicação que contenha os seguin-
tes componentes: Teste.class, audio/som1.au, audio/som2.au, images/foto1.gif, e
images/foto2.gif.
Com o comando jar cvf Teste.jar Teste.class audio images, podemos adicionar a classe
Teste e as pastas audio e imagem no arquivo JAR compactado.
A execução do utilitário irá mostrar o progresso de sua compactação indicando todos
os arquivos adicionados e compactados, mostrando o grau de compactação atingida
naquele arquivo em porcentagem sobre o tamanho do conteúdo original como aparece
a seguir.

//código6
adding: Teste.class (in=9999) (out=9999) (deflated 50%)
adding: audio/ (in=0) (out=0) (stored 0%)
adding: audio/som1.au (in=4032) (out=3572) (deflated 11%)
adding: audio/som2.au (in=2566) (out=2055) (deflated 19%)
adding: images/ (in=0) (out=0) (stored 0%)
adding: images/foto1.gif (in=157) (out=160) (deflated -1%)
adding: images/foto2.gif (in=158) (out=161) (deflated -1%)
79

O arquivo JAR, como citado anteriormente, contém, além das classes e arquivos comple-
mentares, a indicação do conteúdo compactado em arquivo manifesto.
//código7
META-INF/MANIFEST.MF
foto1.gif
foto2.gif
som1.au
som2.au
Para executar uma classe em forma de plugin em um navegador, por exemplo, basta
utilizar a tag <applet> para acionar o arquivo que contém a classe desejada, além de
outros parâmetros como tamanho da janela, etc.
A seguir, podemos ver um exemplo de como poderia ser implementado o código HTML
para chamar esta applet criado anteriormente em uma página html.

//código8
<applet code=Teste.class
width=”100” height=”100”>
</applet>

Um ponto importante é que como a classe está dentro de um arquivo JAR, é preciso in-
dicar este detalhe dentro da tag de chamada da classe, assim como mostrado no código
9.

//código9
<applet code=Teste.class
archive=”Teste.jar”
width=”100” height=”100”>
</applet>
É possível indicar a localização do arquivo, exibindo dentro da tag, o caminho completo
para acesso ao arquivo compactado como indicado no código a seguir.
80

//código10
<applet code=Teste.class
archive=”applets/Teste.jar”
width=”100” height=”100”>
</applet>

Podemos também executar um arquivo JAR como aplicação independente de um na-


vegador por meio do utilitário java que ativa a JVM usando um comando semelhante
a java -jar Teste.jar” ou “java -jar App1\Teste.jar para indicar o caminho completo da
aplicação.
Fonte: o autor.
81

1. O chamado Javadoc foi tratado dentro da unidade e se refere a algo muito inte-
ressante ofertado pela linguagem Java. Descreva o que seria Javadoc.
2. Dentre os diversos tipos de dados disponíveis, existem dois tipos chamados de
int e double. Explique a diferença entre ambos.
3. Temos duas simbologias para indicar comentários dentro da linguagem Java
que podem ser utilizadas livremente sem afetar a lógica de um código. Quais
são?
4. Operadores são divididos em categorias para melhor organização e compre-
ensão de suas funções. Cite quais são os operadores relacionais usados em
Java.
5. Existem diversos operadores na linguagem Java. Qual a diferença entre os
operadores = e ==?
MATERIAL COMPLEMENTAR

Java Para Games: o tutorial para sua


grande aventura
Helder Henrique do Nascimento Peres
Editora: Viena
Sinopse: livro indicado para programadores Java que desejam iniciar estudos para desenvolvimento
de jogos 2D.
83
REFERÊNCIAS

DEITEL, P. J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.
FLANAGAN, D. Java: o guia essencial. 5. ed. Porto Alegre: Bookman, 2006.
MANZANO, J. A. N. G. Java 7 programação de computadores: guia prático de in-
trodução, orientação e desenvolvimento. São Paulo: Érica, 2011.
SCHILDT, H. Programação com Java. Sáo Paulo: Mcgraw Hill Education, 2014.
GABARITO

1) É um utilitário de geração de documentação que acompanha o pacote de de-


senvolvimento JDK.
2) int se refere a um tipo de dado para números inteiros, enquanto que double se
refere a um conjunto maior de números contendo os números inteiros e núme-
ros com casas decimais.
3) // e /* */
4) > maior, < menor, >= maior ou igual, <= menor ou igual, == igualdade e !=
diferença.
5) = se refere ao operador de atribuição, e o sinal == se refere a igualdade nos
operadores relacionais.
Professor Esp. Ronie Cesar Tokumoto

IV
UNIDADE
MANIPULAÇÃO DE DADOS

Objetivos de Aprendizagem
■■ Compreender a teoria relacionada ao fluxo de dados.
■■ Conhecer alguns dos recursos existentes para entrada de dados em
Java.
■■ Conhecer alguns dos recursos existentes para saída de dados em
Java.
■■ Compreender como são estruturas de dados do tipo vetor e matriz
para dados.

Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Fluxo de dados
■■ Entrada de dados
■■ Saída de dados
■■ Vetores e matrizes
87

INTRODUÇÃO

Após uma unidade introdutória aos conceitos fundamentais da programação em


linguagem Java, na qual foram tratados aspectos iniciais sobre documentação,
tipos de dados e seu uso em variáveis, foi possível iniciar o caminho para com-
preender o trabalho do desenvolvedor de software em Java.
Complementando os conceitos vistos anteriormente, essa unidade traz a
ideia de como ocorre a interação homem-máquina dentro do papel do usuário
e a maneira pela qual é realizada a entrada e saída de dados que compõem a fun-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

ção das aplicações em geral, juntamente com o processamento.


Iniciando com o conceito base de fluxo de dados que representa um dos fun-
damentos da linguagem Java, é possível compreender como ocorre o uso desses
fluxos dentro da ideia da linguagem Java.
Na sequência, é tratada a entrada de dados em Java, que tem a finalidade de
servir de porta de entrada para dados na aplicação, em geral, por meio da inte-
ração do usuário que informa dados ao sistema.
Posteriormente, a saída de dados demonstra o lado inverso, em que dados
processados geram novas informações, que são devolvidas ao usuário por men-
sagens no monitor, por exemplo. Esta saída de dados pode também ocorrer como
o armazenamento desses dados processados em um arquivo físico permanente
ou meio de transmissão de dados.
Em Java, como existem diversos complementos denominados de bibliote-
cas, os quais contêm métodos já implementados para tratar ações específicas,
com a finalidade de realizar as tarefas de entrada e saída, é possível escolher a
forma decodificar essas ações.
Finalmente, um tipo especial de dado é utilizado para declarar as estruturas
que agrupam maiores quantidades de dados que variáveis, chamadas de vetores
ou matrizes com linhas e colunas de dados.
Assim, com os conteúdos dessa unidade, será possível avançar para novas
etapas do estudo na última unidade desse livro e do material da disciplina de
Programação de Sistemas II.

Introdução
88 UNIDADE IV

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
FLUXO DE DADOS

A linguagem Java se baseia em fluxos para processos de entrada e saída de dados


em seus programas. Sendo assim, é preciso compreender como funcionam tais
fluxos antes de explicar de que forma utilizá-los dentro da linguagem.
A passagem de dados entre os métodos das classes de uma aplicação se dá
pelas chamadas mensagens e tem uma ideia diferente da passagem de dados em
programação estruturada, uma vez que, devido às características da orientação
a objetos, esta passagem é mais restrita e com pouca visibilidade entre os com-
ponentes da aplicação (MANZANO, 2011).
Mensagens são passadas de um objeto a outro por meio de seus métodos que
manipulam dados recebidos e os retransmitem para outros métodos que possam
dar sequência aos eventos na execução da aplicação. As mensagens em si podem
representar tipos de dados simples ou compostos de acordo com as necessida-
des na aplicação e respeitando limitações da linguagem.
É importante perceber que o chamado fluxo é o trabalho de processamento
gerado por demandas de uma aplicação que podem resultar a partir de dados
que precisam circular pelo sistema.
Tais dados podem ser obtidos a partir da interação de usuários ou de outras
fontes que geram esses processamentos para depois retornarem outras informa-
ções enviadas por meio de canais de saída como monitores e impressoras.
Sistemas de bancos de dados são exemplos típicos de aplicações que geram
grandes quantidades de fluxos de dados em função da enorme demanda de con-
sultas a bases de dados para gerar relatórios e atualizações de dados.

MANIPULAÇÃO DE DADOS
89
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

ENTRADA DE DADOS

Como a linguagem Java se baseia no fluxo de dados (stream) para controlar


entrada de dados, tendo como padrão, o teclado. O método InputStreamReader()
serve de parâmetro para o construtor BufferedReader do tipo Unicode para
receber caracteres em geral, mas pode-se usar outros métodos além deste para
a mesma função (DEITEL, 2010).
No caso de números, é possível utilizar dois métodos da classe Integer para
receber tipos específicos de valores com o método parseint() para a entrada de
valores inteiros, e parsefloat() da classe Float para valores de ponto flutuante
(com casas decimais).
Outra possibilidade de trabalhar a entrada de dados é por meio da classe
Scanner, que tem uma forma mais simples de uso e, dentro dos exemplos deste
material, será a mais usual.
A entrada de dados pode ocorrer de diversas formas e existem bibliote-
cas indicadas para cada tipo de atividade, mas pode ser necessária a criação de
bibliotecas novas de acordo com as particularidades que uma aplicação especí-
fica necessite.

Entrada de Dados
90 UNIDADE IV

De qualquer maneira, é importante que, sempre que precisar de algum tipo


de entrada de dados, verifique se já existe uma biblioteca que trabalhe com o
tipo de atividade desejada e que contenha até métodos mais completos e melho-
res do que os inicialmente esperados e desejados.
Todo tipo de entrada de dados permite que uma aplicação receba dados para
utilizar ou não em algum processamento e, por meio deste, poder também gerar
ou não algum tipo de dado de saída que gere informações ao usuário, por exemplo.
A digitação direta de dados pelo usuário é uma forma bastante comum de
entrada de dados, mas em sistemas, esta é apenas uma das etapas desta alimen-

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
tação de dados. Depois de o sistema ter sido alimentado com dados em volume
suficiente para que possa acionar seus mecanismos de gerenciamento destes dados,
a aplicação já pode usar estes próprios dados como entrada sem a necessidade
de interação de um usuário em diversos processos, como ocorre em processos
automáticos como backups e geração de relatórios pré-programados em siste-
mas de banco de dados.
Outro tipo de entrada pode vir de arquivos de dados gravados em disco
que podem alimentar processos de uma aplicação, como no caso de consultas
a bases de dados.
Também existe o acesso a dados remotos por meio de redes corporativas ou
pela nuvem da Internet, em que é possível que um sistema possa colher dados
diversos da rede mundial para através de buscas refinadas, gerar novos dados que
tragam diferentes tipos de dados não antes obtidos diretamente através de entradas
de dados por usuários ou consultas a bases de dados locais (MANZANO, 2011).
Um processo que utiliza ideia semelhante é o chamado Big Data, o qual tra-
balha dados já existentes de consultas a produtos de interesse na Internet para
formular publicidades mais otimizadas de acordo com ofertas que sejam dentro
daquilo que o usuário costuma procurar, e assim, tendo maior chance de êxito
em sua função de gerar vendas onl-ine.

MANIPULAÇÃO DE DADOS
91
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

SAÍDA DE DADOS

Para a saída de dados, a linguagem Java possui o monitor como dispositivo


padrão de saída de fluxo de dados e os métodos da classe System print e println
são alguns dos mais utilizados seguindo a sintaxe System.out.print() e System.
out.println(). A saída de dados também segue a forma de trabalho da entrada de
dados e depende de bibliotecas, mas existem certos tipos de entradas de dados
não contempladas pelas saídas de dados e vice-versa (MANZANO, 2010).
Existe um dispositivo padrão, tanto para saída, quanto para entrada de dados,
e isso já mostra a necessidade e a provável preexistência de uma biblioteca ade-
quada a cada necessidade em relação a entrada ou saída de dados.

Saída de Dados
92 UNIDADE IV

//código1
Exemplo de Entrada e Saída de Dados
import java.io.*;
...
try {
System.out.println(“Exemplo de Entrada e Saída de Dados”);
BufferedReader br = new BufferedReader (new
InputStreamReader(System.in));
varTexto = br.readLine();

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
BufferedReader br = new BufferedReader (new
InputStreamReader(System.in));
varNumero = Integer.parseInt (br.readLine ());
System.out.println (“Texto: “ + varTexto);
System.out.println (“Número: “ + varNumero);
}
catch (Exception e) {
varTexto = “”;
varNumero = 0;
} ...

A seguir, um exemplo de uso da classe Scanner para receber dados pelo teclado,
assim como feito no exemplo anterior para receber texto e depois valor numérico.

//código2
import java.util.Scanner;
...
Scanner s = new Scanner (System.in);
System.out.print (“Nome: “);
varTexto = s.nextLine();
...

Pode-se usar além de nextLine(), nextInt(), nextFloat(), nextByte(), nextLong(),


nextDouble(), e nextLine().charAt(0). por exemplo, para os tipos específicos

MANIPULAÇÃO DE DADOS
93

desejados, nos quais o compilador se encarrega de averiguar as entradas de dados


fornecidas para cada método desses.
É possível fixar ainda um formato para valores de ponto flutuante utilizando
a classe DecimalFormat, comforme exemplo de trecho de código a seguir:

//código3
import java.text.DecimalFormat;
...
DecimalFormat df = new DecimalFormat ();
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

df.applyPattern (“0.00”);
System.out.println (“Valor formatado: “ + df.format (varNumero));
...

Como um segundo exemplo, é apresentado um código Java para o cálculo da


potência de um número com expoente 2 em um código simples e sem recursos
especiais gráficos:

//código4
import java.util.Scanner;
public class Teste {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
int x,y;
x = input.nextInt();
y = x * x;
System.out.printf(“Quadrado de %d é %d\n”, x,y);
}
}
* 0.5 ao invés de 0,5 na fórmula
** concatenação de strings com sinal + ao invés de vírgula
*** O mesmo nas linhas abaixo

Saída de Dados
94 UNIDADE IV

A exemplo do que ocorre na entrada de dados, a saída pode oferecer diferentes


formas de executar-se em função de processamentos que podem ocorrer na forma
de exibição de dados em uma saída padrão, conforme mostrado nos exemplos.
Além disso, podem ser armazenados dados em um arquivo gravado em
disco, alimentando bancos de dados ou arquivos simples de dados em aplicações
com menor volume de dados, ou para destinos remotos por meio da Internet,
por exemplo.
Existem bibliotecas prontas contendo diversos tipos de opções de métodos
para gerar saídas de dados, mas não é preciso conhecer todos já em uma etapa

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
inicial de estudos, pois, pela grande quantidade de opções, é algo inviável.
É interessante conhecer opções e, de acordo com a necessidade, aumentar a
gama de bibliotecas que se utiliza na confecção de novos projetos, por meio de
pesquisas sobre alternativas que possam atender cada demanda que um novo
projeto possa gerar.

Trabalhar com entrada e saída de dados é fundamental no desenvolvimento


de aplicações, pois normalmente toda a funcionalidade de uma aplicação
depende de sua interação com usuários e dados.
Algumas técnicas são importantes para lidar com essa funcionalidade e
são tratadas no decorrer das duas disciplinas de Programação de Sistemas,
como o tratamento de exceções e interface com o usuário.
O tratamento de erros melhora a experiência de uso da aplicação e solucio-
na falhas que podem ocorrer devido a problemas na lógica ou em situações
indesejáveis, mas que podem ser evitadas.
Já a interface pode ser textual ou gráfica. Entretanto, independentemente
da opção de escolha do desenvolvedor, deve ser confortável ao uso, con-
tendo informações claras e com o mínimo de pontos que criem confusão
durante o uso.
Fonte: o autor.

MANIPULAÇÃO DE DADOS
95

Existem outras formas de realizar ações de entrada ou saída de dados com a


programação Java, mas cabe ao programador adotar a maneira que atenda
as suas necessidades e seja mais agradável de programar.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VETORES E MATRIZES

Variáveis são estruturas de dados extremamente úteis, utilizadas em pratica-


mente todos os programas criados em Java. O problema é que cada variável pode
armazenar apenas um valor de um tipo específico por vez. Para melhorar a cria-
ção de programas que necessitem conter maior quantidade de valores de um
mesmo tipo, uma saída é utilizar estruturas mais complexas, capazes de arma-
zenar maior quantidade de valores. Por meio de vetores ou matrizes podemos
armazenar grandes quantidades de valores, utilizando uma estrutura de dados
identificada por um nome único.

Vetores e Matrizes
96 UNIDADE IV

É importante lembrar que os elementos contidos em um vetor ou matriz


precisam ser todos de um mesmo tipo e que sua organização dentro da estru-
tura de dados ocorre por meio de índices da posição na qual determinado dado
deve estar armazenado nessa estrutura.
Foi citado que os elementos são de um mesmo tipo, mas não necessariamente
são tipos simples, como números inteiros ou caracteres. Podem ser atribuídos
a vetores ou matrizes elementos mais complexos como objetos, por exemplo.
Para definir um vetor, temos que compreender antes a forma pelo qual ele é
estruturado, pois sua declaração e uso dependem da compreensão da diferença

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
entre os dois tipos de estrutura.
Vetores são listas de valores com apenas uma dimensão, ou seja, seus valo-
res contêm apenas um índice para referência e busca dentro da estrutura. Mas
matrizes podem conter mais dimensões, sendo que cada uma necessita do uso
de um índice diferente para apontar a posição de valores dentro da estrutura
(MANZANO, 2011).
Assim, podemos declarar um vetor por meio de uma sintaxe semelhante à
indicada no exemplo a seguir:

//código5
tipo[] vetor = new int[quantidade];

Um exemplo para essa declaração de vetores pode ser dado por meio da
declaração indicada no código a seguir, no qual é declarado um vetor chamado
lista para depois ser instanciado como um vetor de 10 posições.

//código6
int[] lista = new int[10];

Aqui, temos um vetor com capacidade de armazenamento de até 10 valo-


res numéricos inteiros, com índices variando de 0 a 9 para a identificação dos
dados dentro da estrutura.

MANIPULAÇÃO DE DADOS
97

Podemos atribuir valores a vetores de duas formas distintas, proporcionando


maior flexibilidade na codificação e atendendo a um maior número de situações
possíveis. Uma delas é através da atribuição direta de um valor a uma posição
específica do vetor usando, por exemplo, uma instrução como a mostrada no
exemplo a seguir, em que é atribuído o valor 50 à quinta posição do vetor.

//código7
lista[5] = 50;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Outra forma é por meio da atribuição de uma lista de valores a diversas posi-
ções do vetor diretamente, sem a necessidade da indicação de cada posição a ser
preenchida com estes valores indicados, como mostra o código 8, no qual são
passados dez valores para completar todo o vetor.

//código8
lista = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Caso fosse informada uma lista com menor quantidade de valores, seriam
preenchidas apenas as posições necessárias do vetor, para acomodar todos os
valores pedidos e, caso a lista de valores informada seja maior que a capacidade
do vetor, os valores restantes são descartados.
No caso de uma matriz, muda-se apenas a parte sintática da instrução de
declaração desta estrutura, incluindo uma quantidade adequada de índices para
comportar todos os elementos desejados de forma organizada.
Um ponto interessante de imaginar é que podemos criar matrizes com duas,
três ou mais dimensões, gerando um pouco de dúvida em relação a como imagi-
nar a estrutura fisicamente. Por ser algo lógico e não físico, a linguagem suporta
tranquilamente diversas dimensões, bastando apenas que a forma de organização
dos dados dentro dela seja compreendida pelo programa durante a codificação.
A sintaxe básica para a declaração de uma matriz segue o modelo ilustrado
na Figura 9, na qual são utilizados, como de costume, termos genéricos para ele-
mentos que possam assumir diferentes nomes ou valores.

Vetores e Matrizes
98 UNIDADE IV

//código9
tipo[]...[] matriz = new tipo[quantidade]...[quantidade];

O uso das reticências foi adequado pelo fato de podermos criar matrizes
com duas ou mais dimensões, sendo que cada uma é representada por um par
[]. Um exemplo de matriz de duas dimensões é ilustrado no exemplo do código
a seguir, em que é declarada uma matriz de caracteres.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
//código10
char[][] = new char[3][3];

Caso seja desejada maior quantidade de dimensões, basta adicionar mais


[] (colchetes) com a indicação da quantidade de índices para cada dimensão.
A seguir, temos um pequeno exemplo ilustrativo para demonstrar o uso de um
vetor contendo valores e que são exibidos com a ajuda de algumas instruções,
as quais fazem parte do estudo de Java dentro da disciplina.

//código11
public class Vetor
{

public static void main(String[] args)


{
final int limite = 3;
int[] vetor = { 1, 2, 3 };
for (int i = 0; i < limite; i++)
{
System.out.println(“Valor “ + i + “: “ + vetor[i]);
}
}
}

MANIPULAÇÃO DE DADOS
99

Assim, por meio destes vários exemplos, foi possível compreender um pouco
mais desta linguagem de programação cheia de recursos, moderna e capaz de ser
utilizada juntamente com muitas das tecnologias de ponta dentro da área de TI.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.








Vetores e Matrizes
100 UNIDADE IV

CONSIDERAÇÕES FINAIS

Nesta unidade, com os avanços no estudo da programação em Java, foi possível


conhecer mais conceitos da linguagem Java, por meio de exemplos que auxi-
liam na compreensão destas ideias, permitindo a formação de conhecimento
base para o aprendizado da linguagem.
Iniciando a unidade com conceitos de fluxo de dados, foi possível compre-
ender como o funcionamento da comunicação de dados dentro da programação
orientada a objetos.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Na sequência de conteúdos, foi vista a parte que cita o mecanismo de entrada
de dados dentro da aplicação por usuários, sabendo que podem ocorrer entradas
por meios, como a leitura de dados em um arquivo, e via rede local ou Internet.
O mais importante é saber o conteúdo base para depois encaminhar os estu-
dos sobre os demais conceitos da linguagem e compreender, também, além do
método de entrada, o de saída, que é semelhante àquele, mas em caminho inverso.
Foram apresentados exemplos de saída de dados, mostrando a versatilidade
da biblioteca, a qual permite que sejam realizadas tarefas de diferentes manei-
ras na linguagem Java. Também foram tratados os detalhes de como estruturas
de dados mais complexas que variáveis são utilizadas na linguagem Java, com
exemplos para melhor aprendizado e conceitos diversos.
Exemplos demonstram variações no uso destas estruturas e servem para
introduzir todos ao conteúdo, mas não a dizer que é programador e já sabe tudo,
precisando, inclusive, de computadores para estas atividades. Vetores que repre-
sentam linhas de dados, enquanto que matrizes são consideradas de agrupamentos
de vetores, só que estas duas estruturas de dados devem ser consideradas como
estruturas semelhantes dentro de seus conceitos e aplicações.
Finalmente, na quinta unidade, serão tratados temas complementares ao
que é trabalhado nesta disciplina e na disciplina referente à segunda parte das
disciplinas do curso.

MANIPULAÇÃO DE DADOS
101

Vetores e matrizes são estruturas de dados muito úteis que permitem a solução de di-
versos problemas de armazenamento temporário de dados em memória de forma or-
ganizada e prática.
Imaginando seu uso em uma aplicação prática de programação, é possível usar matrizes
em jogos diversos, como no caso de caça-palavras, jogo da velha, damas, xadrez, batalha
naval e outros que necessitem de elementos dispostos em linhas e colunas.
Utilizando a ideia de alguns desses exemplos, podemos ter que, um tabuleiro de damas
ou xadrez possui 8 linhas e 8 colunas. Assim, teríamos que criar uma matriz 8x8 para
comportar elementos de um jogo de xadrez.
No caso de um jogo da velha, temos 3 linhas e 3 colunas para a inclusão dos símbolos
“X” e “O” para cada jogador na partida, tendo, então, que utilizar uma matriz 3x3 como
base para o jogo.
Jogos como caça-palavras e batalha naval podem ter tamanhos variados e necessitam
de matrizes com dimensões MxN, sendo M a quantidade de linhas e N a de colunas para
formar o tabuleiro para esses jogos.
Poderíamos, então, declarar matrizes diversas para servir como base para os jogos cita-
dos, utilizando instruções como as dos exemplos a seguir:
//código11
int tabuleiro [8][8];
char jogoDaVelha [3][3];
int batalhaNaval [M][N];

Um detalhe dos exemplos do código 11 são M e N, que seriam variáveis ou constantes


com valores inteiros para definir as dimensões para linhas e colunas da matriz.
Após essa análise, pode surgir a dúvida em relação a como seriam utilizadas essas matri-
zes, sendo que os jogos lidam com representações gráficas para peças de tabuleiro ou
elementos utilizados para cada jogo.
A matriz seria apenas uma referência para o de posicionamento de elementos do jogo e
para a análise da lógica e funcionamento do mesmo, sendo que os valores contidos na
matriz seriam base para a associação com os elementos gráficos de cada tipo a serem
exibidos graficamente no tabuleiro gráfico caso o jogo tenha interface gráfica.
Fonte: o autor.
102

1. O fluxo de dados representa uma das características do paradigma orientado a


objetos. Descreva o que seria esse fluxo de dados.
2. A entrada de dados representa uma forma de uma aplicação ter acesso a dados.
Cite uma biblioteca capaz de oferecer métodos capazes de realizar essa ta-
refa.
3. O processo de saída de dados é muito utilizado na interface entre o usuário e
o sistema. Dê um exemplo de linha de código capaz de exibir a mensagem
“Exemplo de Saída de Dados”.
4. Qual o nome da biblioteca Java capaz de oferecer recursos de entrada de
dados para a seguinte instrução:
x = input.nextInt();
5. Dê exemplos de instruções de declaração para as seguintes estruturas de
dados:
5.1. vetor de inteiros para armazenar idades de 100 pessoas.
5.2. matriz de números capazes de armazenar até 50 pesos e alturas.
MATERIAL COMPLEMENTAR

Java - Uma Abordagem Sobre


Programação Java
Geraldo Cesar Cantelli
Editora: Viena
Sinopse: livro que abrange o desenvolvimento de
aplicativos e serviços para diversas plataformas de forma evolutiva e bem estruturada.

Material Complementar
104
REFERÊNCIAS

DEITEL, P.J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.
MANZANO, J. A. N. G. Java 7 - programação de computadores: guia prático de
introdução, orientação e desenvolvimento. São Paulo: Érica, 2011.
105
REFERÊNCIAS
GABARITO

1) Passagem de dados entre métodos e classes de uma aplicação.


2) Java.io.
3) System.out.println(“Exemplo de Saída de Dados”).
4) Scanner.
5.1. int idade[100].
5.2. double valores[2][50].
Professor Esp. Ronie Cesar Tokumoto

COMPLEMENTOS E ESTUDO

V
UNIDADE
DE CASO

Objetivos de Aprendizagem
■■ Conhecer métodos de detectar e criar mecanismos para prevenir
erros.
■■ Compreender aspectos teóricos por meio da visualização de um
exemplo.
■■ Compreender algumas etapas da codificação de software em testes.
■■ Compreender algumas etapas da codificação de software como
manutenção, atualizações e liberação de novas versões.

Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Tratamento de exceções
■■ Exemplo de aplicação
■■ Fase de testes
■■ Atualizações e novas versões
109

INTRODUÇÃO

Na unidade anterior, vimos que recursos de entrada e saída de dados muito bons
são disponibilizados por classes diversas para uso na linguagem Java, e estas
diversas alternativas mostram um pouco da variedade de opções tanto internas
à linguagem quanto externas, por meio de bibliotecas que podem ser importa-
das durante a codificação em linguagem Java.
Inicialmente, para complementar a ideia do uso de métodos para entrada e
saída de dados, é introduzido o conceito do tratamento de exceções que se refe-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

rem a métodos para prevenção e correção de falhas em código. O tratamento


preventivo de erros é a melhor forma de se obter uma aplicação eficiente e capaz
de reduzir ao máximo a ocorrência de situações indesejadas, as quais podem
comprometer a funcionalidade ou a experiência de uso de software.
Além do tratamento preventivo, o tratamento de erros, os quais podem vir
a acontecer durante a execução, devido a processamento incorreto ou entradas
de dados inválidas não tratadas, é um inconveniente maior, pois muitas vezes
são detectados apenas durante o uso cotidiano, gerando demandas emergenciais
de manutenção de software.
Completando a unidade, é criado um exemplo de aplicação simples, o qual
serve para unificar conteúdos tratados no livro e para complementar os estudos
com a visualização de um problema completo a ser resolvido.
Desde a verificação das funcionalidades que a aplicação deva contemplar, é
preciso imaginar como será a interface de uso e como ocorrerá a interação do
usuário com o software.
Um código é proposto como solução para o problema, atendendo os requi-
sitos mínimos e não apresentando erros diretos no seu funcionamento. Porém,
é preciso fazer uma verificação por meio de testes para impedir que os inconve-
nientes - os quais podem ser tratados previamente - sejam identificados apenas
pelos usuários finais.
Assim, os testes poderão verificar se existem falhas ou pontos a serem melho-
rados na aplicação para que seja entregue uma melhor experiência aos seus
usuários.

Introdução
110 UNIDADE V

TRATAMENTO DE EXCEÇÕES

Consideremos exceções como


eventos (esperados ou não), que
possam ocorrer em tempo de
execução, podendo ser estes
esperados ou não, e de forma
que sejam previstos durante
o projeto do software. Alguns

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
comandos são próprios para
lidar com situações desse tipo,
capturando valores de retorno
referentes a diferentes erros, e
permitindo que o programador
possa lidar com esses valores no
próprio código.
Caso a exceção não possa
ser tratada por algum motivo
pelo próprio software, o sistema operacional também possui recursos para o tra-
tamento de diversos tipos de erros. Sabendo-se que podem ocorrer casos em que
nem o próprio sistema operacional possa lidar com estes e tenha problemas em man-
ter sua estabilidade, podendo chegar ao ponto de ocorrer travamento do mesmo.
O comando try é capaz criar uma situação controlada de funcionamento do
código de forma que seja possível a captura de erros com o comando catch, e seu
devido tratamento quando possível. Complementando o tratamento de erros,
temos o comando finally que é responsável por realizar o bloco de comandos
em caso de erros não ocorrerem e a execução do programa poder seguir nor-
malmente seu fluxo (DEITEL, 2010).

COMPLEMENTOS E ESTUDO DE CASO


111

//código1
try {
<instrucoes>
}
catch (Erro1 <valor) {
<Instrucoes de tratamento>
}
catch (Erro2 <valor) {
<Instrucoes de tratamento>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

}
finally {
<Instrucoes normais>
}
//código2
System.out.println (“X: “);
try {
BufferedReader br = new BufferedReader (new InputStreamReader(System.
in));
Altura = float.parseFloat (br.readline());
}
catch (Exception e) {
altura= 0;
}

Tratamento de Exceções
112 UNIDADE V

//código3
public void BuscaVetor(int i)
{
try
{
// Tentativa de busca de elemento em vetor
System.out.println(lista[i]);
}
// Comando que captura o erro retornado pela busca no vetor

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
catch(ArrayIndexOutOfBoundsException erro)
{
System.out.println(“Busca falhou”);
}
// Captura erro não ligado a busca no vetor
catch(Excecao erro)
{
System.out.println(“Erro inesperado”);
}
// Comando que encerra o tratamento de erros
finally
{
System.out.println(“executou finally”);
}
}
É possível implementar tratamentos de exceções de acordo com a necessidade
do software por meio do comando extend, que amplia a flexibilidade do tra-
tamento de exceções e permite maior personalização de feedbacks ao usuário
(DEITEL, 2010).

COMPLEMENTOS E ESTUDO DE CASO


113

//código4
public class BuscaSemSucesso extends Excecao
{
// Sobrecarga de método Excecao para ampliação das exceções tratadas
public String getMessage()
{
return “Índice indicado não encontrado na lista”;
}
}
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Após a criação de novas opções de tratamentos realizada pelo comando extend,


é possível utilizar dentro do restante do código os novos métodos livremente
para situações nas quais se aplique o mesmo tipo de exceção.

//código5
public void OutraBusca(int i)
{
try
{
System.out.println(lista[i]);
}
catch(BuscaSemSucesso erro)
{
System.out.println(erro.getMessage());
}
}

Em alguns casos, é possível antecipar exceções e criar mecanismos para realizar


o tratamento de erros previsíveis e reduzir a chance de falhas do software, que
poderiam ser evitadas por meio de um bom conjunto de métodos para o trata-
mento de exceções.
Aqui, temos o controle da faixa de valores que podem ser buscados no vetor
utilizado, pois sendo um vetor de tamanho pré-definido, parâmetros que tragam

Tratamento de Exceções
114 UNIDADE V

valores fora da faixa aceita para o índice de busca podem ser verificados antes
mesmo da tentativa de busca no vetor.

//código6
public void OutraBusca (int i) throws BuscaSemSucesso
{
if(i>-1 && i<50)
{
throw new BuscaSemSucesso ();

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
}
else
{
System.out.println(lista[i]);
}
}

Existem métodos diversos para uso com o tratamento de exceções, podendo ser
encontrados na biblioteca classe java.lang.Throwable, na qual métodos como
printStackTrace() e getMessage() podem ser úteis e largamente usados.
O método printStackTrace() mostra informações de depuração da exceção,
como tipo de exceção, linha, método e classe na qual foi gerada.
Já o método getMessage() traz apenas uma mensagem padrão da exceção
gerada. Na codificação de novas exceções é possível personalizar textos a serem
retornados ao usuário.

COMPLEMENTOS E ESTUDO DE CASO


115

//código7
public class BuscaEmLista
{
static public void main(String[] args)
{
new BuscaEmLista ();
}
BuscaEmLista ()
{
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Sistema s = new Sistema();


try
{
s. OutraBusca();
}
catch(AlunoInexistente erro)
{
System.out.println(erro.getMessage());
}
catch(Exception erro)
{
erro.printStackTrace();
}
finally
{
s = null;
}
}
}

O tratamento de erros é algo rotineiro para programadores; alguns deles ocorrem


regularmente devido às imperfeições na lógica ou com parâmetros que possam
ser passados a métodos sem que possam ser previamente analisados e descar-
tados se forem indevidos.

Tratamento de Exceções
116 UNIDADE V

Erros matemáticos, como divisões por zero (ArithmeticException), de


acessos a dados, como aqueles ocorridos por índices indevidos ou negativos,
ou, ainda, valores nulos passados como referências (NullPointerException ou
NegativeArraySizeException), índices com valores fora de limites em vetores
(ArrayIndexOutOfBoundsException), ou erros mais fortes, como tentativas de
acesso a recursos protegidos pela JVM (SecurityException).
Observe os trechos de código a seguir para compreender um pouco des-
sas formas indevidas de codificação que provavelmente gerariam exceções em
tempo de execução de softwares Java.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
//código8
valor = -1;
Image[] imagens = new Image[10];
System.out.println(imagens[valor]); // Tentativa de índice negativo
System.out.println(imagens[10]); // Vetor conta de 0 a 9 neste caso

O tratamento de erros está intimamente ligado à percepção de bom ou mau


software pelo cliente, e esta deve ser explorada de forma a oferecer ao usu-
ário a melhor experiência possível de uso.

COMPLEMENTOS E ESTUDO DE CASO


117
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

EXEMPLO DE APLICAÇÃO

Para complementar os estudos, é interessante elaborar um pequeno projeto prá-


tico voltado a melhor compreensão dos conteúdos abordados e também para
que se possa visualizar uma aplicação completa, por mais simples que seja. Os
exemplos, em geral, trazem trechos de código ou classes avulsas que mostram
como é a aplicação de conceitos da programação Java, mas não mostram a tota-
lidade do que é uma aplicação muitas vezes (MANZANO, 2010).
Assim, imagine a situação na qual seja necessária a criação de uma aplica-
ção capaz de receber dados de um formulário usando uma interface gráfica e
trabalhe esses dados para convertê-los de forma a atender as funcionalidades
padrão da aplicação.
Essa aplicação deve funcionar como uma calculadora, em que terá uma inter-
face capaz de simular a parte visual, receber valores e trabalhá-los de forma a
permitir a realização de cálculos matemáticos simples, retornando os resulta-
dos em um campo próprio para tal função.
Depois de concluída a aplicação, fica em aberta a possibilidade de o aluno
modificar e incrementar a mesma da forma como achar conveniente para aper-
feiçoar sua experiência de uso e funcionalidades.
A Figura 1 mostra uma ilustração de como pode ser digitado o código para
o arquivo Calculadora.java que será compilado no Prompt do Windows em
seguida para gerar o arquivo bytecode Calculadora.class.

Exemplo de Aplicação
118 UNIDADE V

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Figura 1 - Ilustração de como preparar o código


Fonte: o autor.

A Figura 2 mostra a aparência da calculadora, bem simples, pois o foco da ati-


vidade é a parte lógica e de estrutura de código na linguagem Java para fins de
estudo, mas facilmente é possível alterar sua aparência utilizando a API Swing,
por exemplo. Na figura é mostrado que, após estar na pasta em que se encon-
tra o código fonte da aplicação, é usado o utilitário JAVAC para a verificação de
erros e compilação do código para gerar o arquivo bytecode.
Em seguida, o utilitário JAVA que representa a máquina virtual é usado para
interpretar e executar o arquivo bytecode que não precisa ter sua extensão adi-
cionada na linha de comando.

COMPLEMENTOS E ESTUDO DE CASO


119
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Figura 2 - Ilustração do processo de compilação e execução


Fonte: o autor.

Veja como seria a aparência desejada para essa calculadora e como seria seu uso
por meio das imagens exemplo nas Figuras 2 e 3. Na Figura 3, um teste de exe-
cução é realizado para verificar se a funcionalidade da aplicação ocorre como
desejada.

Figura 3 - Ilustração de execução da calculadora


Fonte: o autor.

Agora veja como ficaria o código em linguagem Java para desenvolver essa apli-
cação no código a seguir, lembrando que poderia ser feita de outras maneiras,
e em outras linguagens diferentes de programação, como C, C++, C#, PHP, etc.

Exemplo de Aplicação
120 UNIDADE V

//código9
public class Menu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n1, n2, resp;
char opcao;

System.out.println (“+-----------------+”);

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
System.out.println (“| Calculadora |”);
System.out.println (“+-----------------+”);
System.out.println (“| 7 8 9 |”);
System.out.println (“| 4 5 6 |”);
System.out.println (“| 1 2 3 |”);
System.out.println (“+-----------------+”);
System.out.println (“| + - * / |”);
System.out.println (“+-----------------+”);
n1= sc.nextDouble();
opcao = sc.next().charAt(0);
n2= sc.nextDouble();
System.out.println (“+-----------------+”);

switch (opcao) {
case ‘+’ : resp = n1+n2;
System.out.println (“Soma: “ + resp);
break;
case ‘-’ : resp = n1-n2;
System.out.println (“Subtração: “ + resp);
break;
case ‘*’ : resp = n1*n2;
System.out.println (“Multiplicação: “ + resp);
break;
case ‘/’ : resp = n1/n2;

COMPLEMENTOS E ESTUDO DE CASO


121

System.out.println (“Divisão: “ + resp);


break;
default : System.out.println (“Operação Inválida”);
}
System.out.println (“+-----------------+”);
}
}

Observe que nessa primeira versão do código temos uma calculadora bem
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

simples que poderia ter sido implementada em qualquer outra linguagem de


programação, mesmo num paradigma estruturado ou funcional. Não existem
especificidades como a obrigatoriedade da orientação a objetos pela ausência de
herança, ou qualquer outra característica própria desse paradigma.
Também não existe interface gráfica nem recursos especiais de acesso a ser-
vidores, bancos de dados ou aplicação web que requerem outros recursos que
uma linguagem ou outra já não suportaria.

FASE DE TESTES

Os chamados testes de Caixa Branca e Caixa


Preta servem para que um produto possa ser
verificado em suas funcionalidades e erros
diversos possam ser descobertos durante o
desenvolvimento, sem que o usuário final
seja prejudicado por estes. Quando é testada
apenas a funcionalidade da aplicação, sem
levar em consideração seu código e como
foi implementada, este é chamado de teste
da Caixa Preta.

Fase de Testes
122 UNIDADE V

Tendo o código em mãos, toda a lógica e a correta codificação do programa


podem ser testadas inclusive com auxílio de ferramentas automáticas capazes
de apontar diversos tipos de problemas com o código da aplicação por meio dos
testes de Caixa Branca. Como o código está disponível, os dois tipos de testes
podem ser realizados e, assim, pontos a serem verificados tanto no uso quanto
no código e sua lógica podem ser observados (FLANAGAN, 2006).
Como forma de testar a aplicação, é interessante realizar todas as funciona-
lidades possíveis da aplicação de maneira a constatar se não há erros na lógica
ou na construção do código não verificadas pelo compilador.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Além disso, um erro que poderia ter ocorrido seria se, ao invés do uso do
tipo double para as variáveis, fosse utilizado o tipo int, por exemplo. Na ope-
ração de divisão, erros ocorreriam frequentemente. Por meio desses testes, é
possível verificar que um tipo de tratamento de erros deve ser realizado para
evitar o que ocorre na Figura 4, em que uma mensagem de erro é exibida em
função da divisão por zero.

Figura 4 - Exemplo de erro de execução


Fonte: o autor.

O tratamento do erro indicado na Figura 4 também não é contemplado, mas


poderia ser facilmente codificado esse acréscimo em uma atualização do código
com certa facilidade.
É possível tratar o erro depois que ele ocorra, ou, de forma preventiva, poderia
ser criado um meio de assegurar o uso apenas de valores válidos para a divisão,

COMPLEMENTOS E ESTUDO DE CASO


123

excluindo a possibilidade do uso do valor zero para o segundo operador n2.


O trecho de código a seguir mostra a alteração que pode ser realizada den-
tro da estrutura case, modificando o caso da divisão para incluir o tratamento
do possível erro de cálculo constatado.

//código10
case ‘/’ : if (n2 == 0)
System.out.println (“Operação inválida. Divisão por
zero”);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

else
{
resp = n1/n2;
System.out.println (“Divisão: “ + resp);
}
break;

ATUALIZAÇÕES E NOVAS VERSÕES

A Figura 5 mostra o resultado da alteração no código, agora realizando o tra-


tamento da divisão por zero e mostrando a mensagem de retorno para
o usuário, informando a impossibilidade de realização do cálculo
desejado.
É possível observar uma perda na aparência simples da aplica-
ção que mantinha a exibição de mensagens contida dentro de um
layout simples usando caracteres comuns. Isso faz parte do teste
de Caixa Preta, em que é revisada a execução da aplicação e não sua
construção, contribuindo, assim, com detalhes na aparência e
funcionalidades propostas pelo software (MANZANO, 2010).

Atualizações e Novas Versões


124 UNIDADE V

Também é possível fazer o tratamento desses erros estéticos para manter o


padrão da execução, aumentando o tamanho de todo layout da aplicação para
conter a mensagem de maior tamanho possível, ou adicionar a exceção que
atenda esse caso específico.

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 5 - Ilustração da execução com tratamento de erro
Fonte: o autor.

O código a seguir traz uma variação do código da Figura 4 já contemplando as


duas modificações propostas e criando, assim, uma nova versão da aplicação
que ,por não implementar grandes modificações na aplicação original, poderia
receber a numeração 1.1 para essa versão.

COMPLEMENTOS E ESTUDO DE CASO


125

//código11
import java.util.Scanner;
public class Calculadora {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n1, n2, resp;
char opcao;

System.out.println (“+-----------------+”);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

System.out.println (“| Calculadora |”);


System.out.println (“+-----------------+”);
System.out.println (“| 7 8 9 |”);
System.out.println (“| 4 5 6 |”);
System.out.println (“| 1 2 3 |”);
System.out.println (“+-----------------+”);
System.out.println (“| + - * / |”);
System.out.println (“+-----------------+”);
n1= sc.nextDouble();
opcao = sc.next().charAt(0);
n2= sc.nextDouble();
if (n2 != 0)
System.out.println (“+-----------------+”);
else
System.out.println (“+-----------------------------------+”);

switch (opcao) {
case ‘+’ : resp = n1+n2;
System.out.println (“Soma: “ + resp);
break;
case ‘-’ : resp = n1-n2;
System.out.println (“Subtração: “ + resp);
break;
case ‘*’ : resp = n1*n2;

Atualizações e Novas Versões


126 UNIDADE V

System.out.println (“Multiplicação: “ + resp);


break;
case ‘/’ : if (n2 == 0)
System.out.println (“Operação inválida. Divisão por zero”);
else
{
resp = n1/n2;
System.out.println (“Divisão: “ + resp);
}

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
break;
default : System.out.println (“Operação Inválida”);
}
if (n2 != 0)
System.out.println (“+-----------------+”);
else
System.out.println (“+-----------------------------------+”);
}
}

Como resultado, a estética volta ao normal e, assim, a nova versão da calculadora


apresenta melhorias em sua funcionalidade, além da estética já mencionada, ofe-
recendo melhor experiência ao usuário, conforme mostra a Figura 6.

COMPLEMENTOS E ESTUDO DE CASO


127
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

Figura 6 - Execução da versão modificada da calculadora


Fonte: o autor.

É importante observar que todas as modificações implementadas devem ser


recompiladas para depois serem executadas e terem suas funcionalidades nova-
mente testadas. Assim, é possível comprovar a importância de uma fase de testes
em aplicações criadas, a fim de reduzir ao máximo a chance de entrega de produtos
incompletos ou com defeitos diversos, que podem ser previamente descobertos
e resolvidos dentro da própria desenvolvedora.
Em uma terceira versão, é possível incrementar a forma pela qual é desenvol-
vida a aplicação, separando classes para ações do código, como receber os dados
e realizar os cálculos, gerando uma nova versão já mais refinada.
Em uma nova versão, poderiam ser incluídas as classes MATH e SWING,
para acrescentar recursos matemáticos mais complexos e uma interface gráfica
em forma de formulário, o que já agregaria muitas modificações importantes
à aplicação e, assim, a nova versão poderia ser identificada como 2.0 devido à
mudança mais profunda em todos os aspectos.

Atualizações e Novas Versões


128 UNIDADE V

De acordo com o ranking divulgado pela Tiobe, empresa especializada em


qualidade de software, temos nas três primeira posições da lista de popula-
ridade de linguagens de programação uma soma de cerca de 25% do mer-
cado de linguagens ocupados por Java, C e C++ em ordem de ranking, e
mais cerca de 6% das variantes da linguagem C, como C# e Objective-C.
Uma linguagem que está em posição respeitosa e vem crescendo gradati-
vamente dentre os profissionais é a Phyton, com cerca de 3,5%, ocupando a

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
quarta posição. Além de Javascript, que também surge com grande fatia de
mercado na sétima posição, com cerca de 3%.
Interessante analisar que Visual Basic.NET ocupa a sexta posição, com cer-
ca de 3,4%, e Assembly com aproximadamente mais 2,8%, observando que
antes estava na décima segunda posição, mostrando seu crescimento em
virtude da demanda por programação de hardware.
Aparecem também na lista, as linguagens PHP, que cairem muito nos últi-
mos tempos, Ruby e Perl. Somando essas três, temos cerca de 6,5%.
Fonte: adaptado de Tiobe ([2017], on-line).1

Finalizando essa unidade, é perceptível a boa contribuição do uso de um estudo


de caso para exemplificar de que forma ocorre a aplicação dos conhecimentos
estudados em uma simples situação de simulação do dia a dia do profissional
da área de desenvolvimento.

COMPLEMENTOS E ESTUDO DE CASO


129

CONSIDERAÇÕES FINAIS

Nesta unidade, foi trabalhado um conceito muito importante, o qual complementa


a unidade anterior: trata-se do controle da funcionalidade de uma aplicação,
verificando-se principalmente entradas e saídas que possam ocorrer durante a
execução e que possam gerar erros.
O tratamento de exceções é uma forma muito útil de prevenção e trata-
mento de falhas que uma aplicação pode ter, em função da interação do sistema
com agentes externos, ou de serem causados pelo próprio processamento na
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

aplicação. Esse tratamento pode ser preventivo, para verificar erros na entrada
de dados com valores inválidos ou escolhas de opções inválidas em menus de
opções, por exemplo.
Nas saídas de dados podem ser verificados formatos e a aparência de dados
gerados, além de resultados indesejados por meio da criação de mecanismos que
verifiquem os resultados antes de retorná-los ao usuário.
Depois, um exemplo completo de aplicação simples ajuda na compreensão
do conteúdo visto, reunindo diversos aspectos tratados durante o transcorrer
das unidades do livro. Em um primeiro momento, é apresentada a ideia do sof-
tware e seu código base para atender às necessidades e funcionalidades previstas
na definição do problema a ser resolvido.
Em seguida, foram sugeridos testes na aplicação para verificar a existên-
cia de inconsistências e problemas diversos que possam afetar seu uso durante
a manipulação por usuários em geral. Verificadas as inconsistências, é possível
pensar em meios de contornar esses problemas para melhorar a qualidade do
software e atender de melhor forma as demandas do projeto para gerar atuali-
zações de código.
Finalizando o material, é deixada a sugestão de que você tente implementar
novas alterações funcionais ou de aparência na aplicação, para gerar uma nova
versão mais completa da aplicação.

Considerações Finais
130

JAVA 9 SAINDO DO FORNO EM BREVE


Uma das preocupações da equipe de desenvolvimento da nova versão é a disponibili-
zação do pacote JDK de desenvolvimento, pois, com a evolução da linguagem e suas bi-
bliotecas, esse pacote foi crescendo em quantidade de elementos e tamanho, gerando
não só uma maior demora em sua aquisição, mas também uma perda de desempenho
para se carregar e inicializar uma aplicação.
Assim, está sendo desenvolvido um pacote mais “inteligente”, que trabalhe de forma
modular, em que apenas as classes relativas à aplicação tenham que ser carregadas jun-
to às classes básicas desenvolvidas no código Java, melhorando muito seu desempenho
durante a inicialização do software.
Chamado inicialmente de Jigsaw (quebra-cabeça), o projeto sendo desenvolvido pela
Oracle prevê suas primeiras entregas oficiais para 2017, qual algumas implementações
são muito aguardadas.
Uma delas refere-se a um termo conhecido na comunidade de desenvolvedores, a REPL
(Read Eval Print Loop), a qual permitirá testar expressões escritas em Java na própria li-
nha de comando, sem a necessidade de se implementar o código completo com classes
e métodos.
Outra novidade será o chamado JMH (Java Microbenchmarking Harness), que permi-
tiraá que aplicações sejam criadas, executadas e testadas em termos de desempenho
pelo chamado benchmark, que avalia o desempenho de software em geral, só que es-
pecífico para aplicações Java, de forma a otimizar o teste e não poluir resultados com o
tempo de carga da aplicação, por exemplo.
Outras Mudanças serão vistas também no sistema de gerenciamento de memória para
valores superiores a 4GB, incluindo o chamado coletor de lixo, que já existe na lingua-
gem, mas que será modificado para melhorar o funcionamento da JVM.
Também são aguardadas mudanças que visam o suporte de recursos web HTTP 2.0 e
gerenciamento de processos dos sistemas operacionais que ainda dependem de cha-
madas ao próprio sistema, o que gera um grande tempo de espera pelo retorno da re-
quisição.
Fonte: o autor.
131

1. Dentro dos conteúdos tratados no material, existem testes citados no livro que
contemplam a verificação de erros em uma aplicação. Quais foram os testes
citados?
2. Uma das palavras reservadas da linguagem Java utilizada para o tratamento de
exceções é responsável por iniciar um ambiente controlado de execução do tre-
cho de código para permitir o tratamento de exceções. Como se chama esse
comando?
3. Erros e exceções podem ocorrer a todo momento em um programa, mas esses
podem ser previamente observados. O que seria criar um mecanismo de tra-
tamento preventivo de exceções?
4. Viu-se um exemplo de código para a geração de uma aplicação completa nesta
unidade. Foi utilizada alguma biblioteca na criação do código? Qual?
5. Um código criado não pode ser considerado definitivo. No caso de haver modi-
ficações no código utilizado neste livro para gerar uma nova versão da mesma
aplicação, qual poderia ser esse motivo?
MATERIAL COMPLEMENTAR

Programação de Computadores com Java - Série Eixos


José Augusto Navarro Garcia Manzano e Roberto Affonso da Costa
Júnior,
Editora: Editora Érica
Sinopse: livro voltado ao mercado de trabalho, podendo ser
amplamente utilizado em cursos técnicos devido ao seu caráter didático.
133
REFERÊNCIAS

DEITEL, P.J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.
MANZANO, J. A. N. G. Java 7: programação de computadores - guia prático de intro-
dução, orientação e desenvolvimento. São Paulo: Érica, 2011.

REFERÊNCIAS ON-LINE

1
Em: <https://www.tiobe.com/tiobe-index/>. Acesso em: 31 mai. 2017.
GABARITO

1) Teste da Caixa Preta e teste da caixa Branca.


2) Try.
3) Verificar situações que poderão produzir, falhas na execução, como entradas
inválidas de dados, por exemplo, e trata-las para que a execução da aplicação
possa, por si só, tratar o erro e não seja afetada.
4) Sim. A biblioteca java.util.Scanner.
5) Foi criado um mecanismo para evitar a ocorrência de divisão por zero e ajustar
a aparência da aplicação para o caso tratado como exceção.
135
CONCLUSÃO

Neste material da disciplina de Programação de Sistemas I, foi possível conhecer


parte dos conceitos essenciais da programação em linguagem Java por meio de
explicações simples e com trechos de código para complementação dos conheci-
mentos, sendo construídos em conjunto com a segunda parte da disciplina.
Nas cinco unidades foram trabalhados elementos como os fundamentos da lingua-
gem e da forma pela qual ocorre o desenvolvimento de código. Conforme a evo-
lução das unidades, a linguagem em si foi sendo apresentada para permitir que o
estudante fosse, aos poucos, se aprofundando nos conceitos.
Iniciando com uma introdução ao estilo de desenvolvimento proporcionado pela
linguagem Java, em que um mesmo código é utilizável em diversos sistemas opera-
cionais diferentes como Windows, Android e Linux.
Este conceito relacionado à portabilidade de código inicia um estudo que envol-
ve o processo de compilação e execução de aplicações que são interpretadas por
máquinas virtuais instaladas e adequadas a cada um destes sistemas operacionais
diferentes, permitindo esta portabilidade de código.
Conceitos fundamentais como a forma que os dados seguem regras de uso em situ-
ações diversas como expressões ou estruturas de comandos para realizar diferentes
processamentos.
Desvios de fluxo na execução de aplicações e laços de repetição de blocos de ins-
truções são alguns dos principais assuntos deste material, sendo que ambos são
muitas vezes utilizados em conjunto dentro de um mesmo código.
Outro ponto fundamental no desenvolvimento de aplicações em Java é o chamado
tratamento de exceções que permite softwares melhor desenvolvidos, contendo re-
cursos para reduzir a ocorrência de erros em tempo de execução, sendo que quanto
mais mecanismos de controle houve, mais estáveis serão as aplicações.
O mais importante é lembrar que a disciplina não é única e através de seu estudo
conjunto com Programação de Sistemas II, lembrando que apenas parte dos concei-
tos da linguagem são tratados.

Você também pode gostar