Sei sulla pagina 1di 51

O que é JAVA?

PRINCIPAL LINGUAGEM DE PROGRAMAÇÃO DA TI MODERNA

J ava é uma linguagem de programação que contempla todas as vertentes


da TI e atende a todos os requisitos de negócios existentes no sistemas
corporativos atuais. O que exatamente significa isso?

Significa que essa linguagem é uma das poucas que atende a toda a procura
existente no mundo da tecnologia; qualquer sistema pode ser implementado
com Java.
O Java foi criado em 1991 baseado em outra linguagem de programação
denominada de C. a empresa que criou o java foi a Sun Microsystems.

Na década de 90 tínhamos linguagens de programação que eram


extremamente acopladas ao sistema operacional que rodara, as opções da
época eram restritas a uma maneira padrão de programação levando com
que a evolução das próprias linguagens fossem limitada. Programando
proceduralmente a criatividade limita-se ao problema em questão e não ao
futuro daquele bloco de código específico.

Neste contexto nasceu o Java resolvendo dentro outros problemas os


seguintes:

 Duplicação de código
 Gestão de memória
 Acoplamento do sistema operacional ao código-fonte
 Reaproveitamento de código
 Evolução da linguagem limitada e cara
E várias outras dificuldades que não focaremos neste livro.

A linguagem trouxe o conceito de comunidade que antes era pouco difundido,


as comunidades são a base do paradigma “open-source”, são elas que
mantém a linguagem e basicamente evoluem a mesma, para o java foi criado
a www.jcp.org .

O intuito da linguagem era centralizar em uma única plataforma todos os


softwares instalados nos pequenos dispositivos eletrônicos da época, afim de
facilitar a escrita dos mesmos e melhorar seu desempenho e produtividade.
Essa abordagem não deu certo, tal plataforma(hoje conhecida como JVM)
não inspirou os fabricantes da época para aquisição do Java.

Com o bom produto em mãos o time da Sun se voltou para o mundo web,
que crescia absurdamente na época e ainda era pouquíssimo explorado,
essa abordagem foi melhor recebida pelo mercado. Com os applets o java
possibilitava o utilizador web na década de 90 a realizar tarefas mais
complexas e não apenas renderizar HTML com os navegadores comuns
faziam,era a primeira idéia de aplicativos surgindo.

As applets foram melhores aceitas, no entanto o que realmente deu certo foi
o Java voltado para desenvolvimento de sistemas.

Desde então o foco em desenvolvimento de sistemas é o grande pilar para o


sucesso do java, tal sucesso ocorreu por diversos fatores que
aprofundaremos mais adiante, no entanto temos uma lista básica dos fatores
determinantes para sucesso da linguagem com o foco em desenvolvimento
de sistemas:

Página 1 | 51
 JVM – Plataforma idependente do Sistema Operacional
 Comunidade ativa – Manutenção da linguagem com melhorias
 Incentivo Open-source
 Orientação a objetos – Modo de pensar diferente e criativo
O sucesso do java foi tão grande que gigantes da tecnologia, como
IBM,Oracle,Apple,Microsoft passaram a aceitar e contribuir com o Java, era
uma evolução significativa e não retornara mais.

Apesar da IBM ser a maior incentivadora do Java quem o comprou foi a


Oracle em 2009 e desde então esta detém seus direitos, o que realmente
causou um receio na comunidade, pois historicamente o Java foi uma
plataforma de desenvolvimento aberta e mantida por seus
utilizadores(programadores).

Atualmente o Java domina o mercado e está inserido em todos os canais da


tecnologia da informação(desde pequenos eletrônicos até smartphones e
smartwatches, além do domínio amplo nos sistemas corporativos web).

*1: Ainda nos dias de hoje a comunidade continua evoluindo o Java,


agora em várias organizações ao mesmo tempo mas a plataforma
continua em plena expansão. Enquanto você lê esse humilde livro,
alguém está melhorando a linguagem no nível mais avançado de
tecnologia que você pode imagina.

Quais ferramentas preciso


ter para programar em
Java?
FERRAMENTAS NECESSÁRIAS PARA INICIAR SUA
PROGRAMAÇÃO

T
emos diversas ferramentas que são necessárias estarem
configuradas e instaladas no seu computador para que você possa
seguir este livro com mais eficácia, listaremos aqui quais são, para
que servem e como configurá-las basicamente.

O java não é das linguagens mais leves do mercado, é pesada logo qualquer
ambiente de desenvolvimento que você montará será requerido uma
máquina razoável, abaixo encontramos atributos de uma máquina que você
conseguirá desenvolver em java tranquilamente, tanto para web quanto para
desktop.

Página 2 | 51
Sistemas Operacionais:

Todos

32 ou 64 bits

Memória:

2Gb acima

HD:

1GB livre

Como uma máquina com basicamente os recursos acima disponíveis,


você não terá problemas para iniciar seu desenvolvimento com Java,
lembre-se que é apenas para iniciar, quando você chegar no final deste
livro e já vai estar programando para Web e talvez faça-se necessário uma
máquina melhor para suportar toda a demanda que seu sistema executará.
Além de uma máquina razoável você precisará de algumas instalações
requeridas, são basicamente softwares que você fará o download pela
internet e instalará facilmente no seu computador, sem necessidade neste
momento de configurações avançadas.
Usaremos as configurações padrão e você estará apto a desenvolver com
Java.
*1: Sistemas comumente podem ser feitos voltados para a web, desktop
ou celulares. Web naturalmente rodará em um navegador com conexão
com a internet, desktop naturalmente rodará no sistema operacional da
máquina sem necessidade de acesso a internet.
Os seguintes softwares deverão ser instalados em sua máquina(capítulos
adiante teremos as explicações necessárias para os softwares relacionados
abaixo):
 JRE
 JVM
 JDK
 IDE de desenvolvimento(Eclipse)
 Banco de dados(Oracle XE)

JRE, JVM E JDK, O QUE


SÃO?
A BASE DO JAVA EM SUAS MÃOS

