Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarKteus

[Resolvido] .Class e .Jar

Recommended Posts

Olá amigos

 

Qual a diferença entre .Class e .Jar se é que existe?

 

Como compilo uma classe Java no Eclipse?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu creio que é a mesma coisa, algumas diferenças é que todo app em JAVA precisa ter uma classe principal, que é o

public static void main(String[] args)

e essa classe principal pode estender diversas outras classes e implementar varios outros métodos, uma classe tambem não é algo que você possa abrir e editar com o IDE ja um arquivo .jar é editável. Exemplo:

 

public static void main(String[] args) extends JFrame implements ActionListener, TextListener, MouseListener {}

 

Nesse caso é uma aplicação visual, você está estendendo sua main para a classe JFrame do java que é responsável pela construção de janelas e implementando diversos Listeners que serão responsáveis pelas ações que o usuário toma durante a execução do programa.

 

Um outro exemplo mais comum é:

 

Imagine que você tem uma outra classe, por exemplo a classe Pessoa e a classe Aluno, essas duas classes retornam valores para a classe principal Chamada TrataAlunoVisual:

 

Classe Aluno:

 

class Aluno extends Pessoa{

private String curso;
private float media;
private int faltas;

Aluno(){ //método construtor
	curso="";
	media=0.0f;
	faltas=0;
}
public void setCurso(String n){
	curso=n;
}
public String getCurso(){
	return curso;
}
public int setMedia(float n1, float n2){
   if((n1>=0&&n1<=10)&&(n2>=0&&n2<=10)){
  	float m =(n1+n2)/2;
  	media=m;
  	return 0;
   }
   else
     	return (-1);

 }
 //sobrecarga do método
public float getMedia(){
	return media;
}

public int setFaltas(int f){
	faltas = f;
	return 0;
}
public int getFaltas(){
	return faltas;
}
}

 

 

Classe pessoa:

 

class Pessoa{
private String nome;
private String sexo;
private String datanasc;

Pessoa(){//método construtor se for instanciado s/ parâmetros

	nome="Maria";
	sexo="f";
	datanasc="10/10/2001";
}
 Pessoa(String n){//método construtor se instanciado c/ parâmetros

	nome=n;
	sexo="f";
	datanasc="10/10/2001";
}
public void setNome(String n){//método publico para atribiur nome
	nome=n;
}
public String getNome(){ //método public para recuperar o nome
	return nome;
}
public void setSexo(String s){//verifica o sexo antes de armazenar
	if(s.equals("Feminino")||s.equals("Masculino"))
           sexo=s;
   	else
           sexo="a";//coloca "a" quando desconhecido
}
public String getSexo(){ //recupera o sexo
	return sexo;
}
public void setDatanasc(String d){//atribrui data de nascimento

	datanasc=d;
}
public String getDatanasc(){//recupera a data de nascimento
   return datanasc;
}

}

 

 

Perceba que eu tenho vários métodos dentro dessas classes um exemplo é o método getSexo() da classe pessoa:

 public String getSexo(){ //recupera o sexo
	return sexo;
}

 

 

Ele está ligado com o método setSexo() ]tambem da classe pessoa, o qual será responsável por dar valor ao sexo da pessoa, sendo masculino, feminino ou nenhum:

 

public void setSexo(String s){//verifica o sexo antes de armazenar
	if(s.equals("Feminino")||s.equals("Masculino"))
           sexo=s;
   	else
           sexo="a";//coloca "a" quando desconhecido
}

 

 

Temos isto e então sabemos que se eu usar o método setSexo() eu vou dar valor a variável "Sexo" e o getSexo() vai me retornar qual é o valor desta variável.

 

Agora temos a classe principal que é a TrataAlunoVisual, ela vai me permitir usar todos os métodos destas duas outras classes através da instrução "extends":

 

Classe principal:

 

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;

public class TrataAlunoVisual extends JFrame implements ActionListener{
   JLabel l1,l2,l3,l4,l5,l6,l7,l8,l9;
       JButton b1,b2;
       JTextField t1,t2,t3,t4,t5;
       JComboBox c1;
       JRadioButton r1,r2;
       ButtonGroup radio;
       JPanel p1;

