小弟对一些添加函数和方法不怎么会用。希望高手们给那一些做过的小范例给我看看(50分)

  • 主题发起人 主题发起人 wxcayap
  • 开始时间 开始时间
W

wxcayap

Unregistered / Unconfirmed
GUEST, unregistred user!
添加函数和方法,本人掌握的不行,例如:做一个职员表,想把职员的姓名,性别,年龄,职位,放在private。使其不能被直接调用,然后在定义函数求其员工的工资。要求:工人的工资=职位补贴+基本工资。本人愚钝希望高手赐教
 
TEmployee = class
private
sName : string;
bSex : Boolean;
iAge : integer;
sPosition : string;
fBaseSalary : Double;
fAssistSalary : Double;
public
function GetSalary : Double;
published
property BaseSalary : Double read fBaseSalary write fBaseSalary;
property AssistSalary : Double read fAssistSalary write fAssistSalary;

end;

.....

function TEmployee.GetSalary : Double;
begin
Result := fBaseSalary + fAssistSalary;
end;
 
楼上方法可以,但有些缺陷,如果把GetSalary方法当作属性Salary的Read方法似乎更妥当,这样用户不必直接调用GetSalary方法,而只是读取Employee类的Salary属性既可获得基本工资和工龄工资的合计值似乎更加符合自然习惯,也更加符合OOP的精神...
 
嗯,同意楼上,建议将属性Salary公布出来:

public
property Salary: Double read GetSalary;
...
 
最好对每个私有的变量采用函数访问机制。
比如sName
取时用function GetsName:string;
设置时用procedure SetsName(lName:string);
 
to 楼上,你的说法有些偏颇,不能一概而论。对于大多数的属性的访问方法无需用函数型的访问方法,比如你举的例子:姓名。其实访问姓名的时候并没有必要用函数,因为用函数来访问的初衷是使类的方法更加具有灵活性,但是对于象Name之类的属性基本上在该类的后续版本中应该不会有所改变,所以也就不必采用函数访问型了。否则非但没有起到增加类灵活性的作用反而降低了代码的执行效率...
不过,这也是初涉OOP的同志们常犯的错误之一。我刚刚学写OO程序的时候也是这样,所以希望后来的大侠们不要重蹈我的覆辙...呵呵:)
总之,要按需而设,还是采取中庸之道的比较好!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部