Página 3 | 51
E Ssas três siglas estará em sua boca durante toda sua jornada com Java,
principalmente a JVM!

Esses três itens são instalados com dois softwares diferentes, na verdade
você fará um download da JRE e do JDK.

A JRE é a base para rodar Java em qualquer máquina e sistema operacional,


provavelmente você já tem esse software instalado pois hoje em dia muitas
aplicações que você já usa são em java e sem a JRE as aplicações em java
não rodam. JRE significa Java Runtime Enviroment (ambiente de execução
java), é formada basicamente por todas bibliotecas internas e pela famosa
JVM.
A JVM é a grande jogada para o sucesso do java, ela é independente do
sistema operacional, pois é uma plataforma auto-suficiente. JVM significa
Java Virtual Machine (máquina virtual java). Como o próprio nome já diz, é
realmente uma máquina na sua máquina, independente em processos e
execuções, a JVM que controla a alocação de memória do seu sistema e
como vai se comportar em junção com o sistema operacional.

A JDK é o que queremos com este livro, é um conjunto de bibliotecas que


serão instaladas em sua máquinas para comunicar-se com a JRE e JVM afim
de lhe fornecer um ambiente de desenvolvimento java. JDK significa Java
Development Kit (kit de desenvolvimento java).

Vamos colocar a mão na massa!

Acesse o site da Oracle e baixe a JRE e JDK, seguindo os seguintes passos:

1 – Acessar o Site da Oracle

2 – Acessar o menu “Downloads” > “Java for Developer”

Página 4 | 51
3 – Realizar o download da JRE, Server JRE e JDK.

Atente-se em aceitar o termo da Oracle selecionando a opção “Accept


License Agreement” e clique no download para o seu sistema operacional

4 – Outro ponto importante é que para sua jornada com Java será necessário
em alguns casos realizar o LogIn no site da oracle para fazer algum
download, sabendo disso você já deve criar seus acesso neste momento.

5 – Após realizar o download instale os softwares na seguinte ordem:

Página 5 | 51
1. JRE
2. Server JRE
3. JDK
A ordem é importante para que não haja nenhum problema durante a
instalação dos pacotes.

Após a instalação dos softwares citados neste capítulo , caso você não tenha
erro algum podemos testar a instalação/configuração para lhe garantir que
você está pronto para seguir adiante.

Teste 1 – Verificar a versão instalada do java na sua máquina com o


comando “java -version” na console do seu sistema operacional:

O resultado deve ser algo parecido com a imagem acima, se não for
exatamente igual não há problema significa apenas que você está com uma
versão diferente da minha. O que não nos trará problemas para seguir com
este livro.

Teste 2 - Verificar se estão instalados a JDK e JRE no seu sistema


operacional

Acessar a interface no seu sistema operacional que exibe todos os


programas instalados(Se Windows, painel de controle > desinstalar
programas)

Página 6 | 51
IDE para desenvolvimento
Java
O PODER DO ECLIPSE PARA FACILITAR SEU DESENVOLVIMENTO

C
om o java instalado e configurado corretamente você já pode iniciar
seus desenvolvimentos para qualquer tipo de sistema que possa
imaginar. Neste capítulo trataremos exclusivamente sobre a
instalação do Eclipse que será provavelmente a sua IDE para
programação com java pelo resto de sua vida.

IDEs são softwares instalados em seu computador que tem a finalidade de


apoiar completamente o desenvolvimento de sistemas em quaisquer
linguagem de programação, no caso deste livro focado em java.

Abaixo listo algumas características gerais de qualquer IDE:

 As IDE conhecem a sintaxe da linguagem, logo lhe ajuda com


qualquer erro de escrita de código,
 Compila seu código durante a escrita do código, com isso você
economiza muito tempo para conhecer erros.
 Apoia a escreve o melhor código possível para sua aplicação.
 Formata seu fonte afim de tornar fácil a visualização do mesmo.
 Tem a grande capacidade de linkar artefatos de códigos, possibilitando
que você rastreie todas as suas chamadas para outros códigos.
 Em tempo de execução do seu código fonte, você consegue pela IDE
depurar cada linha de código para identificar o erro que está
ocorrendo.
 Lhe fornece dicas e ações para modelar melhor seu código fonte.
 Lhe fornece a possibilidade de rodar seu sistema/código na própria
IDE de desenvolvimento.
Essas são algumas facilidades que agilizam o desenvolvimento de seus
sistemas por meio de uma Ide de desenvolvimento.

*1: Tempo de execução significa no momento que está Executando seu


sistema, ou seja você já escreveu o código e precisa testá-lo, esse é
momento de execução.
*2: IDE significa Integrated Development Environment, que em
português significa Ambiente de Desenvolvimento Integrado
A IDE que aprenderemos neste capítulo é o Eclipse que é o melhor em minha
opinião para desenvolvimento em java, no entanto nada impede que você
use outra. Caso sua faculdade ou curso utilize outra ide pode ficar a vontade

Página 7 | 51
em continuar, no entanto sugiro fortemente que nos acompanhe com o
eclipse pois passarei dicas e atalhos que o eclipse poderá lhe ajudar no seu
desenvolvimento.

O Eclipe poderá ser baixado pelo site http://www.eclipse.org/downloads/ e a


versão mais atual é a Luna. Para acompanhamento deste livro sugiro que
façam o download da versão JEE: “Eclipse IDE for Java EE Developers”

A ferramenta tem o tamanho aproximado de 250 MB , sendo que ela vem


básica e dentro do próprio eclipse existe uma sessão de plugins que podem
baixados para aprimorar sua experiência.

Após o download, você verificará que se trata de um arquivo zip e não de um


instalador comum, ou seja basta você descompactar em um local de sua
preferência e abrir o eclipse. Abaixo estão algumas imagens dos passos para
que você não se perca neste processo.

Página 8 | 51
No meu caso descompactarei o eclipse em C:\CarreiraJava e sugiro que faça
o mesmo.

Nosso diretório principal ficará da seguinte maneira:

Neste último passo acesse o eclipse.exe e teremos a IDE aberta para nosso
uso:

Página 9 | 51
Você deve selecionar uma workspace. Workspace é o diretório principal de
seus projetos , toda a infra-estrutura de componentes para seu sistema deve
ser instalado no mesmo lugar e a workspace é exatamente para centralizar
todo seu desenvolvimento no Eclipse.

No nosso caso selecionaremos o seguinte diretório


C:\CarreiraJava\eclipse\workspace

Você pode ter diversas workspace, quantas desejar mas sempre que abrir o
eclipse deve definir uma com que vai trabalhar no momento.

Abaixo finalmente encontramos a interface principal do eclipse:

Página 10 | 51
Feche o Welcome e por fim você terá seu ambiente de desenvolvimento.

O seu primeiro sistema em


Java
CRIANDO UM HELLO WORLD

I
niciaremos nosso desenvolvimento Java criando um Hello World, que
nada mais é que rodar o sistema para apresentar uma mensagem
definida para o cliente. Este não é um exemplo produtivo e nem que vá
usar durante sua carreira , mas começamos por ele para lhe dar uma boa
base sobre como criar projetos como executá-los no Eclipse.

Página 11 | 51
Com o eclipse aberto do seu lado esquerdo temos a sessão “Project
Explorer”, é aqui que você verá todos os seus projetos e encontrará seus
programas desenvolvidos.

Vamos criar um novo projeto chamado Proj01-100paginas, para isso basta


clica com o botão direito dentro do Project explorer e selecionar new Project >
Project...

Seleciona Java Project e vá para a próxima aba do Wizard

Página 12 | 51
Na próxima aba digite o nome do projeto, selecione a opção Use Default JRE
e clique em Finish.

Página 13 | 51
Provavelmente ao clicar em Finish, você receberá um alerta do Eclipse
solicitando a alteração de sua perspectiva por se tratar de um projeto Java e
não Web que é o padrão da versão do Eclipse que escolhemos, clique em
yes e seguiremos em frente,

Pronto, você já tem seu projeto para desenvolvermos um Hello Word.

*1: As perspectivas com o eclipse são recursos muito usados e bem


interessantes, eles tornam a interface do eclipse mais produtivo para o
tipo de projeto que você está alterando. Se for um projeto web a
perspectiva será para WEB se for para desktop a perspectiva será para
desktop.
O seu Project explorer deve ficar similar ao da imagem abaixo

Página 14 | 51
Abra seu projeto e você verá um diretório chamado src, este é o diretório
onde você criará seus arquivos .java que serão aqui chamados de
classes(veremos no próximo capítulo o que são exatamente classes).

Em cima no diretório src clique com o botão direito do rato e selecione a


opção new > Class

Página 15 | 51
Um novo wizard se abrirá para você escolha as opções para essa nova
classe criada.

Preencha o campo nome da classe com o nome HelloWorld e clique em


finish.

Neste momento você verá a sua classe criada no Project explorer e sua
classe aberta no main explorer do eclipse

Com a classe criada, vamos implementar a classe para que ao rodar o


programa imprima na tela o texto “Aprendendo Java em 100 páginas”. Para
isso criaremos um método(será explorado posteriormente) main que é capaz
de ser runnable(executável) e imprimiremos o nome do nosso livro pela
instrução System.out.println , o código ficará da seguinte maneira:

Página 16 | 51
EXPLICANDO O CÓDIGO:

 Uma classe no Java é declarada em um arquivo de texto com a


extensão .java e com a seguinte instrução no código: public class
<nome da classe>. Com essa instrução o compilador (eclipse + jvm
dentro da sua jre) do código compreenderá que você está declarando
uma nova classe no seu sistema.
 O java trabalha com as chaves para definir o que está dentro ou fora
do escopo daquela instrução, o eclipse lhe auxiliará muito bem com
essa obrigação, pois ele consegue lhe mostrar onde abre e fecha um
conjunto de chaves, para você colocar o ponteiro da digitação ao lado
de uma chave que a ferramenta lhe mostrará onde está fechando essa
chave.
 Dentro de uma classe contém os métodos, os métodos são ações que
a classe tomará, neste caso nosso é um método especial main que
sempre deve ser declarado com todas essas instruções: public static
void main(String args[])
 Dentro do método chamaremos o método nativo do Java que realiza a
impressão de qualquer texto para o cliente.: System.out.println
 O texto deve ser informado entre aspas duplas, é assim que o Java
identifica uma String.
Agora vamos testar seu código fonte, clique com o botão direito do rato em
qualquer parte do código, selecione Run As > Java Application e veja o
resultado do texto impresso em seu Console, que o Eclipse abrirá na parte
inferior de sua IDE.

As imagens abaixo demonstram exatamente o que deve ser feito:

*1: O eclipse ajuda-nos com a sintaxe em Java, para provar isso ao


invés de digitar a instrução completa System.out.println , digite apenas
sysout seguido de CRTL+barra de espaço
*2: Qualquer alteração na classe deve ser guardada com CRTL + S.
*3: Todas as instruções acima serão melhor compreendidas no decorrer
do texto

Página 17 | 51
Experiente agora alterar o texto para qualquer valor que desejar e rodar
novamente a classe!

Um pouco sobre
Orientação a Objetos
A MELHOR MANEIRA DE ESCREVER SEUS SISTEMAS

E
xistem hoje algumas maneiras de desenvolvermos sistemas, dentre
as mais conhecidas são as formas procedurais e orientado a
objetos. O java apostou muito ao longo de sua história que a
Orientação a objetos fosse usado em todos os sistemas
desenvolvidos em sua plataforma.

A forma procedural de modelar seu sistema não será abordada aqui, o nosso
objectivo é apenas a Orientação a Objetos.

Este assunto é tão complexo que renderia um livro exclusivo sobre o assunto,
inclusive existem vários no mercado para sua apreciação, este capítulo
introduzirá você, caro leitor a este lindo mundo da programação orientada a
objetos.

Página 18 | 51
A orientação a objetos é um paradigma de desenvolvimento de software que
muitos programadores ainda não sabem lidar em toda sua capacidade,
costumo dizer que ser um bom programador java se resume a programar
bem orientado a objetos, ou seja tenho absoluta certeza que conhecer e
aplicar a O.O é muito mais útil do que aprender qualquer linguagem de
programação. Claro que como O.O é apenas conceptual você precisará de
uma linguagem para implementar a O.O.

A tarefa mais difícil de desenvolver um sistema é aplicar da melhor maneira a


orientação a objetos e todos os seus princípios.

Você deve pensar em seu sistema para desenhar a modelagem para enfim
iniciar a programação em si, sempre pensando que o sistema crescerá e que
vários programadores poderão trabalhar em conjunto e que ele deve ser
facilmente mantido por outra pessoa e não só você. Situação complicada de
se obter em sistemas de grande porte.

Vamos começar explicando os quatro principais artefactos da O.O:

 Classe
 Atributo
 Método
 Instância-Objeto
Classe é a representação sistêmica de uma entidade existente no mundo
real, ou seja a maneira de escrever código pensando no problema como no
mundo real. A classe contém atributos e métodos.

Atributos são elementos que definem as características da classe em


questão.

Métodos são as ações que essa classe pode realizar.

Instância é o elemento real para a definição da classe, é o objeto


propriamente dito que detém os valores dos atributos e realiza as ações
definidas nos métodos.

Sei bem que ainda não entendeu absolutamente nada, mas o conceito deve
ser gravado em sua mente e para isso vou descrever uma série de exemplos
que demonstrarão claramente como definir uma classe com seus atributos e
métodos.

Exemplo 1:

Imagina que você precisa criar uma classe para transcrever o ser humano
para linguagem de máquina(código fonte java), logo você pensaria quais são
as características que definem um humano e quais ações eles podem
executar. Você deve pensar neste momento em todas as ações que
naturalmente os humanos fazem e as características que naturalmente

Página 19 | 51
humanos tem, não devemos pensar nas anomalias causadas por fatores
externos. Com isso você pode chegar a uma conclusão parecida com o
exemplo abaixo:

 Humano
o Cor da Pele – Atributo 1
o Cor dos olhos – Atributo 2
o Quantidade de braços – Atributo 3
o Quantidade de pernas – Atributo 4
o Andar – Método 1
o Respirar – Método 2
o Comer – Método 3
Claro que poderíamos identificar muitos mais atributos (características) e
métodos (ações), mas paramos por aí para seguir com a explicação.

Veja que o humano em geral pode ser definido por essas características e
ações descritas acima.

Definida a classe Humano , agora poderemos ter as instâncias de humanos.


Cada ser humano existente tem essas mesmas características mas com
valores diferentes um dos outros, não é? A cor da pele de cada um é
diferente, a cor dos olhos também é uma característica pessoal o mesmo
vale para a quantidade de braços e pernas sabemos que normalmente são
dois, mas para alguém que sofreu algum trauma pode ser apenas um braço,
por exemplo.

Isso é instância ou mais popularmente conhecido como objeto. A classe em


si não faz nada sozinha e ganha vida apenas com o objeto derivado dela.

A imagem abaixo o ajudará a entender melhor o assunto:

Veja que a classe Humano está definido e existem dois objetos desta classe
com os valores preenchidos, dando vida a esta classe.

Página 20 | 51
Exemplo 2:

Imagine que você está desenvolvendo um sistema bancário e ficou


responsável por desenhar a entidade conta corrente, a mais importante deste
sistema. Como você montará essa classe? Quais atributos teriam? Quais
ações poderiam ser executados?

Segue um exemplo de definição com algumas respostas:

Veja que temos uma definição da classe Conta Corrente com dois objetos
com seus valores definidos.

Exemplo 3: Agora vamos a um exemplo sistêmico que é exatamente o mundo


real do desenvolvimento de sistemas orientado a objetos.

Você deve criar um sistema de service desk, que resolverá basicamente as


reclamações dos funcionários da empresa com sua área de TI.

Esse sistema possibilitará que qualquer funcionário abra um Pedido


solicitando qualquer item para área de T.I, desde um novo rato até uma
reclamação sobre o e-mail não estar funcionando ou que o Windows deu
problema.

Neste momento você deve pensar em como fará o desenho do seu sistema,
quais entidades principais (classes) serão desenhadas.

Primeiramente você deve colher os requisitos de negócio do seu sistema,


afim de saber todas as telas que serão entregues para o cliente e se o
sistema executará algum processo ou não. Também deve saber se o sistema
é on-line ou gerará arquivos, se ele deve fazer interface com outro sistema.
Enfim todas as informações necessárias para que você o desenvolva e o

Página 21 | 51
cliente se sinta satisfeito. Conversando com o cliente você obteve a seguinte
resposta:

“Quero um sistema que seja seguro, cada funcionário da minha empresa


tenha uma senha que possa abrir um Pedido para a área de T.I. A área de TI
tem um ecrã que consultará todos os Pedidos abertos e começará a solução.
O utilizador poderá acompanhar esse Pedido por um número de protocolo
para saber qual a situação atual do Pedido que ele abriu.”

“O sistema emitirá um relatório para o gerente da nossa área demonstrando


quantos Pedidos estão abertas e que a área de T.I está atuando, preciso
disso para forçar a resolução rápida dos Pedidos.”

Pronto, a partir desta descrição você já pode iniciar a desenhar suas


entidades (classes) principais para atender este sistema. Você pode fazer
isso de diversas maneiras e chegar a resultados diferentes do meu, essa é a
mágica da Orientação a objetos, no entanto qualquer que seja sua solução
tem que garantir a interacção entre as entidades, a possibilidade de
crescimento desse sistema e o correcto desenho das classes.

A minha conclusão neste momento foi:

 Cliente
