Executando arquivos jar em modo texto por um terminal

Started by Triplo X, 22 de September , 2008, 04:08:59 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Triplo X

Olá.

Este tópico visa mostrar aos "novatos" na programação java, como executar suas aplicações java diretamente no  DoS (Windows) ou no  terminal (Linux - não testei mas acho que dá certo).

Não estou falando em abrir as aplicações gráficas pelo terminal, pois isso é feito pelo comando: java -jar nome_do_arquivo.jar.
Estou me referindo em mostrar sua aplicação em funcionamento dentro do terminal.

Bem, é claro que os mais experientes sabem disso, mas a minha intensão aqui é fazer com que aplicações em modo texto não sejam apenas para estudo e sim levadas a sério também.

Vocês novatos sabem que quando estão a desenvolver uma aplicação java, a IDE, no meu caso o BlueJ, abre as aplicações em modo texto em uma janela do terminal. Mas se pensam que ao criar o arquivos jar, as aplicações em modo texto serão executadas automaticamente, estão enganados. :P

O procedimento é bem simples.

Vamos ao nosso primeiro exemplo, o tão famoso HelloWord.java

HelloWord.java

Quotepublic class HelloWord {
    public static void main(String[] args) {
         System.out.print("Ola, esta eh uma aplicacao em modo texto");
   }
 }


No BlueJ:



Para executar no terminal faça assim:

Entre no diretódio onde está o jar de sua aplicação em modo texto com o comando cd + o diretório onde a aplicação se encontra, depois utilize aquele
comando que eu mostrei, para abrir o jar: java -jar nome_do_arquivo.jar



Mas pra trabalhar com aplicações desta maneira, você terá que "ralar" muito, pois não é nada agradável e não interage com o usuário. Mas sempre existirão pessoas que até uma planilha do Excel já resolve o caso :P

Vamos aos exemplos que podem ser usados além dos estudos:
______________________________________________________

Leitura de dados do usuário

resposta.java

Quoteimport java.util.Scanner;

public class resposta {
   public static void main(String[] args) {
       System.out.print("Digite uma mensagem: ");
      Scanner scn = new Scanner(System.in);
      String msg = scn.nextLine();
      System.out.print("Sua mensagem foi: "+ msg);
   }
 }

No BlueJ:




No terminal:







Setar notas e calcular médias

Avaliacao.java

Quote// interface

public interface Avaliacao {
   void setAvaliacao(double avaliacao);
   double getResultado();
   String getConceito();
}


Universidade.java

Quotepublic class Universidade implements Avaliacao {
 
    private int codigoUniversidade;
    private double pontos = 0;
   
    public Universidade(int c) {
        codigoUniversidade = c;
    }
   
    public int getCodigo() {
        return codigoUniversidade;
    }
    public void setAvaliacao(double avaliacao) {
        pontos = pontos + avaliacao;
    }
   
    public double getResultado() {
        return pontos;
    }
    public String getConceito() {
        if (pontos > 1000)
           return "Ensino de alta qualidade!";
        else if (pontos > 700)
           return "Ensino de media qualidade!";
        else
           return "Ensino de baixa qualidade!";
        }
    }


ProgramaTV.java

Quotepublic class ProgramaTV implements Avaliacao {

    private String titulo;
    private double maiorAudiencia = 0;
   
    public ProgramaTV(String t) {
        titulo = t;
    }
   
    public String getTitulo() {
        return titulo;
    }
   
    public void setAvaliacao(double avaliacao) {
        if (avaliacao > maiorAudiencia)
          maiorAudiencia = avaliacao;
        }
       
        public double getResultado() {
            return maiorAudiencia;
        }
       
        public String getConceito() {
            if (maiorAudiencia > 5000)
              return "Otima audiencia!";
            else if (maiorAudiencia > 3000)
              return "Boa audiencia!";
            else
              return "Audiencia regular!";
            }
        }

Aluno2.java

Quotepublic class Aluno2 implements Avaliacao {
   
   private String nome;
   private int contador = 0;
   private double soma = 0;
   
   public Aluno2(String _nome) {
       nome = _nome;
    }
   
    public String getNome() {
        return nome;
    }
   
    public void setAvaliacao(double avaliacao) {
        soma = soma + avaliacao;
        contador++;
    }
    public double getResultado() {
        return soma / contador;
    }
    public String getConceito() {
        if (soma / contador >= 6)
           return "Aprovado";
           else
           return "Reprovado";
        }
}


ExemploMain.java

Quotepublic class ExemploMain {

   public static void main(String[] args) {
       Aluno2 aluno2 = new Aluno2("Joao");
       Universidade uni = new Universidade(1423);
       ProgramaTV prog = new ProgramaTV("Jornal do Dia");
       
       aluno2.setAvaliacao(6);
       aluno2.setAvaliacao(7);
       aluno2.setAvaliacao(5);
       
       uni.setAvaliacao(300);
       uni.setAvaliacao(250);
       uni.setAvaliacao(200);
       
       prog.setAvaliacao(800);
       prog.setAvaliacao(950);
       prog.setAvaliacao(1000);
       
       System.out.println(aluno2.getNome()+ " tem media = " +aluno2.getResultado());
       System.out.println(aluno2.getNome()+ " obteve conceito " +aluno2.getResultado());
       
       System.out.println(uni.getCodigo()+ " obteve pontos = " +uni.getResultado());
       System.out.println(uni.getCodigo()+ " tem conceito = " +uni.getConceito());
       
       System.out.println(prog.getTitulo()+ " tem audiencia = " +prog.getResultado());
       System.out.println(prog.getTitulo()+ " tem conceito = " +prog.getConceito());
    }
}


No Bluej:




No terminal:





Árvore Binária

ABB.java

Quotepackage ABB;

public class ABB {
/* Inicio da Classe NoABB */
public class NoABB {
// definicao dos atributos da classe NoABB
private Comparable dado;
private NoABB esq,dir;
//Construtor da Classe NoABB
public NoABB(Comparable novoDado) {
this.dado = novoDado;
this.esq = null;
this.dir = null;
}
public void insere(Comparable novoDado){
if (novoDado.compareTo(dado) > 0){
// Se novo dado > dado do no
if (dir == null) // verifica se tem filho a direita
dir = new NoABB(novoDado); // insere novo a direita
else
dir.insere(novoDado); // chama insere no ramo direito

} else if (novoDado.compareTo(dado) < 0){
//se novo dado < dado do no
if (esq == null) // verifica se tem filho a esquerda
esq = new NoABB(novoDado); // insere novo a esq
else
esq.insere(novoDado); // chama insere no ramo esq
}
}
// localiza o no com maior valor neste ramo da arvore
protected NoABB Maior(){
if (dir == null)
return this;
NoABB maior = dir;
while (maior.dir != null)
maior = maior.dir;
return maior;
}
} // Fim da Classe NoABB
/* continuação da Classe ABB */
// definicao do atributo da classe ABB
protected NoABB raiz;
// construtor da classe ABB
public ABB(){
this.raiz = null;
}
// Busca um dado e retorna a referencia ao no ou null
public NoABB busca(Comparable dado){
NoABB raizSubArv = raiz;
NoABB retorno = null;
while (raizSubArv != null && retorno == null) {
if (dado == raizSubArv.dado)
retorno = raizSubArv;
else {
if (dado.compareTo(raizSubArv.dado) < 0)
raizSubArv = raizSubArv.esq;
else
raizSubArv = raizSubArv.dir;
}
}
return retorno;
}
// localiza o nó pai do dado recebido e retorna sua referencia
protected NoABB buscaPai(Comparable dado){
NoABB raizSubArv = raiz;
NoABB retorno = null;
while (raizSubArv != null && retorno == null) {
if (raizSubArv.esq != null){
if (dado == raizSubArv.esq.dado)
retorno = raizSubArv;
}
if (raizSubArv.dir != null){
if (dado == raizSubArv.dir.dado)
retorno = raizSubArv;
}
if (retorno == null){
if (dado.compareTo(raizSubArv.dado) < 0)
raizSubArv = raizSubArv.esq;
else
raizSubArv = raizSubArv.dir;
}
}
return retorno;
}
/*
* Retorna 0 se não tiver filhos.
* 1 se só tiver o filho da direita
* 2 se só tiver o filho da esquerda
* 3 se tiver os dois filhos
*/
int getNumeroFilhos(NoABB no) {
return (no.dir != null ? 1:0) + (no.esq != null ? 2:0);
}
// Metodo para remover um no da ABB
public void remove(Comparable dado){
// busca o no a ser excluido
NoABB noExcluir = busca(dado);
if (noExcluir == null) // se nao achou dado nao remove
return; // abandona o metodo
NoABB paiExcluido = null;
if (noExcluir != raiz)
paiExcluido = buscaPai(noExcluir.dado); // busca pai
switch(getNumeroFilhos(noExcluir)) {
case 0: // nenhum filho, e uma folha
if (noExcluir != raiz){
if (paiExcluido.esq == noExcluir) //Elimina ligacao
paiExcluido.esq = null;
if (paiExcluido.dir == noExcluir) //Elimina ligacao
paiExcluido.dir = null;
}else{ //se no a excluir for a raiz da arvore, elimina a raiz
raiz = null;
}
break;
case 1: // se tiver apenas 1 filho, a direita ou a esquerda,
case 2: // o tratamento será o mesmo
if (noExcluir != raiz){
if (paiExcluido.esq == noExcluir ){ //Elimina ligacao
if (noExcluir.dir != null)
paiExcluido.esq = noExcluir.dir;
else
paiExcluido.esq = noExcluir.esq;
}
if (paiExcluido.dir == noExcluir){ // Elimina ligacao
if (noExcluir.dir != null)
paiExcluido.dir = noExcluir.dir;
else
paiExcluido.dir = noExcluir.esq;
}
} else { // se nó a excluir for a raiz da arvore
if (raiz.esq != null)
raiz = raiz.esq;
else
raiz = raiz.dir;
}
break;
case 3: // tem os dois filhos.
NoABB maiorEsquerda = noExcluir.esq.Maior();
if (noExcluir.esq != maiorEsquerda){
NoABB paiMaiorEsquerda = buscaPai(maiorEsquerda.dado);
paiMaiorEsquerda.dir = maiorEsquerda.esq;
noExcluir.dado = maiorEsquerda.dado;
} else {
noExcluir.dado = noExcluir.esq.dado;
noExcluir.esq = noExcluir.esq.esq;
}
}
}
public void insere(Comparable dado){
if (raiz == null)
raiz = new NoABB(dado);
else
raiz.insere(dado);
}
protected void preOrdem(NoABB no){
if (no != null){
System.out.print(no.dado + " ");
preOrdem(no.esq);
preOrdem(no.dir);
}
}
public void preOrdem(){
preOrdem(raiz);
}
protected void inOrdem(NoABB no){
if (no != null){
inOrdem(no.esq);
System.out.print(no.dado + " ");
inOrdem(no.dir);
}
}
public void inOrdem(){
inOrdem(raiz);
}
protected void posOrdem(NoABB no){
if (no != null){
posOrdem(no.esq);
posOrdem(no.dir);
System.out.print(no.dado + " ");
}
}
public void posOrdem(){
posOrdem(raiz);
}
}



