易语言面向对象教程

上传人:mg****85 文档编号:45522954 上传时间:2018-06-17 格式:PDF 页数:11 大小:153.04KB
返回 下载 相关 举报
易语言面向对象教程_第1页
第1页 / 共11页
易语言面向对象教程_第2页
第2页 / 共11页
易语言面向对象教程_第3页
第3页 / 共11页
易语言面向对象教程_第4页
第4页 / 共11页
易语言面向对象教程_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《易语言面向对象教程》由会员分享,可在线阅读,更多相关《易语言面向对象教程(11页珍藏版)》请在金锄头文库上搜索。

1、1易语言面向对象教程渔歌青荇注:写这个教程是我自己的理解,你可以看,但别把这个和经典的教材类同,因为我个人的理解也许有偏差,造成的错误会误导你的学习,如果有疑问,请以正式的教材为准。我找了很多资料,也了查易语言的面向对象编程,但都没有找到合适的,只是在易官方找到了关于面向对象编程的只言片语。这让我很难受。现在的程序制作思想已经发展到了面向对象编程,而中国的面向对象编程,特别是中文的易语言面向对象编程还停留在原始阶段。其他语言:如 C+、JAVA、C#、Delphi 等等,已经走完了顺序化结构编程的路,全面转向面向对象编程。作为一个计算机语言的初学者,直接开始面向对象的学习更有利于以后的发展,因

2、此,我才想到做一点面向对象编程的教程。以鼓励更多的初学者,开始就直接面向对象,这样可以避免从顺序化结构向对象化结构转变的阵痛。一、对象和类:1.什么是对象?什么是类?有很多的资料都去定义类和对象的概念,但我不想做么做,不想人云亦云,用我自己的语言来描述:对象就是实物,是一个特定的模具里边制作出来的实物。模具就是类。2例如:我们平时在家冰箱里边制作冰块一样,类就是那个冻冰块的塑料模具,对象就是你的冰块。不同的是,通过抽象,我们把这个塑料模具具体化了,给定了他的长、宽、高,甚至你可以定义它的颜色,材质。2. 窥视类的内部。在 C+中,有类的定义,在易中,也有类的定义。我们可以自己定义自己的类,然后

3、让这个类来生成一个个对象。类中,有成员。成员就是类中的属性和方法。.属性属性比较好理解,就是上边制作冰块的那个模具的长、宽、高颜色、材质等,这些都是这个模具的属性,是我们通过抽象,从而用相应的数学语言来表达的该模具的某一个特性的值,就是我们平时说的变量。但这些属性对我们将来要生成的对象来说,有些是有用的,有些是无用的,譬如我们上边定义了冰块模具的颜色和材质,对我们将来要生成的一个真实的塑料板来说,什么颜色和材质均对冰块的生产无任何意义,在定义的过程中就要略去那些无用的属性,而只定义有用的属性。.方法方法是什么呢?方法就是我们在制作冰块的过程中需要的环境。温度是多少,加不加糖等辅料,加多少辅料,

4、然后用多长的时间去制作等。也就是在制作过程中的所有用到3的途径,就是方法。说白了,就是我们平时做程序时候所说的函数、子程序。在易语言中,没有函数这个概念,有兴趣的,可以去查查 C 或者 C+语言中函数的概念,这里不多做描述。.关于抽象(这个我本想略过不写,但是考虑到抽象是程序制作中最重要的思想方法,如果不写,学习的人就不能从感性认识上升到理性认识,从而与很多其他教材的内涵擦肩而过。 )很多教材说,面向对象编程用通过抽象的方法来定义一个类,那什么是抽象的方法呢?他们没有给出一个确实的,可以实际操作的理性认识,我写这个教程的目的也是补上这些别的教程中忽视的,而在编程中最重点的东西。不要认为我写抽象

5、是无聊,抽象确实是编程中最重要的东西,确实也真的很无聊。只是我们平时已经感性的去做了,没有上升到理性的认识而已。抽象,就是把一个实例用相应的数学语言来表达,且只取我们需的部分而非全部。如:人,我们都有直观的概念,相貌、名字、年龄、身高、体重等等属性,我们要定义一个人模具,所以要定义人的名字、相貌、年龄等,如果只是为了知道这个人是否还在上小学,我们心里一般都是通过这个人的年龄来判断的,因为超过某个年龄阶段,他就不该上小学了,同样,计算机也可以这么做,那么我们只取其中的年4龄就可以了(这里排除那些几十岁了还在上小学的,他们是特殊物种_!) 。为什么要用数学语言来表达?其他语言不成吗?因为计算机只认

6、识数学语言。 你给他一篇文章, 譬如这个教程吧,计算机能读懂是什么意思?还是能理解这个教程是干嘛的?如果真这样,你也就不必要学编程了,计算机可以自己做。抽象是所有编程过程过程中最重要的思想方法,并非只是面向对象的。类把属性和方法封装在一起了,封装以后,会对程序的结构产生影响。因为类会对其内部成员产生保护,这样就可以防止误操作,就像我家门挡住了你不能来我家开我家的冰箱门一样_!。你在你家制作冰块,我在我家制作冰块,即使我们制作的模具和原料、方法完全一样,制作出来的东西也有不一样的属性,你制作的是你的,我制作的是我,然后我们都拿出来卖掉,你和我碰面了,冰块的属性还是不变,你的是你的,我的是我的,你

7、的只能你卖,我的只能我卖。这就是类对内部成员的保护。这样就有利于一个大型项目的多人开发,可以用工程的模式来解决大型问题。一个买冰块的人需要很多冰块,你和我制作的都不够他要的,还需要其他人一起加入来制作。这就是大型项目啦。但是封装以后会产生新的问题。问题一,类能做什么工作,就好比你怎么能5知道我是做冰块的?又怎么样命令它去工作,就如同你我无法联系,不能商量价格,怎么让我帮你制作冰块?问题二、类之间的关系如何?就如同我和另外一个制作冰块的如何进行同步制作,这样方便运输,降低运输成本。问题三、类之间是如何配合协调工作的?不举例子了,烦啊!下面我就这三个问题,进行一一阐述。二、 类能做什么工作,又如何

8、命令它去工作。1.类能做什么。类一般都有共同的命名法则。这一点,易语言也是按照这个来做的, 这样, 就可以通俗的知道这个类是干嘛用的了。法则如下:动词+名字,每个词的第一个字母大写其余全部小写且相互之间不留空格(英文及汉语拼音) ,如果有功能近似的,可在后边附加后缀区分。微软制作的库,有些前边加有 AFX这个前缀,有些则加 MFC 这个前缀,这些都都是微软的开发小组的名字,无实际意义。但是各位应该明白,这个类名字的命名法则并非强制性的,不能代表所有程序员都能够按照这个规则来执行;因此,在判断一个类用途的时,应尽量去参考该类的说明,而非望文生义,切记切记!这个法则还告诉我们,我们自己在定义一个类

9、的时候,尽量的去按照这个法则来做,这样可以提高程序的可读性,6而对于类的必要说明,尽量在您开始定义类时就做好,以便在您遗忘后可以迅速获知该类的实际用途,便于程序的维护和修改。类内部定义了方法,定义的方法根据其是否可供外部调用分为两类:1.私有的;2.公开的;对于定义的每一个方法,则必须属于这两类中的一类。公开的方法就是类的接口,是驱动类内部的属性和方法进行运作的开关,没有公开接口的类就是个废物。但并不是类只能定义一个公开的接口,类可以具有很多外部接口,从而实现不同的功能。这些接口都有共同的特点,就是内部的处理机制比较近似或者相同,这是为了尽量实现代码的重复利用的一个措施。啰嗦几句,类的接口是公

10、开,但是内部处理机制完全是封闭的,私有方法和成员都是密封的,不可探测。这样,类就成为了一个黑箱,你只能了解入口和出口,而对于内部的处理机制,则勿需关心。这么做有什么好处呢?这么做的好处就是,这个类不管是你自己定义的,还是别人定义的,在编译后都是等同的,你只需关心入口数据和出口数据的正确性,不用再去考虑内部如何处理,最大程度的简化编程的过程。而封装同时也把内部的处理机制保护起来,即使外部有同名的变量和方法,也不会错误的被执行。7三、类间的关系面向对象编程的类很多,那么类和类之间有什么关系呢?就好比人于人之间的关系一样。1.有关系;2.没关系。没关系的类之间没一点关系,也就没什么可以废话的理由了,

11、轻轻的略过。那就只能说说有关系了的了。有关系的类之间的关系有两种,一种是派生,一种是继承。其实是同一个东西,就好像物理学上的力与反作用力一样。所谓继承,是指一个类可以使用父类中的属性和方法,而且还可以定义新的,自己的属性和方法;在这些所有的属性和方法中,属于父类的那些属性和方法就是继承。所谓父类,就是一个新类把一个已经存在的旧类做为自己的基类(可以理解成把旧类中的成员引用到自己的类中作为自己的成员) 。这个旧类就是父类,而新类就是子类。从子类的角度来看,拥有父类的资源就是继承,那么从父类的角度来看,新类自己定义的成员是什么?就是派生啦。派生就是子类不同于父类的那些成员。但是,我们习惯上使用继承

