• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

TheGlorious

Java para totós

21 mensagens neste tópico

Boa noite.

Comecei hoje na programação em Java.

Comecei a pesquisar e encontrei um "manual" feito por um professor da Universidade de Aveiro baseados em livros e algumas páginas da internet. Até agora, estou a gostar do "manual", porque estou a entender tudo, mas estou com um problema e uma dúvida.

Ele e mais alguns professores da área desenvolver, penso que, uma classe para facilitar a malta. Isto é, um ficheiro que contém certas funções que fazem com que em vez de escrevermos System.out.println("Hello World"); podemos simplificar para println("Hello World"); entre muitas outras coisas. No entanto, ele inclui esse arquivo .jar da seguinte maneira import p1.*

Só que quando faço isso dá-me o seguinte erro:

File: C:\Documents and Settings\Luís\Ambiente de trabalho\Testes Java\Teste1.java  [line: 1]  <-- Esta é a página onde está o import p1.*

Error: C:\Documents and Settings\Luís\Ambiente de trabalho\Testes Java\Teste.java:1: package p1 does not exist

A dúvida é como faço para "gerar o executável", sei que este não é o termo mais correcto, isto é como crio uma coisa parecida com esta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a tentar adicionar um package que não existe. Das duas uma, ou ele realmente não existe, confirma que tens o jar correcto, ou então não está a ser detectado pelo IDE que estás a usar.

Dependendo do IDE que uses, terás opções diferentes para adicionar o jar que falta, mas todas andaram em torno da opção que te permita adicionar bibliotecas.

Criar um executável, ou neste caso um jar executável, dependerá também das ferramentas que estás a usar, o NetBeans IDE cria o ficheiro automaticamente sempre que compilas o projecto, o Eclipse tem uma opção, algo escondida, para gerar jars, outros terão outras formas.

Se estiveres a usar as ferramentas de linha de comandos, então será mais simples leres a ajuda dessas ferramentas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu comecei por usar o Eclipse, que segundo esse professor é o mais utilizado no mundo. Mas, estava com um problemas ao executar e decidi trabalhar com o que ele usou, o DrJava. O Ficheiro P1.jar existe e está na mesma pasta que o arquivo que criei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu gostava de saber como é que esta gente sabe o que é mais usado no mundo :), pelo que vejo, nenhum dos IDEs Open Source que existem é dos que parece ter mais mercado, mas ignorando isso. Se o ficheiro existe, então terás de dizer ao IDE onde está.

É importante que o IDE saiba onde estão as dependências e que ao criar o Jar, todas elas sejam colocadas nos locais apropriados. Como não conheço esse IDE não te posso ajudar na forma como se configuram as bibliotecas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, sobre esse assunto também não sei, só disse o que ele apresenta na parte dos IDE's.

Em relação às minhas dúvidas/problemas, qual a IDE que me aconselhas? Assim, poderei ter quem me ajude :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aconselhar IDEs é sempre complicado, há cada guerra sobre o assunto, cada IDE tem o seu funboy :D, pessoalmente uso NetBeans IDE, para Java, C/C++, PHP, Groovy e Python, por isso é o único que preciso, basicamente.

Portanto, escolhe um, desde que seja o NetBeans IDE :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para perceber melhor os conceitos básicos eu até aconselhava um simples editor de texto com sintax highlight para java. E quando for para compilares faze-lo na linha de comandos. O Java até das plataformas que não tem muis confuões nesse aspecto e que está própriamente documentada.

mas olha que essa simplificação que estás a fazer não é nenhuma classe que o professor escreveu, é simplesmente uma questão de importares o package que contem essa função.

tipo...

bla.yahoo.diz("yupi!");

é uma chamada ao mesmo método que

import bla.yahoo;

(...)

diz("yupi!");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito bom, este netbeans.

Agora, tentei fazer o meu primeiro programa, que consiste em carregar no botão "Teste" e aparece "Hello World". O problema é que não consigo que apareça no programa, o que não está a aparecer.

Tirei um printscreen para ser mais fácil de explicar:

Eu queria que "Hello World" aparecesse no quadrado 1, mas não estou a conseguir. No entanto, no quadrado 2 aparece, pelo que suponho que o código System.out.println("Hello World"); esteja correcto. Terei de adicionar um input? Como atribuir um valor ao input via código?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hum.... começaste a usar a Swing Application Framework, não recomendaria o uso dessa framework logo de início, se bem que, no que toca a desenhar aplicações gráficas não altera muito, mas podes encontrar alguns exemplos ou ajudas que não se possam aplicar logo a essa framework.

Se quiseres começar aplicações Java, inicialmente cria projectos "Java Application", que é um projecto Java genérico e podes fazer tudo o que fazes no "Java Desktop Application". Só não te serão criadas as classes iniciais que vês agora.

