INFORMÁTICA
Governador | Eduardo Campos
Vice-Governador | João Soares Lyra Neto
Secretário de Educação | Nilton Mota
Secretário Executivo de Educação Profissional | Paulo Dutra
Gerente Geral da Educação Profissional | Luciane Pulça
Gestor de Educação a Distância | Marcos Paulo de Assis Castro
Coordenador do Curso | Almir Pires
Professor Conteudista | Márcio Augusto Silva Bueno
Equipe Central de Educação a Distância Andre Fellipe Pinto | Andréia Guerra | Augusto Andrade |
Eber Gomes | George Bento | Jannine Moreno | Marcos Vinícius Clemente Maria de Lourdes Cordeiro Marques | Maria Helena Cavalcanti
Mauro de Pinho Vieira | Pedro Luna
4
Informática | Linguagem de Programação I | Volume |SUMÁRIO
PROGRAMA DA DISCIPLINA ... 5
CONTEÚDO PROGRAMÁTICO ... 6
PALAVRA DO PROFESSOR-AUTOR ... 7
APRESENTAÇÃO DA DISCIPLINA ... 8
1. VISÃO GERAL E CONCEITOS BÁSICOS ... 9
2. VETORES, MATRIZES E STRINGS ... 36
3. ORIENTAÇÃO A OBJETOS ... 46
5
Informática | Linguagem de Programação I | Volume |PROGRAMA DA DISCIPLINA
Ementa
Paradigma Orientado à Objetos. Elementos básicos variáveis e constantes. Operadores e Expressões: Operação de atribuição; Operadores e expressões relacionais e lógicas. Entrada e saída de dados por teclado e vídeo.
Comandos de Controle: Uso de estruturas de decisão e de repetição; Estruturados de Dados: Vetores unidimensionais e multidimensionais; Cadeias de caracteres; Conceitos de Programação Orientada a Objeto. Abstração, Encapsulamento. Classificação. Poliformismo. Herança. Conceitos de Objetos, Classes e troca de Mensagens. Pacotes. Classes Abstratas e Interfaces. Coleções. Exceções. Linguagem orientada a Objeto e Aplicação de Técnicas de Programação Orientada a Objeto.
Objetivo Geral
Capacitar o aluno no desenvolvimento de aplicações utilizando os conceitos de orientação a objetos.
Objetívos Específicos
1.
Capacitação para o desenvolvimento de programas orientados a
objetos capazes de resolver problemas do mundo real
2.
Capacitação no desenvolvimento de aplicações de alta qualidade
utilizando
os
conceitos
de
modularidade,
reusabilidade
e
6
Informática | Linguagem de Programação I | Volume |CONTEÚDO PROGRAMÁTICO
Volume 1
1. Visão geral e conceitos básicos 2. Vetores, matrizes e strings 3. Orientação a objetos
Volume 2
1.
Aprofundando em Java
7
Informática | Linguagem de Programação 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 não também para todo mundo através da fácil divulgação de programas através da Internet.
O aprendizado de um novo paradigma de programação é um desafio para quem já está acostumado com um paradigma antigo, porém muito
recompensante ao ver que facilitará o desenvolvimento de programas bem estruturados.
Aqui você aprenderá a desenvolver programas orientados a objetos, um paradigma de programação que preza pelo reuso de código e possiblidade de trabalhar num alto nível de abstração, permitindo menor tempo de
desenvolvimento e manutenção dos programas.
Aqui você irá utilizar e aprofundar o aprendizado obtido na disciplina de Lógica de Programação, e conseguirá desenvolver programas mais complexos e úteis num ambiente empresarial.
Lembre-se que a única forma de aprender uma linguagem de programação é através da realização dos diversos exercícios propostos, e principalmente que este é apenas o início do seu estudo de desenvolvimento de programas, nunca ache que você já aprendeu tudo e corra sempre atrás de novos conhecimentos.
8
Informática | Linguagem de Programação I | Volume |APRESENTAÇÃO DA DISCIPLINA
Esta disciplina aproveita toda a base adquirida na disciplina de Lógica de Programação na criação de programas e acrescenta os conceitos de orientação a objetos para o desenvolvimento de aplicações modulares, reusáveis e robustas.
Será utilizada a linguagem de programação JAVA que é utilizada em diversas plataformas (desktop, web e móvel), disponível gratuitamente para qualquer desenvolvedor e possuir uma ampla fonte de referência (tanto através de documentação 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 realização de muitos exercícios.
Você irá relembrar diversos conceitos vistos em Lógica de
Programação e aplicá-los dentro de um contexto maior, ao desenvolver uma aplicação desktop.
9
Informática | Linguagem de Programação I | Volume |1. VISÃO GERAL E CONCEITOS BÁSICOS
Objetivos
Ter uma visão geral da tecnologia Java.
Saber o que é necessário 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 funções matemáticas 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 programação Java e a plataforma Java. As seções a seguir detalham estes dois conceitos.
Linguagem de Programação Java
A linguagem de programação Java possui diversas características como ser simples, orientada a objetos, distribuída, concorrente, dinâmica,
arquiteturalmente neutra, portável, alta performance, robusta e segura. Como a sintaxe de Java é derivada do C, então ela se torna bem familiar para muitos programadores, porém diferentemente do C, ela foi criada para
suportar os conceitos de orientação a objetos.
Um grande destaque ao se desenvolver um programa em Java é que ele é portável, isto é, ele pode ser executado em diversas plataformas de hardware (desktop, celular, PDA) e software (Microsoft Windows, Microsoft Windows CE, Unix, Linux, Mac OS).
10
Informática | Linguagem de Programação I | Volume | máquina para uma Máquina Virtual Java (do inglês, Java Virtual Machine –JVM), ao invés de possuir código nativo para uma máquina real.
Ao se executar uma aplicação em Java, é lançada uma JVM que executará o bytecode da aplicação.
Como existem JVM implementadas em muitas plataformas diferentes, o código compilado apenas uma vez, pode ser executado em máquina diferentes sem necessidade de nenhuma adaptação.
Plataforma Java
A plataforma é o ambiente de hardware ou o software em que um programa roda. A maioria das plataformas é uma combinação de sistema operacional com o hardware necessário para a sua execução. 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 versões dela para diversos sistemas operacionais. A API é uma grande coleção de componentes de software já prontos e que provê funcionalidades úteis para o desenvolvedor. Elas são agrupadas em bibliotecas de classes e interfaces relacionadas e algumas delas serão detalhadas neste curso.
11
Informática | Linguagem de Programação I | Volume |A Plataforma Java isolando o programa desenvolvido do hardware Fonte: Conteudista
Ambiente de Desenvolvimento
Para compilar e executar programas em Java é necessário instalar no computador o Java SE Java SE Development Kit (JDK) disponível para download em
http://www.oracle.com/technetwork/java/javase/downloads/index.html. É preciso ter o JDK para desenvolver aplicações em Java, porém existe uma versão para download apenas para a execução de programas em Java chamada JRE. O JRE serve para quem não deseja criar nenhum programa em Java, mas quer executar o programa criado e compilado por um desenvolvedor.
Porém, ao instalar o JDK na sua máquina, só será possível executar os comandos para compilar e executar um programa em Java através do Prompt de Comando, o que não é interessante. Para isto, é melhor também instalar um ambiente de desenvolvimento integrado (Integrated Development Environment – IDE). A IDE que será utilizada neste curso é o Netbeans que está atualmente na versão 6.8.
12
Informática | Linguagem de Programação I | Volume |Saiba Mais:
Você pode consultar documentação do Java e do Netbeans nos seus sites oficiais:
Tutorial: http://download.oracle.com/javase/tutorial/ Documentação do Java:
http://www.oracle.com/technetwork/java/javase/documentation.index.h tml
Documentação 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 opção Novo projeto destacada
13
Informática | Linguagem de Programação I | Volume |3. Selecione Aplicativo Java dentro da categoria Java e clique em próximo (figura 1.3).
Captura de tela do Netbeans 6.8: Caixa de diálogo Novo projeto Fonte: Conteudista
4. Preencha as informações como na figura 1.4: Nome do projeto: Aplicacao Alo Mundo
14
Informática | Linguagem de Programação I | Volume | Captura de tela do Netbeans 6.8: Assistente de Novo projetoFonte: Conteudista
15
Informática | Linguagem de Programação I | Volume |Captura de tela do Netbeans 6.8: exibindo o projeto Aplicacao Alo Mundo
16
Informática | Linguagem de Programação I | Volume |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 código deve estar parecido com o exibido na figura 1.6, observe atentamente o que está em maiúsculo e o que está em minúsculo, pois no Java faz diferença.
Captura de tela do Netbeans 6.8: Código fonte da Aplicacao Alo Mundo Fonte: Conteudista
17
Informática | Linguagem de Programação I | Volume |Captura de tela do Netbeans 6.8: Tela do painel Saída exibindo o log da construção do projeto
Fonte: Conteudista
8. Para executar a aplicação selecione a opção Executar Main Project do menu Executar (você pode observar o resultado da execução no painel Saída como na figura 1.8). A saída da aplicação aparece dentro do Netbeans no painel Saída, e não numa janela do DOS como no Dev-C++.
Figura 1.8: Captura de tela do Netbeans 6.8: Tela do painel Saída exibindo a mensagem Alô Mundo!
Fonte: Conteudista
18
Informática | Linguagem de Programação I | Volume | Detalhamento do Primeiro ProgramaA figura 1.6 mostra o código-fonte do primeiro programa Java que você executou. Agora serão detalhados todos os comandos. Na linha 1 o comando package aplicacaoalomundo; informa o nome do pacote em que a sua aplicação 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 minúsculo e está associado a uma pasta no seu sistema de arquivos. Isto quer dizer que o código-fonte do seu programa está dentro de uma pasta
chamada “aplicacaoalomundo”.
O Java possui um tipo de comentário especial que serve também como documentação e é delimitado por /** e */. Nas linhas de 3 a 7 da figura 1.6 tem uma pequena descrição da aplicação e quem foi o autor deste código fonte.
As outras duas formas de escrever comentários em Java são iguais às que você já conhece do C, através de /* e */ para comentários de várias linhas e através de // para comentários de uma única linha.
A definição 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 definições referentes a esta classe estão contidas dentro das chaves, da mesma forma que utiliza-se as chaves na linguagem de programação C. Além disso, a palavra-chave public indica que esta é uma classe pública. Maiores detalhes sobre modificadores de visibilidade como public, private e protected serão vistos posteriormente neste curso.
Como Java é orientada a objetos, inclusive o main precisa ser criado dentro de uma classe. Por isso, fez-se necessária a criação de uma classe para fazer um programa tão simples como o Alô Mundo. O método main precisa ser criado da seguinte forma: public static void main(String[] args), e ele é equivalente a função 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 saída padrão (normalmente a saída padrão está
19
Informática | Linguagem de Programação I | Volume |<Atividades de aprendizagem
1. Pesquise sobre a eficiência dos programas Java e escreva um pequeno
resumo do que você achou. Você deve procurar por “Compilador Java” e “Compilador Java em tempo de execução” (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 informações em uma linha e o usuário não precisará digitar nada, só observar a saída do seu programa.>
Variáveis
São utilizadas para armazenar os dados do seu programa, a sintaxe para a declaração de variáveis é igual a do C: tipo nomeDaVariavel;. Em Java é possível declarar variável em qualquer local de uma função, não apenas no início, como em C.
A seguir estão alguns exemplos de delcaração de variáveis: int idade;
char estadoCivil; double salario;
Nomes de variáveis são identificadores e devem seguir as seguintes regras e convenções:
Só pode possuir letras, números, cifrão ($) ou sublinhado (_), porém a recomendação é que nunca se utilize o cifrão ($), ficando este reservado apenas para nomes de classes geradas automaticamente. Obrigatoriamente deve começar com uma letra, cifrão ($) ou
sublinhado (_), porém é recomendado que nunca se utilize o cifrão ($) ou o sublinhado (_) para iniciar um identificador.
Tenha nome fácil de compreender. É melhor utilizar um nome maior do que utilizar abreviações criptográficas, por exemplo, estadoCivil é bem mais legível que ec.
20
Informática | Linguagem de Programação I | Volume | As variáveis locais em Java não são inicializadas, porém caso você as utilize sem inicializá-las previamente o compilador do Java irá lhe informar através de um erro de compilação.É possível também inicializar uma variável no momento da sua declaração: int maiorIdade = 0;
Pode-se declarar mais de uma variável com um único comando, desde que todas as variáveis sejam do mesmo tipo, como no exemplo a seguir: char estadoCivil, sexo;
Tipos de Dados
Para se declarar as variáveis é preciso conhecer os tipos de dados existentes em Java. Existem oito tipos de dados primitivos em Java que são:
byte: é um inteiro que ocupa 1 byte e pode ter valores entre -128 e +127 (inclusive). Normalmente só são utilizados quando se deseja economizar memória (como em declaração de grandes vetores). short: é um inteiro que ocupa 2 bytes e pode ter valores entre -32.768 e +32.767 (inclusive). Também só são utilizados quando é preciso economizar memória.
int: é um inteiro que ocupa 4 bytes e pode ter valores entre -2.147.483.648 e 2.147.483.647 (inclusive). É o tipo padrão para valores inteiros e só não são utilizados pelas razões explicitadas anteriormente. Se for necessário utilizar um número inteiro ainda maior, utilize long.
21
Informática | Linguagem de Programação I | Volume |double: é um valor real com precisão dupla ocupando 8 bytes e pode ter valores entre 4,94065645841246544 x 10-324 e 1,79769313486231570 x 10+308. É a escolha padrão para valores reais.
boolean: é um tipo de dado que só suporta dois valores true e false, utilizado armazenar valores lógicos (verdadeiro e falso). É um tipo que não existe em C.
char: é um caractere unicode ocupando 2 bytes. Unicode é um padrão que suporta caracteres de quase todos os idiomas escritos do mundo.
Literais
Literais são representações de valores fixos no código fonte da sua aplicação. Portanto, pode-se utilizar literais para inicializar variáveis ou para compor uma expressão. 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 fácil escrever estes códigos em Java, porém é preciso tomar cuidado com os seguintes detalhes:
1. Todo número real deve ser escrito com um ponto (.) para separar as casas decimais, e não com a vírgula (,) como na língua portuguesa; 2. Qualquer número real é do tipo double, portanto é preciso colocar o f
22
Informática | Linguagem de Programação I | Volume | 3. O tipo boolean, que não existia em C, só aceita os valores true efalse;
4. O tipo char só aceita um caractere e é delimitado por apóstrofos.
Atenção:
É possível misturar os tipos de dados numéricos numa expressão, porém as conversões automática só acontecem do tipo de menor faixa de valores para o tipo com uma maior faixa de valores. Dada a sequência a seguir: byte, short, int, long, float e double; a conversão automática só acontece da esquerda para a direita, então um valor inteiro pode ser convertido automaticamente para double, mas o contrário não é verdadeiro. Observe os seguintes códigos:
// o valor 3 é convertido para 3.0 e então a soma é
realizada
double d = 3 + 34.5; // FUNCIONA
/* o valor 2.75 que é um double não será convertido para
o float 2.75f e assim irá gerar um erro de compilação */
float f = 2.75; // NÃO FUNCIONA – GERA ERRO DE
COMPILAÇÃO>
Operadores
23
Informática | Linguagem de Programação I | Volume |1. Aritméticos: + (soma), - (subtração), * (multiplicação), / (divisão inteira ou real dependendo dos operadores) e % (resto de divisão, utilizada apenas para operadores inteiros);
2. Relacionais: < (menor), <= (menor ou igual), > (maior), >= (maior ou igual);
3. Igualdade: == (igual), != (diferente); 4. Lógicos: && (e), || (ou);
5. Incrementos: ++ (incrementa em um o valor de uma variável), -- (decrementa em um o valor de uma variável);
6. Atribuição: = (modifica o valor de uma variável).
<Atividades de aprendizagem:
Faça um programa em Java que declare variáveis, preencha as variáveis
com o valores a seguir e depois mostre o resultado na tela (realize as
conversões de números em formato português para o formato
americano):
[int] 5 + 3
[int] utilize o operador ++ na variável 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
24
Informática | Linguagem de Programação I | Volume | Estruturas de ControleAs estruturas de controle controlam a execução do seu programa, a primeira é a chamada sequencial, onde um comando é colocado após o outro. Neste caso, ao terminar a execução do primeiro comando, o segundo comando é executado e assim por diante.
Porém existem casos onde é preciso tomar uma decisão e para isto serão utilizados os condicionais e em outros casos é preciso repetir várias vezes um trecho de código através dos comandos de repetição que serão vistos a seguir.
A descrição destes comandos será breve, pois eles são exatamente os mesmos que você já viu em C.
Condicionais
25
Informática | Linguagem de Programação I | Volume |Captura de tela do Netbeans 6.8: Código fonte exibindo if e if-else Fonte: Conteudista
Observe que se a pessoa for do sexo masculino o funcionário irá solicitar o certificado de reservista, porém se for do sexo feminino, o funcionário não irá solicitar um outro documento em contra partida. O título de eleitor só será solicitado se a pessoa estiver numa faixa de idade em que for obrigatório votar.
26
Informática | Linguagem de Programação I | Volume | 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 código desta utilização.: Captura de tela do Netbeans 6.8: Trecho de código exibindo if-else
aninhados Fonte: Conteudista
O último tipo de condicional existente é utilizado quando se tem um conjunto específico de valores para realizar a seleção da ação a ser tomada que é o switch. Veja o código da figura 1.11 para relembrar deste comando
27
Informática | Linguagem de Programação I | Volume |Captura de tela do Netbeans 6.8: Trecho de código exibindo if-else aninhados
Fonte: Conteudista
Atenção:
Os detalhes importante a serem lembrados quando utilizar o switch são os seguintes:
1. Só podem ser utilizados com variáveis inteiras e caracteres, nunca variáveis do tipo float, double e String;
2. É possível combinar mais de uma opção colocando vários case antes dos comandos;
3. Todo fim de case deve possuir um break para não executar os comandos do próximo case em sequência;
28
Informática | Linguagem de Programação I | Volume | RepetiçãoOs comandos de repetição são os já conhecidos for, while e do-while. Eles são equivalentes, pois todos os três repetem um conjunto de comando diversas vezes, porém cada um deles tem situações onde são 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 são utilizados quando não se sabe a quantidade de repetições, pois isto dependerá de uma condição específica, onde a única diferença entre eles é o momento em que o teste da condição é realizado, no while o teste é feito no início de cada repetição, enquanto que no do-while o teste é realizado ao final de cada repetição. Os próximos trechos de código exemplificam estes três usos:
Captura de tela do Netbeans 6.8: Trecho de código exibindo for, while e do-while
29
Informática | Linguagem de Programação I | Volume |Um detalhe a ser observado no código da figura 1.12 é que é possível declarar a variável de controle dentro da definição do for (veja a declaração da variável i que é possível realizar em Java, mas não em C). Veja que o for (linha 43) foi utilizado para repetir a impressão na tela 10 vezes, isto é, já se sabia a princípio o número de repetições desejado. Na utilização do while também repetimos os comandos várias vezes, porém não sabia-se a quantidade de repetições, só se sabia que deveria parar quando a soma ultrapassasse 100. Sugestão: execute este código e veja até que número vai ser impresso na tela do seu computador. O último exemplo, foi o do-while que é muito utilizado para a construção de menus, pois o menu é exibido antes do usuário digitar a opção, portanto primeiro executamos os comandos, para depois testar se o laço será executado novamente.
Comandos de Entrada e Saída
Para interagir com o usuário é necessário exibir mensagens na tela e também solicitar que o usuário digite informações para o correto funcionamento do programa. A impressão de mensagem na tela você já viu como funciona através da utilização do System.out.print (que não inclui um '\n' ao final da mensagem) e System.out.println (que além de imprimir o texto, inclui automaticamente um '\n' ao final da mensagem, e assim “pula” para o início
30
Informática | Linguagem de Programação I | Volume | Captura de tela do Netbeans 6.8: Trecho de código exibindo comandosde entrada e saída Fonte: Conteudista
31
Informática | Linguagem de Programação I | Volume |Atenção:
No Netbeans é preciso dar um clique com o mouse dentro do Painel Saída para que seja possível digitar os valores solicitados pelo programa.
Para o usuário digitar números reais a partir do teclado utiliza-se a forma de digitar números de acordo com as configurações do seu computador. Isto é, num computador em português, o usuário deverá digitar 3,5 (com a vírgula) e não 3.5 (com o ponto), senão acontecerá um erro de execução e o programa será fechado prematuramente. Agora, independentemente das configurações do computador, o
programador precisará sempre digitar números reais utilizando ponto ao escrever o código fonte da aplicação.>
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 diferenças entre o Java e o C. A declaração da variável entrada e a sua associação com a entrada padrão do Java (System.in que é geralmente o teclado) é necessária sempre que você quiser solicitar que o usuário digite valores pelo teclado (linha 8 da figura 1.13). Para ler valores do teclado as funções disponíveis são:
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 bibliotecautildo Java, e para isto existe o comandoimport do Java que é parecido com o #include que você já conhece do C.
32
Informática | Linguagem de Programação I | Volume | este código, se o usuário digitar 100, serão impressos os números de 1 a 15 na tela.Captura de tela do Netbeans 6.8: Programa demonstrando o uso da classe Scanner
Fonte: Conteudista
Funções Matemáticas
33
Informática | Linguagem de Programação I | Volume |34
Informática | Linguagem de Programação I | Volume | Além destas funções disponíveis, você também pode utilizar duas constantes já pré-definidas: Math.PI (que representa o número PI que é 3.14159...) e Math.E (o valor e = 2.71828... que é a base do logarítimo natural).RESUMO
A plataforma Java provê todos os recursos para você executar programas Java. Para desenvolver programas em Java é necessário 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 variáveis, as estruturas de controle e os comandos de entrada e saída do Java. Com isto é possível reescrever a maioria dos programas que você tinha feito em C.
<Atividades de aprendizagem:
1. Faça um programa em Java para testar os diversos tipos de variáveis que existem. Tente utilizar todas as variáveis e todos os operadores que você conhece.
2. Faça um programa que pergunte ao usuário 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 diferença).
3. Faça um programa que peça para o usuário digitar um valor inteiro entre 1 e 100 e imprima a soma de todos os valores entre 1 e o número digitado. Valide a entrada, isto é, utilize o do-while para que o usuário continue digitando valores inteiros enquanto ele informar números fora da faixa especificada.
4. Faça um programa que pergunte a idade e o sexo do usuário e imprima as seguintes mensagens quando apropriadas:
35
Informática | Linguagem de Programação 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 serviço militar (homem maior que 18 anos) e) O banheiro feminino fica à esquerda (para mulheres)
f) O banheiro masculino fica à direita (para homens)
5. Faça um programa que dê ao usuário as seguintes opções através de um menu:
a) Imprimir todos os números pares menores que o número digitado b) Multiplicar dois números reais digitados
c) Dividir dois números inteiros digitados d) Tirar a raiz quadrada de um número real
e) Exibir o cosseno de um ângulo dado em graus (para converter para radianos utilize a seguinte fórmula:
36
Informática | Linguagem de Programação I | Volume |2. VETORES, MATRIZES E STRINGS
Objetivos
Aprender a utilizar vetores e matrizes em Java. Saber manusear Strings em Java.
Vetores
São variáveis que permite o armazenamento de um conjunto de valores do mesmo tipo dispostos em uma única dimensão. As sintaxes para a
declaração de um vetor disponíveis em Java são: tipo[] nomeDaVariavel;
tipo nomeDaVariavel[];
A primeira forma só existe em Java e deve ser utilizada preferencialmente, pois deixa bem claro que o tipo da variável é um vetor, enquanto que a segunda forma é só para se assemelhar com a disponível 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 não existia em C, e é nesse momento que você precisa informar o tamanho do vetor e não é obrigado a ser uma constante, você pode utilizar uma variável que tenha o tamanho desejado. A sintaxe para inicialização é a seguinte: nomeDaVariavel = new tipo[tamanho];
Na figura 2.1 são mostrados exemplos de declarações e inicialização de vetores. Analise atentamente o código desta figura para se acostumar com a forma de declaração e inicialização de vetores em Java. Observe que ao utilizar a forma não recomendada de declaração de vetores em Java é preciso colocar os [ ] após cada vetor (vide linha 9), enquanto que na forma recomendada você só utiliza os [ ] junto com tipo da variável, e não junto com o nome de cada uma das variáveis (vide linha 11).
37
Informática | Linguagem de Programação I | Volume |onde o tamanho do vetor é definido no momento da compilação do programa (isto é, muito antes dele ser executado).
Captura de tela do Netbeans 6.8: Trecho de código com declaração e inicialização de vetores
Fonte: Conteudista
Uma novidade na utilização de vetores é que os vetores armazenam
internamento o seu tamanho, dentro do campo length. Veja o código da figura 2.2, onde o vetor v é declarado (linha 9), inicializado (linha 13) com um valor informado pelo usuário (linha 12) e preenchido com informações digitadas também pelo usuário (linhas 14 a 17).
38
Informática | Linguagem de Programação I | Volume | independentemente se o vetor tem tamanho 10, 100 ou 500, pois cada vetor armazena internamente o seu tamanho.Observe a construção da mensagem para o usuário (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 números com Strings, pois os números são convertidos automaticamente para String, permitindo a sua concatenação utilizando o operador +.
Captura de tela do Netbeans 6.8: Programa exemplificando o uso de um vetor
39
Informática | Linguagem de Programação I | Volume |As linhas 18 a 22 da figura 2.2 imprime todos os valores do vetor v na mesma linha separados por um espaço.
A utilização de vetores depois da sua inicialização se dá da mesma forma que em C, portanto você não vai ter nenhuma dificuldade para utilizar vetores em Java.
Matrizes
É uma variável que permite o armazenamento de um conjunto de valores do mesmo tipo dispostos em duas dimensões. As sintaxes para a declaração de uma matriz disponíveis em Java são:
tipo[][] nomeDaVariavel; tipo nomeDaVariavel[][];
Da mesma forma que em vetores, a primeira forma é a recomendada. E também é preciso inicializar a matriz antes de utilizá-la, porém agora precisamos informar a quantidade de linhas e a quantidade de colunas:
nomeDaVariavel = new
tipo[qtdLinhas][qtdColunas];
40
Informática | Linguagem de Programação I | Volume | Captura de tela do Netbeans 6.8: Programa exemplificando o uso de umamatriz Fonte: Conteudista
Para imprimir uma matriz na tela utiliza-se um trecho de código como o
ds linhas 23 a 29 da figura 2.3.
41
Informática | Linguagem de Programação I | Volume |parâmetro só para poder pular a linha e formatar corretamente a matriz
na tela.
Você pode observar neste exemplo, que agora existem na realidade vários campos length para uma matriz. Veja a seguir como utilizá-los:
nomeDaVariavel.length
utilizado para saber quantas linhas existem nesta matriznomeDaVariavel[indiceLinha].length
utilizado parasaber quantas colunas existem nesta linha específica indexada pelo
indiceLinha
,
pois em Java é possível ter matrizes que possuamcolunas diferentes para cada linha
nomeDaVariavel[0].length
utilizado para saber quantascolunas a matriz tem, considerando que todas as linhas possuem a mesma quantidade de colunas da primeira linha (observe a utilização do índice zero que representa a primeira linha da matriz)
Strings
Em Java existe um tipo específico para string que não existia em C. Lá era necessário utilizar um vetor de caracteres para representar uma string. Aqui é possível utilizar o tipo String.
A figura 2.4 mostra algumas utilizações de variáveis do tipo String. Observe que o tipo String começa com uma letra maiúscula e é utilizado para criar objetos do tipo String. É possível formatar uma mensagem e, ao invés de imprimí-la na tela utilizando o
System.out.printf
, armazená-lo numa
String utilizando o método
format
de
String
, utilizando as mesmas regras
42
Informática | Linguagem de Programação I | Volume | Captura de tela do Netbeans 6.8: Programa exemplificando o uso StringsFonte: Conteudista
43
Informática | Linguagem de Programação I | Volume |44
Informática | Linguagem de Programação I | Volume | Captura de tela do Netbeans 6.8: Programa exemplificando funções deStrings Fonte: Conteudista
Analise o código da figura 2.5 com a saída que aparece na tela ao executar este programa (figura 2.6).
Captura de tela do Netbeans 6.8: Saída na tela referente à execução do programa da figura 2.5
45
Informática | Linguagem de Programação 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 utilização em C. Descobriu um tipo novo que é o String que serve para armazenar cadeias de caracteres, assim como aprendeu várias funções para utilizar com Strings em Java.
<Atividades de aprendizagem:
1. Crie um programa em Java que solicite que o usuário digite um valor inteiro entre 3 e 7 para definir o tamanho de dois vetores. Solicite que o usuário digite valores para preencher estes dois vetores e imprima na tela:
a) O conteúdo de um novo vetor que contém a soma dos dois primeiros vetores (ex: a primeira posição deste vetor possui a soma dos valores contidos na primeira posição do vetor 1 e da primeira posição do vetor 2)
b) O conteúdo de um novo vetor que contém a multiplicação dos dois primeiros vetores
2. Crie um programa em Java peça para o usuário preencher numa tabela (matriz em Java) as notas dos 50 alunos de um curso de inglês. 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 média das notas dos 10 alunos de cada turma, e além da média geral de todos os alunos do curso.
3. Crie um programa em Java que solicite que o usuário digite seu nome completo, e então imprima:
a) As 5 primeiras letras do nome completo b) A posição do primeiro espaço em branco
46
Informática | Linguagem de Programação I | Volume |3. ORIENTAÇÃO A OBJETOS
Objetivos
Ter uma visão geral de orientação a objetos.
Compreender o que é uma classe, um objeto, método e construtor. Saber como implementar os conceitos de orientação a objetos em Java.
Objetos
A programação 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 televisão (um terceiro objeto).
Você interage com os objetos a partir das funcionalidades disponíveis, por exemplo, ao interagir com a televisão 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 direção, etc. Na realidade, você pode imaginar quais objetos você possui e como você interage com eles diariamente.
Como este conceito é tão simples e todo mundo já possui este conhecimento inerentemente, busca-se fazer esta analogia ao tentar realizar a construção de programas utilizando linguagens de programação orientadas a objetos. Quando você pensa em objetos, você imagina um objeto específico, como por exemplo, a televisão, existem milhares de televisões no mundo, mas você não pensou nestas outras televisões, você pensou na que você possui. Em orientação a objetos, cada objeto possui internamente um identificador único, pois mesmo que existam muitas televisões iguais a sua, elas não são as mesmas, pois cada uma possui uma identidade própria apesar de ter as mesmas características físicas.
47
Informática | Linguagem de Programação I | Volume |Neste contexto, cada um dos livros, dos alunos e dos funcionários é um objeto armazenado no sistema de controle de empréstimos de uma biblioteca. Livros podem ser emprestados, então quando um aluno deseja realizar o empréstimo de um livro, no sistema é criado um relacionamento entre este
aluno e este livro específico, e assim manter no sistema um “espelho” da
realidade, onde o aluno realmente está com o livro em seu poder.
Classes, Atributos e Métodos
Existem diversos modelos e marcas de televisões no mundo, cada uma possui características diferentes, porém é intuitivo para os seres humanos classificarem os objetos de acordo com as suas características. Por exemplo, existem televisões bem diferentes (móveis inteiros, CRT, LCD, plasma, de
14”, de 29”, de 50”), mas todas elas são classificadas como televisão.
Portanto, quando um conjunto de objetos possuem um mesmo conjunto de características, eles são reunidos em uma classe, mesmo que os valores específicos sejam diferentes para cada objeto.
Na classe são definidas as características que todos os objetos daquela classe possuem. Por exemplo, televisões possuem: marca, modelo e tamanho. Portanto, todas as televisões (objetos) possuem estas características, apesar de cada uma ter uma marca, um modelo e um tamanho diferente.
Pense em quais seriam as características dos carros, faça uma lista com todas as características que definem os carros que você conseguir pensar, pode deixar a lista tão longa quanto você consiga para exercitar um pouco deste conceito de modelar classes.
Além das características, todos os objetos do tipo televisão possuem a mesma funcionalidade, isto é, ligar / desligar / aumentar e diminuir volume / trocar o canal. Estas funcionalidades também são especificadas na definição da classe televisão.
Estes dois conceitos em Java possuem nomenclaturas próprias. A
característica de um objeto também é chamada de atributo, enquanto que as funcionalidades estão disponíveis através de métodos (parecidos com as funções que você aprendeu em C).
48
Informática | Linguagem de Programação I | Volume | modificadorDeVisibilidade class NomeDaClasse {// código da classe aqui...
}
Os modificadores de visibilidade disponíveis para classe são:
public – torna a definição pública, isto é, disponível em todos os contextos;
privado no pacote (por padrão, quando não é informado nada) – torna a definição 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 disponíveis para atributos e métodos são os mesmos para classe (public e privado no pacote), além dos dois seguintes:
private – torna a definição privada, isto é, só está disponível internamente na classe atual;
protected – torna a definição protegida, isto é, está disponível dentro do pacote atual e dentro de qualquer subclasse da classe atual. Você pode perceber que criar um atributo é bem parecido com a declaração de uma variável, porém a declaração de um atributo possui o modificador de visibilidade que as variáveis não têm, e o local da declaração é diferente. As variáveis são declaradas dentro dos métodos (funções), enquanto que os atributos são declarados dentro das classes.
Por fim, para especificar as funcionalidades disponíveis nos objetos é preciso criar métodos (muito parecida com a definição de uma função em C)
49
Informática | Linguagem de Programação I | Volume |modificadorDeVisibilidade tipo nomeDoMetodo(parâmetros) { // código do método
}
Para facilitar o entendimento do código escrito em Java, por convenção todo nome de classe começa com letras em maiúsculas, enquanto que tanto atributos, quanto métodos, devem iniciar com letras em minúsculas. Ainda neste conceito de deixar o código legível, normalmente utiliza-se substantivos para dar nomes aos atributos e verbos para dar nomes aos métodos.
A figura 3.1 apresenta uma definição da classe televisão que possui os atributos marca, modelo, ligada, canal e volume e os métodos ligar, desligar, aumentarVolume, diminuirVolume e trocarCanal.
50
Informática | Linguagem de Programação I | Volume | Alguns detalhes da definição da classeTelevisao
(
figura 3.1) precisam ser esclarecidos. Primeiramente, todos os atributos desta classe foram definidos comoprivate
(linhas de 4 a 6), e isto foi feito para simular o que
acontece no mundo real, pois o usuário não tem acesso aos componentes internos de um objeto, o usuário só tem acesso às funcionalidadesdisponíveis, e por isto, todos os métodos utilizaram o modificador de
visibilidade
public
(linhas 8, 12, 16, 20 e 24). Por exemplo, você aperta o
botão de ligar da televisão (um método disponível), porém você não abre atelevisão e faz uma “ligação direta” para que a televisão se ligue, por isso, o
atributo booleano ligada não está acessível diretamente, mas podemos modificá-lo indiretamente, quando apertamos o botão de ligar ou de desligar. Todos os métodos foram implementados da forma mais simples possível, portanto vários testes que precisam ser feitos não estão aí neste código, como por exemplo, você não pode mudar de canal com a televisão desligada, nem pode diminuir o volume para um valor negativo.
É possível ver que a marca e o modelo (linha 5 da figura 3.1) não estão sendo utilizados para nada, pois não existem métodos que manuseiam estes
atributos, e como são
private
,
nenhum outro código pode acessá-los. Mas, isto será resolvido em breve, nas próximas seções.Você pode criar um projeto novo projeto utilizando o passo a passo descrito na seção 1.3, porém dê o nome de
OrientacaoObjetos
ao seu projeto eorientacaoaobjetos.
Testes o nome da sua classe principal.51
Informática | Linguagem de Programação I | Volume |Captura de tela do Netbeans 6.8: Como criar uma nova Classe Java Fonte: Conteudista
52
Informática | Linguagem de Programação I | Volume | Notação UML para uma classeFonte: Conteudista
53
Informática | Linguagem de Programação I | Volume |Classe Televisao na notação UML Fonte: Conteudista
Resumindo, um conjunto de objetos com características semelhantes podem ser classificados em classes. Classes possuem atributos (que são
informações que os objetos conhecem e normalmente estão escondidas dos usuários e de outros objetos) e métodos (são as ações que os objetos podem executar e estão disponíveis aos usuários e aos outros objetos).
Abstração
É um conceito importantíssimo ao se trabalhar com orientação a objetos, pois é necessário abstrair (esconder, desprezar) os detalhes irrelevantes na hora da definição de uma classe.
54
Informática | Linguagem de Programação I | Volume | O que você precisa saber é qual o contexto que você quer utilizar a classe Televisao e apenas o que será necessário para a sua aplicação. Por exemplo, existem televisões que possuem um disco rígido interno para gravar aprogramação (como se fosse um Vídeo Cassete), mas como isto era
irrelevante para o nosso problema, esta característica 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, endereço, telefone e data de nascimento. Porém, na hora que a receita federal estava fazendo a especificação de pessoa para o programa do imposto de renda, muito mais atributos foram observados, como salário, imposto pago, imposto devido, quantidade de dependentes, imóveis e veículos, etc.
Mesmo você pensando que a receita federal não utilizou este conceito ao criar o programa de imposto de renda, tenha certeza que a abstração também foi utilizada neste caso, pois informações como cor do cabelo, cor dos olhos, altura, peso e preferência sexual não foram incluídas. E estes atributos poderiam muito bem ser utilizados no contexto de um site de relacionamentos pela Internet.
Portanto, antes de começar a pensar na definição de qualquer classe, entenda em que contexto ela será utilizada, e quais as informações essenciais serão necessárias.
Construtores
Eles são chamados na hora da criação do objeto, servem para criar e
inicializar os objetos. Podem ser vistos como um tipo especial de método que não tem tipo de retorno e possui o mesmo nome da classe.
O código do construtor deve ter comandos para inicializar todos os atributos do objeto sendo criado. Voltando ao exemplo da televisão, quando um objeto do tipo
Televisao
for criado é preciso que este objeto tenha uma marca e um modelo.55
Informática | Linguagem de Programação I | Volume |modificadorDeVisibilidade
nomeDaClasse(parâmetros) {
// código 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 classeTelevisao(figura 3.5), foram recebidos dois parâmetros (linha 11), porém 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 três atributos recebem valores que você como programador define (linhas 14 a 16), pois como a televisão é criada desligada o atributo ligada recebeu false, o menor canal disponível é o canal 2 e por isso foi inicializado desta forma, e finalmente o volume
inicialmente está no seu valor mínimo que é o zero.
Uma classe pode possuir vários construtores e o que vai diferenciar um construtor do outro é a quantidade de parâmetros e/ou o tipo dos parâmetros. Este conceito se chama de sobrecarga e funciona também para métodos, isto é, podemos ter dois métodos com o mesmo nome, e o que diferencia um do outro é a sua assinatura.
56
Informática | Linguagem de Programação I | Volume | Captura de tela do Netbeans 6.8: O construtor padrão da classeTelevisao Fonte: Conteudista
Como não se sabe a marca e o modelo deste objeto, então ele foi inicializado com uma String vazia (linhas 23 e 24 da figura 3.6). Se por acaso, você não escrevesse algum atributo, o Java inicializa os atributos automaticamente com valores padrões: zero (para números 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 código):
public Televisao() { }
Teria o mesmo efeito que o construtor da figura 3.7:
Captura de tela do Netbeans 6.8: Inicialização padrão de todos os atributos da classe Televisao
57
Informática | Linguagem de Programação I | Volume |Comparando as diferenças entre os construtores das figuras 3.6 e 3.7 é possível ver que os atributos ligada e volume seriam inicializados da mesma forma. Porém no construtor da figura 3.7 o atributo canal seria inicializado com zero que é um canal inexistente, e ao invés 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 minúsculo, enquanto que o de C é todo em
maiúsculo.Em Java, o construtor que não recebe nenhum parâmetro se chama
construtor padrão e é criado automaticamente pelo Java em todas as classes que você não tenha definido nenhum construtor. Porém, se você cria um construtor em Java, o construtor padrão não é criado automaticamente. Portanto, se você também quiser o construtor padrão, é 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 prática de programação, é importante inicializar todos os atributos, mesmo você sabendo que o Java já inicializa com os valores padrões, só para ficar bem claro para qualquer pessoa que estiver tentando entender o seu código.
Utilizando Objetos
Para se criar objetos em Java, utiliza-se a palavra-chave
new
seguido de um
construtor e normalmente atribuímos este objeto a uma variável criada. Veja a criação de dois objetos do tipo televisão dentro de ummain
(figura 3.8).
58
Informática | Linguagem de Programação I | Volume | Foram criadas duas televisões (figura 3.8), a primeira televisão foi criada utilizando o construtor padrão (linha 48), que inicializou a televisão com uma marca e um modelo vazios, enquanto que a segunda televisão foi inicializada como sendo da marca MinhaMarca e o do modelo MeuModelo (linha 49). Todas as variáveis do tipo objeto na realidade funcionam como um ponteiro de C, pois elas não armazenam o objeto, armazenam uma referência ao objeto. Porém em Java não existe manipulação de ponteiros, o que deixa a vida mais fácil para o programador.O operador new funciona como o malloc de C, que reserva uma área da memória para o objeto desejado. Porém, em Java você nunca irá precisar utilizar um comando como o free, pois a máquina virtual de Java tem um coletor de lixo automático, isto é, o Java verifica se tem alguma área de memória que você alocou utilizandonewque não tem mais nenhuma referência a ela, e então o coletor de lixo libera a memória.
Por exemplo, imagine que existisse o seguinte código depois daqueles dois construtores:
tv1 = tv2;
O que acontece é o seguinte, a variável tv1 passa a também referenciar o mesmo objeto que a variável tv2 referencia, que é a televisão MinhaMarca MeuModelo, e a televisão sem marca e modelo agora não tem mais nenhuma variável referenciando ela, portanto, você não pode mais acessá-la. O coletor de lixo percebendo isto, destroi esta televisão e libera a memória para você poder utilizá-la posteriormente.
Neste exemplo, como as duas variáveis agora estão referenciando o mesmo objeto, tanto faz, utilizar a variável tv1 quando a variável tv2 para aumentar o volume da televisão, ou mudar o seu canal. Preste atenção que só existe uma televisão, mas duas formas de acessá-la, você pode pensar nisto como sendo dois controles remotos e uma única televisão. Então, independentemente de qual o controle remoto que você utilizar para enviar o comando para aumentar o volume, a televisão terá o seu volume alterado.
59
Informática | Linguagem de Programação I | Volume |saber em que canal está, você vai perceber que o canal mudou, mesmo sem você ter solicitado esta mudança utilizando o controle remoto (tv2).
Para obter esse tipo de comportamento em C, você precisaria utilizar um ponteiro, porém aqui você não precisou utilizar o * para definir que era um ponteiro, nem o * para derreferenciar o ponteiro, nem o & para pegar o endereço da variável. Portanto, trabalhar com objetos em Java é bem mais fácil do que utilizar ponteiro em C, e o resultado é semelhante em termos de poder de programação.
Você precisa ter isto em mente ao trabalhar com Java, pois os objetos não são armazenados em variáveis, como acontece com os tipos primitivos como int, double, char
,
etc. Isto significa, que ao usar um comando de atribuição utilizando tipos primitivos, o conteúdo de uma variável é copiado para a outra variável, enquanto ao utilizar um comando de atribuição com tipos objetos, apenas a referência ao objeto é copiada, mas continua existindo apenas um único objeto.O método main
serve tanto para criar a sua aplicação, quanto para testar
uma classe que você tenha criado. Na figura 3.9pode ser visto o código completo da classeTelevisao,
assumindo que você tenha criado um projeto chamado OrientacaoObjetos, se você criou um projeto com outro nome,
60
Informática | Linguagem de Programação I | Volume | Captura de tela do Netbeans 6.8: Classe Televisao com main (com várias61
Informática | Linguagem de Programação I | Volume |<Atividades de aprendizagem:
1. Crie uma classe chamada Automovel utilizando a notação UML e coloque todos os atributos e métodos que você acha que ela deve ter (lembre-se que atributos são característica e métodos são ações que podem ser executadas). 2. Considerando uma agência de venda de automóveis, crie uma nova classe chamada Automovel utilizando a notação UML, sendo que agora utilize o conceito de abstração para só colocar atributos e métodos relevantes para o contexto de compra e venda de automóveis.
3. Crie em Java a classe imaginada na questão 2. Lembre-se de criar também dois construtores. O construtor padrão e o construtor com a quantidade de parâmetros necessários 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 ações sobre os objetos, utilizando todos os métodos implementados
c) Imprima os valores dos atributos, depois deles terem sido alterados pelos métodos executados na letra b.
5. Pesquise sobre o coletor de lixo automático do Java.>
RESUMO
62
Informática | Linguagem de Programação I | Volume |REFERÊNCIAS BIBLIOGRÁFICAS
DEITEL, H. M. DEITEL, P. J. Java: Como Programar. 6ª Edição. Editora Prentice Hall Brasil, 2007.
HORSTMANN, C. S.; CORNELL, G. Core Java, V.1 - Fundamentos. 8ª Edição. Editora Prentice Hall Brasil, 2009.
MECENAS, I. J. Netbeans 6.1. 1ª Edição. Editora Starlin Alta Consult, 2008.
ORACLE. The Java Tutorials. Disponível em
http://download.oracle.com/javase/tutorial/. 29/10/2010.