设为首页 加入收藏

TOP

Delphi_09_Delphi_Object_Pascal_面向对象编程(一)
2017-10-10 12:05:49 】 浏览:3864
Tags:Delphi_09_Delphi_Object_Pascal_ 面向 对象 编程

  今天这里讨论一下Delphi中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点。

本随笔分为两部分:

一、面向对象编程

二、面向对象编程详细描述

------------------------------------------

一、面向对象编程

  下面是工程文件的:

{   面向对象编程基础
1、class的定义/类的定义
2、构造函数
3、析构函数
4、封装
5、继承
}
program oop;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Unit1 in 'Unit1.pas';

var
    //定义一个类实例,或者说定义一个类对象
    admin:TPersonMan;
begin

    {   对象的使用
    1、 使用对象之前必须用构造函数创建对象
    2、 对象的构造函数是为Create方法
    3、 对象构造的时候,必须用类型名,因为这个时候对象还没有,所以不能
        用对象实例的名字
    4、 对象的析构,必须用 对象的实例名称
    }
    //实例化对象,访问对象前必须实例化对象
    admin := TPersonMan.Create();
    //访问对象的域
    admin.id := 512109051;
    admin.strName := 'volcanol';
    //访问对象的方法,可以省略(), 最好不要省略,因为不省略的话可以明确的表示
    //访问的是对象的方法
    admin.playFootball();

    //Delphi的Object Pascal和 Java 、C#这样具有自动垃圾回收机制的语言不一样
    //Object Pascal需要自己回收垃圾, 即在对象不再需要使用的时候,需要将对象
    //的空间进行回收, 通过 Free() 方法和 Destroy() 方法实现,通常Free()方法
    //更加的安全。
    admin.Free();
    //admin.FreeInstance();


    ReadLn;
end.

  下面是单元文件unit1:

{   class类的定义
1、class关键字
2、封装
3、继承
4、构造函数
5、析构函数
}

unit Unit1;

interface
uses
    SysUtils;

type
    {   定义一个类
    1、下面三种方式一样

    // 1、方式1
        TPerson=class(TObject)
        end;
    //方式2:
        TPerson=class
        end;
    //方式3
        TPerson=class;

    方式1、
        明确的类的父类, 通过在关键字class后面利用 (父类名称)来完成
    方式2、
        在Delphi的Object Pascal中所有的类都一个共同的祖先类 TObject,
        这个 TObject 类,相当于盘古或者女蜗一样。
    方式3、
        方式3和方式2一样,只是省略了关键字 end,注意只有在定义的类型
        的时候 end 关键字可以省略,其他的时候不能省略。
    要点:
        1、如果用方式2定义则必须定义至少一个域,否则编译报错,
        报错类容为: TPerson 未完全定义。
        2、如果用方式3定义,则必须显式的指出类的父类型
            Type
                TxxxObject=class(TObject);    //正确的定义方法

    }
    {
        Type
            TxxxObject=class;  //编译报错,类型没有定义完全。
    }
    TPerson=class
        //类的域定义, 注意Delphi中Object Pascal的域
        id:integer;   //对象的封装,但是这里没有完全体现封装的真正“意义”。
    end;

    TPersonMan=class(TPerson) //演示继承类的定义方法
        strName:shortString;

        //下面的两种声明方法的方式需要注意都可以,一般推荐使用第一种方式
        //因为这样更能表示这是一个方法。
        procedure playFootball();
        //procedure playFootBall;
    end;

implementation

{   类方法的实现
1、 和普通的方法一样,类的方法也需要在实现中进行定义,否则将不能调用
2、 注意定义类的方法的时候,需要指定方法属于哪一个类," . " 域操作符
    来实现。
            类名.方法名
}
procedure TPersonMan.playFootball;
begin
    WriteLn('I can play football :)  !!!');
end;

end.

 

二  面向对象编程

  下面的工程对面向对象编程进行了更多的描述。

      下面是工程文件:

{    面向对象详细
1、方法特性  static、virtual、dynamic、message
2、访问特性控制: private、public、
3、域的 "属性" 特性
}


program OopDetail;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Unit1 in 'Unit1.pas';

var
    //定义两个对象
    person:TPerson;
    teachar1:TTeachar;

begin
    //实例化变量
    person :=TPerson.Create();
    //初始化域
    person.gender := Male;
    person.name := 'volcanol';
    person.height := 1.75;
    person.weight := 68;
    person.nationality := China;
    person.education := Primary;
    person.profession := Unemployment;
    //方法
    person.eat();
    person.language();
    person.playBall();

    WriteLn('');


    //实例化对象
    teachar1 := TTeachar.Create();
    //初始化域
    teachar1.gender := Female;
    teachar1.name := 'Lily';
    teachar1.height := 1.65;
    teachar1.weight := 50;
    teachar1.nationality := England;
    teachar1.education := University;
    teachar1.profession :=Teachar;

    {   方法
    1、注意调用 override 的方法的输出
    }
    teachar1.language();
    teachar1.playBall();
    teachar1.teaching();
    teachar1.prepareLesson();
    teachar1.testLesson();


    ReadLn;
end.

  下面是单元文件:

{   class man 的定义
1、定义
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Delphi并行库System.Threading 之.. 下一篇[工具] Firemonkey Style 调色工..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目