Você está na página 1de 63

INFORMTICA

Linguagem de Programao I
VOLUME 01
Governador | Eduardo Campos

Vice-Governador | Joo Soares Lyra Neto

Secretrio de Educao | Nilton Mota

Secretrio Executivo de Educao Profissional | Paulo Dutra

Gerente Geral da Educao Profissional | Luciane Pula

Gestor de Educao a Distncia | Marcos Paulo de Assis Castro

Coordenador do Curso | Almir Pires

Professor Conteudista | Mrcio Augusto Silva Bueno

Equipe Central de Educao a Distncia


Andre Fellipe Pinto | Andria Guerra | Augusto Andrade |
Eber Gomes | George Bento | Jannine Moreno | Marcos Vincius Clemente
Maria de Lourdes Cordeiro Marques | Maria Helena Cavalcanti
Mauro de Pinho Vieira | Pedro Luna

Imagem da capa: http://www.imagemativa.com.br/


SUMRIO

PROGRAMA DA DISCIPLINA .................................................................... 5


CONTEDO PROGRAMTICO.................................................................. 6
PALAVRA DO PROFESSOR-AUTOR ........................................................ 7
APRESENTAO DA DISCIPLINA ........................................................... 8
1. VISO GERAL E CONCEITOS BSICOS ........................................ 9
2. VETORES, MATRIZES E STRINGS ................................................ 36
3. ORIENTAO A OBJETOS ............................................................ 46
REFERNCIAS BIBLIOGRFICAS ......................................................... 62

4 Informtica | Linguagem de Programao I | Volume |


PROGRAMA DA DISCIPLINA

Ementa
Paradigma Orientado Objetos. Elementos bsicos variveis e constantes.
Operadores e Expresses: Operao de atribuio; Operadores e expresses
relacionais e lgicas. Entrada e sada de dados por teclado e vdeo.
Comandos de Controle: Uso de estruturas de deciso e de repetio;
Estruturados de Dados: Vetores unidimensionais e multidimensionais;
Cadeias de caracteres; Conceitos de Programao Orientada a Objeto.
Abstrao, Encapsulamento. Classificao. Poliformismo. Herana. Conceitos
de Objetos, Classes e troca de Mensagens. Pacotes. Classes Abstratas e
Interfaces. Colees. Excees. Linguagem orientada a Objeto e Aplicao
de Tcnicas de Programao Orientada a Objeto.

Objetivo Geral
Capacitar o aluno no desenvolvimento de aplicaes utilizando os conceitos
de orientao a objetos.

Objetvos Especficos
1. Capacitao para o desenvolvimento de programas orientados a
objetos capazes de resolver problemas do mundo real
2. Capacitao no desenvolvimento de aplicaes de alta qualidade
utilizando os conceitos de modularidade, reusabilidade e
extensibilidade

Informtica | Linguagem de Programao I | Volume | 5


CONTEDO PROGRAMTICO

Volume 1
1. Viso geral e conceitos bsicos
2. Vetores, matrizes e strings
3. Orientao a objetos

Volume 2
1. Aprofundando em Java
2. Aprofundando em orientao a objetos
3. Escrevendo melhores cdigos

6 Informtica | Linguagem de Programao I | Volume |


PALAVRA DO PROFESSOR-AUTOR

Caro estudante!

Desejo um timo estudo nesta disciplina e espero que ela lhe estimule a
desenvolver muitos programas teis para voc, para a empresa em que voc
trabalhar e por que no tambm para todo mundo atravs da fcil divulgao
de programas atravs da Internet.

O aprendizado de um novo paradigma de programao um desafio para


quem j est acostumado com um paradigma antigo, porm muito
recompensante ao ver que facilitar o desenvolvimento de programas bem
estruturados.

Aqui voc aprender a desenvolver programas orientados a objetos, um


paradigma de programao que preza pelo reuso de cdigo e possiblidade de
trabalhar num alto nvel de abstrao, permitindo menor tempo de
desenvolvimento e manuteno dos programas.

Aqui voc ir utilizar e aprofundar o aprendizado obtido na disciplina de


Lgica de Programao, e conseguir desenvolver programas mais
complexos e teis num ambiente empresarial.

Lembre-se que a nica forma de aprender uma linguagem de programao


atravs da realizao dos diversos exerccios propostos, e principalmente que
este apenas o incio do seu estudo de desenvolvimento de programas,
nunca ache que voc j aprendeu tudo e corra sempre atrs de novos
conhecimentos.

Um grande abrao!
Mrcio A. S. Bueno

Informtica | Linguagem de Programao I | Volume | 7


APRESENTAO DA DISCIPLINA

Esta disciplina aproveita toda a base adquirida na disciplina de Lgica


de Programao na criao de programas e acrescenta os conceitos de
orientao a objetos para o desenvolvimento de aplicaes modulares,
reusveis e robustas.
Ser utilizada a linguagem de programao JAVA que utilizada em
diversas plataformas (desktop, web e mvel), disponvel gratuitamente para
qualquer desenvolvedor e possuir uma ampla fonte de referncia (tanto
atravs de documentao oficial da Oracle e livros, quanto em uma infinidade
de sites na web).
bom lembrar, que como qualquer disciplina que envolve o
desenvolvimento de programas, o passo mais importante para o aprendizado
a realizao de muitos exerccios.
Voc ir relembrar diversos conceitos vistos em Lgica de
Programao e aplic-los dentro de um contexto maior, ao desenvolver uma
aplicao desktop.
preciso de muita dedicao para que seja possvel aprender todos
os conceitos envolvidos no desenvolvimento de aplicaes orientadas a
objetos, porm ser bem recompensador ao final constatar que voc ser
capaz de criar de uma aplicao orientada a objetos bem estruturada.

8 Informtica | Linguagem de Programao I | Volume |


1. VISO GERAL E CONCEITOS BSICOS

Objetivos

Ter uma viso geral da tecnologia Java.


Saber o que necessrio para criar um programa em Java.
Aprender a utilizar o Netbeans para criar um novo projeto.
Executar o primeiro programa Java.
Aprender os tipos de dados primitivos de Java.
Saber utilizar algumas funes matemticas pr-definidas.
Compreender as estruturas de controle de Java.
Aprender a reescrever em Java alguns de seus programas escritos em C.

Tecnologia Java
A tecnologia Java compreende a linguagem de programao Java e a
plataforma Java. As sees a seguir detalham estes dois conceitos.

Linguagem de Programao Java


A linguagem de programao Java possui diversas caractersticas como ser
simples, orientada a objetos, distribuda, concorrente, dinmica,
arquiteturalmente neutra, portvel, alta performance, robusta e segura.
Como a sintaxe de Java derivada do C, ento ela se torna bem familiar para
muitos programadores, porm diferentemente do C, ela foi criada para
suportar os conceitos de orientao a objetos.
Um grande destaque ao se desenvolver um programa em Java que ele
portvel, isto , ele pode ser executado em diversas plataformas de hardware
(desktop, celular, PDA) e software (Microsoft Windows, Microsoft Windows
CE, Unix, Linux, Mac OS).
Todo o cdigo fonte escrito em Java armazenado em um arquivo texto com
a extenso .java. Estes arquivos com o cdigo fonte so todos compilados
utilizando o compilador do java (javac) e assim gerando arquivos com a
extenso .class. Estes arquivos .class contm bytecodes, isto , linguagem de
Informtica | Linguagem de Programao I | Volume | 9
mquina para uma Mquina Virtual Java (do ingls, Java Virtual Machine
JVM), ao invs de possuir cdigo nativo para uma mquina real.
Ao se executar uma aplicao em Java, lanada uma JVM que executar o
bytecode da aplicao.
Como existem JVM implementadas em muitas plataformas diferentes, o
cdigo compilado apenas uma vez, pode ser executado em mquina
diferentes sem necessidade de nenhuma adaptao.

Plataforma Java
A plataforma o ambiente de hardware ou o software em que um programa
roda. A maioria das plataformas uma combinao de sistema operacional
com o hardware necessrio para a sua execuo. A plataforma Java difere
das plataformas mais populares como Microsoft Windows, Linux e Mac Os,
pois ela s compreende o software que roda em cima de outras plataformas.
A plataforma Java tem dois componentes: a JVM e a API (Application
Programming Interface) do Java. A JVM, descrita anteriormente, a base da
plataforma Java e existem verses dela para diversos sistemas operacionais.
A API uma grande coleo de componentes de software j prontos e que
prov funcionalidades teis para o desenvolvedor. Elas so agrupadas em
bibliotecas de classes e interfaces relacionadas e algumas delas sero
detalhadas neste curso.
A Figura 1.1 mostra como a Plataforma Java isola um programa desenvolvido
e compilado, isto , um arquivo com a extenso .class, do hardware onde ele
ser executado. A API prov as funcionalidades que o programa pode utilizar
e a JVM traduz o cdigo intermedirio (bytecode) para o cdigo de mquina
nativo para aquele hardware especfico.

10 Informtica | Linguagem de Programao I | Volume |


A Plataforma Java isolando o programa desenvolvido do hardware
Fonte: Conteudista

Ambiente de Desenvolvimento
Para compilar e executar programas em Java necessrio instalar no
computador o Java SE Java SE Development Kit (JDK) disponvel para
download em
http://www.oracle.com/technetwork/java/javase/downloads/index.html.
preciso ter o JDK para desenvolver aplicaes em Java, porm existe uma
verso para download apenas para a execuo de programas em Java
chamada JRE. O JRE serve para quem no deseja criar nenhum programa
em Java, mas quer executar o programa criado e compilado por um
desenvolvedor.
Porm, ao instalar o JDK na sua mquina, s ser possvel executar os
comandos para compilar e executar um programa em Java atravs do Prompt
de Comando, o que no interessante. Para isto, melhor tambm instalar
um ambiente de desenvolvimento integrado (Integrated Development
Environment IDE). A IDE que ser utilizada neste curso o Netbeans que
est atualmente na verso 6.8.
O Netbeans uma IDE gratuita de cdigo-aberto e est disponvel para
download em http://netbeans.org/downloads/index.html.

Informtica | Linguagem de Programao I | Volume | 11


Saiba Mais:

Voc pode consultar documentao do Java e do Netbeans nos seus sites


oficiais:

Tutorial: http://download.oracle.com/javase/tutorial/
Documentao do Java:
http://www.oracle.com/technetwork/java/javase/documentation.index.h
tml
Documentao do Netbeans: http://netbeans.org/kb/index.html>

Primeiro Programa
A seguir ser descrito um passo a passo para criar o programa Ol Mundo
utilizando o Netbeans 6.8:
1. Rode o Netbeans.
2. Abra o menu Arquivo e selecione Novo Projeto (figura 1.2).

Captura de tela do Netbeans 6.8: Netbeans com a opo Novo projeto


destacada
Fonte: Conteudista

12 Informtica | Linguagem de Programao I | Volume |


3. Selecione Aplicativo Java dentro da categoria Java e clique em prximo
(figura 1.3).

Captura de tela do Netbeans 6.8: Caixa de dilogo Novo projeto


Fonte: Conteudista

4. Preencha as informaes como na figura 1.4:


Nome do projeto: Aplicacao Alo Mundo
Nome da classe principal: aplicacaoalomundo.AplicacaoAloMundo
Deixar marcada a opo Definir como projeto principal

Informtica | Linguagem de Programao I | Volume | 13


Captura de tela do Netbeans 6.8: Assistente de Novo projeto
Fonte: Conteudista

5. Clique em Finalizar (ao clicar em finalizar voc dever ver uma tela como a
exibida na figura 1.5).

14 Informtica | Linguagem de Programao I | Volume |


Captura de tela do Netbeans 6.8: exibindo o projeto Aplicacao Alo
Mundo
Fonte: Conteudista

Informtica | Linguagem de Programao I | Volume | 15


6. Troque // TODO code application logic here por
System.out.println("Ol Mundo!");, sem as aspas. Este um comando para
exibir mensagens no console. O seu cdigo deve estar parecido com o
exibido na figura 1.6, observe atentamente o que est em maisculo e o que
est em minsculo, pois no Java faz diferena.

Captura de tela do Netbeans 6.8: Cdigo fonte da Aplicacao Alo Mundo


Fonte: Conteudista

7. Para compilar a aplicao selecione a opo Construir Main Project dentro


do menu Executar (se tudo deu certo, deve aparecer as mensagens como na
figura 1.7. Observe a mensagem CONSTRUDO COM SUCESSO no final do
painel Sada). Nota: este passo opcional no Netbeans, pois toda vez que
voc salva um arquivo, o Netbeans j compila este arquivo para voc
automaticamente, e se existir algum erro no seu cdigo, ele informa com um
sublinhado vermelho onde tem problema no seu arquivo.

16 Informtica | Linguagem de Programao I | Volume |


Captura de tela do Netbeans 6.8: Tela do painel Sada exibindo o log da
construo do projeto
Fonte: Conteudista

8. Para executar a aplicao selecione a opo Executar Main Project do


menu Executar (voc pode observar o resultado da execuo no painel Sada
como na figura 1.8). A sada da aplicao aparece dentro do Netbeans no
painel Sada, e no numa janela do DOS como no Dev-C++.
Figura 1.8: Captura de tela do Netbeans 6.8: Tela do painel Sada exibindo a
mensagem Al Mundo!
Fonte: Conteudista
9. Pronto, agora voc j sabe criar uma aplicao no Netbeans, compilar e
execut-la.

Informtica | Linguagem de Programao I | Volume | 17


Detalhamento do Primeiro Programa
A figura 1.6 mostra o cdigo-fonte do primeiro programa Java que voc
executou. Agora sero detalhados todos os comandos. Na linha 1 o comando
package aplicacaoalomundo; informa o nome do pacote em que a sua
aplicao est. O conceito de pacote ser visto em detalhes em outra
unidade. Por enquanto, saiba que o nome do pacote deve estar escrito todo
em minsculo e est associado a uma pasta no seu sistema de arquivos. Isto
quer dizer que o cdigo-fonte do seu programa est dentro de uma pasta
chamada aplicacaoalomundo.
O Java possui um tipo de comentrio especial que serve tambm como
documentao e delimitado por /** e */. Nas linhas de 3 a 7 da figura 1.6
tem uma pequena descrio da aplicao e quem foi o autor deste cdigo
fonte.
As outras duas formas de escrever comentrios em Java so iguais s que
voc j conhece do C, atravs de /* e */ para comentrios de vrias linhas e
atravs de // para comentrios de uma nica linha.
A definio de qualquer classe em Java feita utilizando a palavra-chave
class seguida do nome da classe, como na linha 8 da figura 1.6. Todas as
definies referentes a esta classe esto contidas dentro das chaves, da
mesma forma que utiliza-se as chaves na linguagem de programao C. Alm
disso, a palavra-chave public indica que esta uma classe pblica. Maiores
detalhes sobre modificadores de visibilidade como public, private e protected
sero vistos posteriormente neste curso.
Como Java orientada a objetos, inclusive o main precisa ser criado dentro
de uma classe. Por isso, fez-se necessria a criao de uma classe para
fazer um programa to simples como o Al Mundo. O mtodo main precisa
ser criado da seguinte forma: public static void main(String[] args), e ele
equivalente a funo main do C.
O comando System.out.println("Ol Mundo!"); (linha 11 da figura 1.6) usa a
classe System que est definida na API do Java e utilizada para exibir a
mensagem Ol Mundo! na sada padro (normalmente a sada padro est
configurada como o monitor do seu computador).

18 Informtica | Linguagem de Programao I | Volume |


<Atividades de aprendizagem

1. Pesquise sobre a eficincia dos programas Java e escreva um pequeno


resumo do que voc achou. Voc deve procurar por Compilador Java e
Compilador Java em tempo de execuo (JIT-Compilers).
2. Altere o primeiro programa Java para exibir o seu nome completo, a sua
idade e os nomes dos seus pais. Exiba cada uma destas informaes em
uma linha e o usurio no precisar digitar nada, s observar a sada do seu
programa.>

Variveis
So utilizadas para armazenar os dados do seu programa, a sintaxe para a
declarao de variveis igual a do C: tipo nomeDaVariavel;. Em Java
possvel declarar varivel em qualquer local de uma funo, no apenas no
incio, como em C.
A seguir esto alguns exemplos de delcarao de variveis:
int idade;
char estadoCivil;
double salario;
Nomes de variveis so identificadores e devem seguir as seguintes regras e
convenes:
S pode possuir letras, nmeros, cifro ($) ou sublinhado (_), porm a
recomendao que nunca se utilize o cifro ($), ficando este
reservado apenas para nomes de classes geradas automaticamente.
Obrigatoriamente deve comear com uma letra, cifro ($) ou
sublinhado (_), porm recomendado que nunca se utilize o cifro ($)
ou o sublinhado (_) para iniciar um identificador.
Tenha nome fcil de compreender. melhor utilizar um nome maior
do que utilizar abreviaes criptogrficas, por exemplo, estadoCivil
bem mais legvel que ec.
Se o nome escolhido consiste de uma nica palavra, coloc-la toda
em minscula. Se consistir de mais de uma palavra, coloque em
maiscula a primeira letra das palavras subsequentes, como por
exemplo, estadoCivil e salarioBruto. A exceo essa conveno
utilizar apenas letras maisculas quando se declarar uma constante,
como por exemplo, RAZAO_LITROS_METROS_CUBICOS e PI.

Informtica | Linguagem de Programao I | Volume | 19


As variveis locais em Java no so inicializadas, porm caso voc as utilize
sem inicializ-las previamente o compilador do Java ir lhe informar atravs
de um erro de compilao.
possvel tambm inicializar uma varivel no momento da sua declarao:
int maiorIdade = 0;
Pode-se declarar mais de uma varivel com um nico comando, desde que
todas as variveis sejam do mesmo tipo, como no exemplo a seguir:
char estadoCivil, sexo;

Tipos de Dados
Para se declarar as variveis preciso conhecer os tipos de dados existentes
em Java. Existem oito tipos de dados primitivos em Java que so:
byte: um inteiro que ocupa 1 byte e pode ter valores entre -128 e
+127 (inclusive). Normalmente s so utilizados quando se deseja
economizar memria (como em declarao de grandes vetores).
short: um inteiro que ocupa 2 bytes e pode ter valores entre -
32.768 e +32.767 (inclusive). Tambm s so utilizados quando
preciso economizar memria.
int: um inteiro que ocupa 4 bytes e pode ter valores entre -
2.147.483.648 e 2.147.483.647 (inclusive). o tipo padro para
valores inteiros e s no so utilizados pelas razes explicitadas
anteriormente. Se for necessrio utilizar um nmero inteiro ainda
maior, utilize long.
long: um inteiro que ocupa 8 bytes e pode ter valores entre -
9.223.372.036.854.775.808 e 9.223.372.036.854.775.807. S deve
ser utilizado quando precisa utilizar nmeros fora da faixa do int.
float: um valor real com preciso simples ocupando 4 bytes e pode
-45
ter valores entre 1,40129846432481707 x 10 e
+38
3,40282346638528860 x 10 (positivo e negativo). Tambm s so
utilizados quando necessrio economizar memria.

20 Informtica | Linguagem de Programao I | Volume |


double: um valor real com preciso dupla ocupando 8 bytes e pode
-324
ter valores entre 4,94065645841246544 x 10 e
+308
1,79769313486231570 x 10 . a escolha padro para valores
reais.
boolean: um tipo de dado que s suporta dois valores true e false,
utilizado armazenar valores lgicos (verdadeiro e falso). um tipo
que no existe em C.
char: um caractere unicode ocupando 2 bytes. Unicode um
padro que suporta caracteres de quase todos os idiomas escritos do
mundo.

Literais
Literais so representaes de valores fixos no cdigo fonte da sua aplicao.
Portanto, pode-se utilizar literais para inicializar variveis ou para compor uma
expresso. Exemplos:
byte b = -32;
short s = b + 25743;
int i = 3 * 100000;
long l = 20000000000l;
float f = 178.3f;
double d = 279.5 / 39.7382;
boolean achou = false, terminou = true;
char c = 'z';
Com o seu conhecimento de C fica bem fcil escrever estes cdigos em Java,
porm preciso tomar cuidado com os seguintes detalhes:
1. Todo nmero real deve ser escrito com um ponto (.) para separar as
casas decimais, e no com a vrgula (,) como na lngua portuguesa;
2. Qualquer nmero real do tipo double, portanto preciso colocar o f
ao final do nmero, quando voc precisar utilizar um float, seno ir
acontecer um erro de compilao;

Informtica | Linguagem de Programao I | Volume | 21


3. O tipo boolean, que no existia em C, s aceita os valores true e
false;
4. O tipo char s aceita um caractere e delimitado por apstrofos.

Ateno:

possvel misturar os tipos de dados numricos numa expresso, porm as


converses automtica s acontecem do tipo de menor faixa de valores para
o tipo com uma maior faixa de valores. Dada a sequncia a seguir: byte,
short, int, long, float e double; a converso automtica s acontece da
esquerda para a direita, ento um valor inteiro pode ser convertido
automaticamente para double, mas o contrrio no verdadeiro. Observe os
seguintes cdigos:

// o valor 3 convertido para 3.0 e ento a soma


realizada
double d = 3 + 34.5; // FUNCIONA
/* o valor 2.75 que um double no ser convertido para
o float 2.75f e assim ir gerar um erro de compilao */
float f = 2.75; // NO FUNCIONA GERA ERRO DE
COMPILAO>

Operadores
Java possui os mesmos operadores que C, portanto abaixo segue uma lista
resumida para voc relembrar:

22 Informtica | Linguagem de Programao I | Volume |


1. Aritmticos: + (soma), - (subtrao), * (multiplicao), / (diviso inteira
ou real dependendo dos operadores) e % (resto de diviso, utilizada
apenas para operadores inteiros);
2. Relacionais: < (menor), <= (menor ou igual), > (maior), >= (maior ou
igual);
3. Igualdade: == (igual), != (diferente);
4. Lgicos: && (e), || (ou);
5. Incrementos: ++ (incrementa em um o valor de uma varivel), --
(decrementa em um o valor de uma varivel);
6. Atribuio: = (modifica o valor de uma varivel).

<Atividades de aprendizagem:

Faa um programa em Java que declare variveis, preencha as variveis


com o valores a seguir e depois mostre o resultado na tela (realize as
converses de nmeros em formato portugus para o formato
americano):

[int] 5 + 3
[int] utilize o operador ++ na varivel da letra anterior
[double] 8,7 / 38,4
[float] 3,4 * 3
[boolean] ((3 < 5) && (4 > 7) || (4,8 < 2 * 1,76))
[int] 7 / 2
[int] 7 % 2>

Informtica | Linguagem de Programao I | Volume | 23


Estruturas de Controle
As estruturas de controle controlam a execuo do seu programa, a primeira
a chamada sequencial, onde um comando colocado aps o outro. Neste
caso, ao terminar a execuo do primeiro comando, o segundo comando
executado e assim por diante.
Porm existem casos onde preciso tomar uma deciso e para isto sero
utilizados os condicionais e em outros casos preciso repetir vrias vezes um
trecho de cdigo atravs dos comandos de repetio que sero vistos a
seguir.
A descrio destes comandos ser breve, pois eles so exatamente os
mesmos que voc j viu em C.

Condicionais
O primeiro condicional o comando if simples. Ele ser utilizado
quando voc s deseja executar um ou mais comandos em determinada
situao, e no quer executar nada nas outras situaes. O trecho de
cdigo a seguir (figura 2.1 linhas de 7 a 12) mostra um exemplo de
um funcionrio solicitando para um candidato a apresentao de alguns
documentos:

24 Informtica | Linguagem de Programao I | Volume |


Captura de tela do Netbeans 6.8: Cdigo fonte exibindo if e if-else
Fonte: Conteudista

Observe que se a pessoa for do sexo masculino o funcionrio ir solicitar o


