Ver Mensaje Individual
  #2  
Antiguo 28-10-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por noob Ver Mensaje
¿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).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita