[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Ep, bem que poderia ser pra quinta



concordo com o Paulo acho uqe esses dois dias iam fazer uma boa diferenca
no EP e na prova 


Message from JC <jcosta@linux.ime.usp.br>

On Sun, 25 Apr 1999, Paulo Eduardo Azevedo Silveira wrote:

> Oi professor
> Estou aqui eu e meus colegas na sala linux do ime e queriamos saber se nao
> dava pra dar uma empurrada no ep, pq quarta a gente tem prova de 323.
> E ai?
> Paulo e classe
> 
>  -------------------------------------
>  Message from:
>  Paulo Eduardo Azevedo Silveira  
>  Undergraduating in Computer Science
>  University of Sao Paulo - IME
>  http://www.linux.ime.usp.br/~peas
>  -------------------------------------
> 
> On Sun, 25 Apr 1999, Francisco Reverbel wrote:
> 
> > Daniel Cukier writes:
> >  > Porque o meu ep dá varios erros com a mensagem:
> >  > 
> >  > cant make a static reference to a nonstatic (method ou variable) in
> >  > class...
> > 
> > Porque metodos de classe (static) só podem referenciar campos que forem
> > de classe (static) ou campos de instância (não static) de objetos
> > particulares. 
> > 
> >  > eu tentei solucionar esses erros colocando static em  tudo quanto é
> >  > lugar, mas sei que isso nao é o mais correto.
> > 
> > Não faça isso! O static significa que o método ou o campo não é de um
> > objeto particular, mas da classe toda. Um campos que forem de um objeto
> > particular -- o fileName de um DBFile, por exemplo -- não pode ter
> > static. Senão você vai guardar um fileName só para todos os DBFiles, o
> > que está completamente errado!
> > 
> >  > Qual seria a solucao então?
> >  > 
> >  > Um exemplo real:
> >  > o método create da classe DBFile é static
> >  > 
> >  > dentro desse método, eu desejo inserir a linha
> >  > 
> >  > DBFile.fileName = fileName;
> >  > DBFile.numberOfBlock = nBlks;
> >  > .
> >  > .
> >  > .
> >  > isso está certo??
> > 
> > Não está. Tente algo como
> > 
> >  DBFile dbf = new DBFile();
> >  dbf.fileName = fileName;
> >  dbf.numberOfBlock = nBlks;
> > 
> > Note que agora o método de classe não está referenciando DBFile.fileName
> > (que não faz sentido, pois não existe um fileName para a classe toda) e
> > sim o dbf.fileName (o campo fileName de um particular objeto).
> > 
> > Mudando um pouco de assunto: Em vez de chamar um construtor e logo em
> > seguida inicializar campos do objeto recém construido, é melhor colocar
> > a inicialização desses campos dentro do construtor. Em vez das tres
> > linhas acima, você teria uma linha só:
> > 
> >  DBFile dbf = new DBFile(fileName, nBlks);
> > 
> > Reverbel
> > 
> 
>