Mas respondendo à tua questão, o quadrado 2 é a janela de output, é a tua consola dentro do IDE, tudo o que enviares para a consola aparece lá. System.out.println é um método que envia dados para a stream de saída padrão, normalmente o ecrã, representado pela consola, assim, tudo o que enviares com esse método irá aparecer na consola e não noutro lado.

Para fazeres aparecer texto na tua interface gráfica, terás de colocar um componente que permita mostrar texto, seja de que forma for, e definires o texto que queres ver.

Adiciona, por exemplo, uma JLabel ao painel, debaixo do botão, e junto ao código onde tens o System.out.println("Hello World");, escreve algo parecido com jlabel1.setText("Hello!!");. jlabel1 será o nome por omissão da primeira label que colocares, deves actualizar o nome para o correcto, se for necessário.

Este código tem de estar depois da chamada ao método initComponents(); que está no construtor da tua frame, como não sei onde estás a fazer o system.out, convém mencionar.

Resumindo, para mostrares coisas em consola, o system.out funciona bem, tal como o system.in para ler dados do utilizador introduzidos na consola, mas para aplicações gráficas precisas de usar componentes, JLabel para mostrar labels, JTextField para ler dados do utilizador, enfim, o número de componentes existente é enorme e podes vê-los todos na paleta do lado direito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Consegui !

Agora estava a tentar fazer umas pequenas contas. O problema é que não sei como pegar os valores.

Com HTML fazemos um form e com PHP enviamos os dados por get ou post e pegamos os valores, da seguinte maneira, $_GET['num1'] ou $_POST['num1'], respectivamente. E no Java?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Métodos GET e POST são coisas exclusivas de HTTP, não de uma linguagem, se usares Java para programar para a web usando HTTP farás de forma similar, mas o que estás a fazer é aplicações desktop, e não aplicações web.

Se queres ler dados introduzidos pelo utilizador, e se estás a usar uma aplicação com interface gráfica, então basta adicionares um componente de input, por exemplo um JTextField, e acederes ao método getText() do componente. Esta é uma sugestão especifica para o componente mencionado, podes ter outras formas de fazer o mesmo.

Mas, vendo a dúvida que apresentaste, parece-me que te escapa a diferença entre o ambiente em que a linguagem é usada e a linguagem em si. Fora da web não há POST nem GET :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu sei disso, foi só para exemplificar.

No entanto, estive a tentar mas sem sucesso.

O código que fiz segue abaixo:

private void calcularMouseClicked(java.awt.event.MouseEvent evt) {                                      
        // TODO add your handling code here:
        int numero1 = getText(num1); // num1 é o meu input
        int numero2 = getText(num2); // num2 é o outro input
        int resultado;
        resultado = numero1+numero2; // devia calcular a soma entre os dois valores introduzidos
        soma.setText(resultado); // devia mostrar o resultado
} 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Java não é um linguagem dinâmica :), não consegues converte uma String num inteiro só com a atribuição :)

Depois, os métodos pertencem a um objecto e não podem ser chamados sem mais nem menos. Além de estarem a ser usados ao contrário :)

supondo que o campo de texto é num1 e num2:

private void calcularMouseClicked(java.awt.event.MouseEvent evt) {                                      
        int numero1 = Integer.parseInt(num1.getText().trim());
        int numero2 = Integer.parseInt(num1.getText().trim());
        int resultado;
        resultado = numero1+numero2;
        soma.setText(String.valueOf(resultado));
}

Explicação:

Se numero1 é um inteiro, então só lhe podes atribuir inteiros, como o jtextfield só aceita Strings, tens de converter uma String no seu valor inteiro, neste caso usamos o método da classe Integer. Esta classe é um wrapper para o tipo primitivo inteiro, e permite "transformar" um tipo primitivo num objecto. Possui também alguns métodos que são úteis para conversões, como é o caso do método parseInt().

Para obtermos o valor que está no campo de texto, invocamos o método getText() do objecto que representa o campo de texto a que queremos aceder, num1.getText(). Assim, passamos o resultado deste método, que é uma String, para dentro do método de parse, que recebe uma String e devolve um inteiro primitivo. Fazemos o mesmo para o segundo campo.

O método trim() é um método de instância da String e remove espaços em branco antes e depois do texto.

Fazer as contas é simples, e o resultado acaba dentro da variável que queremos. Para colocar esse resultado no campo de texto soma, dado que o método setText()recebe uma String, temos de converter o valor inteiro para uma String. Usamos os métodos da classe String para conversão, neste caso o método valueOf().

No teu código, ao fazeres apenas getText() estás a dizer: invoca o método getText() da instância corrente, que no teu caso é, possivelmente, uma JFrame.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só para deixar uma implementação alternativa:

