Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvidas Sobre Packega


alexandremanowar

Pergunta

firmeza pessoal!

Eu estou com seguinte problema, vou dar um exemplo:

Tenho uma classe Object que salvei no seguinte caminho : "c:\java\empresa\nome.java",essa class é mais ou menos assim:

package java.empresa;
public class empresa extends Object
{
      .....
}
E tenho uma outra class no seguinte caminho: "c:\java\empresa\funcionarios\funcionarios.java" eu quero que essa class busque a variáveis da class empresa, então coloquei assim:
import java.empresa.*;
public class funcionarios extends empresa
{
    ......
}

Ele está dando a mensagem de erro que não está encontrando a class empresa, qual será o problema, será que estou usando o import de modo errado?

[edit]Coloquei as tags code[/edit]

Editado por iSoron
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Bem, teu código tá com serios problemas de escrita. Um deles é o causador do erro.

1 - Os pacotes influenciam sim na localização real dos arquivos. Sendo assim, o pacote deveria ser, no mínimo, empresa. Além disso, o pacote java já existe, e foi criado pela Sun. Se você quer fazer o seu, nomeie-o como br.org.alexandre.projeto ou algo assim, bem especifico. Na maioria das vezes, quando o projeto já tem um site, esse é o nome utilizado.

2 - Por que essa classe herda Object? Todo e qualquer objeto já é objeto, por padrão.

3 - Classes devem ter a primeira letra maiuscula, sempre e sempre.

4 - Nunca use import pacote.*, pois isso dificulta saber que classe você está utilizando. Ao invés disso, cite cada classe: import pacote.Listener, por exemplo.

Seria bom você estudar e seguir as convenções de código.

Pode parecer besteira no começo, mas logo logo o projeto vai crescendo e você vê a importancia. biggrin.gif

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0
Bem, teu código tá com serios problemas de escrita. Um deles é o causador do erro.

1 - Os pacotes influenciam sim na localização real dos arquivos. Sendo assim, o pacote deveria ser, no mínimo, empresa. Além disso, o pacote java já existe, e foi criado pela Sun. Se você quer fazer o seu, nomeie-o como br.org.alexandre.projeto ou algo assim, bem especifico. Na maioria das vezes, quando o projeto já tem um site, esse é o nome utilizado.

2 - Por que essa classe herda Object? Todo e qualquer objeto já é objeto, por padrão.

3 - Classes devem ter a primeira letra maiuscula, sempre e sempre.

4 - Nunca use import pacote.*, pois isso dificulta saber que classe você está utilizando. Ao invés disso, cite cada classe: import pacote.Listener, por exemplo.

Seria bom você estudar e seguir as convenções de código.

Pode parecer besteira no começo, mas logo logo o projeto vai crescendo e você vê a importancia. biggrin.gif

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

[]'s

I soron, sua opinião muitos falam que você importar o pacote todo ex:

import javax.swing.*;

isso tem impacto no desempenho do sistema....eu particurlamente acho que faz sentido, mas fora a organização nunca vi me comprovarem em números se isso impacta na performace...

O que você acha????

rolleyes.gif

Valeu!!

Link para o comentário
Compartilhar em outros sites

  • 0

E ae kabelera.

O comando import só tem utilidade para o compilador. Quando ele não consegue achar uma classe no pacote padrâo, ele examina cada um dos imports procurando a tal classe. No momento que ele acha e consegue pegar a estrutura da classe, os imports perdem a utilidade. Assim, na versão final do bytecode, não há nenhuma referencia aos pacotes importados. Sendo assim, não há perda nenhuma de performance.

Claro que, havendo muitos pacotes com wildcards (asteriscos) o compilador vai levar um tempo maior pra achar as classes. Supondo que você tenha vários e vários arquivos, cada um importando pacotes grandes, pode ser que voce chegue a notar esse atraso.

No fim das contas, a perda de performance só se dá durante a compilação. Mesmo assim, é melhor usar os specifics imports para se ganhar clareza no código e evitar ambigüidades. Por exemplo, se dois pacotes têm a classe Map e você faz:

import foo.*;
import bar.*;

então não tem como saber qual dos dois será aproveitado. Mas tudo bem, vamos supor que o Map só existia no pacote bar. Acontece que, um belo dia, o programador do pacote foo resolve fazer uma classe Map também. Misteriosamente, o seu programa para de funcionar. Se você não se lembrar mais qual Map era, fica (quase) impossivel corrigir o problema.

Se você usar eclipse, basta apertar Ctrl+Shift+O e seus imports serão organizados automaticamente. biggrin.gif

Acredito que outras IDEs também tenham função parecida.

ps.: escrevi demais de novo. rolleyes.gif

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

hehhe, Isoron é bom que você discuti a fundo tudo.È concordo com você na copilação que pode demorar, é isso ae ótimo exclarecimento , pois tem pessoas que acham que o pacote como um todo .*, se importados desta forma as classes "ficam na memória", e pessoas experiêntes que afirmam isso.

Com certeza para organização sem dúvidas é melhor fazer import expecíficos.

Valeu!!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Ainda com dúvidas

Olá pessoal demorei um pouco para ler os post porque eu estava com problemas na máquina me desculpem.

Como eu tive que comprar um hd novo e não tinha cópia do exercicio de java, fiz outro semelhante, mudando de empresa para livraria. O negócio é o seguinte eu estou estudando java então estou testando como usar váriaveis que estão em uma determinada class dentro de outra class por isso usei o comando Object, para na segunda class usar o comando super, o script que deixei abaixo funciona perfeitamente sem usar package ou import a diferença é que rodei tudo dentro do diretório exercicios, mas quando usei packege e import ele não achou as class, esse diretório exercicios está na raiz e eu quero que o java ache os pacotes dentro dele. Um amigo me falou que o problema é que o meu diretório pode não estar na classpath, mas acredito eu que se ele não estivesse na classpath ele não funcionaria também sem usar os packege. Porque qualquer teste que eu fiz nesse mesmo diretório sem usar package ou import funcionou normal.

como eu faço para o java achar os pacotes?

veja meu código:


package exercicios.produtos;
public class Produto extends Object
{
     private int codigo;
     private double preço;
     private String descricao;

     public Produto(int codigo, double preço, String descricao)
     {
        this.codigo = codigo;
        this.preço = preço;
        this.descricao = descricao;

        public int getCodigo()
        {
           return codigo;
        }
        public double getPreco()
        {
           return preço;
         }
         public String getDescricao()
         {
            return descricao;
          }
}

A outra class está assim:
package exercicios.produtos.livro;
import exercicios.produtos.*;
public class Livro extends Produto
{
     private String autor;
     
     public Livro (int codigo, double preço, String descricao, String autor)
     {
         super(codigo,preço,descricao);
         this.autor = autor;
      }
    
      public String autor getAutor()
      {
         return autor;
      }
}
E para finalizar o teste de variáveis fiz uma terceira class que escreve nas variáveis, ela ficou assim:

package exercicios.produtos.livro;
import exercicios.produtos.livro*;
public class Testaproduto
{
     public static void main(String args[])
     {
         Livro livro = new Livro(1,55.12,"Aprenda JAVA","Alexandre Manowar");
         System.out.println("Cod.:"+livro.getCodigo());
         System.out.println("Desc.:"+livro.getDescricao());
         System.out.println("Preço:"+livro.getPreco());
         System.out.println("Autor:"+livro.getPreco());
    }
}

Link para o comentário
Compartilhar em outros sites

  • 0

Epa esqueci de logar! Descupa aí esse aí em cima sou eu.

Obs.: Estou trabalhando com livro "Entendo e dominando o java" publicado pela "Digerati books" o autor é Oziel Moreira

Estou trabalhando com linux!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...