PROGRAMAÇÃO EM JAVA
50.01.01.94.027.02.0
G o v e r n a d o r G o v e r n a d o rG o v e r n a d o r G o v e r n a d o r G o v e r n a d o r
S e c r e t á r i a d e E s t a d o d e E d u c a ç ã o S e c r e t á r i a d e E s t a d o d e E d u c a ç ã oS e c r e t á r i a d e E s t a d o d e E d u c a ç ã o S e c r e t á r i a d e E s t a d o d e E d u c a ç ã o S e c r e t á r i a d e E s t a d o d e E d u c a ç ã o S e c r e t á r i o A d j u n t o d e E d u c a ç ã o S e c r e t á r i o A d j u n t o d e E d u c a ç ã oS e c r e t á r i o A d j u n t o d e E d u c a ç ã o S e c r e t á r i o A d j u n t o d e E d u c a ç ã o S e c r e t á r i o A d j u n t o d e E d u c a ç ã o C h e f e d e G a b i n e t e
C h e f e d e G a b i n e t eC h e f e d e G a b i n e t e C h e f e d e G a b i n e t e C h e f e d e G a b i n e t e S u b s e c r e t á r i
S u b s e c r e t á r iS u b s e c r e t á r i S u b s e c r e t á r i
S u b s e c r e t á r i aaaaa d e I n f o r m a ç õ e s e T d e I n f o r m a ç õ e s e T d e I n f o r m a ç õ e s e T d e I n f o r m a ç õ e s e Te c n o l o g i a s E d u c a c i o n a i s d e I n f o r m a ç õ e s e Te c n o l o g i a s E d u c a c i o n a i se c n o l o g i a s E d u c a c i o n a i se c n o l o g i a s E d u c a c i o n a i se c n o l o g i a s E d u c a c i o n a i s S u b s e c r e t á r i a d e D e s e n v o l v i m e n t o d a E d u c a ç ã o B á s i c a S u b s e c r e t á r i a d e D e s e n v o l v i m e n t o d a E d u c a ç ã o B á s i c aS u b s e c r e t á r i a d e D e s e n v o l v i m e n t o d a E d u c a ç ã o B á s i c a S u b s e c r e t á r i a d e D e s e n v o l v i m e n t o d a E d u c a ç ã o B á s i c a S u b s e c r e t á r i a d e D e s e n v o l v i m e n t o d a E d u c a ç ã o B á s i c a S u p e r i n t e n d e n t e d e E n s i n o M é d i o e
S u p e r i n t e n d e n t e d e E n s i n o M é d i o eS u p e r i n t e n d e n t e d e E n s i n o M é d i o e S u p e r i n t e n d e n t e d e E n s i n o M é d i o e
S u p e r i n t e n d e n t e d e E n s i n o M é d i o e P r o f i s s i o n a lP r o f i s s i o n a lP r o f i s s i o n a lP r o f i s s i o n a lP r o f i s s i o n a l Aécio Neves da Cunha
Vanessa Guimarães Pinto João Antônio Filocre Saraiva Felipe Estábile Morais Sônia Andère Cruz
Raquel Elizabete de Souza Santos
Joaquim Antônio Gonçalves
COORDENAÇÃO DO PROJETO
Superintendência Educacional Senac Minas SUPERVISÃO PEDAGÓGICA
Flávia Alves de Almeida
RSC - Gerência de Soluções Corporativas Senac Minas ELABORAÇÃO DO CONTEÚDO
Wagner de Azevedo Soares REVISÃO TÉCNICA WR3 EAD Consultoria EDITORAÇÃO
Setor de Material Didático - SEMD/Senac Minas REVISÃO LINGÜÍSTICA/TRATAMENTO METODOLÓGICO Setor de Material Didático - SEMD/Senac Minas PROJETO GRÁFICO
Cézar Alves de Mariano
RAI-Senac Minas BELO HORIZONTE - 2009
APRESENT APRESENT APRESENT APRESENT
APRESENTAÇÃO AÇÃO AÇÃO AÇÃO AÇÃO
Considerando a magnitude do contingente de jovens mineiros submetidos a condições adversas de vida que afetam negativamente sua trajetória escolar, tornou-se imperativo ao Governo de Minas elaborar e implementar políticas públicas especialmente destinadas a eles.
Na educação, o Programa de Educação Profissional de MG (PEP), sintonizado com as vocações econômicas regionais e destinado à preparação dos jovens para enfrentar os desafios do mundo do trabalho, é uma expressão concreta dessas políticas. O pressuposto desse Programa é que os jovens são sujeitos de direitos e portadores de capacidades e potencialidades das quais a sociedade não pode prescindir.
As altas taxas de abandono e evasão e a baixa taxa de conclusão do ensino médio são evidências de que a escola está muito longe de corresponder às expectativas desses jovens. Agregar à sua formação básica a possibilidade de formação profis- sional é uma das medidas indispensáveis para tornar a escola mais alinhada com os seus interesses e necessidades.
A inclusão de cursos de preparação inicial para o trabalho na parte diversificada do currículo do ensino médio é parte desse Programa e constitui um esforço de transformação desse nível de ensino nas escolas estaduais de Minas. Para isso, a SEEMG desenvolveu nove cursos na área de informática, todos com duração entre 40 a 80 horas. São eles: Sistema Operacional Linux, Editoração Eletrônica - Draw e Scribus, Construção de Web Sites - HTML e Java Script, Programação em Java, Introdução a Banco de Dados - MySQL, Gimp, Computação Gráfica - Blender, Projeto Auxiliado por Computadores QCAD, Multimídia na Educação - Impress.
Os cursos serão ministrados pelos próprios professores das escolas estaduais, das várias disciplinas do currículo, especialmente preparados por um programa de capacitação implementado pela SEEMG, o que amplia as suas possibilidades de trabalho na escola e de desenvolvimento profissional.
Programação Orientada a Objetos, 7 Programação Orientada a Objetos, 7 Programação Orientada a Objetos, 7 Programação Orientada a Objetos, 7 Programação Orientada a Objetos, 7
Introdução, 9
Definição de Termos Utilizados nas Linguagens Orientadas a Objetos, 10 Conceitos Básicos, 11
Exercícios, 15 Exercícios, 16 Exercício, 17 Exercício, 19
Linguagem de Programação Java, 23 Linguagem de Programação Java, 23 Linguagem de Programação Java, 23 Linguagem de Programação Java, 23 Linguagem de Programação Java, 23
O que é Java?, 25 A Plataforma Java, 26 Instalando o Java, 27
Documentando a Linguagem, 28
O Eclipse, 29 O Eclipse, 29 O Eclipse, 29 O Eclipse, 29 O Eclipse, 29
Como Executar o Eclipse, 31 Criando um Novo Projeto, 33
Estruturas da Linguagem Ja Estruturas da Linguagem Ja Estruturas da Linguagem Ja Estruturas da Linguagem Ja
Estruturas da Linguagem Javvvvva, 3 a, 3 a, 3 a, 37 a, 3 77 7 7
Comentários no Java, 39
Tipos Básicos de Dados na Linguagem Java, 40
Os Comandos da Linguagem Java, 43 Os Comandos da Linguagem Java, 43 Os Comandos da Linguagem Java, 43 Os Comandos da Linguagem Java, 43 Os Comandos da Linguagem Java, 43
Definição de Métodos, 45 Sobrescrevendo Métodos, 46 Construtores, 46
Subclasses Relacionais, 46 Extensões, 47
A Declaração Import, 47 Exercícios, 49
Entrada de Dados, 50 Exercícios I, 50
Exercícios II, 51 Exercícios III, 52
Estruturas Condicionais ou Lógicas, 54 Exercícios, 55
Usando Atributo Static, Usando Atributo Static, Usando Atributo Static, Usando Atributo Static, Usando Atributo Static, 59 59 59 59 59
Métodos Static, 62 Exercícios I, 62 Exercícios II, 64
TTTTTratando Ex ratando Ex ratando Ex ratando Ex ratando Exceções, 65 ceções, 65 ceções, 65 ceções, 65 ceções, 65
Exercícios, 72
Threads, 75 Threads, 75 Threads, 75 Threads, 75 Threads, 75
Criando Threads, 78
Bibliografia, 85 Bibliografia, 85 Bibliografia, 85 Bibliografia, 85 Bibliografia, 85 Anexo
Anexo Anexo
Anexo
Anexo
PROGR PROGR PROGR
PROGR PROGRAMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JAVVVVVAAAAA AMAÇÃO EM JA
PROGRAMAÇÃO
ORIENTADA
A OBJETOS
P R O G R A M A Ç Ã O E M J A V AJ A V AJ A V AJ A V AJ A V A
11111
Criando Páginas na WEB
INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO INTRODUÇÃO
Estamos vivendo a era da televisão, do computador, do videoclip, da internet, numa época em que a informação supervaloriza a imagem e a rapidez de transmissão.
Para tanto, a informática evoluiu muito nos últimos anos e você, com certeza, acompanhou essa evolução. Como exemplo, podemos citar as antigas filas nos caixas dos bancos, que foram diminuídas devido ao uso do caixa eletrônico ou mesmo das páginas dos bancos na Internet. São poucas as operações bancárias que realmente precisam do caixa do banco. E, muitas vezes, o sistema dessas máquinas utiliza objetos para orientá-lo, ou seja, botões e imagens que fazem a interação entre você e a máquina, facilitando a utilização das diversas funcionalidades disponibilizadas.
A Interface de usuários é a maneira com que estes interagem com um sistema. Ela permite que os usuários manipulem o sistema através de entrada de dados e o sistema produza uma resposta a essa entrada. No caso dos sistemas bancários, tanto na Internet quanto nas máquinas, são utilizados “objetos”, que manipulam a entrada de dados.
Este material irá conduzir você pelo universo das linguagens de programação orientadas a objetos, ou seja, linguagens que tentam aproximar o mundo virtual do mundo real através do uso de objetos utilizados para modelar o funcionamento de programas.
10
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
DEFINIÇÃO DE TERMOS UTILIZADOS NAS LINGUAGENS DEFINIÇÃO DE TERMOS UTILIZADOS NAS LINGUAGENS DEFINIÇÃO DE TERMOS UTILIZADOS NAS LINGUAGENS DEFINIÇÃO DE TERMOS UTILIZADOS NAS LINGUAGENS DEFINIÇÃO DE TERMOS UTILIZADOS NAS LINGUAGENS ORIENT
ORIENT ORIENT ORIENT
ORIENTADAS A OBJETOS ADAS A OBJETOS ADAS A OBJETOS ADAS A OBJETOS ADAS A OBJETOS
Para compreender melhor o que é um objeto, você deve pensar que este é uma entidade do mundo real e que tem uma identidade. Isso significa que dois objetos são distintos, mesmo apresentando exatamente as mesmas características. Por exemplo, duas bolas azuis de 50cm de diâmentro de são dois objetos diferentes com as mesmas características.
Os objetos podem representar entidades concretas como um computador, uma bicicleta;
ou, entidades conceituais como uma estratégia de jogo ou uma senha em um programa.
Apesar de possuírem existência física no mundo real, em termos de programação de computadores, precisam de um elemento de identificação que deve ser única, uniforme e independente das características do objeto. Como por exemplo: b_joao é a identificação de uma das bolas azuis; a outra, podemos identificá-la como b_maria. Esse é um dos mecanismos que permitem a criação de coleções de objetos que são conjuntos de objetos agrupados sob um identificador. Uma coleção de objetos também é um objeto.
Um objeto é composto de atributos ou características e métodos que são o conjunto de funcionalidades que o objeto pode desempenhar. Aqueles objetos com a mesma estru- tura e o mesmo comportamento são agrupados em classes.
A classe é um elemento de linguagem de programação orientada a objetos que descreve as regras de um conjunto de objetos que possuem as mesmas propriedades (ou atribu- tos) e métodos (ou funcionalidades). Um exemplo de classe é a classe dos carros popu- lares. Ela possui as propriedades (marca, modelo, cor, entre outros) e os métodos (ligar, mudar de marcha, acelerar e frear).
Um objeto é a instância de uma classe. Por exemplo, o identificador de um objeto da classe de carros populares é c_maria, significando carro da Maria. Esse objeto possui as seguintes caracteríticas para as propriedades: marca é Fiat, modelo é Uno, cor é preta. Assim, cada instância de uma classe possui seus próprios valores para cada atributo. Porém, dividem os nomes dos atributos e métodos com as outras instâncias da mesma classe, ou seja, com outros objetos. De maneira implícita, cada objeto contém uma referência para sua própria classe.
As linguagens de programação usam termos que não são utilizados no dia-a-dia.
Vamos entender?
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
CONCEITOS BÁSICOS CONCEITOS BÁSICOS CONCEITOS BÁSICOS CONCEITOS BÁSICOS CONCEITOS BÁSICOS
Modelagem Modelagem Modelagem Modelagem Modelagem
A modelagem é a principal parte de todas as atividades que levam à entrega de um bom software. Os modelos são construídos para que se possa entender melhor o sistema que está sendo construído, mostrando, sempre, oportunidades de simplificação ou mesmo de reutilização do código.
Existem várias maneiras de se abordar o modelo quando tratamos de software. As duas maneiras mais comuns são: utilizando a perspectiva de um algorítmo ou utilizando a perspectiva orientada a objetos.
UML (Unified Modeling Language) UML (Unified Modeling Language) UML (Unified Modeling Language) UML (Unified Modeling Language) UML (Unified Modeling Language)
É uma linguagem padronizada de especificação de software. Ela pode ser usada para visualizar, especificar, construir e documentar artefatos de um sistema de software.
Vale lembrar que ela é apenas uma parte do desenvolvimento de um software utilizada para entender os requisitos que o mesmo deve possuir.
A UML possui vários diagramas e são utilizados para visualizar um sistema através de diferentes perspectivas: Requisitos Funcionais, Estrutura Estática e Comportamento Dinâmico.
Um deles é a apresentação gráfica de um conjunto de elementos.
Não é objetivo do curso apresentar a UML. Porém, para exemplificar alguns conceitos, serão utilizados dois tipos de diagramas de estrutura: diagrama de classes e diagrama de objetos. Esses dois diagramas serão explicados após conceituarmos objetos e classes.
Objetos e Classes Objetos e Classes Objetos e Classes Objetos e Classes Objetos e Classes
Uma classe é a descrição de um tipo abstrato de dados, ou seja, um conjunto de obje- tos definidos por sua lista de operações ou métodos aplicáveis a esses objetos e às propriedades dessas operações. Ela descreve as regras pelas quais os objetos se com- portam. Esses objetos são chamados de instâncias da classe.
Uma classe possui uma interface e uma estrutura. A interface descreve como a classe e suas instâncias podem interagir através dos métodos. A estrutura descreve como o dado é particionado em campos na instância.
12
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
Um objeto é uma estrutura run-time [1] composta de zero ou mais valores chamados campos ou propriedades. Cada objeto é a instância de uma classe. Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.
Ao nos depararmos, durante a modegem de criação de um sistema, com a criação de classes corretas, devemos ter o entendimento que não existe a forma correta de decompor um problema em classes. Essa decomposição depende do projetista.
Quanto ao problema de escrever um sistema de cadastro de fornecedores e emprega- dos de uma empresa, ambos podem ser analisados como classes de objetos. Cada for- necedor tem como atributos um nome, um identificador e o tempo de relacionamento com a empresa assim como o empregado. Mas devido à utilização da informação, ou seja, as diferentes operações que identificam cada um dos objetos em um programa, essas duas entidades serão, provavelmente, agrupadas em classes diferentes.
Para todo objeto, existe uma classe a qual ele pertence, ou seja, o atributo implícito do objeto é a sua classe. Essa definição é suportada na maior parte das linguagens de programação orientada a objetos, tais como o Java e outras.
Existem dois tipos de diagramas de objetos que nos ajudam a modelar os programas:
Diagrama de Classes
Em programação, um diagrama de classesdiagrama de classesdiagrama de classesdiagrama de classesdiagrama de classes descreve a estrutura estática de um sistema, mostrando suas classes, os atributos das classes e as rela- ções entre as classes.
Diagrama de Objetos
Esse diagrama mostra uma visão completa ou parcial de estrutura de um sistema modelado, ou seja, o estado dos objetos em um tempo específico.
Atributos
Um atributo representa a definição de um dado (característica) para a instância de uma classe, ou seja, de um objeto. Em outras palavras, é a estrutura de dados que vai representar a classe.
Dentro de um diagrama de classes, os atributos são apresentados no segundo nível da caixa que representa a classe. O nome do atributo pode possuir detalhes opcionais, tais como o tipo de dado assumido e valor default.
[1] É o tempo de execução do sistema.
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
Vamos considerar a classe “carros” com os seguintes atributos: marca, modelo, cor, ano e proprietário. A figura, a seguir, mostra o exemplo de um diagrama de classes de carros:
Os atributos de uma classe possuem um identificador (marca) e um tipo (texto).
Um atributo pode assumir diversos valores durante a execução de um programa. Também pode existir mais de uma instância da classe durante a execução. As figuras abaixo mostram esse diagrama de objetos.
Não se deve confundir identificadores internos de objetos com atributos do mundo real.
Identificadores de objetos são uma conveniência de implementação e não têm nenhum significado para o domínio da aplicação. RG, CNPJ, CHASSI e outros não são identificadores de objetos, mas sim, verdadeiros atributos do mundo real.
Exemplo Exemplo Exemplo Exemplo Exemplo
Carros Carros Carros Carros Carros Marca: texto Modelo: texto Cor: texto Ano: número Proprietário: texto
Carros Carros Carros Carros Carros Marca: Fiat
Modelo: Siena Cor: Prata Ano: 2002
Proprietário: José da Silva
Carros CarrosCarros CarrosCarros Marca: Ford Modelo: Fiesta Cor: Azul Ano: 2006
Proprietário: Maria Souza
14
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
Operações e Métodos
Uma operação pode ser uma função ou transformação aplicada em um objeto. Fechar, Imprimir ou Salvar são operações da classe “arquivo”. Todos os objetos de uma classe compartilham as mesmas operações.
A implementação de uma operação para uma classe é considerada como um método.
Os objetos definem sua interação com o mundo através de métodos públicos. Um método é uma função com uma propriedade especial que acessa diretamente os dados do objeto.
Um método, geralmente, é composto de uma seqüência de operações que resultam em uma ação, um conjunto de parâmetros de entrada que fazem parte da seqüência de operações e, às vezes, um valor de retorno. O número e tipos de argumentos do método influenciam na chamada assinatura do método e no valor do seu retorno. O recomendavél é criar assinaturas coerentes para métodos.
Um dos objetivos dos métodos é criar uma forma de acessar a leitura ou escrita dos dados do tipo private[2] de um objeto ou classe.
Em um diagrama de classes, os métodos são informados na terceira parte da caixa de uma classe. O nome de cada método pode ser seguido por detalhes opcionais tais como o tipo de retorno e a lista de argumentos do método. O retorno do resultado vem logo depois da lista, sendo precedido de dois pontos (:). O retorno de um resultado não deve ser omitido.
Já a lista de argumentos é apresentada entre parênteses após o nome da operação.
Uma lista de argumentos vazia indica que a operação não tem argumentos.
A figura abaixo mostra a classe “carros” com seus atributos e métodos. Exemplificando o que foi dito acima, o método mudar marcha possui como argumentos: a marcha para qual se deve mudar e retorna verdadeiro ou falso, indicando se foi possível a mudança de marcha.
[2] O tipo de atributo private somente pode ser acessado por um método da própria classe.
ligar(chave:verdadeiro/falso): verdadeiro/falso mudarMarcha (marcha: número): verdadeiro/falso acelerar(intensidade:número)
frear(intensidade:número)
ligar(chave:verdadeiro/falso): verdadeiro/falso mudarMarcha (marcha: número): verdadeiro/falso acelerar(intensidade:número)
frear(intensidade:número)
Carro CarroCarro CarroCarro
Marca: texto Modelo: texto Cor: texto Ano: número Proprietário: texto
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS
1. Crie um diagrama, cuja classe é “pessoa”. Coloque os atributos e métodos para essa classe. Não é necessário fazer este exercício no computador.
2. Crie um diagrama de objetos para a classe definida no exercício anterior.
Sobrecarga
Sobrecarga é a utilização do mesmo nome para símbolos ou métodos com operações ou funcionalidades distintas. Geralmente se diferencia os métodos pela sua assinatura.
Um exemplo é a operação salvar que pode ser implementada de formas diferentes na mesma classe. Dependendo do arquivo, podemos alterar o tipo a ser salvo. Todos os métodos realizam a mesma operação (no caso salvar). Porém, cada método será imple- mentado de forma diferente.
Qualquer método possui um objeto-alvo como um argumento implícito. O comporta- mento de um método depende da classe de seu alvo. Como um objeto “sabe” qual sua classe, é possível escolher a implementação correta da operação através da assinatura do método.
Mensagem
Mensagem é uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe. Também pode ser direcionada a uma classe, através de uma invocação a um método estático[3].
Associações e Ligações
Ligações e associações são os meios para estabelecermos relacionamentos entre objetos e classes.
Uma ligação é uma conexão física ou conceitual entre instâncias de objetos. Uma ligação é a instância de uma associação. Um exemplo de ligação está mostrado na próxima figura:
[3] Para utilizar um método estático, a classe não precisa estar instanciada, ou seja, não precisa criar um objeto dessa classe para utilizá-lo.
Cidade Nome: Roma Tem - capital
País Nome: Itália
16
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
Uma associação descreve um grupo de ligações com estrutura e semântica comuns.
Todas as ligações de uma associação interligam objetos da mesma classe. Uma associa- ção discrimina um conjunto de ligações potenciais, ou seja, um grupo de ligações com estrutura comum da mesma forma que uma classe descreve um conjunto de objetos. A forma de expressar uma associação é feita por uma linha, conectando duas classes. A figura, a seguir, mostra um exemplo de associação.
Nomes de associações são usualmente escritos em itálico. O nome da associação pode ser omitido caso um par de classes possua apenas uma única associação cujo sentido é óbvio.
EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS
1. Crie um diagrama de classes com estudante e universidade.
2. Agora, inclua uma associação entre as classes.
Agregação
É o relacionamento “parte do todo” ou “uma parte de” no qual os objetos representam os componentes de alguma coisa e são associados a um objeto que representa a estru- tura inteira.
A próxima figura mostra um exemplo de agregação. Nesse caso, o documento é um conjunto de parágrafos que, por sua vez, é um conjunto de sentenças.
A propriedade mais significativa da agregação é a transitividade, isto é, se A é parte de B e B é parte de C, então, A faz parte de C.
Sentença DOCUMENTO
DOCUMENTODOCUMENTO DOCUMENTO
DOCUMENTO PPPPPARÁGRAFARÁGRAFARÁGRAFARÁGRAFARÁGRAFOOOOO SENTENÇASENTENÇASENTENÇASENTENÇASENTENÇA Cidade
Nome: texto Tem - capital
País Nome: texto
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
Agregação é uma forma de associação com alguma semântica adicional. A agrega- ção é transitiva: se A é parte de B e B é parte de C, então, A é parte de C. Porém, a agregação, é, também, anti-simétrica: se A é parte de B e B não é parte de A.
EXERCÍCIO EXERCÍCIO EXERCÍCIO EXERCÍCIO EXERCÍCIO
Considerando as classes acessóriosacessóriosacessóriosacessóriosacessórios, peças peças peças peças peças e carrocarrocarrocarrocarro, crie um diagrama de clas- ses e inclua a agregação existente entre elas.
Generalização e Herança
A generalização e a herança são maneiras “poderosas” de compartilhar as similaridades entre as classes, ao mesmo tempo em que suas diferenças são preservadas.
A generalização é o processo de transformação de elementos de programas especializados em componentes de software de uso geral e reusáveis.
O resultado desse processo é o relacionamento entre uma classe e uma ou mais versões refinadas (especializadas) dessa classe. A classe mais genérica é chamada de superclasse e cada versão refinada é denominada subclasse.
Os atributos e operações comuns a um grupo de subclasses são incluídos na superclasse e compartilhados por todas as subclasses. Diz-se que cada subclasse herda as cracterísticas de sua superclasse. A generalização, às vezes, é chamada de relaciona- mento e “é um” porque cada instância de uma subclasse é, também, uma instância da superclasse.
Um exemplo de generalização pode ser a classe das figuras gráficas. A classe mais genérica é a Figura que possui os atributos cor, posição central e espessura; e os métodos mover, selecionar, girar e exibir. Podemos ter três subclasses de figuras. São elas:
Dimensão 0 (ex.: ponto): herda, somente, os atributos e métodos da superclasse.
Dimensão 1 (ex.: linha, arco): possui, além dos atributos e métodos herdados, o atributo orientação e o método medir.a\a
Dimensão 2 (ex.: polígono e círculo): possui, além dos atributos e métodos herdados, os atributos orientação e tipo de preenchimento e os métodos medir e preencher.
18
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
A HerançaHerançaHerançaHerançaHerança é um princípio da Programação Orientada a Objetos que permite que as classes compartilhem atributos e operações baseadas em um relacionamento, geral- mente, a generalização. A herança permite a criação de subclasses que herdam atributos e operações ou métodos da classe-pai, ou seja, super-classe ou classe-base. A herança é um conceito aplicado no momento de criação das classes. Ela é usada na intenção de evitar que classes que possuem atributos ou métodos semelhantes sejam repetida- mente criadas.
Através desse mecanismo, uma classe é definida, tomando-se como referência outras e
“adicionando” todas as suas características a ela. Ou seja, os elementos/classes mais específicos incorporam à estrutura e ao comportamento dos elementos mais genéricos.
Assim, as propriedades e métodos da classe-base não precisam ser repetidos na subclasse.
Essa propriedade reduz a repetição de código a um sistema e é uma das principais van- tagens da abordagem de orientação a objetos.
Além de herdar as características e comportamentos da superclasses, a subclasse pode:
acrescentar atributos e métodos específicos;
redefinir a característica de sua classe base. A característica local da subclasse irá refinar e substituir a característica da classe-base.
Generalização e herança são transitivas, isto é, podem ser recursivamente aplicadas a um número arbitrário de níveis. Porém, é recomendável que não haja muitos níveis nessa hieraquia.
A figura, a seguir, mostra o diagrama de classes com herança. A super-classe, nesse caso, é Veículo e todas as subclasses herdam as propriedades e o comportamento dessa classe. É importante ressaltar que Veículo Terrestre é uma super-classe para as classes carro e caminhão.
Veículo
Veículo
Aquático Veículo
Aéreo
Carro Caminhão
Veículo Terrestre
Navio Barco a
remo Avião Helicóptero
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
EXERCÍCIO EXERCÍCIO EXERCÍCIO EXERCÍCIO EXERCÍCIO
Você foi contratado para fazer um sistema de cadastro para uma clínica veteri- nária que atende cachorros, gatos e papagaios. Sabendo que existem caracterís- ticas genéricas e específicas para cada um deles, crie um diagrama de classes, utilizando herança.
Encapsulamento
Encapsulamento em programação orientada a objetos significa separar o programa em partes mais isoladas possível. A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações.
O encapsulamento nada mais é do que o ocultamento de informações. Ele consiste na separação dos aspectos externos de um objeto que podem ser acessados por um outro objeto dos detalhes internos da implementação, ou seja, daquele objeto que fica oculto dos demais objetos.
Uma grande vantagem do encapsulamento é que toda parte encapsulada pode ser modificada sem que os usuários da classe em questão sejam afetados. O encapsu- lamento protege o acesso direto (referência) aos atributos de um objeto fora da classe onde estes foram declarados. Essa proteção consiste em usar modificadores de acesso mais restritivos sobre os atributos definidos na classe. Depois devem ser criados métodos de manipulação de forma indireta dos atributos da classe.
O conceito de encapsulamento não é exclusivo das linguagens baseadas em orientação a objetos. Entretanto, a capacidade de se combinar estrutura de dados e seu comporta- mento em uma única entidade torna-o mais elegante, poderoso e completo do que em linguagens convencionais que separam estruturas de dados e comportamento.
Polimorfismo
O termo Polimorfismo vem do grego poli que significa muitas e morphos que significa formas.
Esse termo é usado para expressar que uma mesma operação de uma classe mais genérica pode se comportar de forma diferente em subclasses. Uma operação, por exemplo, move quando aplicada a uma janela de aplicativo e tem um comportamento diferente de ser aplicada para um elemento dentro de um jogo de xadrez.
O polimorfismo é o processo de usar uma operação ou função de maneiras diferentes para diferentes tipos de entradas. Mais precisamente, o polimorfismo é a habilidade
20
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
de objetos pertencentes a diferentes tipos de interpretar a chamada de métodos de mesmo nome, nome de cada um e de acordo com o comportamento apropriado para o tipo específico. O programador não precisa saber, a priori, o tipo exato do objeto. Assim, o comportamento é “implementado” em tempo de execução.
Outra maneira de definir Polimorfismo é saber o princípio pelo qual duas ou mais classes derivadas de uma mesma super-classe podem utilizar métodos que têm a mesma assinatura (nome, lista de parâmetros e retorno). Além disso, devem ter comportamentos distintos, especializados para cada classe derivada. A decisão sobre qual método deve ser selecionado, considerando o acordo com o tipo da classe derivada, é a tomada em tempo de execução. No caso de polimorfismo, é necessário que os métodos tenham exatamente a mesma identificação, sendo utilizado o mecanismo de redefinição de métodos.
Sendo assim, não é necessário que o programador ou usuário saiba quantas imple- mentações existem para uma operação ou método e sim, qual sua funcionalidade.
Abstração
A abstração é o exame seletivo de determinados aspectos de um problema. O objetivo da abstração é isolar os aspectos que sejam importantes para algum propósito e suprimir os que não forem. Ela busca sempre limitar um problema ao que é importante. Muitas abstrações diferentes da mesma coisa são possíveis, dependendo do propósito para a qual forem feitas.
Quando um programador, utilizando a abordagem de orientação a objetos, faz uso desse conceito, ele se limita ao que o objeto é e faz antes de resolver como ele será implementado.
Assim, a decisão de como implementar ou desenvolver fica adiada para quando houver um melhor entendimento do problema a ser resolvido.
Muitas linguagens de programação modernas suportam o conceito de abstração de dados; porém, o uso de abstração juntamente com polimorfismo e herança, como su- portado em orientação a objetos, é um mecanismo muito mais poderoso, pois o uso apropriado de abstração permite que um mesmo modelo conceitual, orientado a objetos, seja utilizado para todas as fases de desenvolvimento de um sistema, desde sua análise até sua documentação.
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
Compartilhamento
Ao se utilizarem técnicas baseadas em orientação a objetos, existe o compartilhamento de dados em vários níveis.
O princípio da herança promove o compartilhamento de estruturas e métodos comuns entre várias subclasses sem que haja redundância de código. Esse princípio é uma das grandes vantagens da abordagem, utilizando orientação a objetos. Além de economia de código, está também a clareza conceitual de reconhecer que operações diferentes podem ser, na verdade, a mesma. Isso reduz o número de casos distintos que devem ser entendidos e analisados.
O desenvolvimento, utilizando orientação a objetos, permite que a informação dentro de um projeto seja compartilhada e oferece a característica da reusabilidade do código, ou seja, a possibilidade de reaproveitar modelos e códigos em projetos futuros. Isso acontece porque o desenvolvimento, utilizando orientação a objetos provê ferramentas como abstração, encapsulação e herança que permitem elaborar bibliotecas de com- ponentes reutilizáveis.
Porém, não existe fórmula mágica que resolva todos os problemas. Para alcançar reusabilidade, é necessário planejamento e disciplina de forma a pensar em termos genéricos e não voltados, simplesmente, para a aplicação corrente.
Sugestões de desenvolvimento
Para construção de uma aplicação, os passos abaixo podem ser úteis para se obter resultados claros e consistentes:
faça uma análise do problema. Em seguida, comece a construir um modelo de objetos, definindo classes, associações e heranças;
mantenha sempre um modelo simples e evite complicações;
os nomes devem ser escolhidos com cautela. Nomes são importantes dentro do contexto de modelagem. Eles devem ser claros e não deixar ambiguidades.
Esse é um dos pontos mais importantes do trabalho;
não “esconda” apontadores ou outras referências a objetos dentro de obje- tos como atributos. Ao invés disso, modele essas referências como associações.
Isso torna o modelo mais claro e independente da implementação;
22
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
procure evitar associações que envolvam três ou mais classes de objetos.
Várias vezes, esses tipos de associações podem ser divididos em termos de associações binárias, tornando o modelo mais tranqüilo;
a documentação é importante em modelagem. Assim, documente sempre seus modelos.
Agora, você já tem o conhecimento necessário para entrar no universo da linguagem Java, uma linguagem de programação atual que está presente no seu dia-a-dia e você talvez não saiba. Quer alguns exemplos?
Os jogos do celular! É isso mesmo! Normalmente os jogos de celular são desenvolvidos em Java.
Os sites bem elaborados e complexos da net, muitas vezes, são construídos em plata- forma Java.
Esse é o mundo Java, uma linguagem dinâmica e bastante utilizada.
PROGR PROGR PROGR
PROGR PROGRAMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JAVVVVVAAAAA AMAÇÃO EM JA
LINGUAGEM
DE PROGRAMAÇÃO
JAVA
Linguagem de
Linguagem de Linguagem de
Linguagem de Linguagem de
Programação Java
Programação Java Programação Java
Programação Java Programação Java
P R O G R A M A Ç Ã O E M J A V AJ A V AJ A V AJ A V AJ A V A
O QUE É JA O QUE É JA O QUE É JA O QUE É JA O QUE É JAVVVVVA? A? A? A? A?
O Java é uma liguagem de programação, ou seja, regras usadas na criação de programas para computador. A linguagem não possui uma única aplicação como é o caso do Word ou Excel que têm a finalidade de manipular textos e planilhas, envolvendo cálcu- los, respectivamente. A linguagem pode ser aplicada desde um jogo, passando por uma aplicação comercial, ou seja, criar um controle de vendas até mesmo um controle financeiro de um banco.
Ela é uma linguagem de programação orientada a objetos, desenvolvida na década de 90 por James Gosling da empresa Sun MicroSystems.
É, também, um ambiente de desenvolvimento. Isso quer dizer que a linguagem utiliza seus próprios mecanismos para gerar os programas. Esses mecanismos são conhecidos como bibliotecas que ajudam o desenvolvedor na tarefa de criação do programa.
É um ambiente de aplicação. Em outras palavras, podemos dizer que o Java pode ser aplicado em tarefas que vão desde a criação de um jogo para um celular até um site de vendas pela internet.
A idéia inicial dos programadores era criar uma linguagem de programação que pudesse fornecer uma ligação com o C++ de forma mais segura, sem a utilização de ponteiros de memória.
Os primeiros pontos alcançados com a criação desta nova linguagem foram:
criação de uma linguagem totalmente orientada a objetos;
um ambiente de desenvolvimento que possui:
- velocidade no desenvolvimento, eliminando o ciclo de compilar- linkar-carregar-testar;
- portabilidade do código. Ao compilar um programa Java, é gerado um “bytecode ”[4] que é executado por uma máquina virtual (JVM, Java Virtual Machine), ou seja, um interpretador que especifica o formato no nível do sistema operacional. O “bytecode”, ou o programa java compilado, pode rodar em qualquer tipo de sistema operacional desde que tenha instalado uma JVM;
não possui acesso a ponteiros de memória;
fornece dinamismo durante a manutenção de programas.
[4] É uma linguagem intermediária que será interpretada por um outro programa.
26
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
SUMARIO SUMARIO SUMARIO SUMARIO SUMARIO
A PL A PL A PL
A PL A PLAAAAATTTTTAFORMA JA AFORMA JA AFORMA JA AFORMA JA AFORMA JAVVVVVAAAAA
A Plataforma Java é o nome dado a um conjunto de programas relacionados da SUN MicroSystems que permite o desenvolvimento e a execução de programas escritos na linguagem de programação Java.
Edições diferentes da plataforma estão disponíveis, incluindo:
Java ME (Micro Edition) Java ME (Micro Edition) Java ME (Micro Edition) Java ME (Micro Edition)
Java ME (Micro Edition) : especifica diferentes conjuntos de bibliotecas para dis- positivos que são limitados e não suportariam todo o conjunto de bibliotecas Java.
Por exemplo, dispositivos móveis.
Java SE (Standard Edition) Java SE (Standard Edition) Java SE (Standard Edition) Java SE (Standard Edition)
Java SE (Standard Edition) : plataforma com o propósito de uso geral para com- putadores pessoais, servidores e dispositivos similares.
Java EE (Enterprise Edition) Java EE (Enterprise Edition) Java EE (Enterprise Edition) Java EE (Enterprise Edition)
Java EE (Enterprise Edition) : é a plataforma Java SE acrescida de API’s (Application Program Interface) úteis para desenvolver aplicações cliente/servidor em várias ca- madas.
A plataforma Java consiste de vários programas, entre eles:
Compilador Java Compilador Java Compilador Java Compilador Java
Compilador Java: converte o programa para bytecodes;
JVM JVM JVM JVM
JVM : interpreta os bytecodeds;
JJJJJDK (Java Development Kit)DK (Java Development Kit)DK (Java Development Kit)DK (Java Development Kit) : contém a JVM, compilador e bibliotecas.DK (Java Development Kit) É direcionado para os desenvolvedores Java.
JRE (Java RunTime Environment) JRE (Java RunTime Environment) JRE (Java RunTime Environment) JRE (Java RunTime Environment)
JRE (Java RunTime Environment) : utilizado para executar aplicações na plata- forma Java. É composto por bibliotecas e um compilador. Depois da versão 1.2 da JRE, a implementação da JVM da Sun inclui um compilador JIT (Just in Time). Com esse compilador, todo o bytecode de um programa é transformado em instruções nativas e carregado na máquina virtual em uma só operação, permitindo um ganho de desempenho muito grande em comparação com a implementação anterior, em que as instruções em bytecode eram interpretadas uma por vez.
Liberação de Memória Ocupada pelos Objetos
A linguagem Java não segura locais de memória que não estão sendo utilizados, isso porque ela tem uma alocação dinâmica de memória em tempo de execução do progra- ma.
No C e C++ e em outras linguagens, o programa desenvolvido é responsável pela alocação e desalocação da memória.
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
Durante o ciclo de execução do programa, o Java verifica se as variáveis/objetos de memória estão sendo utilizadas. Caso não estejam, o Java libera automaticamente essa área que não está sendo utilizada, através da tecnologia de gerenciamento de memória chamada Garbage Collector.
Obtendo uma V Obtendo uma V Obtendo uma V Obtendo uma V
Obtendo uma Versão Java ersão Java ersão Java ersão Java ersão Java
Para obter uma versão do JDK para Linux, na web, vá à página da Java, digitando http://java.sun.com/javase/
http://java.sun.com/javase/http://java.sun.com/javase/
http://java.sun.com/javase/
http://java.sun.com/javase/ .
Na aba de Downloads, escolha Java SE e clique no botão de download do JDK 6 update 4 (versão mais recente do Java).
Salve o arquivo em algum diretório do seu computador, tal como, por exemplo, no diretório ‘”temp”.
INST INST INST
INST INSTAL AL AL AL ALANDO O JA ANDO O JA ANDO O JA ANDO O JA ANDO O JAVVVVVAAAAA
Após o término do “download” (cópia do arquivo para o computador), inicie a execução do arquivo que você acabou de salvar, abrindo um terminal de comandos na pasta onde o arquivo foi salvo, digitando ./jdk-6u4-linux-i586-rpm.bin. Você pode, também, através do konqueror, no diretório escolhido, e clicar duas vezes sob o arquivo jdk-6u4-linux-i586-rpm.bin. Assim, o instalador do J2SDK será executado.
Você deve ser usuário root para instalar o J2SDK. Em seguida, será exibida uma mensagem, contendo os termos para uso do software. Você deverá concordar com os termos para uso, respondendo yes ou y à pergunta: Do you agree to the above license terms?. O J2SDK será, então, instalado em seu computador.
Importante Importante Importante Importante Importante
Fonte: banco de imagens dos instrutores do SENAC.
28
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
28
No Linux, assim como em outros sistemas operacionais, existe uma variável de ambiente denominada PATH, que armazena os caminhos até os diretórios dos programas usados mais comumente. Para que você possa chamar o compilador Java, a partir de qualquer diretório, o caminho até o JDK deve estar no PATH. Para testar se o PATH contém o diretório do JDK, abra um terminal e digite javac -version. O resultado deverá ser:
javac 1.5.0_01
javac: no source files
Usage: javac <options> <source files>
Se obtiver como resultado a mensagem bash: javac: command not found, pode ser que o sistema ainda não conheça o caminho para o JDK. Você deverá, então, especificar esse caminho manualmente. Para isso, é necessário saber onde o JDK foi instalado.
Em geral, o diretório de instalação é /usr/java/jdk-1.6.0_4. Os compiladores e outras ferramentas estão na pasta bin. Sabendo disso, é possível especificar o caminho, usando o comando export PATH=$PATH:/usr/java/jdk-1.6.0_4/bin.
DOCUMENT DOCUMENT DOCUMENT DOCUMENT
DOCUMENTANDO A LINGU ANDO A LINGU ANDO A LINGU ANDO A LINGU ANDO A LINGUAGEM AGEM AGEM AGEM AGEM
Instale a documentação do J2SE™, pois isso é importante para o seu trabalho. Porém, a Sun não permite a redistribuição dos arquivos de documentação. Assim, você terá que fazer o download deles, diretamente da página da Java, explicada anteriormente.
A página principal contém um link para a página do J2SE. Ao clicar nesse link, abrirá uma página na qual poderá escolher o download do J2SE ou da documentação. Em uma dessas duas páginas, terá a opção de baixar a documentação.
A página da Sun muda freqüentemente. Assim, as informações não são muito precisas.
Caso precise de ajuda para obter a documentação, consulte seu professor.
Agora, você já instalou o ambiente de programação de Java.
PROGR PROGR PROGR
PROGR PROGRAMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JAVVVVVAAAAA AMAÇÃO EM JA
O ECLIPSE
P R O G R A M A Ç Ã O E M J A V AJ A V AJ A V AJ A V AJ A V A
Eclipse é um IDE (Integrated Development Environment), ou seja, um Ambiente Integrado de Programação que você irá utilizar neste curso para desenvolver seus projetos Java. O projeto Eclipse foi iniciado na IBM, que desenvolveu a primeira versão do produto e doou como software livre para a comunidade. Assim, o Eclipse é uma IDE de código aberto.
Vamos usar o Eclipse já que ele é uma IDE que vem com a distribuição do Linux Metasys.
Possui como características marcantes a forte orientação ao desenvolvimento baseado em plug-ins e o amplo suporte ao desenvolvedor com centenas de plug-ins que procu- ram atender as diferentes necessidades de diferentes programadores.
Você poderá fazer o download do Eclipse a partir do site http://www.eclipse.org/
downloads/. Existem diversos outros ambientes de programação integrados para Java.
Se quiser saber sobre esses outros ambientes, veja as referências sobre Java, incluídas no final deste tutorial.
COMO EXECUT COMO EXECUT COMO EXECUT COMO EXECUT
COMO EXECUTAR O ECLIPSE AR O ECLIPSE AR O ECLIPSE AR O ECLIPSE AR O ECLIPSE
Para acessar o eclipse, você deve executar os seguintes passos:
acione o botão de inicialização do Metasys;
clique na opção Acessórios, em seguida, em Ferramentas de Programação;
escolha o aplicativo Eclipse.
Assim que o programa inicializar, a seguinte tela aparecerá:
Fonte: banco de imagens dos instrutores do SENAC.
32
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
Essa tela é para selecionar o diretório que será área de trabalho. Através do botão browse, escolha um diretório. Se ele não existir, o Eclipse irá criar automaticamente.
Após digitar OK, aparecerá a seguinte tela:
Clique no ícone Workbench. Vá para o workbench. Aparecerá a seguinte tela:
Fonte: banco de imagens dos instrutores do SENAC.
Fonte: banco de imagens dos instrutores do SENAC.
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
CRIANDO UM NOVO PROJETO CRIANDO UM NOVO PROJETO CRIANDO UM NOVO PROJETO CRIANDO UM NOVO PROJETO CRIANDO UM NOVO PROJETO
Um projeto é um diretório, ou pasta, onde serão armazenados os arquivos Java que compõem o programa que será desenvolvido. Para criar um novo projeto, inicie a exe- cução do Eclipse.
Para criar um novo projeto, utilize a opção File/New e clique em Java Project, conforme mostra a figura a seguir:
Então, aparecerá a seguinte caixa de diálogo:
Fonte: banco de imagens dos instrutores do SENAC.
Fonte: banco de imagens dos instrutores do SENAC.
34
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
Na caixa de texto Project Name, digite o nome do projeto: Exemplo1. Então, clique na opção Finish que estará habilitada.
Clique, com o botão direito, em Exemplo1. Escolha a opção New e selecione a opção Class.
Fonte: banco de imagens dos instrutores do SENAC.
Fonte: banco de imagens dos instrutores do SENAC.
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
A figura, a seguir, mostra a próxima janela de diálogo. Nela, deverão ser preenchidos os campos Nome, com o texto “ola”. Você deverá clicar no checkbox public static void main (String [] args). Após esses parâmetros preenchidos, clique em Finish.
Em seguida, aparecerá a seguinte janela:
Fonte: banco de imagens dos instrutores do SENAC.
Fonte: banco de imagens dos instrutores do SENAC.
36
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
36
Nessa janela, logo abaixo do comentário //TODO Auto-generated method stub, você irá digitar o seguinte comando:
System.out.println(“Olá Mundo”);
Para salvar o que foi feito, vá ao menu File e clique em save. Para compilar e executar, vá ao menu Run e clique em run.
O resultado será:
Você já estudou como abrir o Eclipse, criar uma classe e escrever frases na tela de console. Agora, você vai aprender sobre a linguagem Java.
Fonte: banco de imagens dos instrutores do SENAC.
PROGR PROGR PROGR
PROGR PROGRAMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JAVVVVVAAAAA AMAÇÃO EM JA
ESTRUTURAS DA
LINGUAGEM
JAVA
P R O G R A M A Ç Ã O E M J A V AJ A V AJ A V AJ A V AJ A V A
COMENTÁRIOS NO JA COMENTÁRIOS NO JA COMENTÁRIOS NO JA COMENTÁRIOS NO JA COMENTÁRIOS NO JAVVVVVAAAAA
Quando um programa é desenvolvido, em qualquer linguagem de programação, é importante que ele seja eficiente e cumpra os requisitos demandados. Mas também é importante que ele seja legível e de fácil manutenção no caso de modificação de algu- ma funcionalidade.
Para que isso aconteça, dois cuidados simples e importantes devem ser lembrados e praticados.
Identação do programa. Dentro da computação, indentação é um termo aplicado ao código fonte de um programa para indicar que os elementos, hierarquicamente dispostos têm o mesmo avanço relativamente à posição (y,0). A identação é realizada através de espaços em branco.
Comentários explicativos no código fonte. Esses comentários auxiliam no mo- mento da manutenção, identificando o código para localização do ponto que deve ser alterado. Além disso, comentários explicam que a classe é utilizada para os mesmos fins que os métodos.
Em Java, são permitidos três tipos de comentários:
// comentário de uma linha
/* comentário de uma ou mais linhas */
/** comentário de documentação */ (Arquivos de docu- mentação)
Comandos ComandosComandos Comandos Comandos
No Java, todos os comandos são finalizados com o sinal de ponto e vírgula (;).
Blocos BlocosBlocos Blocos Blocos
Um bloco tem início e fim representados pelo uso de chaves { };
Identificadores no Java Identificadores no Java Identificadores no Java Identificadores no Java Identificadores no Java
Identificadores são usados para nomes de classes, métodos e variáveis. Um identificador pode ser uma seqüência de letras maiúsculas ou minúsculas, números, underscore ( _ ) ou dólar ( $ ).
Na linguagem Java, um identificador deve sempre ser iniciado com uma letra, underscore ( _ ) ou sinal de dólar ($). Além disso, o Java diferencia maiúsculo e minúsculo, ou seja, é
40
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
case-sensitive. Casa e casa são dois identificadores diferentes.
Exemplos de identificadores válidos para o Java:
identificador
nomeUsuario
nome_usuario
_sistema_var1
$mudanca
TIPOS BÁSICOS DE DADOS NA LINGU TIPOS BÁSICOS DE DADOS NA LINGU TIPOS BÁSICOS DE DADOS NA LINGU TIPOS BÁSICOS DE DADOS NA LINGU
TIPOS BÁSICOS DE DADOS NA LINGUAGEM JA AGEM JA AGEM JA AGEM JAVVVVVAAAAA AGEM JA
Na linguagem Java, existem oito tipos básicos e um tipo especial.
Tipo Lógico de Dados Tipo Lógico de DadosTipo Lógico de Dados Tipo Lógico de Dados Tipo Lógico de Dados
boolean: on e off; true e false ou yes e no.
Tipo de Dados T Tipo de Dados TTipo de Dados T Tipo de Dados T
Tipo de Dados Teeeeextualxtualxtualxtualxtual char e String.
Um caráter simples usa a representação do tipo char. O tipo char representa um único caracter de 16-bit.
O literal do tipo char pode ser representado com o uso do (‘ ‘).
A seguir, a listagem de alguns tipos especiais de caracteres:
‘\n’ à nova linha
‘\r’ à enter
‘\t’ à tabulação
‘\\’ à \
‘\” ’ à “
O tipo String não é primitivo, sendo usado para representar uma seqüência de caracteres.
Tipo de dados Número Inteiro Tipo de dados Número InteiroTipo de dados Número Inteiro Tipo de dados Número Inteiro
Tipo de dados Número Inteiro – byte, short, int e long
Existem quatro tipos de números inteiros. A diferença está no número máximo e mínimo de cada tipo. A tabela, a seguir, mostra os tipos de números inteiros e o intervalo de cada um deles.
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
TTTTTAMANHOAMANHOAMANHOAMANHOAMANHO
8 bits byte - 128 127 16 bits short -32768 32767 32 bits int -2147483648 2,15E+09 64 bits long - 9,2233E+18 9,22E+18
NOME OU TIPO NOME OU TIPO NOME OU TIPO NOME OU TIPO
NOME OU TIPO INTER INTER INTER INTER INTERVVVVVALALALALALOOOOO T
T T T
TAMANHOAMANHOAMANHOAMANHOAMANHO
Tipos de Dados Ponto Flutuante Tipos de Dados Ponto Flutuante Tipos de Dados Ponto Flutuante Tipos de Dados Ponto Flutuante
Tipos de Dados Ponto Flutuante (escrita decimal)
Uma variável do tipo ponto flutante pode ser declarada, usando a palavra float ou double.
• 3.14 um ponto flutuante simples;
• 17.02E21 um valor de ponto flutuante longo;
• 4.168F um valor de ponto flutuante simples;
• 123.4E+206D um valor de ponto flutuante, usando o tipo double.
Palavras Reservadas Palavras Reservadas Palavras Reservadas Palavras Reservadas Palavras Reservadas
Existem algumas palavras em Java que, apesar de atenderem às regras dos identificadores, não podem ser usadas como tal, pois são reservadas pelo compilador para executar algum comando, ação ou modificação. Veja, a seguir, tais palavras:
A b s t r a c t /d o /i m p l e m e n t s /t h r o w /p r i v a t e /B o o l e a n /d o u b l e /i m p o r t / p r o t e c t e d /t h r o w s /e l s e /b r e a k /t r a n s i e n t /i n s t a n c e /of /p u b l i c /i n t /b y t e / extends/return/true/case/ false/short/interface/try/catch/final/long / char /void /static /finally /native /volatile /float /new /super class /while / switch/for/continue/null/synchronized/default/if/this/package
Convenções Utilizadas no Java Convenções Utilizadas no Java Convenções Utilizadas no Java Convenções Utilizadas no Java Convenções Utilizadas no Java
Abaixo está uma lista de convenções adotadas ao programar em Java. Vale apontar que algumas das estruturas abaixo foram detalhadas no início deste material.
Class Class Class Class
Class - Nomes de classes. Podem ser maiúsculas, minúsculas ou misturadas (maiúsculas e mi- núsculas) mas, por convenção, o nome das classes começa, com letra maiúscula.
42
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
42
Interfaces InterfacesInterfaces Interfaces
Interfaces [5] - Nomes de Interfaces suportam nomes iguais aos das classes.
Métodos MétodosMétodos Métodos
Métodos - Nomes de métodos podem ser verbos, podendo misturar entre maiúsculas e minúsculas, sendo, entretanto, a primeira letra maiúscula.
Constantes ConstantesConstantes Constantes
Constantes - Nomes de constantes podem ser maiúsculas, minúsculas, misturadas, separadas com underscores.
V
VVVVariávariávariávariávariáveiseiseiseiseis - Todas as instâncias, classes e variáveis globais suportam maiúsculas e minúsculas.
Controle de Estruturas Controle de EstruturasControle de Estruturas Controle de Estruturas
Controle de Estruturas – É definido o uso de chaves para delimitar um bloco de comandos.
Espaços EspaçosEspaços Espaços
Espaços - Convencionou-se o uso de quatro espaços para identações.
Comentários ComentáriosComentários Comentários
Comentários - Use os comentários para explicar os segmentos de código que não são óbvios.
[5] Uma interface modela um comportamento esperado. Pode-se entendê-la como uma classe que contenha apenas métodos abstratos. Embora uma classe não possa conter mais de uma super classe, a classe pode implementar mais de uma interface
PROGR PROGR PROGR
PROGR PROGRAMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JA AMAÇÃO EM JAVVVVVAAAAA AMAÇÃO EM JA
OS COMANDOS
DA LINGUAGEM
JAVA
P R O G R A M A Ç Ã O E M J A V AJ A V AJ A V AJ A V AJ A V A
Até o momento, foram utilizadas ferramentas de auxílio do Java para montar um pro- grama. Esse processo é semelhante a de um quebra- cabeça, em que as peças são unidas para solucionar um problema. Você fornece as informações necessárias e a linguagem monta o programa.
Agora, o processo será diferente. Você irá escrever termos próprios do Java, denomina- dos comandoscomandoscomandoscomandos para desenvolver os programas que chamamos de linguagem dacomandos linguagem dalinguagem dalinguagem dalinguagem da ferramenta.
ferramenta.ferramenta.
ferramenta.
ferramenta.
Então, vamos lá?
DEFINIÇÃO DE MÉTODOS DEFINIÇÃO DE MÉTODOS DEFINIÇÃO DE MÉTODOS DEFINIÇÃO DE MÉTODOS DEFINIÇÃO DE MÉTODOS
Na linguagem Java, devem-se definir os métodos, usando uma aproximação que é muito similar à usada em outras linguagens, como, por exemplo, C e C++. A forma de declara- ção é feita conforme a seqüência abaixo:
< modifiers > < tipo de retorno > < nome > (< lista de argumentos
>) {
<bloco > }
< modifiers >
< modifiers >< modifiers >
< modifiers >
< modifiers > : segmento que possui os diferentes tipos de modificações, incluindo:
publicpublicpublic: qualquer objeto pode acessar;publicpublic
protectedprotectedprotected: somente pode ser acessado por subclasses;protectedprotected
privateprivateprivate: pode ser acessado somente dentro da classe em que foi declarado.privateprivate
< tipo de retorno >
< tipo de retorno >< tipo de retorno >
< tipo de retorno >
< tipo de retorno > : indica qual o tipo de retorno do método.
< nome >
< nome >< nome >
< nome >
< nome > : nome que identifica o método.
< lista de argumentos >
< lista de argumentos >< lista de argumentos >
< lista de argumentos >
< lista de argumentos > : a todos os valores que serão passados como argumentos.
public int soma (int num1, int num2) {
<Bloco>}
Exemplo
Exemplo Exemplo
Exemplo Exemplo
46
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
SOBRESCREVENDO MÉTODOS SOBRESCREVENDO MÉTODOS SOBRESCREVENDO MÉTODOS SOBRESCREVENDO MÉTODOS SOBRESCREVENDO MÉTODOS
No Java, é possivel utilizar métodos com o mesmo nome, porém, com assinaturas diferentes. Isso permite a reutilização dos nomes dos métodos.
public void print( int i ) public void print( float f ) public void print( String s)
Ao escrever um código para chamar um desses métodos, o método a ser chamado será aquele que coincidir com tipos de dados da lista de parâmetros.
CONSTRUTORES CONSTRUTORES CONSTRUTORES CONSTRUTORES CONSTRUTORES
No Java, a inicialização de um construtor é automática, ou seja, o Java irá inicializar qualquer construtor não inicializado, quando um objeto for instanciado. Porém, existem casos em que se faz necessária a declaração explícita dos construtores. Para escrever um método que chama um construtor, observe os passos:
1ª O nome do método tem que ser igual ao nome da classe.
2ª Não deve retornar um tipo declarado para o método.
public class teste{
public teste(){
} }
SUBCLASSES RELACIONADAS SUBCLASSES RELACIONADAS SUBCLASSES RELACIONADAS SUBCLASSES RELACIONADAS SUBCLASSES RELACIONADAS
Na classe intitulada Pai, devem-se declarar os objetos comuns a todos e, nos subníveis (subclasses), é necessário declarar as seguintes particularidades:
public class Empregado { private String nome;
private Date dataAdmissao;
private Date aniversario;
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
private String cargo;
private int nota_avaliacao;
. . . . }
EXTENSÕES EXTENSÕES EXTENSÕES EXTENSÕES EXTENSÕES
Em linguagens de orientação a objetos, um mecanismo especial é fornecido para per- missão do programa e definição de classes e termos previstos na definição de outras classes. Essa arquitetura, em Java, usa a palavra extendsextendsextendsextendsextends.
public class Empregado { private String nome;
private Date dataAdmissao;
private Date aniversario;
private String cargo;
private int nota_avaliacao;
. . . . }
public class Gerente extends Empregado{
private String departamento;
private Empregado[] subordinados;
}
A DECLARAÇÃO IMPORT A DECLARAÇÃO IMPORT A DECLARAÇÃO IMPORT A DECLARAÇÃO IMPORT A DECLARAÇÃO IMPORT
Uma das características do Java é a declaração de importação de bibliotecas para informar ao compilador onde achar as classes que serão usadas. A declaração de im- portação (import) deve preceder a declaração de todas as classes.
import java.lang.*;
public class Teste {
<bloco>
}
48
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
Objetivo do programa: somar dois números inteiros e exibir o resultado na tela.
Abra o Eclipse. Acione o botão de inicialização do Metasys, clique na opção Acessórios e, em seguida, em Ferramentas de Programação. Escolha o aplicativo Eclipse.
Para criar um novo projeto, utilize a opção do menu: File/ New e clique em Java Project.
Na caixa de texto Project Name, digite o nome do projeto: Exemplo2. Então, clique no botão Finish.
Clique com o botão direito sobre Exemplo2, escolha a opção New e clique em Class.
Na janela de diálogo, preecha os campos Nome, com o texto soma soma soma soma soma e clique no checkbox public static void main (String [] args). Clique no botão Finish.
No editor, você irá digitar os seguintes comandos:
public class soma {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub int a = 5, b = 10,c=0;
c = a + b;
System.out.println(“Programa dee Soma:”);
System.out.println(“ O valor da variável c = “ + c);
}
Para salvar o que foi feito, vá ao menu File e clique em save. Para compilar e executar, vá ao menu Run e clique em run. Ou clique no botão de run, logo abaixo do menu.
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
P R O G R A M A Ç Ã O E M J A V A J A V A J A V A J A V A J A V A
EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS EXERCÍCIOS
Objetivo do programa: realizar a diferença entre dois valores e imprimir os dois valores e o resultado.
Abra o Eclipse. Acione o botão de inicialização do Metasys, clique na opção Acessórios e em Ferramentas de Programação. Em seguida, escolha o aplicativo Eclipse.
Para criar um novo projeto, utilize a opção do menu: File/ New e clique em Java Project.
Na caixa de texto Project Name, digite o nome do projeto: Exemplo2. Então, clique no botão Finish.
Clique com o botão direito sobre Exemplo2, escolha a opção New e clique em Class.
Na janela de diálogo, preecha os campos, com o texto soma e clique no checkbox public static void main (String [] args). Clique no botão Finish.
No editor, você irá digitar os seguintes comandos:
public class Exercicio6 {
public static void main (String arguments []) {
int a = 5, b = 10,c=0;
c = a - b;
System.out.println(“”); // completar o programa com os comandos de impressão.
} }
Para salvar o que foi feito, vá ao menu File e clique em save. Para compilar e executar, vá ao menu Run e clique em run. Ou, se preferir, clique no botão de run, localizado abaixo do menu.
No Java, todos os comandos devem ser finalizados com o sinal de ponto e vírgula (;).
Um bloco tem início e fim representado pelo uso das chaves {}.
Em Suma:
Em Suma: Em Suma:
Em Suma:
Em Suma:
50
F O R M A Ç Ã O I N I C I A L P A R A O T R A B A L H O
ENTRADA DE DADOS ENTRADA DE DADOS ENTRADA DE DADOS ENTRADA DE DADOS ENTRADA DE DADOS
Uma função importante é como fazer a entrada de dados no seu programa, ou seja, como você passará informações para ele. Para isso, utiliza-se a biblioteca javax.swing.JOptionPane. A seguir, usa-se o método showInputDialog. Esse método tem como parâmetro uma String que aparecerá na caixa de entrada e retorna uma String o que foi digitado.
Programa que lê um texto e o escreve na console:
EXERCÍCIOS I EXERCÍCIOS I EXERCÍCIOS I EXERCÍCIOS I EXERCÍCIOS I
Objetivo: a partir de um capital, uma taxa e um período fornecido pelo usuário, o programa irá calcular o montante final do capital.
1. Abra o Eclipse, acione o botão de inicialização do Metasys, clique na opção Acessórios e depois em Ferramentas de Programação e, por fim, escolha o aplicativo Eclipse.
2. Para criar um novo projeto, utilize a opção do menu: File/ New e clique em Java Project.
3. Na caixa de texto Project Name, digite o nome do projeto: Exemplo3. Então, clique no botão Finish.
4. Clique com o botão direito sobre Exemplo3; escolha a opção New e clique em Class.
5. Na janela de diálogo, preencha os campos Nome, com o texto taxa e clique em checkbox public static void main (String [] args). Clique no botão Finish.
6. No editor, você irá digitar os seguintes comandos: