由数据库引发面向对象的思考

面向对象是一种新的认识方法,也是一种新的程序设计方法。把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。我们敲的红皮书数据库主要是运用DAO(Data Access Object)数据访问对象




由类产生对象这个过程叫实例化【在VB中我们可以点击控件,拖出来一个对象;也可以用代码New(其实是一个构造函数)产生一个对象】

<pre name="code" class="vb">Option Explicit

Dim box As fruitbox         '定义盒子

Private Sub Command1_Click()    '点击按钮一添加一个苹果

    box.AddFruit New apple

End Sub


 

而又人类(父类)又可以分出男人类和女人类(子类)子类继承父类的特性。

以下是由苹果例子引发思考:
对象和类:

 窗体和控件都是对象。数据库也是对象。到处都有对象存在。 对象从何而来 Visual Basic 中的每个对象都是用类定义的。用饼干模子和饼干之间的关系作比,就会明白对象和它的类之间的关系。饼干模子是类。它确定了每块饼干的特征,比如大小和形状。用类创建对象。对象就是饼干。

类的抽象:

一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。比如说我们将苹果、香蕉、橘子抽象成一个水果类,水果类看不见摸不着,是一个抽象出来的概念。

类的封装:
米老师在购物广场买了件衣服,穿在了他的身上。就是米老师特有的属性(米老师.西服)。这个过程就是封装。
类的继承:
继承就是根据现有类的方法和成员变量生成新的类的功能。就像儿子继承父亲的特点一样。子程序中的变量会随主程序中相同变量的变化而变化
类的多态:
多态就是对象随着程序执行而使其形式发生改变的能力。飞机会飞,鸟也会飞,蒲公英也会飞,它们会“飞”但是它们“飞”的方式不同,这不同的“飞”就是多态。
接口:

接口是一组规则,和类一样,接口也定义了一系列属性、方法和事件。但与类不同的是,接口并不提供实现。它们由类来实现,并从类中被定义为单独的实体。 接口表示一种约定,实现接口的类必须严格按其定义来实现接口的每个方面。 有了接口,就可以将功能定义为一些紧密相关成员的小组

'Fruit接口定义
Option Explicit

Public Property Get curWeight() As Double '定义只读属性 curWeight:当前的重量

End Property

Public Function ReduceWeight() As Double '定义ReduceWeight()函数,函数的内容在其他类中

End Function



有了以上认识,有人就开始问了:

1、封装不就囊括了接口吗,接口不就是封装里面的一个连接外部的东西吗?
   答:封装包含很多方面,接口的封装只是其中一种
       封装,1、在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修        改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据        与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
2、什么是接口?
    答:接口就是提供两个不同对象间的一种连接。计算机程序是通过一组函数而进行连接的,这组函数就是定义了程序中不同部分的接口。DLL的接口就是它所输出的那些函数。 C++类的接口就是该类的成员函数集。COM中的接口是一组由组件实现的提供给客户使用的函数。在COM中接口是一个包含函数指针数组的内存结构,数组元素是一个由组件实现的函数地址。
3、接口的作用是什么?
    答:有了组件如何将它们连接起来构成某个应用程序,需要用接口。在COM中接口就是一切,对客户说组件就是接口集,客户只能通过接口和组件打交道。说明接口可以保护系统免受外界变化的影响。这是封装的体现。接口实现了使用户使用同样的方式来处理不同的组件。这是多态的体现。
4、接口的如何实现?
         答:COM接口在C++中是用纯抽象基类实现。一个COM组件可以支多个接口。 一个C++类可以使用多重继承来实现一个支持多个接口的组件。组件可以支持任意数目的接口。接口应该具有不变性。在组件升级时应该不修改原来的接口,而是添加新的接口。要精心设计实现接口,以使之能够支持各种不同的实现。


(COM与COM组件区别)
5、什么是COM组件?COM component(COM组件)
答:COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。
    COM组件是遵循COM规范编写的
    COM组件是一些小的二进制可执行文件
    COM组件可以给应用程序、操作系统以及其他组件提供服务
    自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序
    COM组件可以动态的插入或卸出应用
    COM组件必须是动态链接的
    COM组件必须隐藏(封装)其内部实现细节
    COM组件必须将其实现的语言隐藏
    COM组件必须以二进制的形式发布
    COM组件必须可以在不妨碍已有用户的情况下被升级
    COM组件可以透明的在网络上被重新分配位置
    COM组件按照一种标准的方式来宣布它们的存在
COM是Component Object Model (组件对象模型)的缩写。 
COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。 
COM component(COM组件)    COM是一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。
由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块;等等。     
COM并不是一个大的API,它实际上象结构化编程及面向对象编程方法那样,也是一种编程方法。在任何一种操作系统中,开发人员均可以遵循“COM方法”。


ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和JAVA applet功能类似。 


现在开始阐述ActiveX、OLE 和COM的关系。首先,让大家有一个总体的概念,从时间的角度讲,OLE是最早出现的,然后是COM和ActiveX;从体系结构角度讲,OLE和 ActiveX是建立在 COM之上的,所以COM是基础;单从名称角度讲,OLE、ActiveX是两个商标名称,而COM则是一个纯技术名词(这里要明白这里的COM不是COM组件)

小结:由接口问题引出了类,以及封装、继承、多态。进而问题接连不断,就像一卷线,接口是线头,我们一拉线头,好多关联性问题就都出现了。遇见问题,解决问题。




已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页