在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
通过上节课有关计算机语言发展历史的概括了解,我们已经知道面向对象是目前计算机语言发展的历史方向,相对于机器语言和汇编语言,现在大部分程序都是用面向对象或面向过程这两种语言进行编写,那么究竟什么是面向对象和面向过程呢?他们的区别又再哪呢?我们先来看看面向过程语言。 面向过程:
面向过程的语言用生活实例来说就把每种类型的人每做的一件事看成是罗干的过程所组成,比如下面的例子就是描述了一个学生的一天的生活,面向过程的语言,把学生一天的生活中用''{……}''括起来的就是要做的每件事,他们都被看成是学生一天生活的一个组成部分。 在面向过程的程序的世界里,我们把要做的事情叫做函数,函数是由事情加“()”组成,同时每件事情的结束用“;”注明。比如 “学生一天的生活()” 、“ 洗漱 ( ); ”等等。 学生一天的生活( ) {事情—函数}
星期?; 全局变量{描述---变量和数据} 于此同时,学生一天的生活中的“起床();”这个函数,也可以看成是一个单独的过程,它也有自己的组成部分,如上实例:起床这个函数(过程)也有几个函数,比如“穿衣服( );” ,那么,过程当中还可以有哪些组成部分呢?我们先来看一下函数的变量。 变量:变量可以看成是对函数的描述,也可以储存函数发生的数据。一般我都喜欢说变量是形容词,形容函数的。上面的例子中我们有3种变量,他们分别是全局变量、形式参数、局部变量,他们都在什么意义呢?我们先来看一下全局变量。 全局变量:全局变量一般在函数的外部定义,对于整个函数(过程)已经这个函数内部的函数这种变量的描述是共同具有的性质。比如“星期?”就是一个全局变量,假设我们现在定义星期一,那么学生一天的生活就是在星期一下的一天,同时起床这件事也是星期一发生的,所有不包含星期一这个变量的函数都应该是星期一发生的,如穿衣服( ); 睡觉( ); 局部变量:局部变量是定义在一个函数的内部的,这个变量对不包含它的其他函数是无效的.比如“时间;”我们在起床这个事情(函数)中定义了8点,那么8点这个时间,对“学生一天的生活”这个函数是无效的,对于起床内部的函数来说,如“睁开眼();”我们可以8点睁开眼,如“爬起来();”它也可以再重新给局部变量“时间”一个值,比如8点10分起床。 形式参数:形式参数是比较难理解的,也是以后要活学活用的一个知识点。参数都是放在函数a的“()”内的,用来对整个函数a的内的函数一个共有的,不可以变的描述,比如我们在“起床()”这个方法中,放置了一个参数就是“谁?”现在我们这样定义“起床(小明)”,那么起床的过程中所做的就全是小明做的了,而学生一天的生活()的这个过程,就不是小明做的,因为小明不是全局变量。同时参数也可以有很多个,比如起床(谁?,地点?)参数间用“,”号隔开。 这样讲解不知道大家懂了没有,下面我就这道题提出一个问题,请大家自己举一个现实生活中存在过程的实例,并且举出三种不同的变量。……其实大家只要把每做的一件事情都看成一个过程,哪怕简单的事情也可以分成步骤,把步骤再理解成另一件事情也就是函数就可以了。但是我们现在来考虑一下这个例子,现在如果我要定义是小红的一天生活,我们在一天的生活的外部定义一个全局变量小红就可以了,或是把小红当初是一天生活的参数。 如果我们现在要描述工人一天的生活时,对比学生一天的生活步骤,我们会发现有很多是重复的,但是工人不做作业,而是工作;如果描述老师的一天有是有很多重复的,老师与学生不同的就是老师是批作业,用面向过程来描述这三种人的一天,必须写3个这样的函数,这3个函数在很多方面都是重复的,并且如果现在在这个人的生活中各增加一个函数,比如运动,那么我们修改起来也是需要大面积的改动,这无疑增加了程序员编程的繁琐,也降低的代码的性能,这时面向对象的编程思想出现了。
类成员包含:属性、字段、方法、索引器、事件等,这些知识点日后会分章节细细讲解,我们今天先看前3种类成员,在C#中所有的函数也被叫做方法,变量也被叫字段,同时增加了一个保护字段的属性概念,属性可以对字段提供一个其他对象取值或赋值的途径,比如对象中的局部变量是穿衣服的时间,在面向过程中,别的函数是无法用的,但是在面向对象中提供了属性对局部变量进行处理(封装)后,别的类或对象想用到穿衣服的时间时,就可以通过属性对这个时间进行使用。我们现在需要记住的是,字段是保存数据的,属性是保护字段的,方法是描述类功能的就可以了,日后大量的例子一定会加深你们对这几句话的理解。
利用面向对象中类和对象的定义,我们可以把一天的生活中属于人这个类的共有的内容都写在人这个类里,当对象的学生的一天的生活时,学生对象继承人这个类中一天生活的内容,同时加上学生自己的特性,学生的一天生活就定义好了,同样的工人的一天生活也可以继承人这个类,再加上工人必须工作这个特性,工人一天的生活也定义好了,同理教师一天的生活也可以用到继承。回到继承的概念上来说,对象的继承代表是一种“is-a”,如果两个对象A和B,可以描述为‘B是A’,则表明B可以继承A,学生、老师、工人都是人类,所以都可以用到继承,实际上,继承者还可以理解为是对被继承者的特殊化,因为它除了具备被继承者的特性外,还具备自己独有的个性。继承定义了类如何相互关联,共享特性。继承的工作方式是,定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有特性。子类不但继承了父类的所有特性,还可以定义新的特性。上面的例子中,人这个类就是父类也叫基类,其他三种都是人这个父类的子类或叫派生类。学习继承最好是记住三句话,如果子类继承于父类,第一,子类拥有父类非private(私有权限)的属性和功能,关于权限我们接下来会讲到;接着看,第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;第三、子类还可以以自己的方式实现父类的功能,这种方式叫做方法重写,我们以后也会讲到。现在我们考虑一下利用继承修改,如果不利用继承修改,就必须在所有重复的方法中修改,代码越多,出错的可能就越大,而继承的优点是,继承使得所有子类公共的部分都放在父类中,使得代码得到了共享,这就避免了重复,修改时只需要修改父类,其他的子类就一并自动修改了,另外,继承可使得修改或扩展继承而来的实现的较为容易。但是继承也是有缺点的,那就是父类变,子类就不得不变,在我们使用继承时一定要考虑到这一点,只有当两个类之间具备“is-a”的关系时,才考虑用继承。
|
请发表评论