- 1
- 0
- 约 14页
- 2018-05-20 发布于河南
- 举报
谈组件技术(二) 必备知识
{在理解了OOP之后,我们对于组件所要必备的另一个知识点:接口 进行阐述,也许作为刚刚接触接口的您来说,这有些枯燥,但是必须给您说明的是,此处所说的接口将会百分百的引用到以后的组件技术或是组件对象中,因为它们最终就是对接口的实现、封装!引用上篇文章}
什么是接口? 接口有什么作用?如何用接口?
一系列的问题都会缠绕着你,如果你不想做组件、分布式、本地的应用程序调用的话,就不用看了;
COM1/COM2等硬件接口,我们都不陌生;但是如果要将软件中的接口和它们一样吗?又如何用接口呢?而且用好的话,并不一定很容易;让我们继续吧;
我们所谓的接口其实就是一些过程、函数、属性集;记住,接口不可以有字段的,如果你有这个想法的话,那么从现在开始就要认识是错误的,对接口的访问就是对它提供的方法、事件、属性的访问,而且,接口所提供的方法都是公开的,是全部的公开的,所以就不必要用Public了;
在组件中,接口就是一切,一个组件就是一个接口集,用户只用通过接口才能组件进行打交道;
最通用的接口
IunKnown: InterFace;//默认接口
首先我们来看一个简单的例程,然后进行详细的介绍;
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ComObj,ActiveX,StdVCL;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
ILC = Interface(IUnknown)
[{4FFE6DDB-80B9-4E2D-A05F-5F3B35311ED7}]
//GUID,它是用来唯一标识一个接口的标识符,可以通过Ctrl + Shift + G产生一组GUID,而且你可以认为你所产生的GUID是全世界唯一的。永远不要担心GUID会被用完。
procedure SetValue(NewValue:String);
function GetValue:String;
end;
TLC = Class(TInterfacedObject, ILC)
public
Value:String;
procedure SetValue(NewValue:String);
function GetValue:String;
destructor Destroy;override;
end;
var
Form1: TForm1;
IMyLC : ILC;
implementation
{$R *.dfm}
{ TLC }
destructor TLC.Destroy;
begin
Application.MessageBox(资源已经被完全释放,操作提示,MB_OK + MB_ICONINFORMATION);
inherited;
end;
function TLC.GetValue: String;
begin
Result := Value;
ShowMessage(Result);
end;
procedure TLC.SetValue(NewValue: String);
begin
Value := NewValue;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IMyLC.SetValue(第一个COM例程);
IMyLC.GetValue;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
IMyLC := TLC.Create;
end;
end.
Interfaces接口
接口定义了包含一组抽象方法的类型。为什么说是包含了一组抽象的方法类型呢?原因是接口的继承可以完全进行类如类中的Overload(当然,没有这样的语法,但是效果是完全一样的),这也正是接口的特殊所在,同时,接口里的方法是完全公用的,就如Public,但没有必要加这个关键字。一个类,即使是自一个简单的基类继承而来也可以实现任意多的接口。接口与抽象类有些相似(即没有任何字段并且所有方法都是抽象方法的类),并且Delphi提供了附加的功能。Delphi的接口有时很象COM(组件对象模型)接口,然而,可以利用d
您可能关注的文档
- 大学物理伽利略的贡献.ppt
- 拆卸方案(最新).doc
- 第二节 罗必达法则.ppt
- 第三章第三节盐类水解-2 影响盐类水解的因素.ppt
- 八年级上册生物期中考试试卷1.doc
- 客户服务代表职业发展阶段性特点及管理提升.doc
- HRM名词解释11.doc
- 【高中有机初识鲁科版】第3章第1节:认识有机化合物.ppt
- 第7章 营运资金投资.ppt
- 深入浅出的VB呼叫Windows API简易实用案例.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)