FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
Interfaces...
Bueno, tengo otra serie de preguntas sobre interfaces, anteriormente tb hice unas preguntas, creo q en otra zona, pero creo q es aqui donde está mejor.
En principio tengo esta pregunta, a ver si alguien me podría contestar... Creo este objeto... Defino la clase
La cosa es q creo el objeto Musica y le asigno la interfaz de esta forma:
comp1 es un objeto cualquiera q tiene q manejar la música através de su interfaz...
Aqui ya he hecho algo fatal, xq casca...me gustaría saber cómo hacerlo... Gracias de antemano... |
#2
|
||||
|
||||
¿Qué tipo de variable es Musica? Parece ser que es de tipo TMusica y que IMusica (mal nombre para una variable, por cierto) es de tipo ITratarSonido.
Lo adecuado es que Musica sea de tipo ITratarSonido y le asignes directamente el objeto creado:
sin pasar por una variable de tipo TTratarSonido intermedia. // Saludos |
#3
|
|||
|
|||
Como siempre, pongo variables y no digo pa q son...
Aunq en este caso, al no haber utilizado nunca interfaces, no se muy bien cómo llamarlos. Me explico...
El problema es con
en este método me casca, y el caso es q tengo q pasárlo a otros objetos, y quería pasarlo por medio de la interfaz, aunq no se si se puedo, lo podría hacer de otro modo, pero me gustaría hacerlo con interfaces. |
#4
|
|||
|
|||
Investigando, creo comprender un poco más los interfaces, claro, yo normalmente los utilizo creando un objeto y teniendo en cada objeto una interfaz única.
Yo ahora lo q busco, es crear una interfaz para varios objetos, entonces se me plantea la duda de si es posible o no... También estoy pensando en la posibilidad de q crear una interfaz para lo q quiero, no es la mejor manera, ya q, pensandolo bien, no tendría mucho sentido, igual es una referencia al objeto lo q necesito. Ya q todos los objetos tienen q tener un referencia a un único objeto q controla la música. Pos eso, yo por ahora voy a quitar la interfaz, pues cada vez estoy más seguro, me gustaría saber vuestra opinión para saber un poquito más. Gracias! |
#5
|
|||
|
|||
Me parece que mezclas referencias a objeto y a interfaz.
Es no buena idea, porque tienen maneras diferentes de manejo del tiempo de la vida. Si usas objeto que soporta las interfaces, debes usar o solo referencias al objeto, o solo referencias a las interfazes del objeto. ?Que es razon de usar las interfaces en tu caso? Variantes possibles: 1) para trabajar con objetos de clases diferentes sin ancestro comun, que soporten el mismo interfaz. 2) para manejar automaticamente del tiempo de la vida del objeto 3) para simular herencia multiple 4) para transpasar el confín de exe/dll 5) para simular mix-in clases 6) ? |
#6
|
||||
|
||||
Hola rounin,
¿podrías explicar un poco a qué te refieres con (5) y (6)? // Saludos |
#7
|
|||
|
|||
Bueno, es algo complejo. Estoy haciendo una especie de motor q controle el comportamiento de cualquier juego q realice.
Entonces se supone q lee de un fichero xml y va cargando los distintos objetos necesarios (botones, animaciones, cajas de texto,...), ninguno de estos objetos son los q utiliza delphi como componentes ya q utilizo las DelphiX como librería grafica y no es muy compatible, aunq si posible... Bueno, entonces mi intención es llegar a controlar cada objeto através de interfaces, de tal forma q a la hora de tratarlos, no se sepa conq objeto se está tratando, sólo le dice cosas a los objetos, como q se ha producido un evento o ha recibido una orden, etc. (ellos ya sabrán lo q hacer) Por ahora la primera parte de interfaces q tenía pensado me ha ido bien, pero mis siguientes intentos han fracasado. En este caso, estoy ya casi convencido de q usar interfaces para el sonido no es conveniente ya q sería un objeto sonido para todos los objetos, por ejemplo si tengo un botón, en el caso de tener sonido, entonces, lo q he hecho es mandar un puntero del objeto sonido a el objeto botón y luego mediante el puntero puedo acceder al objeto sonido y poder cargar una canción, pararla, etc. El problema creo q ha sido q al descubrir la utilidad de las interfaces me he emocionado, y lo he querido meter hasta en la sopa, pero claro, lo único q he recibido son bofetadas, una tras otra, y al final he visto lo equivocado q estaba o eso creo. Aún asi, no las entiendo del todo, reconozco q son muy útiles, por lo menos para lo q quiero, vienen de perlas, pero sin olvidar q la herencia y otras cosas también tienen su peso y q no tengo q confundirme entre lo q quiero hacer y el método a utilizar. Pos eso, sólo una pregunta, se puede mandar una interfaz como parámetro o eso viola alguna de las reglas de las interfaces? Quiero decir, q si quiero pasar una interfaz a un objeto para q la controle, se podría hacer?. En el ejemplo q he mostrado, es un objeto q pertenece a otro objeto el q quiero q maneje la interfaz. Osea q hago un procedimiento q pasa como parámetro la interfaz. ¿Es una burrada?
Hay alguna forma de hacerlo? pos eso, muchas gracias por la ayuda |
|
|
|