certificado de reservista, porm se for do sexo feminino, o funcionrio no ir
solicitar um outro documento em contra partida. O ttulo de eleitor s ser
solicitado se a pessoa estiver numa faixa de idade em que for obrigatrio
votar.
Existem situaes onde o if simples no suficiente, pois preciso tomar
uma ao diferente se a condio no for satisfeita, neste caso utilizado o if-
else. O trecho de cdigo da linha 15 a 18 da figura 1.9 mostra um exemplo
desta utilizao considerando que os valores possveis para nacionalidade
so 'b' para brasileira e 'e' para estrangeira. Neste exemplo, preciso realizar
uma ao diferente de acordo com a situao, ento preciso realizar uma
ao quando a condio for verdadeira (comando relacionado ao if) e uma
ao diferente quando a condio for falsa (comando relacionado ao else).

Informtica | Linguagem de Programao I | Volume | 25


Os comandos if e if-else podem ser utilizados em conjunto, assim como
podem existir comandos if-else aninhados. Veja na figura 1.10 um trecho de
cdigo desta utilizao.

:
Captura de tela do Netbeans 6.8: Trecho de cdigo exibindo if-else
aninhados
Fonte: Conteudista

O ltimo tipo de condicional existente utilizado quando se tem um conjunto


especfico de valores para realizar a seleo da ao a ser tomada que o
switch. Veja o cdigo da figura 1.11 para relembrar deste comando
assumindo os seguintes valores para estado civil ('s' para solteiro, 'c' para
casado, 'v' para vivo, 'd' para divorciado, 'u' para unio estvel e 'o' para
outros):

26 Informtica | Linguagem de Programao I | Volume |


Captura de tela do Netbeans 6.8: Trecho de cdigo exibindo if-else
aninhados
Fonte: Conteudista

Ateno:

Os detalhes importante a serem lembrados quando utilizar o switch so os


seguintes:

1. S podem ser utilizados com variveis inteiras e caracteres, nunca


variveis do tipo float, double e String;
2. possvel combinar mais de uma opo colocando vrios case
antes dos comandos;
3. Todo fim de case deve possuir um break para no executar os
comandos do prximo case em sequncia;
4. O caso default opcional e pode ser utilizado para executar todos
os outros casos no encontrados case anteriores e quando for
utilizado deve sempre ser o ltimo a aparecer.>

Informtica | Linguagem de Programao I | Volume | 27


Repetio
Os comandos de repetio so os j conhecidos for, while e do-while. Eles
so equivalentes, pois todos os trs repetem um conjunto de comando
diversas vezes, porm cada um deles tem situaes onde so mais
convenientes de serem utilizados. O for utilizado sempre que voc quiser
executar um conjunto de comandos uma quantidade pr-determinada de
vezes. O while e do-while so utilizados quando no se sabe a quantidade de
repeties, pois isto depender de uma condio especfica, onde a nica
diferena entre eles o momento em que o teste da condio realizado, no
while o teste feito no incio de cada repetio, enquanto que no do-while o
teste realizado ao final de cada repetio. Os prximos trechos de cdigo
exemplificam estes trs usos:

Captura de tela do Netbeans 6.8: Trecho de cdigo exibindo for, while e


do-while
Fonte: Conteudista

28 Informtica | Linguagem de Programao I | Volume |


Um detalhe a ser observado no cdigo da figura 1.12 que possvel
declarar a varivel de controle dentro da definio do for (veja a declarao
da varivel i que possvel realizar em Java, mas no em C). Veja que o for
(linha 43) foi utilizado para repetir a impresso na tela 10 vezes, isto , j se
sabia a princpio o nmero de repeties desejado. Na utilizao do while
tambm repetimos os comandos vrias vezes, porm no sabia-se a
quantidade de repeties, s se sabia que deveria parar quando a soma
ultrapassasse 100. Sugesto: execute este cdigo e veja at que nmero vai
ser impresso na tela do seu computador. O ltimo exemplo, foi o do-while que
muito utilizado para a construo de menus, pois o menu exibido antes do
usurio digitar a opo, portanto primeiro executamos os comandos, para
depois testar se o lao ser executado novamente.

Comandos de Entrada e Sada


Para interagir com o usurio necessrio exibir mensagens na tela e tambm
solicitar que o usurio digite informaes para o correto funcionamento do
programa. A impresso de mensagem na tela voc j viu como funciona
atravs da utilizao do System.out.print (que no inclui um '\n' ao final da
mensagem) e System.out.println (que alm de imprimir o texto, inclui
automaticamente um '\n' ao final da mensagem, e assim pula para o incio
da prxima linha). Para quem j conhece C, possvel utilizar o
System.out.printf para exibir mensagens formatadas na tela.

Informtica | Linguagem de Programao I | Volume | 29


Captura de tela do Netbeans 6.8: Trecho de cdigo exibindo comandos
de entrada e sada
Fonte: Conteudista

Para solicitar que o usurio digite um valor necessrio a utilizao de uma


classe chamada Scanner para facilitar esta interao com o usurio. Esta
classe pertence a biblioteca util do Java e precisar ser importada (veja como
se faz isto na linha 3 da figura 1.13). Voc precisar declarar uma varivel do
tipo Scanner, informar que ir ler da entrada padro (System.in) e ento dizer
qual o tipo do valor que o usurio digitar (int, float, double). Na figura 1.13
tem um exemplo de comandos de entrada e sada: na linha 8 tem a criao
da varivel entrada, na linha 12 realizada a leitura de um valor inteiro e
depois na linha 14 tem a leitura de um valor real digitado pelo usurio.

30 Informtica | Linguagem de Programao I | Volume |


Ateno:

No Netbeans preciso dar um clique com o mouse dentro do Painel


Sada para que seja possvel digitar os valores solicitados pelo
programa.
Para o usurio digitar nmeros reais a partir do teclado utiliza-se a
forma de digitar nmeros de acordo com as configuraes do seu
computador. Isto , num computador em portugus, o usurio dever
digitar 3,5 (com a vrgula) e no 3.5 (com o ponto), seno acontecer
um erro de execuo e o programa ser fechado prematuramente.
Agora, independentemente das configuraes do computador, o
programador precisar sempre digitar nmeros reais utilizando ponto
ao escrever o cdigo fonte da aplicao.>

Esta forma de ler valores do teclado bem diferente da forma que voc j
estava acostumado no C, portanto demore um tempo maior estudando as
diferenas entre o Java e o C. A declarao da varivel entrada e a sua
associao com a entrada padro do Java (System.in que geralmente o
teclado) necessria sempre que voc quiser solicitar que o usurio digite
valores pelo teclado (linha 8 da figura 1.13). Para ler valores do teclado as
funes disponveis so:
nextShort(), nextInt(), nextLong(), nextFloat(),
nextDouble(), nextBoolean() e nextLine().charAt(0) para a
leitura de short, int, long, float, double, boolean e char,
respectivamente.
Como voc viu na linha 3 da figura 1.13, para poder utilizar o tipo Scanner
preciso informar que ele pertence a biblioteca util do Java, e para isto existe
o comando import do Java que parecido com o #include que voc j
conhece do C.
Na figura 1.14 voc pode ver o cdigo de um programa completo em Java
que solicita que o usurio digite um valor mximo (linha 11) para o somatrio
que que controla a condio do while (linha 12). Por exemplo, ao executar

Informtica | Linguagem de Programao I | Volume | 31


este cdigo, se o usurio digitar 100, sero impressos os nmeros de 1 a 15
na tela.

Captura de tela do Netbeans 6.8: Programa demonstrando o uso da


classe Scanner
Fonte: Conteudista

Funes Matemticas
Algumas funes matemticas so muito teis e no esto disponveis como
operadores, como por exemplo, raiz quadrada, potenciao, etc. Para isto,
possvel utilizar as funes disponveis na class Math (vide quadro 1.1).

32 Informtica | Linguagem de Programao I | Volume |


Funes disponveis na classe Math
Fonte: Conteudista

Informtica | Linguagem de Programao I | Volume | 33


Alm destas funes disponveis, voc tambm pode utilizar duas constantes
j pr-definidas: Math.PI (que representa o nmero PI que 3.14159...) e
Math.E (o valor e = 2.71828... que a base do logartimo natural).

RESUMO
A plataforma Java prov todos os recursos para voc executar programas
Java. Para desenvolver programas em Java necessrio instalar a SDK do
Java. O Netbeans uma IDE open source que aumenta a sua produtividade
na hora de escrever os programas. O primeiro programa em Java demonstra
a estrutura de um programa Java.
Voc aprendeu os tipos primitivos, como declarar variveis, as estruturas de
controle e os comandos de entrada e sada do Java. Com isto possvel
reescrever a maioria dos programas que voc tinha feito em C.

