Guest User

Untitled

a guest
Jan 17th, 2018
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.46 KB | None | 0 0
  1. TCustomUser = class
  2.   protected
  3.     fRealName: string;
  4.   public
  5.     MegaInfo: TMegaUserInfo;
  6.     function GetRealName: string;
  7.     constructor Create(username: string);
  8.     destructor Destroy; override;
  9.     (* метод Destroy здесь перекрывает одноименный метод родительского
  10.     класса, поэтому использована инструкция override *)
  11.  end;
  12.  
  13.  TUser = class (TCustomUser) // наследование (Объявление Tuser как предок TCustomUser)
  14.   private
  15.     fLogin: string;
  16.     fPassword: string;
  17.     procedure setPassword(newpass: string);
  18.   published
  19.     property Login: string read fLogin write fLogin;
  20.     property Password: string read fPassword write setPassword;
  21.     constructor Create(username, userlogin: string);
  22.  end;
  23.  
  24. function TCustomUser.GetRealName: string;
  25. begin
  26.  result:=fRealName;
  27.  writeln(' >> Calls TCustomUser.GetRealName');
  28. end;
  29.  
  30. constructor TCustomUser.Create(username: string);
  31. begin
  32.  inherited Create;
  33.  MegaInfo:=TMegaUserInfo.Create;
  34.  fRealName:=username;
  35.  writeln(' >> Calls TCustomUser.Create with '+username);
  36. end;
  37.  
  38. destructor TCustomUser.Destroy;
  39. begin
  40.  MegaInfo.Free;
  41.  inherited Destroy;
  42.  writeln(' >> Calls TCustomUser.Destroy');
  43. end;
  44.  
  45. constructor TUser.Create(username, userlogin: string);
  46. begin
  47.  inherited Create(username);     // Полиморфизм (ключевое слово inherited отсылает нас к
  48.  fLogin:=userlogin;              // предку (для Tuser это TCustomUser)
  49.  fPassword:='password';          
  50.  writeln(' >> Calls TUser.Create with '+username+' and '+userlogin);
  51. end;
  52.  
  53. procedure TUser.setPassword(newpass: string);
  54. begin
  55.  if Length(newpass)>3 then fPassword:=newpass
  56.    else writeln('Error! Password is too short!');
  57.  writeln(' >> Calls TUser.setPassword with '+newpass);
  58. end;
  59.  
  60. var
  61.  User: TUser;
  62.  
  63. begin
  64.  writeln('Press ENTER to create a new TUser insance');
  65.  readln;
  66.  User:=TUser.Create('Ivan Ivanovich','Vano');
  67.  writeln(#10+'Press ENTER to access to parent class method');
  68.  readln;
  69.  writeln(User.GetRealName);
  70.  writeln(#10+'Press ENTER to access to TAddress record');
  71.  readln;
  72.  with User.MegaInfo.Address do begin
  73.    PostIndex:=119071;
  74.    City:='Moscow';
  75.    writeln(PostIndex);
  76.    writeln(User.MegaInfo.Address.City);
  77.  end;
  78.  writeln(#10+'Press ENTER to destroy TUser instance');
  79.  readln;
  80.  User.Destroy;
  81.  writeln(#10+'Press ENTER to exit');
  82.  readln;
  83. end.
Add Comment
Please, Sign In to add comment