面向对象程序设计教案
面向对象程序设计教案
第一章 计算机与程序设计
基本内容:
1. 把程序及其相关文档资料称为软件。
2. 程序设计语言是人类用来向计算机传递信息的表示方法、约定和规则的集合。
3. 传统的程序设计语言是过程性语言,使用这类语言编制程序的主要工作,是设计解题过程,因此称为面向过程程序设计。
4. 用模块化、抽象、信息隐藏、局部化和模块化独立等原理及结构程序设计技术指导面向过程程序设计,能够提高软件开发效率,增加软件的可理解性和可维护性。这些方法不仅适用于面向过程程序设计也适用于面向对象程序设计方法。
5. 面向对象方法有四个要点,只有同时使用对象、类、继承和消息的方法,才是真正的面向对象方法。学习面向对象程序设计,首先要学会面向对象的思维解题方法。各种面向对象的程序设计语言,无非是实现面向对象解题方法的工具。
6. 面向对象方法的主要优点是,接近人类习惯的思维方法、稳定性好、可重用性好和可维护性好。是解决软件开发面临的难题的最有希望最有前途的方法之一。
1.1 计算机的基本结构 1.2 程序设计语言
一、机器语言(machine language): 以0和1表示 手工操作
二、汇编语言(assembler language): 例如mov ax,100 add ax,bx等
开始使用批处理(batch processing) 三、高级语言(high-level language): 如60年代的ALGOL
四、结构化程序设计(structured programming)
整个程序是一个模块层次(hierarchy of modules)
每一模块内既有数据,又有代码,用于按一定算法对代码进行操作 如FORTRAN,C等
五、面向对象的程序设计(Object-Oriented Programming, OOP)
1
面向对象程序设计教案
1.3 面向过程程序设计
三种基本结构: 1、顺序结构。 2、选择结构。
3、循环结构:当型循环结构;直到型循环结构。 结构化程序设计方法: 1、自顶而下; 2、逐步细化; 3、模块化设计; 4、结构化编码。 1.4 面向对象程序设计
计算机软件开发一直被二大难题所困扰: 1. 如何超越程序复杂性障碍;
2. 如何在计算机系统中自然地表示客观世界,即对象模型。
·面向对象程序设计(Object-Oriented Programming,OOP)中的对象、类、继承、多态等概念和技术(机制),对降低软件复杂性、改善其重用性和可维护性,提高软件的生产效率,有着十分重要的意义。 一、什么是面向对象程序设计 (一)新的程序设计范型
·程序设计范型(Paradigm)是指设计程序的规范、模型和风格,它是一类程序设计语言的基础。
过程程序设计范型: 程序=过程(定义)+(过程)调用 面向对象程序设计范型:程序=对象+消息 ·面向对象程序设计特征: 1.程序的基本元素为对象;
2. 程序结构一般由类的定义和类的使用两部分组成; 3. 程序中的一切操作都是通过向对象发送相应的消息来实现; 4. 对象接收到消息后,启动有关的方法完成相应的操作。
(二)面向对象程序设计的基本概念 1. 对象(Object)
·对象既可表示具体的实体,亦可表示抽象的概念。对象一般可表示为:
属性(状态)+行为
·在面向对象程序设计中,对象表示为:数据+操作(方法),
2
面向对象程序设计教案
故
对象——是指由一组数据和作用在其上的方法(操作)组成的实体(封装体)。 2. 类(Class)
·类——具有某些共性的对象的抽象模型,即一个类就表示一个概念。
·类在OOP中被表示为由一组数据项和作用在其上的一组操作所构成的整体。类中的数据项一般称为实例变量或数据成员,类中的操作一般称为方法或成员函数。
·一个类所生成的对象称为该类的实例(instance),所以,类就是其实例的模板。
·一个类的实例变量(数据)一般只能由本类中定义的方法(操作)来操纵,外界一般是不能直接访问的。外界要访问类的数据,只能通过类中的方法去实现。而且,类只向外界提供方法的界面,而隐藏其实现细节。故类是一种抽象的数据类型,它实现了信息隐蔽,是实例变量和方法的封装体。 3. 消息
·消息就是要求对象进行某种活动(操作)的信息。在面向对象程序中,要求某对象作某操作时,就向该对象发送一个相应的消息;当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。
·消息及其传递机制是OOP中一个重要特色。在面向对象程序中的一切活动,只能通过消息去驱动。欲改变对象的状态,只能通过向对象发消息实现;另外,消息传递机制也是对象间进行通讯的唯一方式。 4. 方法
·方法是对对象(的属性或状态)的各种操作。方法包括界面(原型)和实现(定义)两部分。
·方法的界面亦即消息的模式,它给出了方法的调用协议。方法体是实现某种操作的具体过程。
·消息与方法的关系:相互依存。
3
面向对象程序设计教案
·消息模式与方法界面是一致的。
5. 继承
对类进行考察可知,不仅实体对象能够聚集成类,抽象的类也能再进一步聚集成更高层次的类,即父类(亦称为超类或基类);反之一个类也可以(或可能)再分成一些子类(子类也称为派生类或导出类)。亦即:一个类向上可以有父类,向下可能有子类。故某一范围的事物就可以构成具有层次结构的类集——类树或类网(或称类格)。
水果
苹果 香蕉 富士 国光 元帅
(a)树结构
人
学生 职员
在职大学生 (b)格结构
由类与子类的关系可知,父类具有的属性或行为(数据与操作),其子类也一定具有。即父类将其属性与行为遗传给了子类。反过来,子类也可以从父类那里继承属性和行为。亦即:凡父类中的数据和操作也都是子类的数据和操作。故在子类的定义中,就不需要再重复定义父类中已有的数据项和方法,而只需给出子类所独有的数据项(属性)和方法(行为)。
二、为什么需要面向对象程序设计
4
面向对象程序设计教案
(一)软件开发对程序设计的需求 1. 提高生产能力
传统的面向过程的程序设计中,
·子程序的抽象级别(函数)太低,难以重用;
·数据和操作相分离,当一个或多个数据的结构发生了变化,这种变化将波及程序的很多部分甚至遍及整个程序,故程序的复杂性很难控制; ·难以维护。 2. 扩大处理范围
面向过程语言已不适宜描述复杂的数据对象。 3. 面向新的环境
并行处理、分布式、网络和多机系统等,已是程序运行的主流方式和主流环境。这些环境的一个共同特点是都具有一些有独立处理能力的节点,节点之间有通讯机制,即以消息传递进行联络,
面向对象程序设计正好符合这一要求。
(二)面向对象程序设计的优点 1. 可控制程序的复杂性
2. 可增加程序的模块性(类作为一个程序模块)
3. 可提高程序的可重用性(类作为一个大粒度的程序构件,另外父类和子类之间的继承关系,也构成了程序重用的重要方式) 4. 可改善程序的可维护性(只要方法的界面不变,方法体的任何修改都不会导致程序的修改。
5. 能对现实世界的分类系统进行自然的描述 6. 能很好地适应新的硬件环境
三、从面向对象程序设计到面向对象技术 1、OOP、OOA、OOD和OODB
2、面向对象思想与计算机硬件体系结构 3、面向对象技术的应用
·操作系统设计; ·人机交互界面设计; ·系统模拟;
·人工智能、知识工程。
5