Delphi-面向對象

一、面向過程
二、基於對象
三、面向對象編程

  抽象:將同類事物向上抽取的過程
  派生(繼承): 編程中的繼承指的是類和類之間的關係,稱爲派生。
  封裝:將沒必要要的暴漏的細節隱藏起來。
  多態:一類事物以多種形態存在設計模式

 1 {*------------------------------------------------------------------------------
 2   一、建立類
 3     類成員
 4       屬性:成員變量、字段
 5       功能:方法、函數、過程、例程
 6   二、建立類對象
 7 
 8   三、對象的生命週期(對象從建立與消亡的過程)
 9       3.一、構造方法
10         3.1.一、在內存中申請一個內存空間,從而實現對象的建立
11         3.1.二、 初始化類成員的功能
12       3.二、對象銷燬
13         3.2.一、free;
14         3.2.二、Destroy;
15         3.2.三、freeAndNil;
16         3.2.四、nil (空值null);
17       3.三、Self   //表示本類對象
18         3.3.一、解決命名衝突
19 
20   四、Delphi 中的單元的概念
21 -------------------------------------------------------------------------------}

 

 1 type
 2   TUser = class(TObject) //類  全部類繼承了TObject
 3   FName : string; //字段
 4   procedure SetName(Name:string); //聲明定義
 5   destructor Destroy();override;   //銷燬  (銷燬 關鍵字 destructor)
 6   constructor Aaa(Name:string);  //定義構建方法 (建立 關鍵字 constructor)
 7   end;
 8 //調用
 9 constructor TUser.Aaa(Name: string);  //構造方法
10 begin
11   //初始化
12   Self.FName := Name;
13 
14 end;
15 
16 destructor TUser.Destroy;   //銷燬對象的方法
17 begin
18   //調用父類銷燬對象的方法
19   Writeln('調用父類銷燬對象的方法');
20   inherited;
21 end;
22 
23 procedure TUser.SetName(Name: string);
24 begin
25   Self.FName := Name;
26 end;
27 var
28   User:TUser;
29 begin
30   //經過內的構造方法,建立一個類的對象
31   User := TUser.Aaa('aa');   // 'aa' 傳參
32 //  User := TUser.Create;  //向內存中申請一塊內存地址空間  (對象生成)
33 //  User.FName := '小強';
34   Writeln(User.FName);
35 //  User.Free; //銷燬對象(釋放對象) :(調用TUser.Destroy方法)模板方法設計模式
36   FreeAndNil(User);//銷燬對象
37   Readln;
38 end.

 

四、單元屬性ide

Project.exe函數

 1 {*------------------------------------------------------------------------------
 2   一、單元
 3     1.一、方便代碼維護(單元的優勢)
 4     1.二、對代碼進行分門別類 (單元的優勢)
 5     1.三、引用(UTool in 'UTool.pas';)
 6   二、屬性(類)
 7     2.一、訪問可見性(訪問權限修飾符)(對字段、域權限限制)
 8       一、private (私有的)
 9       二、public (公有的)
10       三、protected (受保護的)
11         若是某個字段或者方法被該關鍵字修飾,該字段在其子類中訪問
12       四、Publicshed
13 -------------------------------------------------------------------------------}
14 
15 uses
16   System.SysUtils,
17   UTool in 'UTool.pas',
18   UTool2 in 'UTool2.pas'; //窗體初始化時引用
19 
20 var
21  Person : TPerson;
22 
23 begin
24 //  Writeln(UName);
25 //  Writeln(UAge);  //沒法調用
26   Person := TPerson.Create;
27   Writeln(Person.Name);
28   Writeln('------------------------');
29   Writeln(Person.Age);
30   Person.AgeChange := 18;
31   Writeln(Person.AgeChange);
32 //  Person.Age := 18;
33 //  Writeln(Person.Age);
34   Readln;
35 
36 end.

 UTool.passpa

 1 interface
 2 
 3 uses
 4   UTool2;  //引用其餘單元
 5 
 6  //聲明區域
 7 var
 8   UName : string;
 9 type
10   TPerson = class
11   private
12     FName:string;   //字段、域(通常狀況下,不容許外界直接調用)
13     FAge : Integer;
14     function GetAge() : Integer; //聲明一個函數(用於獲取字段的值)
15     procedure SetAge(FAge : Integer); //修改,只能定義過程(用於修改字段的值)
16 
17   public  //屬性內容
18     property Name : string read FName write FName;    //property關鍵字
19     property Age : Integer read GetAge; //該屬性爲只讀屬性
20     property AgeChange : Integer read GetAge write SetAge; //該屬性爲可寫屬性
21 
22 
23   end;
24 
25 implementation
26 //實現區域
27 //var //在實現區域內部聲明的只能在本單元內使用
28 //  UAge : Integer;  //只能在本單元使用
29 
30 { TPerson }
31 
32 function TPerson.GetAge: Integer;
33 begin
34   Result := Self.FAge;
35 end;
36 
37 procedure TPerson.SetAge(FAge: Integer);
38 begin
39   Self.FAge := FAge;
40 end;
41 
42 initialization
43 //初始化區域
44 UName := '小強';
45 
46 //UAge :=  18;
47 finalization
48 //銷燬區域
49 //UName := '';
50 //UAge := 0;
51 end.
相關文章
相關標籤/搜索