Tôi đang gặp một chút rắc rối khi thiết kế một Lớp học. Tạo một lớp khách hàng trông đơn giản:Làm cách nào để xây dựng một đối tượng có nhiều thuộc tính?
TCustomer = Class
private
FIdNumber: String;
FName: String;
procedure SetName(const Value: String);
procedure SetNumber(const Value: String);
public
Property Name : String read FName;
Property IdNumber : String read FIdNumber;
Constructor Create(Number, Name : String);
end;
constructor TCustomer.Create(ANumber, AName: String);
begin
SetName(AName);
SetNumber(ANumber);
end;
MyCustomer := TCustomer.Create('1', 'John Doe');
Nhưng cũng khách hàng của tôi có nhiều thuộc tính: nơi ông sống, ngày tháng năm sinh vv vv
TCustomer = Class
private
{..snip snip..}
public
Property Name : String read FName;
Property IdNumber : String read FIdNumber;
Property Street : String read FStreet;
Property HouseNumber : Integer : read FHouseNumber;
..
..
..
Constructor Create(Number, Name, Street : String; Housenumber : Integer .. .. ..);
end;
Như bạn thấy tôi kết thúc với một constructor với rất nhiều đối số. Một cách tốt hơn để xây dựng một đối tượng với rất nhiều thuộc tính là gì?
Thoght ban đầu của tôi là xây dựng lớp chỉ với các thuộc tính * cần thiết để duy trì tạo cá thể lớp. ví dụ trong trường hợp của bạn, nó có thể là một 'UserID' duy nhất. – kobik
Bạn có thể thực hiện tương tự trường hợp của mình để tạo bản ghi DB mới ('chèn'). Hãy suy nghĩ xem các thuộc tính nào là * required * (sử dụng chúng trong các đối số constructor) và các thuộc tính nào có mặc định (khởi tạo chúng trong constructor lớp của bạn). – kobik
bạn có thể định nghĩa một constructor ** ** mà phải mất một mảng của cặp và sử dụng RTTI, bạn phân tích các lớp TCustomer và giá trị trường thiết lập từ các thông số, tức là TMyCustomer.Create ([AProp ('FirstName', 'Joe'), AProp ('LastName', 'Doe'), ...]); –
ComputerSaysNo