程序设计方法学第六章面向对象程序设计方法学概述.ppt
《程序设计方法学第六章面向对象程序设计方法学概述.ppt》由会员分享,可在线阅读,更多相关《程序设计方法学第六章面向对象程序设计方法学概述.ppt(57页珍藏版)》请在优知文库上搜索。
1、第六章 面向对象程序设计方法学概述面向对象程序设计方法学主要内容n1.面向对象程序设计方法的基本概念n2.面向对象程序设计方法的起源n3. 面向对象计算的基本原理n4. 面向对象程序设计的基本原则n5. 面向对象分析与设计方法 基本概念 封装(encapsulation) 信息/实现的隐藏(information/implementation hiding) 对象标识(object identity) 消息(message) 类(class) 继承(inheritance) 多态性(polymorphism) 接口(interface)基本概念 封装,将属性和操作包装成一个单元,使得对状态的访
2、问和修改只能通过封装提供的接口进行。 信息/实现的隐藏,将某些属性或方法限制在封装内部使用,限制外部的可见性。 对象标识,每个对象可以作为软件实体被标识和处理,每个对象都有一个对象标识符(object identifier OID)。 消息,对象间发送请求的载体。 接口,一组没有公共代码的对象共享实现。基本概念 类,类是对象的类型(模版),对象是类的实例。 继承,子类隐式使用超类(或父类)的属性和操作。 多态性,子类覆盖(overriding)父类的方法,它和重载(overloading)的区别在于重载是在同一对象层次中,利用参数的不同来进行动态绑定(dynamic binding)。面向对象
3、程序设计方法的起源 1.符号抽象符号抽象 Backus1957 的Fortran实现使用了人们习惯的符号记法,而且确保了编译后的运行效率。 2.过程抽象过程抽象 C语言的发展使得函数概念的普及和大规模应用。一些相对完整的功能代码被封装在一个函数里面实现 3.信息隐藏和抽象数据类型信息隐藏和抽象数据类型 Wirth1980的Modula-2语言实现了模块,在不降低运行效率的情况下实现了信息隐藏和抽象数据类型 4.类型抽象类型抽象 挪威计算中心的Kristen Nygaard和Ole-Johan Dahl开发了Simula67语言; 70年代中期,Xerox Palo Alto研究中心开发了Sma
4、lltalk语言;这些语言用类、对象、重载、动态绑定技术实现了抽象数据类型,但是其运行效率不能让人满意,其抽象类型概念也不能让人接收让人接受,直到C和C+例子(c语言)过程抽象stack.h/*declarationoftheinterfaceofmodulestackofcharater*/ charpop(); voidpush(char); conststack_size=100;stack.cpp #includestack.h staticcharvstack_size; staticchar*p=v; charpop() /Checkforunderflowandpop voidp
5、ush(charc) /checkforoverflowandpush 进步:记法方便了程序设计 函数理清了算法之间的关系缺点:过渡依赖全局数据 语言本身缺乏模块化的支持例子(Modula-2)信息隐藏 define module stackexport qualified pop push;procedure pop(c:char);procedure push(c:char);end stackimplementation module stackfrom inout import writestringconst max = 50;typeindex=0.max;stk : array
6、index of chartop : index;procedure push(c:char);beginend push;begintop:=0;end stack.nmodule usestacknfrom inout import write,writelnnfrom stack import push,pop;nvarnletter : char;nbeginnpush(“A”);push(“B”); push(“C”); push(“D”);nwhile NOT empty() donPop(letter);nwrite(letter);nend;nend usestack.进步:引
7、入模块化概念,支持信息隐藏缺点:内建类型支持不好, 缺乏类型抽象例子(c+)类型抽象class stackPublic:virtual push(char var)=0;virtual char pop()=0; class stack_array : public stackpush(char var);编程的风格变为: 1.决定需要那些类 2.为每一个类提供完整的接口 3.为类、接口获得一般性(泛化) 4.实现接口的算法改进:内建类型支持好不足:缺乏对类型的类型 描述能力例子(c+)类型泛化template template class stackclass stackpublic:pub
8、lic:virtual void push(T& var)=0;virtual void push(T& var)=0;virtual T pop()=0;virtual T pop()=0;template template class stack_array : public stackclass stack_array : public stackpublic:public:void push(T& var);void push(T& var);T pop();T pop();改进:具有描述类型的 类型的能力缺点:只在设计时刻存 在一定程度的类型 泛化能力例子(JAVA)类型反射publ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 方法 第六 面向 对象 概述
