Delphi, Smalltalk, Java, C++? Qual destas não é OO?

Desconforto ? Em uma linguagem onde não existe herança multipla… QUEIMAR a unica possibilidade de herança , herndando um objeto imbecil… eh no minimo “CURIOSA”…

Eu não consigo aceitar Delphi como uma linguagem OO por causa desta besteira… e de outras…

Alguem pode me dizer se procede…

voce nao pode fazer CAST para uma interface diretamente a um objeto se a mesma não IMPLEMENTAR esta interface…

ex:
Interface Animal tem .getNome
e Interface Obeso tem .getNome

se o objeto implementa Animal e eu faco um:

(obj(Objeso)).getNome()

não funciona.

"

[quote=chun]Desconforto ? Em uma linguagem onde não existe herança multipla… QUEIMAR a unica possibilidade de herança , herndando um objeto imbecil… eh no minimo “CURIOSA”…

Eu não consigo aceitar Delphi como uma linguagem OO por causa desta besteira… e de outras…

Alguem pode me dizer se procede…

voce nao pode fazer CAST para uma interface diretamente a um objeto se a mesma não IMPLEMENTAR esta interface…

ex:
Interface Animal tem .getNome
e Interface Obeso tem .getNome

se o objeto implementa Animal e eu faco um:

(obj(Objeso)).getNome()

não funciona.[/quote]

Não Procede.

posso fazer um cast em qualquer objeto que herda uma classe ou implementa interface .

(objeto as Animal).getNome()

Acabei de testar no Delphi 2009 e continua com esta limitacao besta.

[quote=juliocbq][quote=chun]Desconforto ? Em uma linguagem onde não existe herança multipla… QUEIMAR a unica possibilidade de herança , herndando um objeto imbecil… eh no minimo “CURIOSA”…

Eu não consigo aceitar Delphi como uma linguagem OO por causa desta besteira… e de outras…

Alguem pode me dizer se procede…

voce nao pode fazer CAST para uma interface diretamente a um objeto se a mesma não IMPLEMENTAR esta interface…

ex:
Interface Animal tem .getNome
e Interface Obeso tem .getNome

se o objeto implementa Animal e eu faco um:

(obj(Objeso)).getNome()

não funciona.[/quote]

Não Procede.

posso fazer um cast em qualquer objeto que herda uma classe ou implementa interface .

(objeto as Animal).getNome()[/quote]

eu fiz em cima da interface OBESO que possui a mesma ASSINATURA DE METODO que a interface ANIMAL…

Não funciona ?

[quote=marcosalex][quote=chun]Alguem poderia explicar qual é aquela PALHACADA da linguagem Delphi de ter que extender uma OUTRA classe para poder implementar interfaces ?

Se um objeto possuir implementacoes de interfaces… TEM QUE HERDAR TInterfacedObject e nao TObject…

Procede ?
[/quote]

É questão de sintaxe, não significa que eles esteja realmente herdando.

type
  TDerived = class(TInterfacedObject, IPaint)
  ...
  end;

De qualquer forma, a partir do Delphi 2005 foi corrigido. Agora ele implementa como as outras linguagens.

[/quote]

Não entendi… voce esta me dizendo que o objeto TDerived não esta herdando TInterfacedObject?

Quero ver programar OO em C puro, ou qualquer outra linguagem que não dê suporte a OO…
Tem que ter realmente muito peito…[/quote]

ahh sim. mas dá para fazer. Dá uma olhada no source code do debian. Claro, usando os recursos que a linguagem oferece. O código fica bem legível.[/quote]

Sim, sim, eu também disse que dava… mas o custo disso é bastante alto… e tem que ter uma excelente justificativa para arcar com ele.

Aliás, tá faltando o autor do tópico se manifestar a respeito.

Qual, na concepção dele, não seria OO? E por que?

Ja vi um sistema em java todinho dentro do metodo main de uma unica classe…Ou seja o sistema tinha UMA CLASSE e UM METODO…assustador isso ne? Muito assustador…mas e verdade…e digo mais roda ate hoje em uma empresa…ngm consegue tirar o bicho do ar kkkkkkkkkk

Não,
No caso a classe precisa implementar a mesma interface.

[quote=juliocbq][quote=chun]

eu fiz em cima da interface OBESO que possui a mesma ASSINATURA DE METODO que a interface ANIMAL…

Não funciona ?
[/quote]

Não,
No caso a classe precisa implementar a mesma interface.[/quote]

pela orientacao a objetos não deveria aceitar ?

[quote=chun][quote=juliocbq][quote=chun]

eu fiz em cima da interface OBESO que possui a mesma ASSINATURA DE METODO que a interface ANIMAL…

Não funciona ?
[/quote]

Não,
No caso a classe precisa implementar a mesma interface.[/quote]

pela orientacao a objetos não deveria aceitar ?
[/quote]

sinceramente imagino que não, já que são interfaces distintas, e compartilham somente o mesmo nome de métodos. Posso estar enganado.

Chun, você não está falando de duck typing? Você não pode converter um tipo em outro só porque eles possuem métodos em comum.

Boa pergunta… eh que em JAVA isso é tão trivial… que imaginei que DUAS INTERFACES… QUE IMPLEMENTAO UM MEMTODO DE MESMA ASSINATURA deveriam ser PLUGAVEIS a um OBJETO para execução APENAS DAQUELE METODO…

Pelo visto nao eh assim hehehe…

[quote=chun]Boa pergunta… eh que em JAVA isso é tão trivial… que imaginei que DUAS INTERFACES… QUE IMPLEMENTAO UM MEMTODO DE MESMA ASSINATURA deveriam ser PLUGAVEIS a um OBJETO para execução APENAS DAQUELE METODO…

Pelo visto nao eh assim hehehe…
[/quote]

pois é. oo não tem nada com isso. Isso é regalia de linguagem.

Mas que esse negocio de TInterfacedObject não é coisa de Linguagem OO tmb nao eh.

Chun, vc que é um cara tão fera pelo que vejo nas suas mensagens, implicando com uma questão tão insignificante. Isto nunca me atrapalhou a programar OO no Delphi. Eu hein…

Inté.

A classe TInterfacedObject é realmente uma gambiarra, mas tem seus benefícios - no contexto do Delphi, claro. Acontece que Delphi tem uma interface mãe, IInterface, que contém três métodos em sua assinatura: QueryInterface, _AddRef e _Release. Como Delphi não oferece coleta de lixo, isso é uma forma que os desenvolvedores da linguagem criaram para fazer com que o programador controle as referências a objetos que implementam IInterface. A classe TInterfacedObject fornece uma implementação padrão para os métodos de IInterface, e se não fosse ela sempre que você implementasse uma interface você teria que escrever também esses 3 métodos.

Que xunxo… C++ tmb não tem coletor de lixo e não precisa dessa xunxeira de TInterfacedObject…

Tirando o fato que é uma linguagem de herança simples… ou seja… vc acabou de queimar a UNICA HERANCA que voce poderia ter hehe…

Outra coisa que não encaixa…

O que uma INSTANCIA DE UMA CLASSE tem a ver com uma INTERFACE ?

A interface eh apenas um CONTRATO… nada mais…