新余二中e动空间
Would you like to react to this message? Create an account in a few clicks or log in to continue.

浅谈面向对象程序设计方法

3 posters

向下

浅谈面向对象程序设计方法 Empty 浅谈面向对象程序设计方法

帖子 由 maomao112 周五 五月 09, 2014 4:11 am

摘要:本文就面向对象程序设计方法的基本概念以及其相关的特性和功能,并将结构化程序设计与面向对象程序设计方法做了一定的比较,并以Windows应用程序作为例子详细的阐述了面向对象程序设计的基本编程思想。
  关键词:面向对象程序设计 结构化程序设计
  一、面向对象设计方法
  软件设计有两种主流设计方法:以结构化程序设计为基础的结构化软件设计和由面向对象设计方法导出的面向对象的软件设计, 20世纪70年代末到80年代初的结构化设计方法即传统设计方法,以区别于后来兴起的面向对象的设计方法。在软件设计周期中,面向对象设计方法是一种全新的设计和构造软件的方法,它使计算机解决问题的方式更符合人类的解决问题的思维方式,更能直接的描述客观世界,同时也可以增加的代码的可重用性,是目前和未来软件开发的方向[1]。
  面向对象设计在整个软件设计中占据着非常重要的部分,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,但是面向对象分析和面向对象设计之间没有明显的界限,面向对象的方法是基于抽象、信息隐藏、功能独立和模块化等重要软件设计概念基础上的,现阶段的软件设计基本上都运用了面向对象的设计方法[2]。面向对象的开发支持鼓励软件实践中的信息隐藏,数据抽象和封装,可以对单独对一个对象内部进行隔离修改,那么就使得运用面向对象开发的软件更容易修改、扩充和维护[1]。
  对象和类是面向对象程序设计的基石,其基本的机制便是方法和消息。消息是要求某个对象执行类中某个操作的规格说明;方法就是对象执行的操作。面向对象程序设计三个重要特征:封装性,继承性和多态性。
  (一)对象(Object)和类(Clasess)
  对象即指现实生活中无所不在、各种各样的实体,它可以使具体的事物,也可以是抽象的实体[2]。从对象的构成和内容来看,设计程序时使用对象有以下优点:对象是对物体的直接抽象,这种抽象简化了实际物体的模型,同时以一种可以操作的形式将实体表达出来。进行了数据的封装后,掩蔽了实现的复杂性,对于用户使用起来就更加方便。
  在现实生活中,具有相似性质,执行相同操作的对象,称为同一类对象,即类是同一种对象的集合与抽象[2]。例如,在Visual Basic中窗体都是Form类的实体,一个单独的窗体也是一个类。
  (二)数据封装(Data Encapsulation)
  数据封装是类的一个重要特性。数据封装是把数据和相关的操作设在一个包中,那么程序不能直接访问对象中的变量,只有通过对象的方法才能作用于数据。
  (三)继承(Inheritance)
  我们首先在对象的基础上创建对象,新的对象就会继承原先对象的所有属性和特点,同时根据实际情况也可以选择和修改父对象的属性和功能,这就叫做继承。利用这点,可以将旧的程序扩充为当前所需要的,也可以从已知的类中派生出新的类来。
  (四)多态性(Polymorphism)
  多态性就是多种表现形式,不同事物具有不同表现形式的能力,具体来说,可以用“一个对外接口,多个内在实现方法”表示。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。
  二、结构化程序设计与面向对象程序设计
  结构化程序设计是由算法和数据结构组成,算法指处理数据的特定的方法。结构化程序设计首要想法是如何处理数据,然后再选择最为方便处理的数据结构,那么重点主要集中在数据上了。结构化程序设计的基本思想是:系统按功能要求分解为若干个子模块,子模块再根据需求进一步分解为子模块,不断的进行分解,从上往下进行分解,这样的形式是自顶向下的“瀑布式”设计,仅运用了顺序、分支和循环三种结构设计编码。
  面向对象程序设计中,用户需要做的事向对象传送消息。编程人员在设计过程中要做的就是向对象处理适当的消息以及它的内部数据,这样就最大限度了提高了代码的可重用性,缩短了调试时间。面向对象程序设计与结构化程序设计是相反的,面向对象的程序设计是从下往上的“喷泉式”的设计,对象是数据处理方法紧密结合的整体。
  三、Windows及应用程序与面对对象的程序设计
  Windows中的图形用户接口包括窗口,下拉式菜单,对话框等各种控件,这就使得Windows应用程序非常容易使用。我们用结构化的程序设计方法开发Windows应用程序非常困难,即使要在屏幕上生成一个简单的窗口或是一个简单的下拉式菜单也要编写几十条甚至几百条复杂的代码,写这些代码的前提必须是我们对Windows具有非常深入的了解。那么在这种情况下,一种开发时间短、质量高、复用性高等比结构化程序设计方法优良的设计方法。由于Windows的进城的核心也是对消息的处理,因此Windows程序编程是以消息为核心。消息也是面向对象程序设计的基本机制,程序的进程的核心也是对消息的处理,因此面向对象程序设计比结构化程序设计更适合于开发Windows应用程序。利用面向对象程序设计的封装性可以把Windows应用程序的所具有的行为进行封装,形成一个类层次库,这样就为Windows应用程序提供一个一致、直观和简单的与Windows的接口。面向对象程序设计具有继承性这一特性,Windows的应用程序可简单、方便的继承和选择性的使用Windows特性而不必重写这些代码,同时,编程人员也可以借用其他应用程序的功能代码,或是稍作修改,也不必考虑Windows底层的细节。那么这样看来,类层次库就大大的降低了Windows程序设计的复杂性,编程人员也不必一条一条代码的编写,显著的减少了创建Windows应用程序界面所需的源代码量,因此面向对象的程序设计在开发应用程序方面显示出巨大的优越性。
  四、结语
  面向对象的程序设计方法是当前软件设计的一个主要潮流,采用这种方法开发出的软件具有极大的稳定性、可维护性和可重用性,面向对象程序设计方法运用于软件设计中极大的提高的功能代码的复用性,大大的提高了工作效率。

maomao112

帖子数 : 50
注册日期 : 14-05-08

返回页首 向下

浅谈面向对象程序设计方法 Empty 面向对象程序设计教学浅析

帖子 由 maomao112 周五 五月 09, 2014 9:57 am

绝大部分学生是第一次接触面向对象程序设计的概念,通俗、易懂的教学原则同样适合于这门课的教学。在课程讲授过程中,作者没有把重点放在语法规则的叙述上,而是放在算法和程序设计方法上,通常由几个例题引出一种语法规则,通过一些求解具体问题的程序来分析算法,介绍程序设计的基本方法和技巧,既注重教材的系统性、科学性,又注重易读性和启发性。从最简单的问题入手,一开始就介绍程序,要求学生编写程序,通过反复编写、运行程序来掌握语言规则和程序设计方法。同一个语法规则、同一种算法,在选择例题时也是由简到难,逐步呈现给学生。在学习上不要求学生死记语法规则,而是要求学生能把各个孤立的语句组织成一个有机的程序。注意培养学生良好的编程风格,让学生在编制程序过程中不断总结、巩固,达到学会方法、记住语法规则,提高设计技巧的目的。三、 改进教学方法
   作者要求学生事先预习,实际上就是要求他们课前自学,讲课时以学生预习过为起点,只讲难点、重点,这样既给了学生思维分析的余地,又节省课时。这就要求必须精选教学内容,注意详略安排。如在讲到“类与对象”,“继承与派生”[2]这些关键性章节时就讲的特别精,使学生能够熟练掌握、理解透彻,而讲到“输入输出流”时,让学生做到一般了解即可。课堂上找一些程序设计较好、解题思路清晰的例题让学生自己读,找出精妙之处和不理解之处,对普遍性的问题共同讲解,个别问题课后解答。
   作者特意地设置一些不同深浅的笔误和口误,马上让学生肯定对与错,以考查学生注意力集中的程度,提高他们的敏锐性和判别力。对有些问题,给出一种程序设计方法后,让学生讨论,还有没有其它的程序设计方法和思路,让他们发表意见,提出自己的解题思路和编程方法,给学生交流不同思路和观点的机会。这就要求老师既能引导又能放开,既有事先的精心备课,又有课堂上的因势利导,同时也可以从学生讨论中提出的问题来丰富教材内容,使得教与学相得益彰,共同进步。

maomao112

帖子数 : 50
注册日期 : 14-05-08

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 Admin 周五 五月 09, 2014 9:59 am

在面向对象程序设计方法出现之前,开发程序时采用面向过程的方法。面向过程的程序设计注重高质量的数据结构,注重算法的描述,回答的是“做什么、怎么做”的问题。基本过程是:采用结构化思想,自顶而下,按功能把一个复杂的系统分解成许多内聚性强、耦合较少的功能模块,最后用代码组合模块,从而实现系统的功能。例如要编写一个求解矩形面积和周长的程序,采用面向过程的设计方法的一般设计步骤为:①将任务分解为求解矩形面积和求解矩形周长两个子任务。②编写求解矩形面积和矩形周长的函数。③在主程序中调用求解矩形面积和矩形周长的函数,完成程序功能。
这种设计方法使得数据和运算相分离,程序被描述为:程序=模块+模块+…,模块=算法+数据结构。

Admin
Admin

帖子数 : 65
注册日期 : 14-05-08

https://xyezedkj.longluntan.com

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 fulong 周五 五月 09, 2014 10:00 am

建模是面向对象程序设计的一个关键的技术。所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。建模可帮助我们思考问题、减少复杂性。用面向对象方法开发软件,通常需要建立三种形式的模型,分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。1995年UML的出现,使得如何进行面向对象的分析、设计逐渐形成共识,并提供了统一的符号来描述这些活动。只有掌握UML,将建模思想应用到程序设计中,才能真正体验面向对象编程的思想。

fulong

帖子数 : 59
注册日期 : 14-05-09

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 fulong 周五 五月 09, 2014 11:53 am

在做面向对象编程时,我们首先应该理解面向对象。
下面是我个人对面向对象的浅薄理解,由于自己做编程也没多久,对OOP理解有限,对设计模式更是一窍不通。

•抽象的理解:抽象是从众多物质中抽取共同的、本质的特征,抽象是一种概念(比如public inte***ce或抽象基类),抽象的过程是一个比较的过程,有比较才能抽象出共有特征和本质;抽象的过程也是一个裁剪的过程,剪掉非本质的特征。从不同的角度去对事物进行抽象,能够衍生出不同的接口,这些看待或比较事物的角度也可以称作接口。
•一切事物都是对象,把事物的外观抽象为对象属性,事物的隐私看作为对象字段,事物的外部行为抽象为对象的公共方法,事物的内部行为看作为对象的私有方法。属性和公共方法称为接口,字段和私有方法称为本源。
•一切private成员或者接口和基类对象作为方法参数都实现了数据的隐藏,把接口和基类作方法参数同样实现了多态性,private成员是对象的内部行为和形态,private成员是对象的本源,private成员无法被继承。
•一切public成员都是接口,这里的接口就不仅仅是inte***ce,它是一种标准和规则(比如定义的public属性),是对象表现的外部行为和形态,是对象和对象之间的通信和交互的纽带。
•类继承的意义不仅仅是代码复用,更大的意义是类扩展,类扩展表现为方法的重载以及子类中有的方法和属性而父类中没有的方法和属性。在一定程度上,类扩展也可以看做是一种多态,这不仅仅表现在子类重写父类的方法,还表现在子类比父类具有更多的特性,子类是父类的变体,表现出和父类相似但比父类更丰富的形态。
•方法的重载表现在“殊途同归”,对象做同样的事情,事情的结果相同(返回值类型),但是实现的途径不同(参数列表或方法体不同)。方法的重写表现在“青出于蓝而胜于蓝”,子类覆盖父类的方法并进行扩展,如果不是这样,重写就没有太大的意义。
•面向对象(OO)和面向过程(OP):面向过程是基于流程的设计和分析,一个问题的解决或功能的实现需要按照先后顺序很步骤,每个步骤可以是一个函数;而面向对象是基于抽象的设计和分析,从问题和功能中抽象出类和接口,把方法原子化,类单一化。面向对象语言中一切事物都是对象,在面向过程中,方法称之为函数或过程,面向对象中方法是对象的表现行为,面向对象是对面向过程的封装。

fulong

帖子数 : 59
注册日期 : 14-05-09

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 maomao112 周一 五月 12, 2014 12:12 pm

大概在三四年前,面向对象编程几乎一致被看好和膜拜。然后在过去一两年,似乎对面向对象编程的质疑变多了,有些工程师很推崇函数式编程了。对于函数式编程,我没有研究过,所以不好发表意见。这里只说一点私人看法,如果说错了,请见谅。

函数式编程的历史很悠久了,和面向对象编程范式一样,也是一种基本的编程范式,围绕这种范式也产生了一系列的编程技巧:比如传参时参数有默认值、参数数量可变、装饰器等等,它有和面向对象不同的关注点和相应的优势。但,私以为面向对象还是大势所趋,从主流语言的市场份额、市面上的书籍数量、思维习惯易上手性和主流的编程范式等多个方面来说,面向对象应该都是优势明显的。

很多人在说面向对象有很多问题,不好。而函数式编程可以解决这些问题。私以为,面向对象本身其实应该是非常好的。面临的一些问题,会不会是因为很多工程师缺少编程技巧而造成的?因为面向对象是主流,所以使用的人多,暴露的问题也就越明显,就像windows的病毒远比mac os多一样,原因并非mac os安全性高,而是windows被黑的太多了。

所以函数式编程,如果有时间的话,可以学习一下,丰富自己的编程技巧,但正常情况下,我建议还是随大流,专心把面向对象编程玩好吧。

maomao112

帖子数 : 50
注册日期 : 14-05-08

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 maomao112 周一 五月 12, 2014 12:13 pm

不知道编程技巧算不算是OOP的一部分,算或不算都有道理,因为它虽是编程方面的技巧,却和程序语言的关系不大,可以跨语言通用。面向对象在实战中,最大的难点应该在如何让对象”高内聚低耦合“。高内聚说白了,就是在抽象对象时,能让你抽象出来的对象”属性和方法能高度重用“,这个重用或许是自己调自己,或许是别的对象调自己,被调用的机会越多,内聚得越厉害。如果一个对象的某些属性和方法被调用的次数很少,可以考虑将其拆解一下,拆成两个或更多的类,借此提高这些对象的内聚性。

而低耦合就好理解多了,一个对象对其他对象的依赖性越低,知道的越少,耦合度越低。如何降低耦合度,是需要编程技巧的,虽然OOA和OOD也能帮助解决这个问题,但编程技巧上也需要一些方法,比如尽量私有、通过命令模式拆分开m和c从而解除对象间的直接调用、增加常量减少变量等等等等。

在编程技巧方面的学习,重要性和实用性都比设计模式更高。而这方面其实又不会像设计模式这样有书可以看,也不是通过自己顿悟能够悟出来的,最有效的方法是去看别人的代码,看高质量开源框架的源码,多学不同领域的知识,融会贯通。


maomao112

帖子数 : 50
注册日期 : 14-05-08

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 Admin 周二 五月 13, 2014 6:15 am

对象和类是面向对象程序设计的基石,其基本的机制便是方法和消息。消息是要求某个对象执行类中某个操作的规格说明;方法就是对象执行的操作。面向对象程序设计三个重要特征:封装性,继承性和多态性。
  (一)对象(Object)和类(Clasess)
  对象即指现实生活中无所不在、各种各样的实体,它可以使具体的事物,也可以是抽象的实体[2]。从对象的构成和内容来看,设计程序时使用对象有以下优点:对象是对物体的直接抽象,这种抽象简化了实际物体的模型,同时以一种可以操作的形式将实体表达出来。进行了数据的封装后,掩蔽了实现的复杂性,对于用户使用起来就更加方便。
  在现实生活中,具有相似性质,执行相同操作的对象,称为同一类对象,即类是同一种对象的集合与抽象[2]。例如,在Visual Basic中窗体都是Form类的实体,一个单独的窗体也是一个类。
  (二)数据封装(Data Encapsulation)
  数据封装是类的一个重要特性。数据封装是把数据和相关的操作设在一个包中,那么程序不能直接访问对象中的变量,只有通过对象的方法才能作用于数据。
  (三)继承(Inheritance)
  我们首先在对象的基础上创建对象,新的对象就会继承原先对象的所有属性和特点,同时根据实际情况也可以选择和修改父对象的属性和功能,这就叫做继承。利用这点,可以将旧的程序扩充为当前所需要的,也可以从已知的类中派生出新的类来。
  (四)多态性(Polymorphism)
  多态性就是多种表现形式,不同事物具有不同表现形式的能力,具体来说,可以用“一个对外接口,多个内在实现方法”表示。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度

Admin
Admin

帖子数 : 65
注册日期 : 14-05-08

https://xyezedkj.longluntan.com

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 fulong 周三 五月 14, 2014 5:46 am

一次呈现一个阶段的课题,并使得每一节课的内容有足够的焦点,让学生在移至下一课题前,轻松消化每个知识。在教学过程中,我只给学生那些我认为对学生了解此程序设计十分重要的内容,而非将所有涉及的一切都倒给学生。某些课题对学生学习程序设计来说并没有太多的必要,这些信息往往只会混淆他们的观念,并加深他们对程序设计的复杂感受而已。举个C语言的例子好了,如果你能清楚记得运算符优先序,撰写出精巧的程序代码想必轻而易举。但这么做却有可能造成学生的困惑。所以,忘了运算符优先顺序吧!在任何可能混淆的地方使用圆括号不就得了。另外,实践证明焦点教学法能缩短授课和练习之间的空档,让学生始终踏在扎实的基础上,通过对各课题的充分了解,面对更困难的作业和书籍。这么做不仅为了让学生的心态更为主动,融入“自己动手做”的学习气氛,而且让学生更具有成就感。

fulong

帖子数 : 59
注册日期 : 14-05-09

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 fulong 周三 五月 14, 2014 5:46 am

在教学过程中,注意通过在书本原有程序的基础上逐渐改变和增加条件的方法来提高同学的综合编程能力。例如某例题是使用了do…while循环来解决,则可以要求学生改为使用do…until来解决;某例题教给大家求最大公约数的方法,则要求同学们课后思考求最小公倍数的方法;故意给出一些错误的程序,给同学们设计一些陷阱,让同学们自己去发现并把程序编写错了的地方改正过来等等。要注意的是,必须谨慎安排课题的呈现顺序,让学生不至于突兀地碰触到任何未曾见过的内容,万一在某些情形下无法达到此理想,必须进行简要的引导。举一反三的教学方法,能引导学生在学习编程的过程中养成运用动态思维来解决问题,对培养学生的逻辑思维能力、抽象思维能力以及促进学生综合编程能力有非常重要的作用。

fulong

帖子数 : 59
注册日期 : 14-05-09

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 fulong 周三 五月 14, 2014 5:46 am

传统的教学方法是“黑板+粉笔”。多媒体辅助教学法的优点是:节约了板书时间,加大信息量,开阔知识面。并能挖掘出课本文字达不到的直观、动态效果,使难以理解的抽象理论形象化、生动化,将学生带入模拟场景,达到提高教学效率、增强学生学习兴趣的目的。
  面向对象程序设计教学中涉及到大量的算法和结构流程的描述,为此,我充分发挥自身的专业优势,运用多媒体辅助教学手段,通过计算机图形显示、动画模拟及文字说明等,营造一个全新的图文并茂、生动直观的教学环境,从而大大增加了教学信息量,提高了学习效率,有效地刺激和培养了学生的形象思维。对一些重要的结构流程和算法,如分支结构的执行原理、循环结构执行原理等,我制作了专门的教学课件,通过实例动态演示和模拟程序的执行过程,并让学生在课堂上进行自主探究式的学习,从而加深了学生对抽象原理的理解及方法的运用。与此同时,让学生在接受理论知识的过程中还能体会到现代化信息技术的魅力,达到了传统教学无法实现的教学效果。

fulong

帖子数 : 59
注册日期 : 14-05-09

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 Admin 周三 五月 14, 2014 10:30 am

面向对象程序设计的方式是建立在结构化程序设计的基础上,采用面向对象、事件驱动的编程机制,以类作为构造程序的基本单位,围绕着对象的继承性、多态性和封装性等特征开发设计程序。具体步骤为:①选择主要数据对象;②定义每个对象能够接收和发送的消息;③说明为实现每个对象所必须的数据元素;④用小说明书说明每个对象的方法;⑤最终优化整个设计。

Admin
Admin

帖子数 : 65
注册日期 : 14-05-08

https://xyezedkj.longluntan.com

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 Admin 周三 五月 14, 2014 10:30 am

面向对象程序设计方法所涉及的概念都很抽象,而且对概念的描述也不够成熟,许多基本概念还没有统一权威的标准定义,可供用户使用的类也是种类繁多、结构复杂,而代码编程部分又需要许多传统程序设计的思想,对初学者来说直接学习面向对象程序设计有一定的困难。

Admin
Admin

帖子数 : 65
注册日期 : 14-05-08

https://xyezedkj.longluntan.com

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 Admin 周三 五月 14, 2014 10:33 am

类库的可靠性问题。虽然类库中提供的类都是经过精心设计、测试过的, 但如此庞大的系统谁也无法保证类库中的每个类在各种环境中百分之百的正确, 如果应用程序中使用了类库中某个存在问题的类,当经过几层继承后错误才显现出来,这时程序员对此将束手无策,有可能要推翻原来的全部工作。


从面向过程到面向对象,程序开发理念发生了质的变化。面向对象程序设计能更自然、更容易地表现现实世界,为解决软件产品扩展和质量保证中的许多问题提供了技术支持,极大地提高了软件开发的效率。随着技术的不断完善,相信在不久的将来,它必将被应用到更广阔的领域。


Admin
Admin

帖子数 : 65
注册日期 : 14-05-08

https://xyezedkj.longluntan.com

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 Admin 周三 五月 14, 2014 10:46 am

大概在三四年前,面向对象编程几乎一致被看好和膜拜。然后在过去一两年,似乎对面向对象编程的质疑变多了,有些工程师很推崇函数式编程了。对于函数式编程,我没有研究过,所以不好发表意见。这里只说一点私人看法,如果说错了,请见谅。

函数式编程的历史很悠久了,和面向对象编程范式一样,也是一种基本的编程范式,围绕这种范式也产生了一系列的编程技巧:比如传参时参数有默认值、参数数量可变、装饰器等等,它有和面向对象不同的关注点和相应的优势。但,私以为面向对象还是大势所趋,从主流语言的市场份额、市面上的书籍数量、思维习惯易上手性和主流的编程范式等多个方面来说,面向对象应该都是优势明显的。

很多人在说面向对象有很多问题,不好。而函数式编程可以解决这些问题。私以为,面向对象本身其实应该是非常好的。面临的一些问题,会不会是因为很多工程师缺少编程技巧而造成的?因为面向对象是主流,所以使用的人多,暴露的问题也就越明显,就像windows的病毒远比mac os多一样,原因并非mac os安全性高,而是windows被黑的太多了。

所以函数式编程,如果有时间的话,可以学习一下,丰富自己的编程技巧,但正常情况下,我建议还是随大流,专心把面向对象编程玩好吧。

Admin
Admin

帖子数 : 65
注册日期 : 14-05-08

https://xyezedkj.longluntan.com

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 Admin 周三 五月 14, 2014 10:51 am

面向对象程序设计是计算机专业的必修课程,开设此课程的目的是使学生掌握程序设计的基本方法并形成面向对象的程序设计思想,能够熟练地使用C++语言进行程序设计并具备独立调试程序的能力,为后继课程学习和应用打下坚实的基础。作者结合国内外优秀编程语言的教学方法和模式,不断地总结和积累经验并运用于教学实践之中,取得了较好的教学效果,有助于学生在有限的教学时间内,以最快最简单易懂的方式,扎实地掌握C++语言的内容。

Admin
Admin

帖子数 : 65
注册日期 : 14-05-08

https://xyezedkj.longluntan.com

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 maomao112 周三 五月 14, 2014 10:57 am

例如,在一开始学习对象及对象的属性、方法和事件的有关概念时,我设计了一个点击按钮显示“hello,World!”信息的简单程序实例,让学生和我一起做:
(1)在当前窗体内添加了一个标签和一个命令按钮。
(2)按照给出的要求设计各对象的属性。
(3)在对应事件过程内编写相应的代码。
(4)保存并运行程序。
  在操作的过程当中,教师不用讲解每件事的含义,通过完成任务后,教师通过设问,让学生思考:什么是对象及对象的属性、方法和事件?并让学生找出本例中各对象的名称、不同对象的属性、方法和事件过程名称,教师再适当加以归纳和小结。在此基础上,再引导学生归纳总结出创建应用程序的基本步骤,及如何在界面内添加对象、设置事件等等,一切问题都迎刃而解。实例教学法打破了以教材为中心的传统教学模式,不按教材的顺序授课,而是以精选出的程序实例为中心,把学习的重点放在具体实例的讲述上,把要学习的语法和概念融入到具体实例中来讲解。要特别注意,示例必须尽可能简短、单纯,这么一来也许会在某种程度上远离了真实世界的问题处理方式。尽管如此,我发现,对初学者而言,详尽理解每个示例所带来的愉悦胜过于了解它所能解决的问题范围。整个教学过程中强调学以致用,在应用中学习,从而避免了枯燥、繁杂的理论说教,不仅能增进学生的学习积极性,而且对提高学生综合分析和解决实际问题的能力也大有帮助。

maomao112

帖子数 : 50
注册日期 : 14-05-08

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 maomao112 周三 五月 14, 2014 10:59 am

一次呈现一个阶段的课题,并使得每一节课的内容有足够的焦点,让学生在移至下一课题前,轻松消化每个知识。在教学过程中,我只给学生那些我认为对学生了解此程序设计十分重要的内容,而非将所有涉及的一切都倒给学生。某些课题对学生学习程序设计来说并没有太多的必要,这些信息往往只会混淆他们的观念,并加深他们对程序设计的复杂感受而已。举个C语言的例子好了,如果你能清楚记得运算符优先序,撰写出精巧的程序代码想必轻而易举。但这么做却有可能造成学生的困惑。所以,忘了运算符优先顺序吧!在任何可能混淆的地方使用圆括号不就得了。另外,实践证明焦点教学法能缩短授课和练习之间的空档,让学生始终踏在扎实的基础上,通过对各课题的充分了解,面对更困难的作业和书籍。这么做不仅为了让学生的心态更为主动,融入“自己动手做”的学习气氛,而且让学生更具有成就感。

maomao112

帖子数 : 50
注册日期 : 14-05-08

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 maomao112 周三 五月 14, 2014 10:59 am

1、封装和数据隐藏
当一个技术员要安装一台电脑时,他将各个设备连接起来,当他想要一个声卡时,他不需要自己去用集成电路制作一个,而会直接购买一个。技术员关心的是声卡的功能,而不是声卡的内部实现。声卡是自成一体的。这种自成一体性称作封装性。无需知道封装单位内部是如何工作就能使用的思想称为数据隐藏。
  2、继承和重用
工程师要制造新的电视机,有两种选择:一是从草图开始,二是对已有的型号进行改进。他当然不希望重头再来,而是希望在原有的型号上进行改进,比如说增加一组电路。新的电视很快做出来了,被赋予一种新的型号,于是新型电视机诞生了,这是继承和重用的实例。AS3采用继承支持重用的思想,程序可以在扩展现有类型的基础上声明新类型。新类是从现有类派生出来的,称为派生类(子类)新型电视就是在原有电视的基础上增加了若干功能得到的,所以新型的电视就是原有电视类的派生,继承了原有电视的所有属性,并在此基础上增加了新的功能。

maomao112

帖子数 : 50
注册日期 : 14-05-08

返回页首 向下

浅谈面向对象程序设计方法 Empty 回复: 浅谈面向对象程序设计方法

帖子 由 fulong 周二 五月 20, 2014 4:25 am

不知道编程技巧算不算是OOP的一部分,算或不算都有道理,因为它虽是编程方面的技巧,却和程序语言的关系不大,可以跨语言通用。面向对象在实战中,最大的难点应该在如何让对象”高内聚低耦合“。高内聚说白了,就是在抽象对象时,能让你抽象出来的对象”属性和方法能高度重用“,这个重用或许是自己调自己,或许是别的对象调自己,被调用的机会越多,内聚得越厉害。如果一个对象的某些属性和方法被调用的次数很少,可以考虑将其拆解一下,拆成两个或更多的类,借此提高这些对象的内聚性。

而低耦合就好理解多了,一个对象对其他对象的依赖性越低,知道的越少,耦合度越低。如何降低耦合度,是需要编程技巧的,虽然OOA和OOD也能帮助解决这个问题,但编程技巧上也需要一些方法,比如尽量私有、通过命令模式拆分开m和c从而解除对象间的直接调用、增加常量减少变量等等等等。

在编程技巧方面的学习,重要性和实用性都比设计模式更高。而这方面其实又不会像设计模式这样有书可以看,也不是通过自己顿悟能够悟出来的,最有效的方法是去看别人的代码,看高质量开源框架的源码,多学不同领域的知识,融会贯通。

fulong

帖子数 : 59
注册日期 : 14-05-09

返回页首 向下

返回页首


 
您在这个论坛的权限:
不能在这个论坛回复主题