Cita:
Empezado por noob
¿no es posible tener un atributo con el mismo nombre que una propiedad?
|
Evidentemente no.
Existen una convención que ayuda a evitar estos problemas, y es que las variables privadas dentro de la clase se preceden de la letra "f" (de
field) mientras que las funciones y procedimientos que implementan las acciones de asignación y toma de valores de las propiedades se preceden de las palabras
get y
set, aunque yo suelo usar
toma y
pon.
De la misma forma, si el parámetro de una función o procedimiento pudiera entrar en conflicto con alguna variable global o una propiedad o cualquier otra cosa, se suele prefijar con la letra "a".
Así quedaría tu clase con esta convención:
Código Delphi
[-]cMyClass = CLASS (TObject)
PRIVATE
fMaterialName: STRING;
FUNCTION TomaMaterialName: STRING;
PROCEDURE PonMaterialName (aMaterialName: STRING);
PUBLIC
PROPERTY MaterialName: STRING READ TomaMaterialName WRITE PonMaterialName;
END;
De todas formas, si no hay que hacer ninguna operación especial con la asignación de propiedades, es mejor usar la forma directa:
Código Delphi
[-]cMyClass = CLASS (TObject)
PRIVATE
fMaterialName: STRING;
PUBLIC
PROPERTY MaterialName: STRING READ fMaterialName WRITE fMaterialName;
END;
Esta forma necesita menos memoria y es de ejecución más rápida (en la mayoría de los casos).