OOP技术易语言面向对象学习样本Word文档格式.docx
- 文档编号:13999175
- 上传时间:2022-10-16
- 格式:DOCX
- 页数:13
- 大小:131.14KB
OOP技术易语言面向对象学习样本Word文档格式.docx
《OOP技术易语言面向对象学习样本Word文档格式.docx》由会员分享,可在线阅读,更多相关《OOP技术易语言面向对象学习样本Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
也是对某一类有共同特征的”东西”(实体,可能我们应该称”对象”)的概括。
能够看出,”类”是一个抽象的概念,比如当你提到”电脑”这个概念时,你指的不是你面前的这台电脑,不是你家隔壁超市西面出口处用于结帐的那台电脑,也不是世界上任何一台具体的电脑,而是指”电脑”这个抽象的概念,是”具有处理器、存储器和输入、输出设备的电子设备”。
同样,”员工”指的也不是你们公司是小张,不是我们公司的小王,也不是世界上任何一家公司的任何一个具体的工作人员,而是”服务于某家公司并定期领取薪水的人”。
上面我们所说的”电脑”和”员工”就是两个”类”,因为它们分别概括了某一类型的”对象”的基本特征。
另外要说明的一点是:
”类”和”所有这类对象的集合”也是不一样的,因为后一个概念虽然也很全面,但它指的依然是一大堆具体的对象,而不是一个抽象的概念。
这可能有点像在玩文字游戏,希望你能适应并喜欢这种游戏规则,毕竟做任何事情都是需要”规则游戏”的,面向对象编程也不例外哦。
2.类的”成员”与”方法”
每个类一般有它的属性,比如每个员工都有自己的”姓名”,每到月底都能够领到”日工资”乘以”本月出勤天数”算出来的工资。
这里的”姓名”、”日工资”和”本月出勤天数”就是”员工”这个类的属性(或叫”成员”)。
而每月工资的计算方法(日工资*本月出勤天数)就的”员工”类的一个”方法”。
在易语言中的类模块中,一个类看起来就像一个程序集,类的成员看起来就像一个程序集变量,类的方法看起来就像程序集中的一个子程序。
(注意,只是看起来像,它们之间还是有很明显地区别的)
3.实例化
实例化指的是从一个类到这个类的对象(实例),就像上面说的从”员工”到你们公司的小张。
一个类并不是一个可操作的实体,它只是一个概念,只有对象才是可操作的,比如你们公司必须把薪水发放给具体的人(比如小张),而不是发放到抽象的”员工”或”销售员”。
在易语言中,生成一个类的实例对象(实例化)就是定义一个以这个类为数据类型的变量。
能够在经过点(.)来使用这个对象的方法,进而操作这个对象(类似于调用”窗口1.移动(……)”来移动”窗口1”)。
4.继承
”电脑”、”员工”这两个”类”虽然强大,概括了许许多多的”对象”,可是她们毕竟太宽泛了,有时候我们需要更具体一点的概念。
比如别人问你,你家的那台电脑是台什么样的电脑,你就绝对不会回答:
”我家的那台电脑是一台‘电脑’”,而是说出你的电脑的品牌,或具体的配置(比如一台”戴尔8530电脑”或”一台奔腾3电脑”)。
同样,你会对别人说,你们公司的小张是一个”销售员”。
前面提到的”戴尔8530电脑”和”销售员”同样都是类,可是她们分别比”电脑”、”员工”这两个个类更加具体。
这里你从”电脑”到”戴尔8530电脑”和从”员工”到”销售员”用的就是”继承”,因为前面的每两对概念中的后一个都具备了前一个的所有特征(比如”销售员”肯定服务于某家公司并定期领取薪水),可是有都比前一个具有更多或更具体的特征(比如销售员有具体的工作:
负责销售,”销售员”的薪水可能比普通的员工要高一些)没错,编程语言中的继承就是这样的。
总的说来,”继承”指的是从一个相对比较宽泛的类到一个相对具体一点的类。
在一个继承关系中相对较宽泛的类被称做后一个类的”基类”,相对较具体的类被称做前一个类的”派生类”。
当然,从这个相对较具体的类还可能会得出更加具体一点的类,这又是一个继承关系,这时,这个”相对较具体的类”又成为了”更加具体一点的类”的基类,后一个就是前一个的”派生类”,这样的”具体化”还可能无限继续下去。
可是”继承”绝对不能具体化到某个具体的”实体”也就是对象(比如从销售员”具体化”到你们公司的销售员小张),因为继承只能发生在两个”类”之间,一旦从类具体化到了对象那就不叫”继承”了,就成了”实例化”。
二.牛刀小试
1.定义一个类,生成实例对象
有了理论基础,我们来牛刀小试一把!
就以公司的员工为例子吧,打开易语言3.8新建一个窗口程序,插入一个”类模块”,输入如下代码:
本程序定义了一个类”员工”,这个类说明了所有公司员工的共同特性——都有一个姓名(当然,员工的共同属性肯定不止这些,这里为了简单,仅仅考虑”姓名”)并给它定义了一个文本型成员”姓名”同时提供了两个公开方法用于操作这个成员。
其中”取姓名”方法只是简单地返回该类的唯一成员”姓名”;
”置姓名”方法用于给”姓名”成员赋值。
为了确保”姓名”成员包含合法的姓名信息,程序在”置姓名”方法里加了参数合法性检查。
有了一个类,下面我们来进行”实例化”即从”员工”这个抽象的概念具体化到一个公司的员工——张三。
然后在启动窗口上放置一个按钮,并输入如下代码:
这里的程序定义了一个”员工”类型的变量”张三”,也就从”员工”类实例化了一个对象”张三”。
由于”张三”是”员工”类的对象,因此她就具有了这个类的所有成员和方法,然后我们就能够调用张三这个对象的两个公开方法对它进行操作了。
易语言中所有的类成员均为私有成员,因此我们无法直接经过对象给它的成员赋值,只能经过调用公开方法(张三.置姓名(”张三”))设置员工的姓名,而我们在”员工”的”置姓名()”方法中加了参数合法性检查,因此实现了对类成员的保护。
(其实这个保护是不完整的,如果没有调用 张三..置姓名(”张三”),这个员工还是没有姓名的,即用”张三.取姓名()”方法取得的为空文本,下面在讲”_初始化”方法时将解决这个问题。
)
这里顺便说一下类方法的访问限制。
一个类的方法可设置为”公开”或”受保护”,如果一个类的某个方法被”公开”就意味这这个方法能够被该类的其它方法、该类的实例对象和它的派生类访问(即调用);
否则,这个方法就是”受保护”方法,受保护方法只能被该类的其它方法和它的派生类访问而不能经过该类的实例对象来访问。
比如上面的”张三.置姓名(”张三”)”就是经过对象直接访问类的公有方法。
你能够试着把”员工”类的”取姓名()”公开栏的勾号去掉把它变成一个受保护方法,再运行该程序,易语言编译器就会报错:
”错误(10123):
指定方法”取姓名”未被公开,不能在外部被调用。
”看来我们的易语言还是很聪明的哦。
关于类方法在继承中的访问限制,我们将在最后面具体讨论。
注意:
易语言中没有类的公有(公开)成员,它的所有成员均为私有,因此,一个类的所有成员都只能在类的内部使用,而不能经过”对象名.成员名=值”的方式来直接访问类的成员。
因此,如果你想把一个类的某个成员公开给外部使用,就必须给这个类添加相应的方法来取和置这个成员的值。
2.”_初始化”与”_销毁”
在上面的”员工”类的代码中,还有两个方法我没有提到,那就是这节的标题提到的那两个方法。
仔细研究一下,你会发现这两个方法非常特别。
第一:
方法名都是以下划线开头;
第二:
它们都是”受保护”的;
第三:
它们都没有返回值和参数;
第四:
这两个方法是在我们插入一个类模块时自动生成的。
形式的特殊决定了它们功能的特殊。
这两个方法是”私有”的,即未公开的,也就是说它们只能在类内部使用。
在什么时候使用呢?
我们做个实验,在这两个方法中输入如下代码:
更改”_按钮1_被单击”子程序如下:
然后运行调试运行这个程序,我们发现易语言是这样输出的:
在弹出信息框之前:
*员工类初始化
*张三.置姓名()
*张三.取姓名()
弹出信息框之后:
*子程序即将结束
*员工类销毁
我们能够发现,”_初始化”是在”员工”类生成对象”张三”时被调用,”_销毁”是在该对象超出作用域,将被销毁时调用。
由于”张三”对象是一个局部变量,因此它的作用域(生存周期)和它所在的子程序是一样的,于是,在进入这个子程序后,执行第一行代码之前,”张三”就被创立,”_初始化”方法被自动调用;
在这个子程序最后一行代码执行完毕即将退出时”张三”就被销毁,”_销毁”方法被自动调用。
你也能够用类似的代码验证一下对象作为程序集变量和全局变量使时的情况。
另外,每生成该类的一个实例对象,该类的”_初始化”就被调用一次,每销毁一个对象,该类的”_销毁”方法就被调用一次(有点像窗口的”创立完毕”和”销毁”事件)。
你能够多招几名员工(生成”员工”类的多个实例,即定义多个”员工”类型的变量)验证一下哦。
这两个方法的这种特性在编写程序时能够给我们很大的帮助,让我们有机会在一个对象被创立时做一些初始化工作(比如打开一个文件,初始化类的私有成员),在这个对象被销毁时,做一些善后工作(比如关闭打开的文件)。
根据这种特性,我们能够改进以上的代码,实现对”姓名”成员的初始化:
更改”员工”类的”_初始化”方法代码如下:
这样,就算没有调用员工变量.置姓名(”张三”),这个员工也会有一个名字(”未命名”)了,因为在这个员工被创立时,”员工”类的”_初始化”方法被自动调用了。
人嘛,怎么能没有名字呢。
不要更改”_初始化”和”_销毁”方法的方法名、参数、返回值和访问限制(即是否”公开”),否则易语言就会把它们当作普通的成员方法或报编译错误。
三.一个更丰富的”员工”类
为了更好地继续我们的讨论,首先我们应该把上一篇中的”员工”类丰富一下。
这次除了能够设置和取出每个员工的姓名外,还要实现一个功能:
计算月工资。
为了简单其间,我们假定月工资计算公式如下:
”月工资=日工资×
本月出勤天数”。
下面看看这在易语言中如何实现。
打开上次的那个例程中的”员工”类模块,添加两个成员:
为了能存取这两个私有成员,我们添加如下四个方法:
我这里把”置日工资”方法设置为”受保护”(即没有公开),这样当一个员工对象被创立出来后,就无法在外部对该员工的”日工资”进行修改了,比如”张三.置日工资(50)”是编译不成功的。
这样才能保证公平性,每个员工的日工资都的一样的,你想多挣钱,就要努力出满勤(或成为一个销售员,下面将继承时,我们会发现,销售员的月工资还包括提成)。
更改”_初始化”方法如下:
在初始化时(每个员工对象被创立时)调用该类的”受保护”方法”置日工资”设置其日工资为30元。
注意,虽然这个方法没有公开,我们还是能够在这里调用,是因为在易语言中,非公开的方法都是”受保护”的,是能够在类内部被其它方法(这里是被”_初始化”)调用的。
(参看本篇开头)
然后,我们的主角出场了,计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OOP 技术 语言 面向 对象 学习 样本