private void calcularMouseClicked(java.awt.event.MouseEvent evt) {                                      
    try {
        soma.setText( String.valueOf( Integer.parseInt(num1.getText().trim()) + Integer.parseInt(num1.getText().trim()) ) );
    } catch(NumberFormatException ex) {
        //O utilizador introduziu um valor que não é um número
        soma.setText("#Erro de conversão");
    }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Começo a pescar disto :)

Não pensei é que fosse preciso tanta coisa, apenas para somar 2 números.

Outra coisa, será que aconselhas algum livro, de preferência em português e FREE :)

Para ver como aceder a um banco de dados, fazer umas queries, mostrar os resultados, bla bla bla :)

Obrigado por toda a tua ajuda ao longa destas perguntas de totós (A)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sendo uma linguagem dinâmica é natural que tenhas de escrever mais texto, no caso do Java até podemos dizer que uma das desvantagens é a necessidade de escrever muito texto, que nem sempre se traduz em código útil. Entre chavetas, parâmetros, espaços, tratamento de excepções, enfim, o desenvolvimento normal, existe muita coisa escrita que noutras linguagens é mais abreviada.

O tamanho médio das minhas classes simples, com comportamento básico, ronda as 400 a 500 linhas de código, se a isso acrescentarmos o facto de que os meus comentários são, em números redondos, 50% do tamanho do código, é fácil ver um ficheiro de código Java com 600 a 650 linhas de código, que nem fazem muito.

Quanto a livros em Português, apenas conheço os da FCA, que embora não sejam os que mais goste, têm sido bastante usados. Pessoalmente consulto o Java Tutorial e para a parte mais teórica usei o Thinking In Java. Ambos podem ser obtidos gratuitamente.

O primeiro, http://java.sun.com/docs/books/tutorial/reallybigindex.html, é criada e mantido pela Sun, e é uma excelente fonte de informação, desde a mais básica à mais avançada, para o segundo, podes obter uma das versões anteriores à que está actualmente à venda, http://mindview.net/Books/TIJ/DownloadSites.

Podes também ir seguindo o tutorial de Java que está na wiki do P@P, embora ainda não completo poderá ajudar-te a introduzir a tecnologia e ir fazendo perguntas por aqui :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, falaste no acesso a BDs e esqueci-me completamente de falar nisso, em Java existe uma tecnologia de acesso a bases de dados relacionais, chamada JDBC, que apesar do que se diz por aí, não significa nada, é apenas um nome e não um acrónimo :), e que permite aceder a bases de dados que usem SQL.

Não é algo complicado de se usar, mas exige que se perceba a ideia por detrás do uso de drivers de acesso, que no caso do JDBC é algo com o qual o programador contacta directamente, enquanto que para outras linguagens/tecnologias, é muitas vezes escondido por trás de alguns sistemas automáticos.

Basicamente tens de ter uma biblioteca, um jar, que faça a tradução da API do JDBC para comandos específicos e formas especificas de aceder à base de dados que estás a usar. Normalmente tens de ir obter o Jar no site oficial da base de dados que estás a usar, adicioná-lo ao teu projecto e ler alguma da documentação para obteres alguns pormenores de ligação que dependem de driver para driver, bem como confirmar qual o nível de suporte do driver.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado Knitter.

Vou ter em conta tudo o que me disseste e ver se em algum tempo fico conhecedor dos conceitos bases desta linguagem.

Agorda, fugindo um pouco ao tema... Se me pedissem para fazer um programa para gestão de stokcs, gestão de empregrados, etc, com recursos a bases de dados, o que deveria usar?

E se a empresa tivesse várias sedes, e quisesse que a informação oferecida na sede A, fosse recebida na sede B e C, tal como funciona um site, que ao actualizarmos actualiza para toda a gente. Também é possível fazer essa espécie de programa? Ou seja, com uma base de dados online?

Não sei se me fiz entender, caso seja preciso tento reformular a minha questão. Isto é só mais para saber quais as linguagens que devo aprender e assim...

Mais uma vez, obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu usaria Java, mas isso sou eu :)

Virtualmente todas as linguagens de programação possuem acesso a bases de dados, pelo que usar uma base de dados instalada num servidor é relativamente simples. Depois, dependerá se queres que a aplicação seja desktop ou web, pelo que a escolha da linguagem/tecnologia estaria dependente dos requisitos existentes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desktop.

Web uso PHP.

Já experimentei ASP, mas não gostei muito :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para uma aplicação desktop, a minha escolha, e repara que é uma escolha completamente pessoal e baseada na minha experiência, não digo que seja a melhor escolha ou a escolha mais indicada, seria usar Java e fazer a aplicação no topo da plataforma NetBeans.

Para aceder aos dados, dependendo da complexidade, ou ficaria por JDBC escrito à mão, escolheria entre Hibernate ou JPA.

Mas como disse, qualquer linguagem serviria para esse projecto, até C#, C++, VB, etc.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora