计算机专业教学中的面向对象编程思维技巧

点赞:21815 浏览:95976 近期更新时间:2024-02-01 作者:网友分享原创网站原创

摘 要:概括了面向对象编程中的常用抽象概念,提出了几种帮助学生提高面向对象编程思维能力的思维技巧.教学实践表明,计算机专业教师将这些思维技巧传授给学生后,极大地提升了学生进行面向对象编程的抽象思维能力和实际动手开发能力,从而编写出符合软件工程标准的高质量程序.

关 键 词:面向对象;计算机教学;编程思维

中图分类号:G642.0文献标识码:A文章编号:1671-0568(2012)35-0050-02

一、面向对象编程概述

1.面向对象哲学观

面向对象思想认为,世界是由对象构成的一张关系网,对象间通过消息进行通信,见图1.系统的建造方法是创建一些对象,并将它们组装在一起,让它们能够相互发送消息.这让我们能够以动态的、互相通信的结构来思考一个系统,并且可以通过改变对象的组合来改变系统的行为.

图1对象之网

2.对象的主要特点

首先,对象是对客观世界中事物的抽象,是相对独立的实体.其次,由于客观世界中的事物通常既具有静态的属性,又具有动态的行为,因此对象也同时具有状态和行为.由于对象封装了数据和操作,从而具有较好的独立性和可重用性.

3.对象间的关系

对象间通信和协作方式灵活多样,原因不言而喻:对象结构用来映射客观世界,而客观世界是五光十色、千姿百态的.例如,一个对象向另一个对象请求怎么写作以实现自己的职责,从而在这两个对象间形成了一种依赖关系.又例如,一个对象在自己的状态发生改变时,可以通知其它对象,从而形成一种通知关系.面向对象哲学观认为,客观世界中的任何事物都是对象,事物间的任何复杂关系都可以抽象为对象间的关系.

二、面向对象编程思维技巧研究

1.对象隐喻

隐喻是一种比喻和借用,以形象地描述一个事物.关于对象的一个重要隐喻是:对象就像一个个活的生物细胞,相互独立又能与外界进行信息交换.20世纪60年代艾伦·凯在创建Smalltalk语言时提出了“对象”这一概念,他的灵感就来源于生物细胞.通过向学生介绍这个隐喻,可以调动学生的想象力,充分发挥他们的形象思维能力,从而建立起一个关于对象的直观概念.

对象的另一个隐喻是:生物细胞通过细胞膜将自身与外界环境相隔离,对象则通过封装机制达到同样目的.通过向学生介绍这一隐喻,使学生直观地了解到对象有内外之分,对象内部的成分是由private访问修饰符声明的内容,而对象外部的成分是由public访问修饰符声明的内容.将对象比喻成独立且相互通信的生物细胞,可以加深学生对这一最为重要的基本概念的理解.

2.对象创建

程序中的对象不是程序一运行就都自动产生的,而是按需创建.对象作为程序运行时的物理实体单位,在创建时需要使用一定的内存资源,而在销毁时释放掉所占用的内存资源.每个对象都有其生命期.一个对象要么是由系统(如Ja虚拟机)创建,要么是由另一个对象创建.一个对象创建后,要么是由系统使用某种机制进行销毁(如Ja的垃圾自动回收机制),要么是由程序员编写的一段代码完成销毁.对象在创建时,一旦得到相关的内存资源后,应立即将这些资源初始化,保证对象持有正确的初始数据和可用性.对象的创建和初始化工作顺次并连续发生,系统或程序员通过调用该对象的一个构造器来保证这一点.任何对象在创建完成后,应当处于待命状态,随时可被使用.对于学生而言,理解对象的整个创建过程是一个难点,因为对象的构造器是在一个类中,而对象的创建代码通常是在另一个类中,代码的结构会显得较为零散.对象创建其实质是一种对象关系,因为一个对象通常总是由另一个对象来创建的.学生应当牢牢掌握“对象总是先创建后使用”的思维方式.

3.对象组合

对象组合是将多个小对象按一定结构装配成一个大对象,从而实现更复杂和更强大的能力.对象组合是对象间的一种结构关系.可以说,现实世界中事物间有多少种结构关系,程序世界中就有多少种对象组合方式.面向对象编程就是在计算机世界中模拟现实世界.对象组合可以进一步细分:若一个对象中组合了多个相同类型的对象,该对象称为“容器”.一个容器对象,按其组合对象的结构关系,又可分为线性表容器、集合容器、映射表容器等.若一个对象中组合了多个不同类型的对象,我们称之为“装配”.为学生介绍多种对象组合方式时,应当以现实世界的事物为例,使学生树立“对象组合反映现实事物结构”的思维方式.


4.对象继承

对象间的继承关系是一种层次结构,它是对现实世界事物间的层次关系(如父子关系)的逻辑映射.继承是一种强大的程序复用机制,使得子类对象立即获得父类对象的全部能力.但滥用继承会造成程序逻辑的混乱和错误.只有当子类对象确实是父类对象的一种子类型并完全具备父类对象的完整特征时,子类对象才能继承父类对象.学生在学习对象继承时,应当牢固把握"对象组合优于对象继承"的思维方式,毕竟,现实事物之间的结构关系复杂多样,层次结构只是其中的一种而已.

5.对象依赖

现实世界的许多事物之间有时只会发生偶然的、微弱的联系.对象依赖就是对这种微弱联系的一种逻辑映射.对象依赖中最重要的是要看清依赖的方向,即谁依赖谁.依赖对象通常会采用某种方式获得被依赖对象,然后使用被依赖对象.两个对象间的依赖应当尽可能少,因为强依赖关系将降低单个对象的可复用性.学生在编程时,应当树立“对象依赖尽可能少”的思维方式.

三、结论

软件开发作为一项社会实践活动,既包含了开发人员的大量思维活动,又是对现实世界的一种再认知和再创造.所以,笔者认为,在教学实践中首先应当把握以下几个教学原则:①树立面向对象哲学观点和编程风格.②对象世界与现实世界紧密联系.③抽象思维与形象思维相结合;对于讲授具体的面向对象编程技术,我们结合上述教学原则,提出了以下几个编程思维技巧:第一,对象就像活的生物细胞,相互独立又能传递信息.第二,对象总是先创建后使用.第三,对象组合反映现实事物的结构.第四,对象组合优于对象继承.第五,对象依赖尽可能少.可以相信,让学生理解对象世界,观察现实世界,然后发现两个世界之间的联系并能自主地做出合理的映射,这就是面向对象编程思维的关键.当学生的思维能够在这两个有趣的世界中自由穿梭时,其思维能力和专业素质将会得到极大地提升.