Main.java

Quotepackage ABB;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        ABB arvore = new ABB();
       
        int opcao = 0;
        Scanner scn = new Scanner(System.in);
        String msg, msg2;
       
        do {
            System.out.println("1) Insere");
            System.out.println("2) Remove");
            System.out.println("3) Busca dado");
            System.out.println("4) Pre-Ordem");
            System.out.println("5) In-Ordem");
            System.out.println("6) Pos-Ordem");
            System.out.println("0) Sair");
            System.out.println("Digite a opcao:");
            msg = scn.nextLine();
            opcao = Integer.parseInt(msg);
            switch(opcao) {
                case 1:
                    System.out.println("Digite o dado a ser inserido: ");
                    msg = scn.nextLine();
                    arvore.insere(Integer.parseInt(msg));
                    break;
                case 2:
                    System.out.println("Digite o dado a ser removido: ");
                    msg = scn.nextLine();
                    arvore.remove(Integer.parseInt(msg));
                    break;
                case 3:
                    System.out.println("Digite o dado a ser buscado: ");
                    msg = scn.nextLine();
                    if (arvore.busca(Integer.parseInt(msg)) == null)
                        System.out.println("Dado nao encontrado!");
                    else
                       System.out.println("Dado encontrado!");
                    break;
                case 4:
                    System.out.println("Dados em Pre-Ordem");
                    arvore.preOrdem();
                    System.out.println();
                    break;
                case 5:
                    System.out.println("Dados em In-Ordem");
                    arvore.inOrdem();
                    System.out.println();
                    break;
                case 6:
                    System.out.println("Dados em Pos-Ordem");
                    arvore.posOrdem();
                    System.out.println();
                    break;
                }
            } while(opcao != 0);
        }
    }

No BlueJ:




No terminal:





Conexão com o banco de dados

Esse é o foco do tópico!

selectBD.java

Quote/**
 * CREATE TABLE  rest_web.administrador (
  cod int(8) NOT NULL auto_increment primary key,
  login varchar(11) default NULL,
  senha varchar(11) default NULL,
  nome varchar(64) default NULL,
  dtultimoacesso date default NULL,
);
 */

import java.sql.*;

public class selectBD {

   static Connection con;
   static Statement stmt;
   static ResultSet rs;
   
   public static void main(String[] args) {
       try {
           Class.forName("org.gjt.mm.mysql.Driver");
       
           String url = "jdbc:mysql://localhost/rest_web";
           String user = "root";
           String pass = "2017";
       
           con = DriverManager.getConnection(url, user, pass);
           stmt = con.createStatement();
           rs = stmt.executeQuery("SELECT * FROM administrador");
           
           rs.next();
           
           System.out.println("Codigo: " +rs.getString("cod"));
           System.out.println("Login: " +rs.getString("login"));
           System.out.println("Senha: " +rs.getString("senha"));
           System.out.println("Nome: " +rs.getString("nome"));
           System.out.println("Data do ultimo acesso: " +rs.getDate("dtultimoacesso"));
           
           stmt.close();
           con.close();
        } catch(ClassNotFoundException cnfex) {
            System.out.println("Driver nao encontrado! " +cnfex);
        } catch(SQLException sqlex) {
            System.out.println("Erro: " +sqlex);
        }
    }
}


No Bluej:




No terminal:





Você pode baixar os exemplos estudados neste tópico e apenas testá-los no terminal:

HelloWord  |  Aluno2  |  resposta  |  database  |  ABB

QuoteCom este tópico, espero ter incentivado os novatos a programarem em java.  :P

Até a próxima...
Não me venha dizer que é melhor que alguém que eu te espanco!
Todos não passamos de ratinhos que morrerão um dia como todos os outros...