<Atividades de aprendizagem:

1. Faa um programa em Java para testar os diversos tipos de variveis que


existem. Tente utilizar todas as variveis e todos os operadores que voc
conhece.
2. Faa um programa que pergunte ao usurio o ano do seu nascimento e o
ano atual e imprima na tela a sua idade aproximada (voc pode errar por at
1 ano de diferena).
3. Faa um programa que pea para o usurio digitar um valor inteiro entre 1
e 100 e imprima a soma de todos os valores entre 1 e o nmero digitado.
Valide a entrada, isto , utilize o do-while para que o usurio continue
digitando valores inteiros enquanto ele informar nmeros fora da faixa
especificada.
4. Faa um programa que pergunte a idade e o sexo do usurio e imprima as
seguintes mensagens quando apropriadas:
a) Voc j pode dirigir (maior de 18 anos)

34 Informtica | Linguagem de Programao I | Volume |


b) Voc pode votar se desejar (entre 16 e 18 anos e maior que 60
anos)
c) Voc obrigado a votar (entre 18 e 60 anos)
d) Voc precisa prestar servio militar (homem maior que 18 anos)
e) O banheiro feminino fica esquerda (para mulheres)
f) O banheiro masculino fica direita (para homens)
5. Faa um programa que d ao usurio as seguintes opes atravs de um
menu:
a) Imprimir todos os nmeros pares menores que o nmero digitado
b) Multiplicar dois nmeros reais digitados
c) Dividir dois nmeros inteiros digitados
d) Tirar a raiz quadrada de um nmero real
e) Exibir o cosseno de um ngulo dado em graus (para converter para
radianos utilize a seguinte frmula:
f) Sair do programa>

Informtica | Linguagem de Programao I | Volume | 35


2. VETORES, MATRIZES E STRINGS

Objetivos

Aprender a utilizar vetores e matrizes em Java.


Saber manusear Strings em Java.

Vetores
So variveis que permite o armazenamento de um conjunto de valores do
mesmo tipo dispostos em uma nica dimenso. As sintaxes para a
declarao de um vetor disponveis em Java so:
tipo[] nomeDaVariavel;
tipo nomeDaVariavel[];
A primeira forma s existe em Java e deve ser utilizada preferencialmente,
pois deixa bem claro que o tipo da varivel um vetor, enquanto que a
segunda forma s para se assemelhar com a disponvel em C, mas observe
atentamente que em nenhum momento informado o tamanho do vetor na
hora de declar-lo.
Antes de pode utilizar um vetor preciso inicializ-lo, passo que no existia
em C, e nesse momento que voc precisa informar o tamanho do vetor e
no obrigado a ser uma constante, voc pode utilizar uma varivel que
tenha o tamanho desejado. A sintaxe para inicializao a seguinte:
nomeDaVariavel = new tipo[tamanho];
Na figura 2.1 so mostrados exemplos de declaraes e inicializao de
vetores. Analise atentamente o cdigo desta figura para se acostumar com a
forma de declarao e inicializao de vetores em Java. Observe que ao
utilizar a forma no recomendada de declarao de vetores em Java
preciso colocar os [ ] aps cada vetor (vide linha 9), enquanto que na forma
recomendada voc s utiliza os [ ] junto com tipo da varivel, e no junto com
o nome de cada uma das variveis (vide linha 11).
possvel tambm s inicializar o tamanho do vetor (linhas 16 e 18), aps
solicitar o valor desejado pelo usurio (linha 14), pois em Java o tamanho do
vetor s definido quando o programa for executado, diferentemente de C,
36 Informtica | Linguagem de Programao I | Volume |
onde o tamanho do vetor definido no momento da compilao do programa
(isto , muito antes dele ser executado).

Captura de tela do Netbeans 6.8: Trecho de cdigo com declarao e


inicializao de vetores
Fonte: Conteudista

Uma novidade na utilizao de vetores que os vetores armazenam


internamento o seu tamanho, dentro do campo length. Veja o cdigo da figura
2.2, onde o vetor v declarado (linha 9), inicializado (linha 13) com um valor
informado pelo usurio (linha 12) e preenchido com informaes digitadas
tambm pelo usurio (linhas 14 a 17).
Isto interessante, pois todo for utilizado para percorrer os vetores
tero sempre a mesma condio, isto , i < v.length (vide linha 14),

Informtica | Linguagem de Programao I | Volume | 37


independentemente se o vetor tem tamanho 10, 100 ou 500, pois cada vetor
armazena internamente o seu tamanho.
Observe a construo da mensagem para o usurio (linha 15).
Concatena-se a String "Digite v[" com o resultado do valor inteiro (i + 1) com a
String]: ", e assim aparece na tela algo do tipo: Digite v[1]:. importante
saber que em Java voc pode concatenar nmeros com Strings, pois os
nmeros so convertidos automaticamente para String, permitindo a sua
concatenao utilizando o operador +.

Captura de tela do Netbeans 6.8: Programa exemplificando o uso de um


vetor
Fonte: Conteudista

38 Informtica | Linguagem de Programao I | Volume |


As linhas 18 a 22 da figura 2.2 imprime todos os valores do vetor v na mesma
linha separados por um espao.
A utilizao de vetores depois da sua inicializao se d da mesma forma que
em C, portanto voc no vai ter nenhuma dificuldade para utilizar vetores em
Java.

Matrizes
uma varivel que permite o armazenamento de um conjunto de valores do
mesmo tipo dispostos em duas dimenses. As sintaxes para a declarao de
uma matriz disponveis em Java so:
tipo[][] nomeDaVariavel;
tipo nomeDaVariavel[][];
Da mesma forma que em vetores, a primeira forma a recomendada. E
tambm preciso inicializar a matriz antes de utiliz-la, porm agora
precisamos informar a quantidade de linhas e a quantidade de colunas:

nomeDaVariavel = new
tipo[qtdLinhas][qtdColunas];

A figura 2.3 exibe a criao (linha 9) e inicializao de uma matriz (linha 15) a
partir de informaes digitadas pelo usurio (linhas 12 e 14). Como matrizes
tm duas dimenses, so utilizados dois for (um para linhas (linha 16) e outro
para colunas (linha 17)).

Informtica | Linguagem de Programao I | Volume | 39


Captura de tela do Netbeans 6.8: Programa exemplificando o uso de uma
matriz
Fonte: Conteudista

Para imprimir uma matriz na tela utiliza-se um trecho de cdigo como o


ds linhas 23 a 29 da figura 2.3.
Observe que para separar as linhas da matriz, colocado o comando
System.out.println(); (linha 28 da figura 2.3) sem nenhum

40 Informtica | Linguagem de Programao I | Volume |


parmetro s para poder pular a linha e formatar corretamente a matriz
na tela.
Voc pode observar neste exemplo, que agora existem na realidade vrios
campos length para uma matriz. Veja a seguir como utiliz-los:
nomeDaVariavel.length utilizado para saber quantas linhas
existem nesta matriz
nomeDaVariavel[indiceLinha].length utilizado para
saber quantas colunas existem nesta linha especfica indexada pelo
indiceLinha, pois em Java possvel ter matrizes que possuam
colunas diferentes para cada linha
nomeDaVariavel[0].length utilizado para saber quantas
colunas a matriz tem, considerando que todas as linhas possuem a
mesma quantidade de colunas da primeira linha (observe a utilizao
do ndice zero que representa a primeira linha da matriz)

Strings
Em Java existe um tipo especfico para string que no existia em C. L era
necessrio utilizar um vetor de caracteres para representar uma string. Aqui
possvel utilizar o tipo String.
A figura 2.4 mostra algumas utilizaes de variveis do tipo String.
Observe que o tipo String comea com uma letra maiscula e utilizado para
criar objetos do tipo String. possvel formatar uma mensagem e, ao invs de
imprim-la na tela utilizando o System.out.printf, armazen-lo numa
String utilizando o mtodo format de String, utilizando as mesmas regras
de formatao do printf. Ao utilizar variveis do tipo double, tambm
utilizamos o %f, como voc fazia com o float em C.

Informtica | Linguagem de Programao I | Volume | 41


Captura de tela do Netbeans 6.8: Programa exemplificando o uso Strings
Fonte: Conteudista

O quadro 2.1 mostra as funes disponveis na classe String, e a figura 2.5


apresenta um programa utilizando algumas desta funes.

42 Informtica | Linguagem de Programao I | Volume |


Funes disponveis na classe String
Fonte: Conteudista

Informtica | Linguagem de Programao I | Volume | 43


Captura de tela do Netbeans 6.8: Programa exemplificando funes de
Strings
Fonte: Conteudista

Analise o cdigo da figura 2.5 com a sada que aparece na tela ao executar
este programa (figura 2.6).

Captura de tela do Netbeans 6.8: Sada na tela referente execuo do


programa da figura 2.5
Fonte: Conteudista

44 Informtica | Linguagem de Programao I | Volume |


RESUMO
Nesta aula voc aprendeu a como declarar, inicializar e utilizar vetores e
matrizes em Java, percebendo que trabalhar com eles em Java bem
parecido com a forma de utilizao em C. Descobriu um tipo novo que o
String que serve para armazenar cadeias de caracteres, assim como
aprendeu vrias funes para utilizar com Strings em Java.

<Atividades de aprendizagem:

1. Crie um programa em Java que solicite que o usurio digite um valor inteiro
entre 3 e 7 para definir o tamanho de dois vetores. Solicite que o usurio
digite valores para preencher estes dois vetores e imprima na tela:
a) O contedo de um novo vetor que contm a soma dos dois
primeiros vetores (ex: a primeira posio deste vetor possui a soma
dos valores contidos na primeira posio do vetor 1 e da primeira
posio do vetor 2)
b) O contedo de um novo vetor que contm a multiplicao dos dois
primeiros vetores
2. Crie um programa em Java pea para o usurio preencher numa tabela
(matriz em Java) as notas dos 50 alunos de um curso de ingls. Esta tabela
tem 6 linhas, cada um referete a 1 turma e 10 colunas cada uma
correspondente a um aluno de cada uma das 5 turma. Ao final, imprima na
tela a mdia das notas dos 10 alunos de cada turma, e alm da mdia geral
de todos os alunos do curso.
3. Crie um programa em Java que solicite que o usurio digite seu nome
completo, e ento imprima:
a) As 5 primeiras letras do nome completo
b) A posio do primeiro espao em branco
c) O primeiro nome da pessoa (utilize a informao da letra b para
poder realizar esta tarefa)>

Informtica | Linguagem de Programao I | Volume | 45


3. ORIENTAO A OBJETOS

Objetivos

Ter uma viso geral de orientao a objetos.


Compreender o que uma classe, um objeto, mtodo e construtor.
Saber como implementar os conceitos de orientao a objetos em Java.

Objetos
A programao orientada a objetos tenta trazer para o desenvolvimento de
programas conceitos j usuais no dia a dia das pessoas, que o conceito de
objetos. As pessoas utilizam objetos para realizarem as mais diversas tarefas,
como por exemplo, para assistir um filme, voc utiliza o DVD do seu filme
predileto (um objeto), um DVD Player (outro objeto) e uma televiso (um
terceiro objeto).
Voc interage com os objetos a partir das funcionalidades disponveis, por
exemplo, ao interagir com a televiso voc pode aumentar ou diminuir o seu
volume, alterar o canal assistido, deslig-la e tirar o som, entre outras.
Ao utilizar um carro, voc pode ligar, acelerar, trocar a marcha, freiar, girar a
direo, etc. Na realidade, voc pode imaginar quais objetos voc possui e
como voc interage com eles diariamente.
Como este conceito to simples e todo mundo j possui este conhecimento
inerentemente, busca-se fazer esta analogia ao tentar realizar a construo
de programas utilizando linguagens de programao orientadas a objetos.
Quando voc pensa em objetos, voc imagina um objeto especfico, como por
exemplo, a televiso, existem milhares de televises no mundo, mas voc
no pensou nestas outras televises, voc pensou na que voc possui. Em
orientao a objetos, cada objeto possui internamente um identificador nico,
pois mesmo que existam muitas televises iguais a sua, elas no so as
mesmas, pois cada uma possui uma identidade prpria apesar de ter as
mesmas caractersticas fsicas.
Um programa orientado a objetos possui diversos objetos que se comunicam
entre si para resolver o problema para o qual foram criados. Por exemplo, no
caso de uma biblioteca, existem livros, emprstimos, alunos e funcionrios.

46 Informtica | Linguagem de Programao I | Volume |


Neste contexto, cada um dos livros, dos alunos e dos funcionrios um
objeto armazenado no sistema de controle de emprstimos de uma biblioteca.
Livros podem ser emprestados, ento quando um aluno deseja realizar o
emprstimo de um livro, no sistema criado um relacionamento entre este
aluno e este livro especfico, e assim manter no sistema um espelho da
realidade, onde o aluno realmente est com o livro em seu poder.

Classes, Atributos e Mtodos


Existem diversos modelos e marcas de televises no mundo, cada uma
possui caractersticas diferentes, porm intuitivo para os seres humanos
classificarem os objetos de acordo com as suas caractersticas. Por exemplo,
existem televises bem diferentes (mveis inteiros, CRT, LCD, plasma, de
14, de 29, de 50), mas todas elas so classificadas como televiso.
Portanto, quando um conjunto de objetos possuem um mesmo conjunto de
caractersticas, eles so reunidos em uma classe, mesmo que os valores
especficos sejam diferentes para cada objeto.
Na classe so definidas as caractersticas que todos os objetos daquela
classe possuem. Por exemplo, televises possuem: marca, modelo e
tamanho. Portanto, todas as televises (objetos) possuem estas
caractersticas, apesar de cada uma ter uma marca, um modelo e um
tamanho diferente.
Pense em quais seriam as caractersticas dos carros, faa uma lista com
todas as caractersticas que definem os carros que voc conseguir pensar,
pode deixar a lista to longa quanto voc consiga para exercitar um pouco
deste conceito de modelar classes.
Alm das caractersticas, todos os objetos do tipo televiso possuem a
mesma funcionalidade, isto , ligar / desligar / aumentar e diminuir volume /
trocar o canal. Estas funcionalidades tambm so especificadas na definio
da classe televiso.
Estes dois conceitos em Java possuem nomenclaturas prprias. A
caracterstica de um objeto tambm chamada de atributo, enquanto que as
funcionalidades esto disponveis atravs de mtodos (parecidos com as
funes que voc aprendeu em C).
A sintaxe para a definio de uma classe em Java a seguinte:

Informtica | Linguagem de Programao I | Volume | 47


modificadorDeVisibilidade class NomeDaClasse {
// cdigo da classe aqui...
}
Os modificadores de visibilidade disponveis para classe so:

public torna a definio pblica, isto , disponvel em todos os


contextos;
privado no pacote (por padro, quando no informado nada) torna
a definio privada e s pode ser utilizada dentro do mesmo pacote
em que foi definida. O conceito de pacote ser discutido
posteriormente.
Para especificar em Java os atributos de uma classe utiliza-se a seguinte
sintaxe:
modificadorDeVisibilidade tipo nomeDoAtributo;
Os modificadores de visibilidade disponveis para atributos e mtodos so os
mesmos para classe (public e privado no pacote), alm dos dois seguintes:

private torna a definio privada, isto , s est disponvel


internamente na classe atual;
protected torna a definio protegida, isto , est disponvel dentro
do pacote atual e dentro de qualquer subclasse da classe atual.
Voc pode perceber que criar um atributo bem parecido com a declarao
de uma varivel, porm a declarao de um atributo possui o modificador de
visibilidade que as variveis no tm, e o local da declarao diferente. As
variveis so declaradas dentro dos mtodos (funes), enquanto que os
atributos so declarados dentro das classes.
Por fim, para especificar as funcionalidades disponveis nos objetos preciso
criar mtodos (muito parecida com a definio de uma funo em C)
utilizando a seguinte sintaxe:

48 Informtica | Linguagem de Programao I | Volume |


modificadorDeVisibilidade tipo nomeDoMetodo(parmetros) {
// cdigo do mtodo
}
Para facilitar o entendimento do cdigo escrito em Java, por conveno todo
nome de classe comea com letras em maisculas, enquanto que tanto
atributos, quanto mtodos, devem iniciar com letras em minsculas. Ainda
neste conceito de deixar o cdigo legvel, normalmente utiliza-se substantivos
para dar nomes aos atributos e verbos para dar nomes aos mtodos.
A figura 3.1 apresenta uma definio da classe televiso que possui os
atributos marca, modelo, ligada, canal e volume e os mtodos ligar, desligar,
aumentarVolume, diminuirVolume e trocarCanal.

Captura de tela do Netbeans 6.8: Definio da classe Televisao


Fonte: Conteudista

Informtica | Linguagem de Programao I | Volume | 49


Alguns detalhes da definio da classe Televisao (figura 3.1) precisam
ser esclarecidos. Primeiramente, todos os atributos desta classe foram
definidos como private (linhas de 4 a 6), e isto foi feito para simular o que
acontece no mundo real, pois o usurio no tem acesso aos componentes
internos de um objeto, o usurio s tem acesso s funcionalidades
disponveis, e por isto, todos os mtodos utilizaram o modificador de
visibilidade public (linhas 8, 12, 16, 20 e 24). Por exemplo, voc aperta o
boto de ligar da televiso (um mtodo disponvel), porm voc no abre a
televiso e faz uma ligao direta para que a televiso se ligue, por isso, o
atributo booleano ligada no est acessvel diretamente, mas podemos
modific-lo indiretamente, quando apertamos o boto de ligar ou de desligar.
Todos os mtodos foram implementados da forma mais simples possvel,
portanto vrios testes que precisam ser feitos no esto a neste cdigo,
como por exemplo, voc no pode mudar de canal com a televiso desligada,
nem pode diminuir o volume para um valor negativo.
possvel ver que a marca e o modelo (linha 5 da figura 3.1) no esto sendo
utilizados para nada, pois no existem mtodos que manuseiam estes
atributos, e como so private, nenhum outro cdigo pode acess-los.
Mas, isto ser resolvido em breve, nas prximas sees.
Voc pode criar um projeto novo projeto utilizando o passo a passo descrito
na seo 1.3, porm d o nome de OrientacaoObjetos ao seu projeto e
orientacaoaobjetos.Testes o nome da sua classe principal.
Em Java, toda classe definida deve ser um novo arquivo. Ento, para criar a
classe Televisao dentro deste projeto, clique com o boto direito do mouse
sobre o pacote de cdigo-fonte orientacaoaobjetos, selecione a opo Novo
e ento clique sobre Classe Java... conforme a figura 3.2. Na tela que se
abrir, digite que Televisao o nome da sua classe e aperte o boto OK.

50 Informtica | Linguagem de Programao I | Volume |


Captura de tela do Netbeans 6.8: Como criar uma nova Classe Java
Fonte: Conteudista

possvel utilizar a notao UML para representar uma classe visualmente,


como pode ser vista na figura 3.3.

Informtica | Linguagem de Programao I | Volume | 51


Notao UML para uma classe
Fonte: Conteudista

A figura 3.4 apresenta a classe Televisao utilizando a notao UML, observe


que bem mais fcil entend-la atravs da sua representao visual do que
atravs do seu cdigo.

52 Informtica | Linguagem de Programao I | Volume |


Classe Televisao na notao UML
Fonte: Conteudista

Resumindo, um conjunto de objetos com caractersticas semelhantes podem


ser classificados em classes. Classes possuem atributos (que so
informaes que os objetos conhecem e normalmente esto escondidas dos
usurios e de outros objetos) e mtodos (so as aes que os objetos podem
executar e esto disponveis aos usurios e aos outros objetos).

Abstrao
um conceito importantssimo ao se trabalhar com orientao a objetos, pois
necessrio abstrair (esconder, desprezar) os detalhes irrelevantes na hora
da definio de uma classe.
Se voc comear a pensar em todos os atributos e mtodos que uma
televiso pode ter, pode ser a criao desta classe em Java se torne muito
difcil, ou at mesmo impossvel.

Informtica | Linguagem de Programao I | Volume | 53


O que voc precisa saber qual o contexto que voc quer utilizar a classe
Televisao e apenas o que ser necessrio para a sua aplicao. Por exemplo,
existem televises que possuem um disco rgido interno para gravar a
programao (como se fosse um Vdeo Cassete), mas como isto era
irrelevante para o nosso problema, esta caracterstica foi desprezada na hora
de criar a classe Televisao exibida na figura 3.4.
Ao pensar na modelagem de uma pessoa, podemos extrair atributos como:
nome, cpf, endereo, telefone e data de nascimento. Porm, na hora que a
receita federal estava fazendo a especificao de pessoa para o programa do
imposto de renda, muito mais atributos foram observados, como salrio,
imposto pago, imposto devido, quantidade de dependentes, imveis e
veculos, etc.
Mesmo voc pensando que a receita federal no utilizou este conceito ao
criar o programa de imposto de renda, tenha certeza que a abstrao tambm
foi utilizada neste caso, pois informaes como cor do cabelo, cor dos olhos,
altura, peso e preferncia sexual no foram includas. E estes atributos
poderiam muito bem ser utilizados no contexto de um site de relacionamentos
pela Internet.
Portanto, antes de comear a pensar na definio de qualquer classe,
entenda em que contexto ela ser utilizada, e quais as informaes
essenciais sero necessrias.

Construtores
Eles so chamados na hora da criao do objeto, servem para criar e
inicializar os objetos. Podem ser vistos como um tipo especial de mtodo que
no tem tipo de retorno e possui o mesmo nome da classe.
O cdigo do construtor deve ter comandos para inicializar todos os atributos
do objeto sendo criado. Voltando ao exemplo da televiso, quando um objeto
do tipo Televisao for criado preciso que este objeto tenha uma marca e
um modelo.
Veja a seguir a sintaxe para a criao de um construtor:

54 Informtica | Linguagem de Programao I | Volume |


modificadorDeVisibilidade
nomeDaClasse(parmetros) {
// cdigo do construtor
}

A figura 3.5 mostra um exemplo de construtor para a classe Televisao:

Captura de tela do Netbeans 6.8: Um construtor da classe Televisao


Fonte: Conteudista

No construtor da classe Televisao (figura 3.5), foram recebidos dois


parmetros (linha 11), porm todos os cinco atributos foram inicializados
(linhas de 12 a 16), pois importante inicializar todos os atributos do objeto
que est sendo criado. Neste caso, os outros trs atributos recebem valores
que voc como programador define (linhas 14 a 16), pois como a televiso
criada desligada o atributo ligada recebeu false, o menor canal disponvel o
canal 2 e por isso foi inicializado desta forma, e finalmente o volume
inicialmente est no seu valor mnimo que o zero.
Uma classe pode possuir vrios construtores e o que vai diferenciar um
construtor do outro a quantidade de parmetros e/ou o tipo dos parmetros.
Este conceito se chama de sobrecarga e funciona tambm para mtodos, isto
, podemos ter dois mtodos com o mesmo nome, e o que diferencia um do
outro a sua assinatura.
A seguir um exemplo de construtor da classe Televisao sem parmetros:

Informtica | Linguagem de Programao I | Volume | 55


Captura de tela do Netbeans 6.8: O construtor padro da classe
Televisao
Fonte: Conteudista

Como no se sabe a marca e o modelo deste objeto, ento ele foi inicializado
com uma String vazia (linhas 23 e 24 da figura 3.6). Se por acaso, voc no
escrevesse algum atributo, o Java inicializa os atributos automaticamente
com valores padres: zero (para nmeros inteiros e reais, e para caracteres),
false (para booleanos) e null (para objetos). Se por acaso voc s tivesse
colocado o seguinte construtor (s com abre e fecha chaves, sem nenhum
cdigo):

public Televisao() {
}

Teria o mesmo efeito que o construtor da figura 3.7:

Captura de tela do Netbeans 6.8: Inicializao padro de todos os


atributos da classe Televisao
Fonte: Conteudista

56 Informtica | Linguagem de Programao I | Volume |