		public TrataAlunoVisual(){
  		setTitle("Aluno");
  		setBounds(500,200,300,300);

  		getContentPane().setBackground(Color.lightGray);
  		getContentPane().setLayout(new GridLayout(9,2));

  		l1 = new JLabel("Nome:");
  	l1.setForeground(Color.BLACK);
  	l1.setFont(new Font("Calibri",Font.BOLD,12));

  	l2 = new JLabel("Sexo:");
  	l2.setForeground(Color.BLACK);
  	l2.setFont(new Font("Calibri",Font.BOLD,12));

  	l3 = new JLabel("Data de nascimento:");
  	l3.setForeground(Color.BLACK);
  	l3.setFont(new Font("Calibri",Font.BOLD,12));

  	l4 = new JLabel("Curso");
  	l4.setForeground(Color.BLACK);
  	l4.setFont(new Font("Calibri",Font.BOLD,12));

  	l5 = new JLabel("Faltas");
  	l5.setForeground(Color.BLACK);
  	l5.setFont(new Font("Calibri",Font.BOLD,12));

  	l6 = new JLabel("Nota 1:");
  	l6.setForeground(Color.BLACK);
  	l6.setFont(new Font("Calibri",Font.BOLD,12));

  	l7 = new JLabel("Nota 2:");
  	l7.setForeground(Color.BLACK);
  	l7.setFont(new Font("Calibri",Font.BOLD,12));

  	l8 = new JLabel("Média:");
  	l8.setForeground(Color.BLACK);
  	l8.setFont(new Font("Calibri",Font.BOLD,12));

  	l9 = new JLabel("");
  	l9.setForeground(Color.BLACK);
  	l9.setFont(new Font("Calibri",Font.BOLD,12));


  	b1 = new JButton("Inserir");
  	b1.addActionListener(this);

  	b2 = new JButton("Limpar");
  	b2.addActionListener(this);

  	t1 = new JTextField();
  	t2 = new JTextField();
  	t3 = new JTextField();
  	t4 = new JTextField();
  	t5 = new JTextField();

  	String[] curso = {"Eletronica","Mecatronica","Jogos Digitais","Informatica"};
  	c1 = new JComboBox(curso);

  	r1 = new JRadioButton("Feminino");
  	r2 = new JRadioButton("Masculino");

  	radio = new ButtonGroup();
  	radio.add(r1);
  	radio.add(r2);

  	p1 = new JPanel();
  	p1.setLayout(new GridLayout(2,1));
  	p1.add(r1);
  	p1.add(r2);

  	getContentPane().add(l1);
  	getContentPane().add(t1);
  	getContentPane().add(l2);
  	getContentPane().add(p1);
  	getContentPane().add(l3);
  	getContentPane().add(t2);
  	getContentPane().add(l4);
  	getContentPane().add(c1);
  	getContentPane().add(l5);
  	getContentPane().add(t3);
  	getContentPane().add(l6);
  	getContentPane().add(t4);
  	getContentPane().add(l7);
  	getContentPane().add(t5);
  	getContentPane().add(l8);
  	getContentPane().add(l9);
  	getContentPane().add(b1);
  	getContentPane().add(b2);
  	r1.isSelected();
       }

   public static void main(String[] args) {
       JFrame jan = new TrataAlunoVisual();
       jan.setUndecorated(true);
       jan.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
       jan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       jan.setVisible(true);



   }

   @Override
   public void actionPerformed(ActionEvent ae) {
       if(ae.getSource() == b1){
           if(t1.getText().length()<=0||t2.getText().length()<=0||t3.getText().length()<=0||t4.getText().length()<=0||t5.getText().length()<=0)
               JOptionPane.showMessageDialog(null, "Há campos sem preenchimento");
           else{
           int d = data();
  		Aluno a1 = new Aluno();
           float med=0,n1=0,n2=0;
           String media="";
           String n, s, nasc, curso;
               int fal;

           if(d==1){

            		n1=Float.parseFloat(t4.getText());
                     n2=Float.parseFloat(t5.getText());  

               if(t1.getText().length()<=0||t2.getText().length()<=0||t3.getText().length()<=0||t4.getText().length()<=0||t5.getText().length()<=0){

               JOptionPane.showMessageDialog(null, "Há campos sem preenchimento");
           }
                     else if(Integer.parseInt(t3.getText()) >20){
               JOptionPane.showMessageDialog(null, "O numero de faltas não pode ser maior que 20");
           }

                     else if(n1>10 || n2>10){
                         JOptionPane.showMessageDialog(null,"As notas não podem ser maiores que 10");
                     }

                     else {

               if(r1.isSelected()){s="Feminino"; a1.setSexo(s);}
               else if(r2.isSelected()) {s="Masculino"; a1.setSexo(s);}
               else if(!(r1.isSelected() || r2.isSelected())) {s="a"; a1.setSexo(s);}       		

               if(a1.getSexo().equals("a")){
                   JOptionPane.showMessageDialog(null,"Defina um sexo");
               }




               //inicio da montagem
           else{                         		

           try {



               n = t1.getText();
               a1.setNome(n);



               nasc = t2.getText();
               a1.setDatanasc(nasc);

               int iindex;
               iindex = c1.getSelectedIndex();

               switch(iindex){
                   case 0: {curso = "Eletronica" ;
               a1.setCurso(curso);}
                   case 1: {curso = "Mecatronica" ;
               a1.setCurso(curso);}
                   case 2: {curso = "Jogos Digitais" ;
               a1.setCurso(curso);}
                   default:{curso = "Informática" ;
               a1.setCurso(curso);}
               }

               fal = Integer.parseInt(t3.getText());
               a1.setFaltas(fal);


               a1.setMedia(n1, n2);                   		

               med = a1.getMedia();

               DecimalFormat df = new DecimalFormat();
               df.applyPattern("0.0");
               media = df.format(med);

               l9.setText(media);
               JOptionPane.showMessageDialog(null,"Concluido com sucesso!!\n" +"Nome: " +a1.getNome() +"\n" +"Sexo: " +a1.getSexo() +"\n" +"Data de nascimento: " 
                   +a1.getDatanasc() +"\n" +"Curso: " +a1.getCurso() +"\n" 
                   +"Faltas: " +a1.getFaltas() +"\n" +"Nota 1: " +n1 +"\n" +"Nota 2: " +n2 +"\n" +"Media: " +media);

           }


           catch(Exception e){
               JOptionPane.showMessageDialog(null, "Não foi possivel completar ação, erro: " +e);
               System.out.println(e.getMessage());//mensagem de erro
           e.printStackTrace();//mostra a exceção e a linha do erro;
           }




           }  
           }
           }
           }
       }

       if(ae.getSource()==b2){
           t1.setText(null);
           t2.setText(null);
           t3.setText(null);
           t4.setText(null);
           t5.setText(null);
           radio.clearSelection();
           c1.setSelectedIndex(0);
           l9.setText(null);


       }
   }

   public int data() {
       try{
       String frase="";
       int tam,ct1 = 0, dia,mes,ano;
       Aluno a1 = new Aluno();

       tam = t2.getText().length();
       frase = t2.getText();
       System.out.println(frase);


       if (tam == 8) {


     //transformando caracteres para pegar chars exatos
      		String ar2[] = new String[5]; 
      		ar2[0] = frase.substring(0,2);
      		ar2[1] = frase.substring(2,3);
      		ar2[2] = frase.substring(3,5);
      		ar2[3] = frase.substring(5,6);
      		ar2[4] = frase.substring(6,8);

                       //--------------------

      		if(ar2[3].equals("/") && ar2[1].equals("/")){



    		DecimalFormat ddia = new DecimalFormat();

    		ddia.applyPattern("00.#");

    		dia = Integer.parseInt(ar2[0]);
    		dia = Integer.parseInt(ddia.format(dia));
    		mes = Integer.parseInt(ar2[2]);
    		mes=Integer.parseInt(ddia.format(mes));
    		ano = Integer.parseInt(ar2[4]);
    		ano=Integer.parseInt(ddia.format(ano));

    		if (ano>=32){

        		ar2[4] = "19" +ar2[4];
        		ano=Integer.parseInt(ar2[4]);
    		}
    		else{
               ar2[4] = "20" +ar2[4]; 
               ano=Integer.parseInt(ar2[4]);
    		}

    		System.out.println("Data digitada: "+dia+ar2[3]+mes+ar2[1]+ano);

    		//-------------------------
//inicio do programa

    		System.out.println("Inicio do programa");
    		if(ano%4==0 && mes==02){       		
            		if(dia>29||dia==0){
                		JOptionPane.showMessageDialog(null,"Digite um dia menor que 29 diferente de 0, este ano é bissexto");
                		ct1 = 0;
                		return 0;

            		}                                  

    		}
    		//fim verificação fevereiro biss.


    		else if(mes%4!=0 && mes==02) {

        		if(dia>28 || dia==0){
            		JOptionPane.showMessageDialog(null,"Digite um dia menor que 28 diferente de 0, este ano não é bissexto");
                		ct1 = 0;
                		return 0;
        		}          


    		}
    		//fim verificação fevereiro não biss  

    		//verificão outros 
    		else if(mes==01 ||mes==03 ||mes==05 ||mes==07 ||mes==8 ||mes==10 ||mes==12 && mes<=12){
        		if(dia>31 || dia==0){
            		JOptionPane.showMessageDialog(null,"Digite um dia menor que 31 diferente de 0");
                		ct1 = 0;
                		return 0;
        		}

    		}

    		//fim meses com 31


    		else if(mes==04 || mes==6 || mes==9 ||mes==11 && mes<=12){
        		if(dia>30 || dia ==0){
            		JOptionPane.showMessageDialog(null,"Digite um dia menor que 30 diferente de 0");
                		ct1 = 0;
                		return 0;
        		}


    		}
    		//fim meses pares com 30

    		if(mes>12){
        		JOptionPane.showMessageDialog(null, "Valor de mes incorreto, o que você digitou não era um mes válido.");
        		ct1=0;
        		return 0;
    		}









      		}
      		//fim verificação das "/"




      		else{
          		JOptionPane.showMessageDialog(null,"Isto não é uma data.");
                   ct1=0;  
                   return 0;
      		}





       }

       else{
           JOptionPane.showMessageDialog(null,"Isto não é uma data");
      		ct1=0;  
      		return 0;
       }
   }
       catch(Exception e){
           JOptionPane.showMessageDialog(null,"Erro " +e);
           System.out.println(e.getMessage());//mensagem de erro
           e.printStackTrace();//mostra a exceção e a linha do erro;
       }
       return 1;
}
}

 

 

Perceba que colocando todos na mesma pasta de compilação eu não necessitei da instrução "extends" para estender as outras classes, e note os métodos de outras classes sendo usados nesta:

 

n = t1.getText();
               [b]a1.setNome(n);[/b]



               nasc = t2.getText();
      		[b] a1.setDatanasc(nasc);[/b]

               int iindex;
               iindex = c1.getSelectedIndex();

               switch(iindex){
                   case 0: {curso = "Eletronica" ;
               [b]a1.setCurso(curso);}[/b]
                   case 1: {curso = "Mecatronica" ;
      		[b] a1.setCurso(curso);}[/b]
                   case 2: {curso = "Jogos Digitais" ;
               [b]a1.setCurso(curso);}[/b]
                   default:{curso = "Informática" ;
               [b]a1.setCurso(curso);[/b]}
               }

               fal = Integer.parseInt(t3.getText());
               a1.setFaltas(fal);


               [b]a1.setMedia(n1, n2);  [/b]                 		

               med = a1.[b]getMedia();[/b]

 

 

Veja os métodos get e set.

 

E aqui é onde eu chamo a classe que eu preciso, instanciando-a:

 

Aluno a1 = new Aluno();

 

Para isto que servem outras classes no programa.

 

 

Espero ter ajudado ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, acho que o colega KhaosDoctor está meio confuso quanto a alguns conceitos. Mas respondendo às perguntas:

 

Qual a diferença entre .Class e .Jar se é que existe?

Um arquivo .class é o resultado da compilação de um .java O que significa que o .class é a transformação do arquivo fonte Java para o seu respectivo byte-code. Arquivos .jar nada mais são que arquivos compactados, similares ao ZIP. Então o arquivo JAR: Java Archive, serve para agrupar arquivos com byte-codes e outros recursos como manifest, xml, properties etc.

 

Como compilo uma classe Java no Eclipse?

No Eclipse eu não sei ao certo. Creio que no menu Run / Run as você consiga fazer isso. Agora, pra compilar diretamente no compilador java, basta usar o comando javac Classe.java . Esse comando gerará o byte-code Classe.class. Para executar o arquivo faça java Classe .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, acho que o colega KhaosDoctor está meio confuso quanto a alguns conceitos. Mas respondendo às perguntas:

 

 

Um arquivo .class é o resultado da compilação de um .java O que significa que o .class é a transformação do arquivo fonte Java para o seu respectivo byte-code. Arquivos .jar nada mais são que arquivos compactados, similares ao ZIP. Então o arquivo JAR: Java Archive, serve para agrupar arquivos com byte-codes e outros recursos como manifest, xml, properties etc.

 

 

No Eclipse eu não sei ao certo. Creio que no menu Run / Run as você consiga fazer isso. Agora, pra compilar diretamente no compilador java, basta usar o comando javac Classe.java . Esse comando gerará o byte-code Classe.class. Para executar o arquivo faça java Classe .

 

 

Valew, Vergil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.