Oi pessoal

gosto desse thread :)

não podemos aceitar nenhum desses dois argumentos:

1-) 
> Declarar uma classe abstract apenas para impedir que seja instanciada eh um
> exemplo de design ruim.

A java.awt.Component eh o exemplo mais classico disto. Ela nao possui metodos 
abstratos, e ela eh abstrata! E 
ela eh como se fosse um "pai de todos" objetos graficos, acima soh a Object. O design 
da java.awt (composite 
pattern, observable, etc) eh super elogiado...

2-)
> O motivo fundamental para que uma classe seja declarada abstract eh porque ela
> eh incompleta, ou seja, o desenvolvedor nao sabe, no momento da implementacao,
> todos os requisitos necessaries

Mesma coisa anterior, o java.awt.Component contraria esse seu exemplo. E a 
java.lang.Object,. você tambem 
nao sabe os requisitos necessarios, porque instancia-lo?

O Daniel Destro, em outra mensagem, disse:

> acho q seria meio incoerente uma classe abstract nao ter metodos abstratos... qual a 
>funcionalidade disso?

A java.awt.Component, e muitas outras sao. E nao sao incoerentes. A funcionalidade eh 
nao deixar instancia-los, 
ja que voce sabe que ele nao tem funcionalidade suficiente sem ser subclasseado. E se 
fosse incoerente, a java 
language specification nao deixaria uma classe ser abstrata sem ter um metodo abstrato.

======================
Paulo Eduardo Azevedo Silveira
Grupo de Usuários Java
http://www.guj.com.br/




On Sat, 05 Oct 2002 11:23:30 -0700 (PDT), "Silvio L.  DeMorais" <[EMAIL PROTECTED]> 
escreveu :

> De: "Silvio L.  DeMorais" <[EMAIL PROTECTED]>
> Data: Sat, 05 Oct 2002 11:23:30 -0700 (PDT)
> Para: [EMAIL PROTECTED]
> Assunto: Re: [java-list] java.lang.Object, porque não abstract? 
> 
> Eu gostei dessa pergunta.
> A principio, nao consegui achar nenhuma resposta satisfatoria, parece nao
> existir nenhum motivo especial pelo qual Object nao poderia ser abstract. 
> Fiz ateh uma pesquisa no codigo fonte do Java (J2SE 1.4.1), e Objects sao
> instanciados em apenas 48 dos 3889 arquivos. E em muitos desses casos, seria
> muito facil usar algum outro artificio para chegar ao mesmo resultado (ou seja,
> o desenvolvedor instanciou Object simplesmente porque podia, se nao fosse
> possivel, haveriam varias outras opcoes).
> 
> Ai passei a pensar no que significa declarar uma classe abstract, e porque essa
> decisao eh tomada. E acho que encontrei o motivo. 
> 
> O motivo fundamental para que uma classe seja declarada abstract eh porque ela
> eh incompleta, ou seja, o desenvolvedor nao sabe, no momento da implementacao,
> todos os requisitos necessaries, e eh forcado a declarar abstract para que outro
> desenvolvedor, com mais informacoes, complete a classe. Bom, Object certamente
> nao eh uma classe incompleta, uma instancia de Object responde coerentemente a
> todas as mensagens (methods), logo, nao faz sentido declarar Object abstract.
> Declarar uma classe abstract apenas para impedir que seja instanciada eh um
> exemplo de design ruim.
> 
> 
> -----------
>  
>  From: "Paulo Silveira" <[EMAIL PROTECTED]>
>  Reply-To: [EMAIL PROTECTED]
>  To: [EMAIL PROTECTED]
>  Subject: [java-list] java.lang.Object, porque não abstract?
>  Date: Wed,  2 Oct 2002 17:34:21 -0300
>  
>  Oi pessoal!
>  
>  Uma vez alguem me perguntou, e eu não soube dar um motivo 100%:
>  
>  "Porque a java.lang.Object não é abstract"
>  
>  Ela poderia perfeitamente ser abstract, já que não é preciso ter métodos
> abstratos para a classe ser abstrata.
>  
>  Você poderia ainda se referenciar a Objects, criar array de Objects e tudo 
>  mais.
>  
>  A única coisa que você não poderia fazer, seria instanciar Objects. A única 
>  utilidade de instanciar Objects, a meu ver, é utilizar como objetos de tag, ou
> como mutex (declara uns Objects 
>  estáticos e da syncrhinized neles!). Mas pra isso basta você criar uma inner
> classe bem inutil, só pros mutexes e 
>  coisas do gênero.
>  
>  Existe alguma coisa que faria o java.lang.Object precisar ser concreta? Ou foi
> apenas uma decisão de implementação?
>  
>  ======================
>  Paulo Eduardo Azevedo Silveira
>  Grupo de Usuários Java
> 
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> historico: http://www.mail-archive.com/java-list%40soujava.org.br
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
> 
> 
> 
> 



------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a