![]() |
![]() |
| 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
|
||||
|
||||
|
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 |
|
#2
|
||||
|
||||
|
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 |
|
#3
|
||||
|
||||
|
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. |
|
#4
|
||||
|
||||
|
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) |
|
#5
|
||||
|
||||
|
Cita:
Cita:
Ejemplo:
__________________
E pur si muove |
|
#6
|
||||
|
||||
|
marto, ¡qué flojo!
Esto que describes, que algunos llaman "lazy construction" sigue correspondiendo al modelo:Calculos; Result := FPropiedad; Y los cálculos pueden modificar otras propiedades privadas del objeto, tal como lo hace Marteens por razones de eficiencia básicamente ya que otras propiedades hacen uso de los mismos valores. Pero aquí se está modificando un aparato externo a fin de cuentas y es lo que es al menos un poco raro. Es algo como: Código:
function TTelefono.Get: TEstado; begin Result := FEstado; DispositivoFisico.Estado := FEstado; end; // Saludos |
|
#7
|
||||
|
||||
|
O dicho de otra forma:
Cita:
// Saludos |
|
#8
|
||||
|
||||
|
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) |
|
#9
|
||||
|
||||
|
Cita:
// Saludos |
|
#10
|
||||
|
||||
|
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) |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|