我想设计一个人的类,在这个类中有Name这个数据成员,它记录人的姓名
人的姓名允许外界知道
请问在下面的两个类中,哪个好或重新给我设计一个?为什么?
类1:
TPerson = class
Public
Name: string;
End;类2:
TPerson = class
Public
Function GetName: string;
Procedure SetName(NewName: string);
Private
Name: string;
End;
Function GetName: string;
Begin
Result := Name;
End;
Procedure SetName(NewName: string);
Begin
Name := NewName;
End;
小弟初学,请指点
人的姓名允许外界知道
请问在下面的两个类中,哪个好或重新给我设计一个?为什么?
类1:
TPerson = class
Public
Name: string;
End;类2:
TPerson = class
Public
Function GetName: string;
Procedure SetName(NewName: string);
Private
Name: string;
End;
Function GetName: string;
Begin
Result := Name;
End;
Procedure SetName(NewName: string);
Begin
Name := NewName;
End;
小弟初学,请指点
解决方案 »
- 请问如何用movefileEX移动子目录到上级目录中?不能使用SHFileOperation函数,只请教MoveFileEx的实现方法.
- 快来看看!很有价值的一个问题:如何实现在程序运行在等待某一事件(处于循环状态)时仍然可以响应特定的事件?
- 关于FastReport的用法,顶者有分!!
- 抽奖程序我不会了请教!
- 谁用过TinyDB数据引擎,用它怎么才能得到一个记录集呢
- 用 quick report做报表 如何取得总页数!(在线等待)
- 如何直接从子过程退出主过程??(在线)
- 如何使用installshield制作delphi+ado+access編寫的安裝程序﹖謝謝﹗
- 哪个有比较好的三层框架呀
- 如何播放flash动画?
- 利用ole进行word处理,能不能从TfileStream中取word格式的文件留来打开文档呢?
- 创建表时如果定义字段的格式?
Private
FName: string;
Public
property Name:string read FName write FName;
End;
private
FName: string;
procedure SetName(const Value: string);
public
property Name:string read FName write SetName;
end;
procedure TPerson.SetName(const Value: string);
begin
FName := Value;
end;
读写都可以
Person.name:='fff'
caption:=Person.name;
private
FName: string;
procedure SetName(const Value: string);
public
property Name:string read FName write SetName;
end;
procedure TPerson.SetName(const Value: string);
begin
if FName<>Value then
FName := Value;
end;
比较一下 writeln(person1.Name);和writeln(person1.GetName);
person1.Name = 'Tom' 和 person1.SetName('Tom');使用存取器进行封装的好处是:提供一个公共的改变对象属性的入口点。可以避免意外的修改一些关键属性。
比如:
TPerson person1;
...
person1.Name = 'Tom';
...
* person1.Name = '';
...
writeln(person1.Name);
如果代码段比较长,可能程序员会忘记带*的那一行,于是在最后打印的时候对结果为''感到很困惑。