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
[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 .
[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…
[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.
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
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…
[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.
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…
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.