Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
alexandremanowar

Dúvidas Sobre Packega

Question

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]

Edited by iSoron

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 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

Share this post


Link to post
Share on other 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!!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!!

Share this post


Link to post
Share on other 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());
    }
}

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148108
    • Total Posts
      643384
×
×
  • Create New...