12、和派生来说两个类之间的关系,而非对应的那些类的成员。在类的派生和继承中,不允许递归,也就是不允许一个类既是另一个类的父类,也是它的子类,这样定义是不被允许的。还有,一个父类可以派生无限个子类,当然,只要你愿8意。这些派生的子类又可以作为父类继续派生新的子类。在易中,我没有查到多重继承,也就是,易语言是否支持多重继承我还没找到依据,且理解为易语言只支持单一继承吧。单一继承就是一个子类只有一个父类。多重继承就是一个子类可以拥有多于一个的父类,在 C+中,是支持多重继承的。四、类之间是如何相互配合协调工作对于一个完整的程序来说,即可以只包含一个类,完成一个特定的功能,也可以是包含许许多多类,来完成一

13、个大的、系统的解决方案。对于只包含一个类的程序,这里没什么可讲,因为他不需要相互协调工作。对于一个包含许多类的大型解决方案来说,这就牵扯到了类之间的相互配合与协调。类的相互协调是由程序框架来完成的。其实,我们的程序也可以被看做是一个超级类,他的父类就就是操作系统,他的子类就是你定义的各种类。由此,我们可以引申出这样的道理:在类的内部,类的数据和方法也是按照普通的顺序结构模块来完成的。由此可见,面向对象编程并非是丢弃了原有的模块化思想,而是把这个继续深化,通过一系列的封装与继承,使的程序的结构更贴近于实际生活,更符合人类的思维。那么类之间的配合与协调也就是按照顺序的模块化结构来相互配合协调的了(

14、废话!)9但是面向对象还引入了新的策略来对一些有特殊要求环境下的类间配合做出处理。这就是类方法的多态。引用官方教材中的实例:有类一、类二;类二的父类为类一。在类一和类二中同时定义了名称及参数完全相同的公开方法(接口) ,然后创建类一和类二的对象实例,并把类二对象赋值给类一对象,这样,类一对象执行这个方法时,其实是执行类二的方法。这就是类方法成员的多态性。这么做有什么好处?别急,我正在讲啊,等等又不会死人的。那么,类方法的多态性有什么用处呢?还是举例吧, 举例更容易让人理解。 别人定义了一个类,你想用用,但是就是其中的一个或几个接口需要改造下,因为他定义的接口不能完全满足你的要求,这该怎么办呢?

15、推倒重来?工程浩大,得不偿失。凑合着用?功能不足,无法达到要求。那就改造一下吧,利用类成员方法的多态性吧!五、后记随笔。在写这个教程的过程中,我所在的 QQ 群里边的新手们,他们一直在模仿范例,写点小程序,这是好事!但我发现大多数人并不去阅读有关的教程,无论是官方的还是一些论坛的教材,他们只是习惯性的在群里边发问(伸手党) ,然后等待回答,有回答,就模仿下,无回答的时候就喊爹喊娘的,我真的很无奈。说句实话,我也是一个易语言的初学者,接触易语言到今天完成这个教程也不足一个月的时间,期间,10我起早(5 月份的时间,我 5.30 起床)贪黑(晚上 12 点以后才上床睡觉) (40 岁的人了,上有老

16、下有小,还要工作养家糊口)的学习各种教程,看最基本的语句,学最基本的控件,然后动手在脱离别人范例的环境下去实现,这才使得我的进步比较快。 我所在群里边的一个管理 (我给他起的外号:蛋疼) ,这样说,我认为是经典,这里贴出来,大家共勉吧。蛋疼的经典语录*一个连 API 都不知道的人 绝对是不适合做编程的。一个连自己都不知道要做什么的人,更不适合。在问问题之前,确认自己是否真的用了各种方法;是否真的已经无路可走了。没有人义务为你做什么,他不欠你的。师傅领进门,修行靠个人。一早我就说过,先把官方的教程看一遍你们谁去看了?如果看了,谁还会问 这样的问题?或者什么支持库不懂。11这些就是 1+1=2 的问题,你觉得要怎么去帮助你们?因为你不懂可以在群里问!这样你变懒了!对于这样的人,我也可以无视你的问题同样其他人也可以无视你的问题,甚至于你的存在。因为教了你 和没教一样 反正你都不会看(教程)一群只会等待别人帮助的人是永远不会进步的。编程最重要的是 属于他们个人的思路。*

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号