![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola marto
Pues sí... buen link... Lo que me pasa es algo parecido... pero yo no puedo tener un semáforo que me diga si algo ha cambiado porque los cabios no se hacen a través de la aplicación sino a mano (literalmente) por el usuario... pero el "recalculate" de Ian sería el "UpdateEstado" del que escribía Neftali más arriba pero puesto en el Get no en el Set ¿no? ![]()
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
|
#2
|
||||
|
||||
|
Wop!
con el link al artículo de Marteens lo que quería decir es que tú (y Neftali y Lepe) tienes razón y que en el Get se puede modificar perfectamente el valor de la propiedad, si no, no le programes un get y lee directamente la variable. Ah! Y Lepe ya te lo proponía en el Get!
__________________
E pur si muove |
|
#3
|
||||
|
||||
|
Deberias leer con mas detalle la explicacion de Marteens... en ningun momento dice que una propiedad CAMBIA el valor de otra, sino que mas bien el acceso a una propiedad OBLIGA a RE-LEER las demas. El principio al que alude es a que solo se conoce la realidad de un objeto en un momento X del tiempo (tal como postula la fisica cuantica), pero al ir avanzando la realidad va cambiando, tonces, se debe reexaminar los datos. Pero imaginate que la temperatura cambia la direccion y la direccion altera la velocidad... eso ya no es incertidumbre sino caos!
__________________
El malabarista. |
|
#4
|
||||
|
||||
|
Cita:
__________________
E pur si muove |
|
#5
|
||||
|
||||
|
Si miras el codigo que esta al inicio vez que se reasigna el valor de Estado. Y vez que se leen dos estados (Result es asignado dos veces desde fuentes de datos diferentes: La clases como tal por la variable interna y por medio del OCX). Es por eso que se hizo la pregunta en primer lugar.....
__________________
El malabarista. |
|
#6
|
||||
|
||||
|
Tienes razón mamcx, el código inicial... pero no me he limitado a esperar respuestas
![]() He ido trabajando en ello y cambiando lo necesario... ![]() De hecho vuestras respuestas han sido MUY útiles... Habéis conseguido que entienda mucho mejor lo que estoy haciendo (estaba mezclando churras con merinas). Ahora la propiedad solo se cambia en el set... donde además cambio el estado físico del teléfono. Muchas gracias a todos.
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
|
#7
|
||||
|
||||
|
Está claro que el método GET puede alterar las variables internas pero sin embargo mamcx tiene razón.
Al inicio de esta discusión Ohcan escribe: Cita:
Código:
function GetPropiedad: Tipo; begin Calculos; // "muchos" cálculos que determinan FPropiedad Result := FPropiedad; end; Esto debiera ser claro paro todos (sólo que a Marteens le encanta filosofar), es la esencia de los métodos GET. De lo contrario, como dice marto, nos bastaría leer directamente el valor de FPropiedad. Pero, de las dos posibles soluciones que plantea Ohcan, lo que dice Marteens (y cualquier libro de OO) corresponde a la primera, no a la segunda, que es la que Ohcan desea. El mismo Ohcan admite Cita:
Y ese pero lo molestará en un par de semanas o meses cuando tenga que revisar el código porque no es lógico. // Saludos |
|
#8
|
||||
|
||||
|
Cita:
Pues va a ser que sí ... yo entendía que simplemente lo que hacía era cambiar el valor de la variable interna, no del teléfono . De todas maneras, el primer mensaje de mamcx me sigue pareciendo demasiado tajante al decir JAMAS. Un ejemplo.Tengo una clase con una propiedad que apunta a otro objeto interno que ocupa un tamaño considerable en memoria. Inicializo la variable a nil y en el Get de la propiedad, si aun vale nil, instancio el obejto. Estoy "alterando el comportamiento/estado interno de un objeto" y creo que es la mejor manera de hacerlo.... ¿no os parece?
__________________
E pur si muove |
|
#9
|
||||
|
||||
|
Hola roman
No estoy de acuerdo contigo en esto Cita:
Cita:
) y por eso me decanté por la seguda opción (es decir, en caso de discrepancia de estados, el que manda es el objeto). Creo que esta decisión no depende de "en qué estemos programando" sino de lo que quiero hacer con la aplicación... Y al cambiar el estado físico en el Get, me aseguro de que sea el programa el que lleve la voz cantante... además, como tengo que tomar ciertas decisiones fuera del objeto que dependen de su estado, me aseguro de que el teléfono esta "como debe".
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
|
#10
|
||||
|
||||
|
¡Vaya! no pensaba que fuera a ser un tema tan polémico...
![]() En cualquier caso he seguido trabajando en el tema... porque aunque funcionaba tal cual... no me gustaba la solución. mamcx, he llegado a una conclusión parecida a la tuya (buen ejemplo el de la temperatura). Recapitulo. Tenemos DOS partes: el objeto de programación y el teléfono. Qué es lo que quiero: que el teléfono tenga el estado (físicamente) que yo quiera. Por lo tanto: el que manda es el objeto. En el Get NO cambio la propiedad Estado de mi objeto. Simplemente, miro si el estado real del teléfono es válido (=valor de la propiedad) y, si no lo es, lo cambio (físicamente). La propiedad NO cambia, cambia el mundo físico .¿Por qué tanto lío? Porque ni yo mismo me aclaro a veces... (ahora lo tengo más claro). Veréis: en el Set, cuando pongo FuncionOCX(ParametrosX) estoy cambiando físicamente el teléfono para ponerle en el estado del parámetro NuevoEstado y es entonces cuando le doy valor a FEstado. Creo que esto cambia un poco el sentido del hilo... Ahora en el Get llamo al Set (aunque no directamente sino con un procedimiento de update que lo llama) pero no para cambiar la propiedad sino para mantenerla... "No es caos sino statu quo" (perdona mamcx, es que me gustó mucho tu frase) ![]()
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
![]() |
|
|
|