zoukankan      html  css  js  c++  java
  • Delphi-面向对象

    1、面向过程
    2、基于对象
    3、面向对象

      抽象:将同类事物向上抽取的过程
      派生(继承): 编程中的继承指的是类和类之间的关系,称为派生。
      封装:将不必要的暴漏的细节隐藏起来。
      多态:一类事物以多种形态存在

     1 {*------------------------------------------------------------------------------
     2   1、创建类
     3     类成员
     4       属性:成员变量、字段
     5       功能:方法、函数、过程、例程
     6   2、创建类对象
     7 
     8   3、对象的生命周期(对象从创建与消亡的过程)
     9       3.1、构造方法
    10         3.1.1、在内存中申请一个内存空间,从而实现对象的创建
    11         3.1.2、 初始化类成员的功能
    12       3.2、对象销毁
    13         3.2.1、free;
    14         3.2.2、Destroy;
    15         3.2.3、freeAndNil;
    16         3.2.4、nil (空值null);
    17       3.3、Self   //表示本类对象
    18         3.3.1、解决命名冲突
    19 
    20   4、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.

    4、单元属性

    Project.exe

     1 {*------------------------------------------------------------------------------
     2   1、单元
     3     1.1、方便代码维护(单元的优点)
     4     1.2、对代码进行分门别类 (单元的优点)
     5     1.3、引用(UTool in 'UTool.pas';)
     6   2、属性(类)
     7     2.1、访问可见性(访问权限修饰符)(对字段、域权限限制)
     8       1、private (私有的)
     9       2、public (公有的)
    10       3、protected (受保护的)
    11         如果某个字段或者方法被该关键字修饰,该字段在其子类中访问
    12       4、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.pas

     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.
  • 相关阅读:
    BZOJ4896 THUSC2016补退选(trie)
    BZOJ4892 Tjoi2017dna(后缀数组)
    BZOJ4890 Tjoi2017城市
    BZOJ4888 Tjoi2017异或和(树状数组)
    BZOJ4887 Tjoi2017可乐(动态规划+矩阵快速幂)
    BZOJ4883 棋盘上的守卫(环套树+最小生成树)
    BZOJ4881 线段游戏(二分图+树状数组/动态规划+线段树)
    BZOJ4878 挑战NP-Hard(dfs树)
    BZOJ5466 NOIP2018保卫王国(倍增+树形dp)
    BZOJ4873 Shoi2017寿司餐厅(最小割)
  • 原文地址:https://www.cnblogs.com/rise-home/p/11975908.html
Copyright © 2011-2022 走看看