o Atributos:
 Codigo
 Nome
 CPF
 RG
 Telefone
 Departamento
 Pedido
o Atributos:
 Codigo
 Titulo
 Descricao
 Nivel de urgência
 Status
 RelatórioGerencia
o Lista de pedidos (referência a uma outra classe)
o Email destino
o Codigo
o Data
 Utilizador
o Nome
o Senha
o Cliente (referência a uma outra classe)
 Atendente (veja que essa classe está igual a outra , este é o ponto que
melhoraremos depois)

Página 22 | 51
o Nome
o Senha
o Cliente

*Chamado=Pedido

*Chamado=Pedido e Usuario=utilizador

Num nível mais básico, esse que estamos, se você chegou a uma conclusão
parecida está ótimo. Mais tarde neste texto trataremos de alguns conceitos
de orientação a objetos mais complexos que cabem neste mesmo exemplo.

*1: Requisitos de negócios são as funcionalidades que o sistema


suportará, ou seja tudo que o sistema trará de benefício para quem usa.

Tipificação de atributos
TIPOS PRIMITIVOS E NÃO PRIMITIVOS

A
tipificação adequada dos atributos é fundamental para o sistema,
decidir qual o tipo de estrutura que você armazenará o valor de um
atributo é uma tarefa que você sempre terá.

Os tipos são basicamente o que serão os atributos e definem como você


trabalhará com ele, um bom exemplo é o telefone, se você desejar trabalhar
com o telefone com um tipo que aceita somente números você não poderá
assumir um valor com parêntesis separando o ddd do número do telefone:

Página 23 | 51
(011)999999999. Já se preferir armazenar o valor desse atributo em um tipo
que aceita letras você facilmente trabalhará com estes parêntesis.

Além de número ou valor você deverá se preocupar também se o valor que


será armazenado cabe no tipo que você está definindo, ou seja um número
com um digito deve ser armazenado em um tipo pequeno já um número de
telefone completo deve ser armazenado em um tipo grande. Esse tipo de
avaliação implica em consumo de memória e bom desempenho do sistema,
pense sempre nestas questões.

No java você definirá atributos que podem estar em qualquer bloco da sua
classe (blocos são definidos pelas chaves), os atributos de classes estão no
nível da classe, abaixo do public class.As definições destes atributos serão
feitas da seguinte maneira: <tipo><espaço><nome do atributo><ponto e
vírgula>, exemplo: int quantidadeFilhos;

Inserindo essa linha em uma classe Mae por exemplo você está
implicitamente dizendo que a quantidade de filhos dessa mãe que está
realizando um cadastro deverá ser um número inteiro e com um valor
limitado, o tipo int é naturalmente dessa forma.

Os tipos primitivos são os que já estão disponíveis no Java, já existem e


podem ser usados, você conseguirá resolver quase tudo com eles. Os tipos
não primitivos são os que você cria, como no exemplo do capítulo anterior
criamos classes que são entidades do nosso sistema e podem ser usadas
como tipos de atributos, o melhor exemplo é a classe Cliente que é um tipo
de atributo na classe Utilizador.

Abaixo são os tipos primitivos do java:

Nome Valores possíveis Tamanho Intervalor numérico

byte número inteiro 1 byte -128 até 127

short número inteiro 2 bytes -32768 até 32767

int número inteiro 4 bytes -2147483648 até 2147483647

-922337203685477808 até
long número inteiro 8 bytes 922337203685477807

float decimal 4 bytes

double decimal 8 bytes

Página 24 | 51
char caracteres 1 carácter

booleano(true ou
boolean false)

muitos
String caracteres caracteres

A String está destacada pois não é um tipo primitivo, no entanto coloquei na


lista pois é comumente usada como se fosse primitivo, tendo até
funcionalidades especiais que a distinguem das restantes classes. Ela é uma
classe que já vêm na instalação do java como os tipos primitidos, no entanto
como a maioria das classes contém métodos que nos ajudam a lidar com
este tipo complexo, normalmente usamos para frases e textos.

Abaixo um exemplo real de classe com seus atributos declarados com os


tipos primitivos conhecidos acima:

Acima inseri alguns possíveis atributos de um Funcionário numa empresa


qualquer, note que fiz questão de inserir um tipo não primitivo que neste caso
foi o Date. O Date define uma data qualquer, é como a String, já vem na
instalação do Java para usar à vontade.

Dois pontos importantes no exemplo acima que vale ressaltar:

Página 25 | 51
 Qualquer uso de um tipo não primitivo como o Date você deve fazer a
importação da classe-referência na sua classe.
 Neste exemplo usamos o Date e importamos este Date com o
elemento import <caminho da classe>, mais tarde entenderemos mais
sobre caminhos de classes
o O Eclipse lhe ajudará com os imports, tudo que você digitar em
sua classe como tipo que é outra classe, ele vai te sugerir o
import com o caminho completo da classe. Faça um teste ,
insira a data de nascimento sem realizar o import e deixe o
eclipse fazer isso por você.
 Uma boa prática de codificação é inserir comentários em sua classe,
explicando o que for necessário.
Os tipos complexos (não primitivos) não apenas já vêm com o Java como
você deverá criá-los no seu sistema. Lembra as nossas classes utilizador e
cliente do capítulo anterior? Agora vamos codificá-las para praticar sobre
tipos não primitivos:

Página 26 | 51
Veja que a relação entre as duas classes é feita pelo atributo usuario da
classe Cliente que é do tipo Usuario.

O boa prática de programação diz que os tipos complexos devem ser


definidos com a primeira letra maíuscula (bem como o nome das classes
criadas).

Para entender completamente a relação entre essas classes, veja que o


atributo usuario da classe Cliente contém os atributos realmente escritos na
classe Usuario. Crie um método main na classe cliente para verificar como
funciona o atributo usuario:

Página 27 | 51
Veja que o Eclipse já traz os possíveis atributos de Usuario dentro do atributo
usuario da classe Cliente.

Operações básicas da
matemática
ADIÇÃO, SUBTRAÇÃO, MULTIPLICAÇÃO E DIVISÃO COM JAVA

Aprenderemos agora as operações matemáticas básicas no Java. Como já


conhecimentos os tipos numéricos agora basta colocarmos o operador
matemático compreendido pelo Java para obtermos os valores.

Ao final deste capítulo teremos uma classe calculadora básica feita e


funcionando.

Segue a lista de operadores matemáticos:

Operado
Operação r Significado Exemplo de Uso Resultado

Soma + Soma qualquer valor 1+2 3

Subtração - Subtrai qualquer número 2-1 1

Divide qualquer número e


Divisão / obtém o resultado inteiro 10/2 5

Divide qualquer número e


Divisão % obtém o resto do resultado 5%2 1

Multiplicaçã
o * Multiplica qualquer número 2*3 6

Vamos testar todos antes de iniciar efetivamente construindo códigos mais


complexos. Crie uma classe chamado ExemploMatematicaBasica e crie um
método main com sysout para printar na console cada exemplo de uso
descrito na tabela acima:

Página 28 | 51
Página 29 | 51
Faça também estes testes adicionando mais valores, funciona perfeitamente!

Vamos iniciar a contruir nossa classe Calculadora, o problema que


resolveremos é o seguinte:

“Existe um sistema que ajuda crianças com os sons das palavras e leitura, o
dono desse cliente solicita que você construa uma classe que faça qualquer
operação matemática báscia com dois valores”

Dado este problema vamos desenhar nossa classe calculadora, você deve
levar em consideração os atributos e métodos dessa classe.

Em linhas gerais você deve chegar a conclusão abaixo:

Página 30 | 51
Programando a classe você chegou em algo parecido:

Definida a classe, agora vamos criar a lógica para resolver o problema que
nos foi solicitado, além destes métodos criados acima criaremos também o
main para que possamos testar nossa classe.

Os métodos farão suas contas e armazenarão o resultado da conta no


atributo resultado e o main deve imprimir preencher os atributos valorA e B e
imprimir o resultado na tela. Consegue fazer isso? Sua classe ficará parecida
com a minha abaixo

Neste meu exemplo estou realizando uma soma:

Página 31 | 51
Use todos os métodos neste main para que você aprenda o conceito de
atribuir valores aos atributos, chamar um método e imprimir frases complexas
na consola.

Faça testes chamando mais de um método, use este tempo para aprender
conceitos apenas com essa classe.

Feito todos os testes necessários vamos mudar a estratégia do problema


resolvido, agora nesta mesma classe faremos que o utilizador insira os
valores que deseja. Isso é bem mais complexo pois mexeremos com
métodos de outras classes, chegou o momento de você de apaixonar pela
programação e por java. Está preparado?

Página 32 | 51
Usaremos a classe Scanner para colher o que o utilizador digitará e
levaremos a responsabilidade de imprimir as frases nos métodos de cada
operação, ou seja a multiplicação imprimirá a frase de resultado a adição o
seu e assim por diante. Faça uma classe como a minha e faça seus testes.

Para você entender perfeitamente vamos realizar os códigos passo-a-passo,


segue o código para colher os dois valores A e B:

Página 33 | 51
Note que a classe Scanner cria a pausa e o Java não executa a próxima linha
de código até que o utilizador tenha digitado o valor necessário.

Com o java é assim, sempre tem algumas classes que você possa utilizar
para resolver seu problema, se não tiver crie e compartilhe. Uma busca bem
feita na web sempre é importante antes de criar qualquer classe que já exista
na biblioteca do Java, essa Scanner por exemplo já vem com o java para ser
usada.

Agora basta adicionarmos o método que chamaremos e pronto, a operação


será executada pelo método em questão.

Página 34 | 51
*1: Não faça como eu e acerte os nomes dos métodos, escrevi subtrair
errado.

Decisões e Loops
DECIDINDO O MELHOR CAMINHO E PESQUISANDO ATÉ
ENCONTRAR

Assim como a vida, a programação é feita de decisões. (Piada infame!)

As decisões e os loops são muito usados em java e você deve entender


perfeitamente seus conceitos e usos.

As decisões são os IFs e Elses que teremos em nosso sistema, sempre que
necessário escolher alguma opção use o if e else, literalmente if quer dizer
se e else quer dizer senão. Então basicamente é uma decisão, comparativo
entre dois elementos. Imagine uma classe Humano onde você deve saber
qual o género deste humano que o valor está armazenado no atributo
género, logo ( Se género=masculino então faça algo), (Se género=feminino
faça outra coisa), assim são as decisões em nosso sistema.

Você consegue também comparar mais de um atributo no mesmo if, por


exemplo: Se gênero=masculino e altura>180 então faça algo.

Assim você vai direcionando seu utilizador de acordo com os requisitos do


seu sistema. O uso do else é bem parecido mas sempre é feito pela negativa
do if, logo se o if não deu certo você poderá colocar o else(o uso do else é
opcional), como no exemplo a seguir: Se homem faça algo senão faça outra
coisa.

O uso do if e else dá-se da seguinte maneira pelo java:


if(<elemento>==<valor>){faça algo} else{faça outra coisa}.

Nem todo atributo você deve comparar com “==”, isso depende basicamente
do tipo do atributo que você está comparando. Se o tipo for número a
comparação deve ser feito com ==, se for uma String deve ser comparado
com o método.equals(<segundo elemento>).A comparação pode ser feito

Página 35 | 51
com o conceito de diferente também, ou seja algo é diferente de outra coisa,
isso é feito pelo elemento responsável pela negação do java “!”, logo se a
comparação é com número usará o comparador !=, se for String basta
adicionar a negação no inicio !<string>.equals(segundo elemento).

Como mostrado acima, você também tem o recurso de concatenar


comparações usando os operadores lógicos ‘E’ e ‘OU’, no java o E é igual a
&& e o OU é igual a ||. Seguem alguns exemplos de comparações
concatenadas:

if(gênero==1 && idade>=18){faça algo}