Comparando as diferenas entre os construtores das figuras 3.6 e 3.7
possvel ver que os atributos ligada e volume seriam inicializados da mesma
forma. Porm no construtor da figura 3.7 o atributo canal seria inicializado
com zero que um canal inexistente, e ao invs da marca e do modelo serem
inicializados com uma String vazia (como no construtor da figura 3.6), eles
seriam inicializados com valores nulos, isto , objetos inexistentes. Perceba
que o null do Java todo em minsculo, enquanto que o de C todo em
maisculo.
Em Java, o construtor que no recebe nenhum parmetro se chama
construtor padro e criado automaticamente pelo Java em todas as classes
que voc no tenha definido nenhum construtor. Porm, se voc cria um
construtor em Java, o construtor padro no criado automaticamente.
Portanto, se voc tambm quiser o construtor padro, preciso cri-lo
manualmente, mesmo que seja um construtor onde que s tenha o abre e o
fecha chaves, como no exemplo anterior.
Como boa prtica de programao, importante inicializar todos os atributos,
mesmo voc sabendo que o Java j inicializa com os valores padres, s
para ficar bem claro para qualquer pessoa que estiver tentando entender o
seu cdigo.

Utilizando Objetos
Para se criar objetos em Java, utiliza-se a palavra-chave new seguido de um
construtor e normalmente atribumos este objeto a uma varivel criada. Veja a
criao de dois objetos do tipo televiso dentro de um main (figura 3.8).

Captura de tela do Netbeans 6.8: Exemplo de criao de dois objetos


Fonte: Conteudista

Informtica | Linguagem de Programao I | Volume | 57


Foram criadas duas televises (figura 3.8), a primeira televiso foi criada
utilizando o construtor padro (linha 48), que inicializou a televiso com uma
marca e um modelo vazios, enquanto que a segunda televiso foi inicializada
como sendo da marca MinhaMarca e o do modelo MeuModelo (linha 49).
Todas as variveis do tipo objeto na realidade funcionam como um ponteiro
de C, pois elas no armazenam o objeto, armazenam uma referncia ao
objeto. Porm em Java no existe manipulao de ponteiros, o que deixa a
vida mais fcil para o programador.
O operador new funciona como o malloc de C, que reserva uma rea da
memria para o objeto desejado. Porm, em Java voc nunca ir precisar
utilizar um comando como o free, pois a mquina virtual de Java tem um
coletor de lixo automtico, isto , o Java verifica se tem alguma rea de
memria que voc alocou utilizando new que no tem mais nenhuma
referncia a ela, e ento o coletor de lixo libera a memria.
Por exemplo, imagine que existisse o seguinte cdigo depois daqueles dois
construtores:

tv1 = tv2;

O que acontece o seguinte, a varivel tv1 passa a tambm referenciar o


mesmo objeto que a varivel tv2 referencia, que a televiso MinhaMarca
MeuModelo, e a televiso sem marca e modelo agora no tem mais nenhuma
varivel referenciando ela, portanto, voc no pode mais acess-la. O coletor
de lixo percebendo isto, destroi esta televiso e libera a memria para voc
poder utiliz-la posteriormente.
Neste exemplo, como as duas variveis agora esto referenciando o mesmo
objeto, tanto faz, utilizar a varivel tv1 quando a varivel tv2 para aumentar o
volume da televiso, ou mudar o seu canal. Preste ateno que s existe uma
televiso, mas duas formas de acess-la, voc pode pensar nisto como sendo
dois controles remotos e uma nica televiso. Ento, independentemente de
qual o controle remoto que voc utilizar para enviar o comando para aumentar
o volume, a televiso ter o seu volume alterado.
Como o mesmo objeto que est sendo referenciado, se voc mudar o canal
por um controle remoto (tv1), ao utilizar o outro controle remoto (tv2) para

58 Informtica | Linguagem de Programao I | Volume |


saber em que canal est, voc vai perceber que o canal mudou, mesmo sem
voc ter solicitado esta mudana utilizando o controle remoto (tv2).
Para obter esse tipo de comportamento em C, voc precisaria utilizar um
ponteiro, porm aqui voc no precisou utilizar o * para definir que era um
ponteiro, nem o * para derreferenciar o ponteiro, nem o & para pegar o
endereo da varivel. Portanto, trabalhar com objetos em Java bem mais
fcil do que utilizar ponteiro em C, e o resultado semelhante em termos de
poder de programao.
Voc precisa ter isto em mente ao trabalhar com Java, pois os objetos no
so armazenados em variveis, como acontece com os tipos primitivos como
int, double, char, etc. Isto significa, que ao usar um comando de atribuio
utilizando tipos primitivos, o contedo de uma varivel copiado para a outra
varivel, enquanto ao utilizar um comando de atribuio com tipos objetos,
apenas a referncia ao objeto copiada, mas continua existindo apenas um
nico objeto.
O mtodo main serve tanto para criar a sua aplicao, quanto para testar
uma classe que voc tenha criado. Na figura 3.9 pode ser visto o cdigo
completo da classe Televisao, assumindo que voc tenha criado um
projeto chamado OrientacaoObjetos, se voc criou um projeto com outro nome,
o que deve mudar apenas o nome do pacote em que a classe se encontra e
que est definida na primeira linha do cdigo (linha 1). Observe que em Java,
voc pode criar uma varivel s no momento em que vai utiliz-la, olhe a
criao das varivel tv2 (linha 55).

Informtica | Linguagem de Programao I | Volume | 59


Captura de tela do Netbeans 6.8: Classe Televisao com main (com vrias
linhas suprimidas)
Fonte: Conteudista

60 Informtica | Linguagem de Programao I | Volume |


<Atividades de aprendizagem:

1. Crie uma classe chamada Automovel utilizando a notao UML e coloque


todos os atributos e mtodos que voc acha que ela deve ter (lembre-se que
atributos so caracterstica e mtodos so aes que podem ser executadas).
2. Considerando uma agncia de venda de automveis, crie uma nova classe
chamada Automovel utilizando a notao UML, sendo que agora utilize o
conceito de abstrao para s colocar atributos e mtodos relevantes para o
contexto de compra e venda de automveis.
3. Crie em Java a classe imaginada na questo 2. Lembre-se de criar tambm
dois construtores. O construtor padro e o construtor com a quantidade de
parmetros necessrios para inicializar corretamente todos os atributos de um
objeto Automovel.
4. Crie um main para a classe Automovel acima que:
a) Crie dois objetos (cada um, utilizando um construtor diferente)
b) Execute aes sobre os objetos, utilizando todos os mtodos
implementados
c) Imprima os valores dos atributos, depois deles terem sido alterados
pelos mtodos executados na letra b.
5. Pesquise sobre o coletor de lixo automtico do Java.>

RESUMO
Nesta aula voc entendeu o que orientao a objetos e os conceitos de
classes e objetos, alm de como implementar estes conceitos utilizando a
linguagem de programao Java. Voc viu que vrios objetos similares
podem ser classificados em uma classe. Todo objeto possui caractersticas
que so representadas em Java atravs dos seus atributos e podem realizar
aes que so implementadas em seus mtodos. Para se criar um objeto
voc utiliza os construtores que alm de criar o objeto tambm servem para
inicializar os seus atributos. Na prxima aula voc ir aprofundar mais o seu
conhecimento sobre classes e objetos e tambm aprender novos conceitos
como herana.

Informtica | Linguagem de Programao I | Volume | 61


REFERNCIAS BIBLIOGRFICAS

DEITEL, H. M. DEITEL, P. J. Java: Como Programar. 6 Edio.


Editora Prentice Hall Brasil, 2007.

HORSTMANN, C. S.; CORNELL, G. Core Java, V.1 - Fundamentos.


8 Edio. Editora Prentice Hall Brasil, 2009.

MECENAS, I. J. Netbeans 6.1. 1 Edio. Editora Starlin Alta Consult,


2008.

ORACLE. The Java Tutorials. Disponvel em


http://download.oracle.com/javase/tutorial/. 29/10/2010.

SIERRA, K. Use a Cabea! Java. 2 Edio. Editora Alta Books, 2007.

62 Informtica | Linguagem de Programao I | Volume |

Você também pode gostar