文档详情

第1章 对象式程序设计基本概念.ppt

发布:2018-05-15约3.33千字共19页下载文档
文本预览下载声明
第1章 对象式程序设计基本概念 1.1 面向过程与面向对象程序设计 几个基本事实 认识、分析和解决问题应采用与问题复杂程度相匹配的方法论:还原论→系统论 认识、分析和解决复杂问题应采用抽象程度高的方法 现代建筑利用构件来建造 成功的计算机制造商并不生产所有配件 认识复杂事物采用高度抽象的概念 硬件价格不断下降、性能越来越高、应用越来越广、解决的问题越来越复杂 几个基本事实(续) 程序设计语言从面向机器到面向过程再到面向对象的发展历程反映了程序越来越复杂的趋势,也越来越接近人的思维习惯 现代软件的本质特征是其固有的复杂性,这是软件危机产生的根源 应对和控制复杂性的主要方法有:分解、抽象、模块化和信息隐藏等 面向对象技术更充分体现了分解、抽象、模块化和信息隐藏等思想,可以有效提高软件生产率、缩短开发时间、提高软件质量,是控制软件复杂性的有效途径 面向过程程序设计存在的问题 各种类型的数据与过程间的联系错综复杂,软件的可靠性、可读性和可维护性差 设计方法强烈依赖系统逻辑模型的完整性描述,难以作到系统的动态变化与扩展,系统开发速度慢、周期长、费用高 自顶而下的“瀑布式”的设计,使数据结构的设计仅服从于当前功能实现的要求,为以后的扩充和重用设置了巨大的障碍 两者的抽象程度不同 面向过程的程序:算法+数据结构=程序, C, Fortran 面向对象的程序:对象及其相互作用、协调, C++, Java 两者的方法论不同: 面向过程的程序设计: 还原论 → 面向过程的问题求解 → 面向过程的程序设计 ↓ ↓         ↓ 难以认识复杂事物 难以解决复杂问题 难以设计复杂程序 面向对象的程序设计: 系统论 → 面向对象的问题求解 → 面向对象的程序设计 ↓ ↓         ↓ 便于认识复杂事物 便于解决复杂问题 便于设计复杂程序 两者并不矛盾 前者注重局部,后者注重整体(各要素之间的相互关系) 前者适用于设计简单、规模小的程序,后者适用于设计复杂、规模大的程序 在面向对象程序设计的局部仍需要面向过程的程序设计 1.2 面向对象程序设计的思想要点 程序由对象组成,这些对象首先是自治、自恰的,同时它们还相互通信、协调和配合,从而共同完成整个程序的任务和功能 对象:以数据为中心,是集成了数据和其上的操作独立、自恰(通过自身定义的操作来管理自己)的逻辑单位 对象具有唯一的标识和固定的对外接口,接口是对象与外界通信的通道 对象的属性表示它所处的状态(静态特征),操作用来改变对象状态达到特定功能(动态特征) 对象是现实世界实体或概念在计算机中的抽象表示 一个电视机对象 对象的关系 包含:当对象A是对象B的属性时,称对象B包含对象A。例:电视机和显象管。 继承:当对象A是对象B的特例时,称对象A继承了对象B。例:电视机、黑白电视机、彩色电视机。 关联:当对象A的引用是对象B的属性时,称对象A和对象B之间是关联关系。例:电视机和生产厂商。 对象的引用是指对象的名称、地址、句柄等可以获取或操纵该对象的途径。对象的引用所占用的内存空间要少得多,它只是找到对象的一条线索,通过它,程序可以找到真正的对象,访问这个对象的数据,调用这个对象的方法。 关联和包含是两种不同的关系,厂商并不是电视机的组成部分,所以电视机对象里不需要也不可能保存这个厂商对象,而只需要保存一个厂商对象的引用,例如厂商的名称。 类是同种对象的集合与抽象,对象是类的实例,类是产生对象的模板。类可以派生子类,子类继承超类的属性和方法。 在面向对象程序设计方法中,其程序结构是一个类的集合和各类之间以继承关系联系起来的结构,有一个主程序,在主程序中创建各对象并规定它们之间传递消息的规律。从程序执行角度来看,可以归结为各对象和它们之间的消息通信(方法调用)。面向对象程序设计最主要的特征是各对象之间的消息传递和各类之间的继承。 1.3 面向对象软件开发过程 OOA(object oriented analysis):明确需求,从问题中抽取对象模型(概念模型)。主要解决“做什么”的问题。 OOD(object oriented design):将模型细化,设计类,包括类的属性、操作和类间关系,同时考察是否有直接可以引用的已有类或部件。主要解决“怎么做”的问题。 OOP(object oriented programming):选定一种面向对象的程序设计语言,具体编码实现上一阶段类的设计,并在开发过程中引入测试,完善整个解决方案。 1.4 面向对
显示全部
相似文档