if(idade < 18 || isCrianca==true || !adulto). Esse último if deve ser interpretado


da seguinte maneira: Se a idade é menor que 18 ou é um criança ou não é
adulto.

Agora vamos ao java! E usaremos a mesma classe de CalculadoraBasica


que fizemos no capítulo anterior.

Agora faremos com que o utilizador digite qual operação ele deseja realizar,
para isso adicionaremos um if que comparará o valor digitado pelo utilizador
e executará o método em questão.

Sua classe ficará da seguinte maneira:

Página 36 | 51
Veja que criei um atributo chamado operacao que armazena a operação que
o utilizador deseja realizar e fiz os ifs necessários para executar o método
correto.

Agora vamos melhorar nosso encadeamento de ifs e adicionar um else


resolvendo o seguinte problema: caso o nosso sistema não possa reconhecer
o que o utilizador digitou como operação , o sistema deve informar uma
mensagem com os possíveis valores.

Sua classe ficará mais ou menos dessa forma:

Página 37 | 51
Os loops são as interações realizadas em seu código para encontrar algum
valor ou algum objeto, ou seja imagine que você tenha uma coleção de
carros e você deve encontrar o fusca azul. Basicamente você retirará um por
um da caixa até encontrar o que está procurando. Os loops são da mesma
maneira.

Usamos os loops para executar alguma ação até que alguma condição
continue sendo verdade, no nosso exemplo acima repito o ato de retirar a
miniatura da caixa até que não encontre o fusca azul.

Sistematicamente você usará este recurso por diversas vezes, pode se


preparar bem para aprender os loops e enfim usá-los.

Existem várias maneiras de se realizar um loop em java, os mais usados são


o while e o for, abaixo explico cada um e você decide o que mais gosta.

O uso do while ocorre da seguinte forma:

while(<condição>){

<bloco do código>

Lê-se: enquanto uma certa condição for verdadeira , execute o seguinte bloco
de código.

Suponha que você deve incrementar um valor até que o mesmo seja igual a
10, com o while isso fica muito fácil, veja:

Página 38 | 51
Executando esse código temos o seguinte resultado:

Esse bloco de código dentro do while é para você usar para cumprir algum
requisito, logo você pode colocar dentro ifs elses e tudo que for necessário.

O uso do for é muito semelhante no entanto com algumas facilitades de auto


incrementar o controlador do loop, a sintaxe usada é a seguinte:

for(<inicializacao >;< condicao >;< incremento >){

<bloco de código>

Le-se : para este bloco de código execute até que a condição x seja atendida.

Veja o mesmo exemplo acima usando um for:

Página 39 | 51
Veja que você não necessita escrever uma linha para incrementar seu
controlador.

O mais usado no mercado de desenvolvimento em java é realmente o for.

Conhecendo os Arrays
TRABALHANDO COM VALORES ENCAPSULADOS EM UMA ÚNICA
VARIÁVEL

O
s arrays são listas de um único tipo efetivamente declaradas como
listas, isso quer dizer que você pode declarar em uma única
variável uma lista com posicional para seus valores. Você pode
armazenar uma lista de qualquer tipo do java, inclusive de tipos
complexos, pode ter um listagem de nomes de pessoas com 50 nomes em
uma única varíavel, pode ter uma lista de clientes em uma única variável e
pode ter uma lista de números da sorte em uma única variável. Perceba que
eu citei três arrays de três tipos diferentes.

Página 40 | 51
A declaração de um array em java é bem simples, a dificuldade é apenas
atribuir um tamanho inicial.Esse detalhe é fundamental, você já criará seu
array com a quantidade de valores definida assim o java alocará a sua lista
na memória reservando aquela quantidade de valores informada, ou seja use
com muito cuidado.

Array é a forma primitiva de listas no java, menos usadas inclusive , mas é


um conceito que é necessário conhecermos para usarmos as listas reais
como objetos complexos.(ArrayList por exemplo).

A sintaxe do array ocorre da seguinte maneira:

<tipo>[] <nome variável>. Exemplo: String[] nomesImportantes;

Veja que os conchetes definem para o java que é um array.

Se você deixar apenas a declaração inicial escrita no fonte o eclipse não


compilará corretamente e você não poderá usar a sua variável
nomesImportantes. Então você deve inicializa-la para que possa ser usada,
para isso basta seguir a sintaxe abaixo:

<tipo>[] <nome variável> = new <tipo>[<tamanho do array>]. Exemplo:

String[] nomesImportantes = new String[20];

Neste caso você poderá ter essa lista com 20 nomes importantes.

Para adicionar valores em um array basta usar a seguinte sintaxe:

nomesImportantes[5] = “Juliana”.

Pronto, neste caso adicionamos o valor Juliana na quinta posição do array,


com o detalhe importante de que o array sempre começa na posição 0.

Para iniciarmos efetivamente nosso entendimento, faça uma classe que peça
para o utilizador digitar 5 nomes mais importantes na vida dele e depois exiba
esses valores:

Dica: Para fazer essa tarefa você usará o conceito de loop aprendido no
capítulo anterior também.

Página 41 | 51
Segue o resultado abaixo após rodar a classe codificada:

Você também pode usar arrays com tipos complexos seguindo os mesmos
conceitos.

Mais sobre Orientação a


Objetos
CONSTRUTORES,ENCAPSULAMENTO,ABSTRAÇÃO,POLIMORFISM
O E HERANÇA

Página 42 | 51
N
Este capítulo explicaremos mais alguns conceitos que devem ficar
claros em sua mente para um bom desenvolvimento em Java,
esses conceitos tornam a orientação a objetos um pouco mais
complexo do que vimos anteriormente neste livro.

Os construtores são métodos especiais que existem em todas classes java,


caso você não o crei o java criará um padrão para você. Estes métodos
especiais tem por finalidade construir um objeto daquela classe, ou seja uma
instância da classe, isso significa que você pode sim influenciar a maneira
que sua classe será instanciada.

Suponhamos que você criou uma classe Aluno que terá os seguintes
atributos:nome,registro,nota1 e nota2, e os métodos: obterMedia,setarNota1
e setarNota2.

Essa classe não tem um construtor estipulado, logo o java criará um default e
qualquer instância dessa classe(objeto) será criado da forma mais simples da
linguagem:

Aluno aluno = new Aluno();

Dessa forma para você obter a média, teria que chamar o método setarNota1
informando qual foi a nota 1 deste aluno e setarNota2 informando qual foi a
nota 2 deste aluno para enfim chamar o método obterMedia e enfim saber a
media deste aluno. Ficaria mais ou menos da seguinte maneira:

aluno.setNota1(7); aluno.setNota2(9); sysout(aluno.obterMedia);

No entanto você pode obrigar qualquer instância da sua classe já informar na


criação as notas 1 e 2 e o nome do Aluno, assim economizando mais linhas
de códigos e obrigando os valores serem passados. Para isso basta declarar
um construtor, que é um método com o nome da classe que recebe ou não
parâmetros e seta esses parâmetros na própria instância do objeto. Veja
como ficaria:

Página 43 | 51
Dessa forma qualquer instância dessa classe seria obrigado a informar a nota
1 e nota 2 já no momento da criação:

Aluno aluno = new Aluno(5,8);

Vale lembrar que o método construtor é um método como todos os outros e


você pode inserir a lógica que quiser, fique a vontade de usar como
quiser,mas lembre-se que ele obriga a maneira de criação de objetos.

Existe também a possibilidade de ter mais que um construtor, quantos quiser


desde que nenhum seja igual, ou seja poderia ter um construtor que informe
as duas notas outro que informe as duas notas e o nome outro que não
informe nada. Mais ou menos como o exemplo abaixo:

Página 44 | 51
Dessa forma a construção do objeto Aluno fica a cargo de quem está criando,
serão três tipos de criação de objeto Aluno:

Aluno aluno = new Aluno(5,8);

Aluno aluno = new Aluno(5,8,”João”);

Aluno aluno = new Aluno();

Um complemento importante é sobre o uso da instrução “this”, essa instrução


indica ao java que trata-se de um item local da classe e não de um
parâmetro, logo podemos ter o mesmo nome de atributo e parâmetro que o
compilador não se perde.

Encapsulamento é um conceito extremamente simples a primeira vista mas é


super complexo de ser corretamente empregado e você usará durante toda
sua jornada. O conceito diz respeito a esconder o que não é necessário e
expor apenas o que é necessário.

Quem está chamando sua classe(objeto) não precisa saber tudo que você
faz para que obtenha um resultado de um método seu, você pode oferecer
apenas um método e por dentro escrever uma lógica de negócio super
complexa e chamando outros métodos internos, mas no final quem está
chamando esse método não precisa saber disso tudo, não é mesmo?

Vamos sempre para mais um exemplo para continuarmos a explicação:

Ainda na nossa classe Aluno teremos um método que registrará no sistema


que o Aluno passou de ano para isso o método validará as notas do aluno e
se a nota for próxima a 5 arredondará a nota para 5 e passará o aluno de ano
, mas se for muito abaixo de 5 deverá retornar uma mensagem dizendo que
infelizmente não vai conseguir passar o aluno de ano. O código ficaria mais
ou menos da seguinte forma:

Página 45 | 51
Veja que o método passarDeAno encapsula as regras de negócio dos
métodos obterMedia e validaMedia.

Por diversas vezes você verá o encapsulamento sendo empregado , a


maneira mais comum é protegendo os atributos da classe, estamos falando
dos métodos gets e sets que monitoram os acessos de outras classes para
os seus atributos, cada atributo recebe seu get e seu set, assim qualquer
outra classe que desejar verificar um valor de um atributo de uma instância
deve chamar o get e se quiser modificar qualquer valor de attributo deve
chamar o set. São métodos comuns lógico você pode fazer o que quiser com
esses dois métodos inclusive não setar nenhuma informação no set ou não
deixar ninguém saber o valor do atributo pelo get.

No eclipse existe um atalho para tal fim que economiza um grande tempo
para que tem muitos atributos na classe:

Página 46 | 51
Página 47 | 51
Página 48 | 51
Herança é um dos melhores conceitos da Orientação a objetos, é
basicamente espelhada na natureza em que um filho herda geneticamente
gens dos pais.

As classes que você cria em seu sistema podem ser herdadas e assim você
consegue criar relacionamentos diretos e sem a necessidade de reescrever
alguns códigos. Para aplicar corretamente a herança em seu sistema , temos
que entender como decidir que uma classe será herdada ou não, para isso
precisamos ter em mente a modelagem dos objetos do nosso sistema. Essa
modelagem nos dará o relacionamento entre os objetos e se há itens em
comum a todos, exemplo:

Imagina que você tem um sistema de controle de escolas, e temos os


cadastros das escolas que fazemos a gestão por esse sistemam logo
podemos pensar na modelagem com o seguinte mind-set:

Uma classe chamada Escola, outra chamada EscolaTecnica e outra


EscolaMusica, as duas são escolas então teoricamente faz todo sentido elas
herdarem as características e métodos da classe Escola.

Exemplo de modelagem neste caso:

Página 49 | 51
Veja que neste caso, temos a EscolaMusica herdando da EscolaTecnica que
por sua vez herda de Escola, podemos assumir que uma Escola de Música é
uma escola técnica que também é escola, logo escola de musica é escola
também.

No entanto escola não é escola de música, ao contrário é verdade conforme


descrito acima.

Na prática criando uma instância de EscolaMusica você pode chamar o


método realizarMatricula que na verdade está escrito em Escola, essa é a
função da herança, não repetir código para a mesma implementação, assim
economizando tempo e custo. EscolaMusica implementaria o metodo da
matricula se e somente se, tivesse alguma regra de negócio diferente que
precisasse de outra implementação específica para uma escola de música.

Página 50 | 51

Potrebbero piacerti anche