| PionnerDesign |
|
Exercícios: 1- Lembre-se de algum programa em que você trabalhou, cite que tipos de classes seriam criadas se esse programa fosse escrito em Java, que atributos e que métodos estariam associados a esses objetos? Exemplo:
“Eu trabalhei em um programa de contas a pagar e contas a receber. Se
esse programa fosse escrito em Java
eu definiria a classe conta_bancaria.
Os atributos seriam: saldo,
taxa_de_juros,
limite_de_saque,
etc. Minha opção seria por representá-los como variáveis do tipo double
(não se preocupe em usar os tipos da linguagem inda)”. “Dentre
os métodos desta classe estariam funções para efetuar saques, depósitos
e computar juros.
” 1.1.
OBJETOS EM JAVA
Objetos são instâncias de uma classe. Quando um objeto é criado ele precisa ser inicializado, ou seja para uma única classe de nome EstudanteDeGraduacao podemos ter vários objetos durante a execução de um programa. Estudante de graduação Andre; Identificação 940718; Curso Computacao | Estudante de graduação Luiza , Identificação 893249, Curso Medicina... A classe representa somente o molde para a criação dos objetos, estes sim contém informação, veja tópico CLASSES E OBJETOS . O atributo
Identificação tem valor 940718 para a instância (objeto) André da
classe Estudantes de Graduação.
Objetos podem conter objetos, ou seja os atributos de um objeto podem ser objetos, da mesma classe ou não. Objetos podem ser passados pela rede, armazenados em meio físico. Objetos possuem um estado e um comportamento. Métodos podem receber objetos como argumentos, podem declarar objetos como variáveis locais, podem chamar outros métodos. Você pode chamar um método (mandar uma mensagem) para objetos em outras máquinas através de sua rede. Um objeto pode ser visto como um RECORD, só que com uma tabela de funções que podem ser chamadas para ele. Na verdade esta definição não é muito teórica, mas é um bom começo para os programadores que estão acostumados com linguagens procedurais. Na verdade podemos fazer com objetos muito mais do que fazemos com records e procedimentos em Pascal. Em Java, ao contrário de C++ e Modula-3, não existem funções desvinculadas de classes, funções isoladas. Isto implica que todo trecho de código que for escrito deve pertencer a uma classe, mais precisamente deve ser um método desta. O programa mais simples em Java deve conter pelo menos uma classe e um método de início de programa, e é este programa que faremos agora. Esta filosofia é simples e semelhante a adotada em Eiffel, tudo o que se pode fazer com procedimentos, funções isoladas e variáveis de procedimentos, também se pode fazer com classes e métodos. C++ tinha que permitir a criação de funções isoladas para manter a compatibilidade com “C”, mas Java não. Quando neste texto usarmos o termo função no lugar de métodos estaremos mais interessados em enfatizar a parte de implementação em detrimento da interface, você pensar que em Java toda função implementa um método de uma classe. O leitor não
acostumado com o paradigma de orientação a objetos, pode achar estranhas
as afirmações acima, e a pergunta mais comum neste momento é: “Mas
então como você sabe aonde vai começar o programa?”. Antes da
resposta a essa pergunta, leia o primeiro programa exemplo, que é
semelhante ao primeiro programa em C, “Hello World”, presente em [[2]]. 1.1.1.
PROGRAMA HELLO INTERNET!
Este exemplo visa apresentar um programa simples para imprimir uma mensagem na tela, este provavelmente será seu primeiro programa em Java.
Resolvendo os
eventuais problemas: Compile este programa. Você pode decidir por não prosseguir enquanto não compilá-lo. Se você for como eu, e principalmente se tiver digitado tudo ao envés de usar “copy and paste”, é bem provável que ele não compile, se isto ocorrer, leia atentamente o programa. Você não esqueceu o ponto e vírgula? E as chaves? Hellointernet começa com letra maiúscula, e isso faz diferença[1], você foi coerente com a convenção adotada de letras maiúsculas e minúsculas para seus identificadores? Você estava no mesmo diretório de HelloInternet.java quando chamou o compilador? E quando chamou o interpretador? Também? Se ainda não der certo, não se desespere, leia as
explicações passo a passo do programa e depois recorra a um usuário
mais experiente. Normalmente a Java
é muito fácil de se programar, e você
precisará de pouca ajuda, o seu interesse o fará cada vez mais
familiar com esta linguagem. Explicação
passo a passo do programa exemplo:
Comentários em Java seguem a mesma sintaxe de C++, “//”
inicia uma linha de comentário, todo o restante da linha é ignorado.
Existe também um outro tipo de comentário formado por /*
Insira aqui o texto a ser ignorado */ , este tipo de comentário
pode ser intercalado em uma linha de código. Comentários são tratados
como espaços em branco.
class é a
palavra reservada que marca o inicio
da declaração de uma classe. Public
é um especificador, por enquanto guarde public class como o início
da declaração de uma classe. Toda classes serão declaradas assim até o
tópico ENCAPSULAMENTO DE ATRIBUTOS E MÉTODOS COM PACKAGESENCAPSULAMENTO DE CLASSES COM PACKAGES.
É o nome dado a esta classe.
O “abre chaves” marca o início das declarações da classe que são os
atributos e métodos. Esta classe só possui uma declaração, a do método
main,
note que um método, ao contrário
de C++, só pode ser declarado {internamente} a classe a qual pertence,
evitando as confusões sobre “escopo”. Desta forma, todo pedaço de código
em Java
deve pertencer ao abre chaves, fecha chaves da definição de uma classe.
É um qualificador do método que indica que este é
acessível externamente a esta classe (para outras classes que
eventualmente seriam criadas), não se preocupe com ele agora, apenas
declare todos os métodos como public.
Voltaremos a este assunto em 1.5.
ENCAPSULANDO
MÉTODOS E ATRIBUTOS
É um outro qualificador ou “specifier”, que indica
que o método deve ser compartilhado por todos os objetos que são criados
a partir desta classe. Os métodos static podem ser invocados, mesmo quando não
foi criado nenhum objeto para a classe, para tal deve-se seguir a sintaxe:
<NomeClasse>.<NomemetodoStatic>(argumentos);. Retornaremos
a esta explicação mais tarde, por hora você precisa saber que
particularmente o método main
precisa ter essa qualificação porque ele é chamado sem que se crie
nenhum objeto de sua classe (a classe HelloInternet). Curiosidade: Se você gosta de paradoxos e já conhece um pouco de orientação a objetos, pense que se o método main tivesse que ser chamado para um objeto (o que não é o caso) este objeto teria que ter sido criado em algum outro lugar então este lugar seria o início do programa e main[2] deixaria de ter esta finalidade.
A linguagem de programação Eiffel adota uma técnica diferente para
resolver este problema: todo programa começa com a criação de um objeto
(e não mais a chamada automática de
main), este objeto é chamado ROOT, ele pode conter atributos que são
inicializados e um método de inicialização, construtor do objeto, que
é o início do código do programa.
Semelhante ao void
C++ ou C, é o valor de retorno da função, quando a função não
retorna nenhum valor ela retorna void,
uma espécie de valor vazio que tem que ser especificado.
Este é um nome particular de método que indica
para o compilador o início do programa, é dentro deste
método e através das iterações entre os atributos, variáveis e
argumentos visíveis nele que o programa se desenvolve.
É o argumento de main e por consequência do programa todo, ele é um vetor de Strings que é formado quando são passados ou não argumentos através da invocação do nome do programa na linha de comando do sistema operacional, exemplo: Java HelloInternet argumentotexto1 argumentotexto2 No nosso caso, ignoramos a possível passagem de
argumentos via linha de comando, retornaremos a este assunto em 1.3.
“Abre chaves” e “fecha chaves”. Para quem não conhece C ou C++,
eles podem ser entendidos como algo semelhante ao BEGIN
END de Pascal ou Modula-3, ou seja: delimitam um bloco de código.
Os programadores Pascal notarão que variáveis locais dos métodos podem
ser declaradas em qualquer local entre as chaves. Mas por motivos de
clareza do código declararemos todas no início do abre chaves.
Chamada do método println para o atributo out da classe ou objeto System, o argumento é uma constante do tipo String. println assim como writeln de Pascal, imprime a String e posiciona o cursor na linha abaixo , analogamente print não avança linha. Por hora você pode guardar esta linha de código como o comando para imprimir mensagens na tela, onde o argumento que vem entre aspas é a String a ser impressa. O ; “ponto e vírgula” separa operações.
Finalmente o fecha chaves termina com a declaração da classe HelloInternet. Conclusão: Normalmente o volume de conceitos presentes num primeiro programa de uma linguagem orientada a objetos como Java ou Eiffel é grande se comparado com o de um primeiro programa em C ou Pascal. Esses conceitos ainda serão aprofundados e são citados aqui apenas por curiosidade, é normal que você não tenha entendido tudo. De agora em diante não explicaremos mais como compilar os programas. Exercícios: 1- Experimente fazer modificações no programa HelloInternet. Imprima outras mensagens na tela, adicione comentários. [1]Identificadores em letras maiúsculas e minúsculas são diferentes, a linguagem é “case-sensitive”. [2]main, do inglês: Principal.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Retorna | Tutoriais | Avança |