quinta-feira, 27 de outubro de 2011

CURSO DE JAVA BÁSICO MÓDULO 1

CURSO DE JAVA BÁSICO
ESP. ANÁLISE DE SISTEMAS BRUNO.SANTOS
MÓDULO 1


História Rápida da Linguagem


Em 1991, um grupo de engenheiros da Sun Microsystems foi encarregado de criar uma nova linguagem que pudesse ser utilizada em pequenos equipamentos como controles de TV, telefones, fornos, geladeiras, etc. Essa linguagem deveria dar a esses aparelhos a capacidade de se comunicar entre si, para que a casa se comportasse como uma federação. Deveria ainda ser capaz de gerar códigos muito pequenos, que pudessem ser executados em vários aparelhos diferentes, e praticamente infavel.

Os engenheiros escolheram o C++ como ponto de partida. Orientada a objetos, muito poderosa e gerando pequenos programas, parecia a escolha correta. Para solucionar o problema da execução em várias arquiteturas, eles utilizaram o conceito da máquina virtual, onde cada fabricante iria suportar algumas funções básicas que os programas utilizariam.

Até hoje a linguagem resultante deste projeto não é utilizada em aparelhos eletrodomésticos. Ao invés disso, o Java se tornou um das linguagens de programação mais utilizadas no planeta.



Vantagens do Java (Por Que Estudar Essa Linguagem ?)

Na maioria das linguagens de programação, você precisa compilar ou interpretar um programa para que ele seja executado em seu computador. A linguagem Java é diferente, pois seus programas são compilados E interpretados. Com o compilador, você inicialmente transforma seu programa em uma linguagem intermediária, chamada bytecode. Esse código é
independente de plataforma, e é mais tarde interpretado por um interpretador Java. A compilação acontece apenas uma vez; a interpretação acontece todas as vezes que seu programa é executado. A figura abaixo mostra como isso acontece.







Você deve pensar nos bytecodes como instrões de máquina para a Java Virtual Machine (ou JVM). Todos os produtos que conseguem executar programas em Java (como um browser que executa applets) possuem uma cópia da JVM.

Bytecodes Java tornam possível a tecnologia escreva uma vez, execute em qualquer lugar. Você pode compilar seu programa Java em qualquer plataforma que possua um compilador. Os bytecodes gerados podem ser interpretados em qualquer plataforma que possua uma JVM. Veja na figura abaixo:




A Plataforma Java

Por plataforma, entendemos o conjunto de hardware e software no qual um programa executa. Alguns exemplos de plataformas muito usadas são o Windows, o Linux, o MacOS. A plataforma Java é diferente, pois não envolve hardware; ela utiliza a plataforma de hardware das outras.
A plataforma Java tem dois componentes: Java Virtual Machine (Java VM ou JVM)
Java Application Programming Interface (Java API)

A API Java é uma coleção de componentes de software prontos, que incluem desde estruturas para manipulação de arquivos até a construção de  aplicativos gráficos. A API é organizada como um grupo de bibliotecas com classes e interfaces; essas bibliotecas são chamadas de pacotes.



 
A figura abaixo mostra o esquema de funcionamento da plataforma Java:

Erros Comuns de Conceito Sobre Java

Muita gente pensa muita coisa sobre Java, e muita coisa errada. A seguir listamos algumas idéias erradas mais comuns.

Java é uma linguagem fácil de aprender.

Nenhuma linguagem poderosa como o Java é fácil de aprender. É sempre fácil escrever programas do tipo Alo Mundo. Aprender a lidar com if, while e tipos do Java é uma tarefa simples; a parte complexa vem da orientação a objetos e das classes presentes na linguagem. Temos mais de 1.500 classes e interfaces diferentes. A descrição de cada uma cabe em um livro de 600 páginas.

O ambiente Java facilita a programação.

Você vai aprender Java usando o notepad e o prompt do DOS. Não é o melhor ambiente do mundo, especialmente se comparado às linguagens visuais que temos hoje, como o Visual Basic. Em um ambiente de alta produtividade, o uso do Java deve ser muito racional, levando em conta as dificuldades da codificação.

Java será a linguagem universal no futuro.

É possível, em teoria. Mas existem muitos sistemas com códigos nativos que são
perfeitos da maneira que estão hoje, e por isso não devemos mexer. O Java não é recomendado
para solucionar todos os problemas.

Java é apenas mais uma linguagem como qualquer outra.

A linguagem Java, apenas pelo fato de permitir que um programa seja executado em qualquer plataforma, já realizou revolução suficiente. Além disso, a linguagem foi desenhada para se utilizar da rede, e os conceitos de ambiente multitarefa auxiliam o produto a ter poucas comparões no mercado hoje.

Todos os programas Java tem que ser executados dentro de um navegador.

Um dos usos do Java é a confecção de applets. Java também serve para programar aplicativos, servlets, JavaBeans, componentes e uma grande gama de produtos.

Javascript é uma versão simplificada do Java.

Javascript é uma linguagem utilizada em navegadores. Ela foi inventada pela Netscape, e sua sintaxe é semelhante à da linguagem Java. Com exceção do nome, as semelhanças terminam ai.





Meu primeiro programa Java

Como a maioria das linguagens de programação, o fonte de seu programa em Java deve ser criado a partir de um editor de texto que gere arquivos em formato ASCII. É possível utilizar editores como o Word e o Wordpad, mas o texto deve ser salvo sem formatação. O editor ideal é o notepad.

O programa fonte em Java deve ser salvo obrigatoriamente com a extensão .java. Salve no notepad o arquivo utilizando aspas duplas, assim:

AloMundo.java

Vamos então criar uma pasta chamada CURSO (md curso) para que possamos organizar os programas e exercícios que faremos.

Execute o Notepad agora, e vamos digitar nosso primeiro programa em Java. Copie as linhas abaixo:

class AloMundo {
public static void main(String args[]) { System.out.println(Alo Mundo !);

}
}

o se preocupe em entender o código; é apenas um exemplo, e explicaremos esses comandos mais tarde. Salve o arquivo como AloMundo.java (letras maiúsculas e minúsculas são importantes).

A seguir, vamos compilar o programa. A compilação irá gerar os bytecodes. Do prompt do DOS, execute:

javac AloMundo.java

Se não houver erro, depois de alguns segundos você deve ter acesso ao prompt novamente. Para executar o programa,

java AloMundo

Você deve ter recebido como resposta a frase Alo Mundo !. Isso significa que tudo está certo com seu ambiente e você acabou de criar seu primeiro programa em Java.

Objetos


O Que o Objetos ?

Quando temos um problema e queremos resolve-lo usando um computador, necessariamente temos que fazer um programa. Este nada mais é do que uma serie de instruções que indicam ao computador como proceder em determinadas situões. Assim, o grande desafio do programador é estabelecer a associação entre o modelo que o computador usa e o modelo que o problema lhe apresenta.

Isso geralmente leva o programador a modelar o problema apresentado para o modelo utilizado em alguma linguagem. Se a linguagem escolhida for LISP, o problema será traduzido como listas encadeadas. Se for Prolog, o problema será uma cadeia de decisões. Assim, a representação da solução para o problema é característica da linguagem usada, tornando a escrita difícil.

A orientação a objetos tenta solucionar esse problema. A orientação a objetos é geral o suficiente para não impor um modelo de linguagem ao programador, permitindo a ele escolher uma estratégia, representando os aspectos do problema em objetos. Assim, quando se "lê" um programa orientado a objeto, podemos ver não apenas a solução, mas também a descrição do problema em termos do próprio problema. O programador consegue "quebrar" o grande problema em pequenas partes que juntas fornecem a solução.

Olhando à sua volta é possível perceber muitos exemplos de objetos do mundo real: seu cachorro, sua mesa, sua televio, sua bicicleta. Esses objetos tem duas características básicas, que são o estado e o comportamento.

Por exemplo, os cachorros tem nome, cor, ra (estados) e eles balançam o rabo, comem, e latem (comportamento). Uma bicicleta tem 18 marchas, duas rodas, banco
(estado) e elas brecam, aceleram e mudam de marcha (comportamento).

De maneira geral, definimos objetos como um conjunto de variáveis e métodos, que representam seus estados e comportamentos.

Veja a ilustração:





Temos aqui representada (de maneira lógica) a iia que as linguagens orientadas a objeto utilizam. Tudo que um objeto sabe (estados ou variáveis) e tudo que ele podem fazer (comportamento ou métodos) está contido no próprio objeto.

No exemplo da bicicleta, poderemos representar o objeto como no exemplo abaixo:


Temos métodos para mudar a marcha, a cadência das pedaladas, e para brecar. A utilização desses métodos altera os valores dos estados. Ao brecar, a velocidade diminui. Ao mudar a marcha, a cadência é alterada.

Note que os diagramas mostram que as variáveis do objeto estão no centro do mesmo. Os métodos cercam esses valores e os escondem de outros objetos. Deste modo, só é possível ter acesso a essas variáveis através dos métodos. Esse tipo de construção é chamada de encapsulamento, e é a construção ideal para objetos.

A troca de mensagens nos fornece ainda um benefício importante. Como todas as interões o feitas através delas, não importa se o objeto faz parte do mesmo programa; ele pode estar até em outro computador. Existem maneiras de enviar essas mensagens através da rede, permitindo a comunicação remota entre objetos.

Assim, um programa orientado a objetos nada mais é do que um punhado de objetos dizendo um ao outro o que fazer. Quando você quer que um objeto faca alguma coisa, você envia a ele uma "mensagem" informando o que quer fazer, e o objeto faz. Se ele precisar de outro
objeto que o auxiliar a realizar o "trabalho", ele mesmo vai cuidar de enviar mensagem para esse
outro objeto. Deste modo, um programa pode realizar atividades muito complexas baseado apenas em uma mensagem inicial.

Você pode definir vários tipos de objetos diferentes para seu programa. Cada objeto terá suas próprias características, e saberá como interpretar certos pedidos. A parte interessante é que objetos de mesmo tipo se comportam de maneira semelhante. Assim, você pode ter funções genéricas que funcionam para vários tipos diferentes, economizando código.

Vale lembrar que métodos são diferentes de procedimentos e funções das linguagens procedurais, e é muito fácil confundir os conceitos. Para evitar a confuo, temos que entender o que o classes.

Classes

Até agora, comentamos sobre o que é um objeto e como ele se relaciona com outros objetos. Falaremos agora a respeito de classes.

Sua bicicleta é apenas uma das várias que existem. A sua bicicleta específica foi feita por um fabricante, e tem certas características que seguem uma linha ou modelo. Assim, é possível ir em uma loja e comprar várias unidades de bicicletas essencialmente inticas. Mas não podemos dizer que todas são o mesmo objeto, simplesmente por serem parecidas.

Em orientação a objetos, dizemos que um (ou mais) objetos pertencem a uma classe quando eles são muito semelhantes, de acordo com certos padrões. Assim, dependendo da situação, alguém pode dizer que sua bicicleta é um veículo, pois ele anda sobre rodas e carrega uma pessoa. Se seguirmos esse padrão, uma motocicleta também é um veículo, assim como um automóvel ou até um avião (ué, não anda sobre rodas quando decola ou pousa ? Não carrega uma pessoa ?). Na verdade, quando programamos em linguagens orientadas a objetos, antes de tudo nós construimos as classes, os modelos, para depois usá-las na criação de objetos daquele tipo.


Voltando ao nosso exemplo das bicicletas. Quando elas são construídas, os fabricantes tiram vantagem do fato que elas tem as mesmas características, e podem construir várias delas a partir de uma mesma planta. Seria muito custoso fazer um novo projeto para cada bicicleta que eles fossem construir.


Na orientação a objetos, quando programamos, tentamos visualizar os objetos necessários para resolver um problema. Se eu estou criando um programa de controle de estoque, eu vou necessitar de uma classe que represente os ítens que tenho nesse estoque. Outra classe que represente as ordens de compra. E assim por diante.

Nota: A classe é um modelo ou protótipo, que define as variáveis e comportamentos em comum que um certo tipo de objeto específico contém.

No nosso exemplo, depois de criada a classe bicicleta, nos é possível criar a partir dela objetos que serão cópias inticas da classe, mas cada uma delas terá seus próprios estados. O modelo pode fornecer dados que serão compartilhados entre todos os objetos ou permitir que estes tenham dados própiros.

Nota: Objetos derivados de uma classe o chamados instância de classe.

Para tornar o entendimento mais fácil, vamos ver um exemplo mais fácil e prático. Inicialmente vamos pensar em um objeto bem simples, como uma lâmpada.

As lâmpadas podem ter diversos formatos, cores e tamanhos, mas basicamente elas tem apenas uma função, que é iluminar o ambiente. Assim, imagine uma classe lâmpada.

Essa classe pressupõe apenas 2 estados. Um objeto derivado dessa classe pode estar ligado ou desligado. Mas a lâmpada por si só não decide quando vai ligar ou desligar. Quem liga ou desliga esse objeto lâmpada é um interruptor, acionado normalmente por uma pessoa.

Pare resolver esse problema, teremos que definir um objeto baseado na classe lâmpada. Teremos ainda um objeto da classe interruptor e outro da classe pessoa. Pessoa irá enviar uma mensagem ao interruptor que por sua vez irá enviar uma mensagem para a lâmpada.

Uma coisa interessante é que não interessa para a pessoa que está ligando a lâmpada
como o interruptor funciona: importa que quando pressionado, a lâmpada acenda. Esta é uma das grandes vantagens de se utilizar o conceito de objetos em informática. Um objeto é como uma caixa preta: não me importa como ele faz as coisas, apenas o que tenho que fazer para que as coisas acontecam.




Voltando ao exemplo da lâmpada, em Java eu poderia definir uma lâmpada assim:

lampada sala_de_aula = new lampada();

Se eu quiser ligar a lâmpada, é só informar a ela o meu desejo, através de uma mensagem:

sala_de_aula.ligar();




faça.


E a lâmpada vai acender. o me importa como ela fez isso, me importa apenas que ela




Sintaxe

Não basta um objeto estar definido para ser utilizado. Se eu pretendo usar um objeto, eu preciso cria-lo, e atribuir o controle desse objeto a um nome. A criação de objetos em Java é sempre necessária, e é chamada de instanciação (por isso o objeto é chamado de instância).

Quando eu crio o objeto sala_de_aula, eu digo que ele é do tipo lâmpada e que eu quero que ele seja instanciado nesse momento (new lampada()). A partir de agora, sala_de_aula é um objeto do tipo definido e tem como funções tudo que uma lâmpada pode fazer.



Classes, Atributos e Métodos

Uma das grandes vantagens do Java e nosso propósito de estudo é a capacidade de você definir seus próprios objetos. Como já comentado, um objeto contém atributos (dados) e métodos (funções para manipulação dos dados). Esses objetos irão ajudá-lo a resolver o problema apresentado e tornarão seu trabalho mais fácil.
Vamos inicialmente criar um objeto simples, que contenha apenas dados. class meuObjeto
{
String nome;
int idade;
String telefone;
}

Você acabou de definir um objeto chamado meuObjeto. Temos nome, idade e telefone como dados deste objeto.

Mas não basta defini-lo para que ele nos seja útil. Para isso, você deve instanciá-lo,

assim:

meuObjeto amigo = new meuObjeto();

A partir de agora, meu objeto amigo pode ser utilizado para guardar dados. Eu posso incluir dados assim:

amigo.nome = "Joao"; amigo.idade = 33; amigo.telefone = "2223311";



E quando eu precisar dos valores, eu simplesmente os imprimo.

Nota: para facilitar nosso aprendizado, o comando para imprimir um dado é System.out.println, e pode ser utilizado assim:

System.out.println (amigo.nome);

Nenhum comentário:

Postar um comentário

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.