![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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. |
|
#2
|
||||
|
||||
|
Cita:
__________________
E pur si muove |
|
#3
|
||||
|
||||
|
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. |
|
#4
|
||||
|
||||
|
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) |
|
#5
|
||||
|
||||
|
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 |
|
#6
|
||||
|
||||
|
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 |
|
#7
|
||||
|
||||
|
Por eso mismo... nunca digas nunca Jamas!
![]() Bueno pero eso sigue siendo una tarea de lectura... como esperar a leer el Size de un archivo cuando se pregunte... El problema al que apunto (y en base al titulo de este thread) es asignar una tarea de escritura dentro de una de lectura... bueno, es muy confuso... y puede traer efectos laterales posteriormente... En fin... de todas maneras dentro del contexto de esta discusion creo que quedo claro...
__________________
El malabarista. |
|
#8
|
||||
|
||||
|
Cita:
Según el título, tal y como dice mamcx, se entiende que hablamos de algo así:
Y yo creo que esto último sería incorrecto. Otra cosa sería, tal y como propones (creo), hacer los cálculos necesarios para hallar el valor ¿no?
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
|
#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
|
||||
|
||||
|
Cita:
// Saludos |
|
#11
|
||||
|
||||
|
Cita:
Y por eso estaba tan liado. Ahora creo que me ha quedado mucho más claro. Desde el Set cambio el estado físico del teléfono porque ese es el objetivo real (ahora lo tengo claro) del Set la propiedad y en base a esta premisa....
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
|
#12
|
||||
|
||||
|
¡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) |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|