版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计方法学讲课第1页,共26页,2023年,2月20日,星期一一、面向对象与面向过程程序设计OOP以待解问题中涉及的对象为主要矛盾对象(Object)和类(Class)对象,是现实世界中的物理实体在计算机逻辑中的映射和体现。类,是同种对象的集合与抽象。(模板)消息(Message)传递一个面向对象的程序由许多对象组成,这些对象之间对象之间通过收发信息相互沟通。对于对象来说,消息就是请求执行某个过程。基本概念第2页,共26页,2023年,2月20日,星期一基本概念对象类实体抽象数据类概念世界现实世界计算机世界抽象实例化抽象计算机逻辑实现映射一、面向对象与面向过程程序设计第3页,共26页,2023年,2月20日,星期一基本概念对象的组成标识用以区别不同对象的唯一标志用“对象名”表达状态又称静态属性,指对象内部包含的信息用“数据成员(域)”表达行为对象的动态属性,指对象可进行的操作使用“函数成员(方法)”表达一、面向对象与面向过程程序设计第4页,共26页,2023年,2月20日,星期一对象和类对象可以是现实生活中的一个物理对象,还可以是某一类概念实体的实例。例如:一辆汽车、一个人、一本书,乃至一种语言、一个图形、一种管理方式,都可以作为一个对象。类是一组具有相同数据结构和相同操作的对象的集合。类是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。比如每一辆汽车是一个对象的话,所有的汽车可以作为一个模板,我们就定义汽车这个类。可以使用类的定义实例化对象,这表示创建该类的一个实例。从类定义中产生对象,必须有建立实例的操作。一、面向对象与面向过程程序设计第5页,共26页,2023年,2月20日,星期一面向对象程序设计技术汲取了结构化程序设计中好的思想,并将这些思想与一些新的、强大的理念相结合,从而给你的程序设计工作提供了一种全新的方法。通常,在面向对象的程序设计风格中,你会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。同时,你会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型的变量。当你定义了一个对象,你就隐含的创建了一个新的数据类型。一、面向对象与面向过程程序设计第6页,共26页,2023年,2月20日,星期一对象A数据方法对象B数据方法对象C数据方法对象D数据方法消息消息消息消息面向对象程序设计中的数据和函数的组织结构:一、面向对象与面向过程程序设计第7页,共26页,2023年,2月20日,星期一面向对象程序设计的特点抽象性抽象(abstraction):去掉研究问题中次要的部分,仅仅抽取主要的、本质的部分进行研究的方法。过程抽象:面向过程方法使用数据抽象:面向对象方法使用抽象数据类型(ADT)一、面向对象与面向过程程序设计第8页,共26页,2023年,2月20日,星期一面向对象程序设计的特点封装性封装(encapsulation):利用ADT将数据和基于数据的操作密封在一起,系统的其它对象只能通过界面与其交互。封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。封装的优点提高了系统灵活性提高了系统安全性实例:银行账户一、面向对象与面向过程程序设计第9页,共26页,2023年,2月20日,星期一面向对象程序设计的特点继承性(具体化)继承(Inheritance)是可以让某个类型的对象获得另一个类型的对象的属性的方法。允许程序设计人员在设计新类时,只考虑与已有的父类所不同的部分,从而继承父类的内容为自己的组成部分可在子类中重写方法的实现,改变父类中不适合子类的行为提高了代码复用率,能使开发者的大部分精力用于系统特殊的设计,便于软件的演进和增量式扩充。C#只支持单继承,但支持多重接口的继承实现继承支持按级分类的概念。继承很好的支持代码的重用性(reusability)。一、面向对象与面向过程程序设计第10页,共26页,2023年,2月20日,星期一面向对象程序设计的特点多态性多态(Polymorphism):多态的意思是事物具有不同形式的能力。例如,对不同的实例,某个操作可能会有不同的行为。这个行为依赖于所要操作数据的类型。多态机制使具有不同内部结构的对象可以共享相同的外部接口。多态的实现重载(overload)覆盖(override)实例:cd/dvd播放一、面向对象与面向过程程序设计第11页,共26页,2023年,2月20日,星期一OPO总结任何事物都是一个对象通过相互联系的对象请求其他对象执行一定的行为来完成计算。对象之间通过发送和接收消息来进行通信。每个对象都有自己的存储空间,用来存储其它对象每个对象都是一个类的实例。类用来代表一组相似的对象及其相关的行为,即同一个类的多个对象能执行相同行为类可以组织成一个单根树状组织,成为继承层次,每个类事例的存储空间和行为自动被其派生类使用一、面向对象与面向过程程序设计第12页,共26页,2023年,2月20日,星期一面向过程的结构化程序设计方法就是采用面向过程的方法来设计结构化程序,结构化程序通常包含一个主过程和若干个子过程,其中每个子过程都描述了某一个小问题的解决方法再由主过程自顶向下调用各子过程,来逐步解决整个问题。面向过程开发方式是对计算机底层结构的一层抽象,它明显把程序的内容分为数据和操纵数据的操作两部分。一、面向对象与面向过程程序设计第13页,共26页,2023年,2月20日,星期一主程序函数1函数2函数3函数4函数5函数6函数7函数7自顶向下的设计方法:一、面向对象与面向过程程序设计第14页,共26页,2023年,2月20日,星期一全局数据全局数据函数1局部数据函数2局部数据函数3局部数据面向过程程序中函数和数据的关系:程序=数据结构+算法一、面向对象与面向过程程序设计第15页,共26页,2023年,2月20日,星期一面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。面向对象的程序设计方法所得到的程序是类的集合,而面向过程的程序设计方法所得到的程序是函数的集合。一、面向对象与面向过程程序设计第16页,共26页,2023年,2月20日,星期一一、面向对象与面向过程程序设计1.面向对象的程序容易阅读和理解,程序员只需了解必要的细节,降低了程序的复杂性,
使其具有较好的可维护性2.程序员通过修改、添加或删除对象,可以很容易的修改、添加或删除程序的属性,使程序具有易修改的特性3.程序员可以将某些公用的类和对象保存起来,随时插入到应用程序中,不需做什么修改就能使用,具有很好的可重用性面向对象程序设计的优点第17页,共26页,2023年,2月20日,星期一二、面向对象设计模式使用面向对象的程序设计语言在开发中最痛苦的是什么?1,选择太多,无从下手:public\protected\private继承\组合\聚实现继承\接口继承成员变量\局部变量简单设计\复杂设计2,没有正确答案:不知道我们是否真正的实现了面向对象的要求,看别人写的东西都是垃圾,自己写的东西慢慢也成为了垃圾,最后就是痛苦——一个难题没有正确答案往往都很痛苦。问题总结为:怎样才能实现好的设计,什么才是好的设计——高可复用性,高灵活性,高扩展性——高内聚,低耦合第18页,共26页,2023年,2月20日,星期一二、面向对象设计模式模式的诞生与定义Alexander给出了关于模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再重复相同的工作。Apatternisasolutiontoaprobleminacontext模式是在特定环境中解决问题的一种方案第19页,共26页,2023年,2月20日,星期一二、面向对象设计模式设计模式定义:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。四个基本要素:模式名称、问题、解决方案、效果描述方式:模式名和分类、意图、别名、动机、适用性、结构、参与者、协作、效果、实现、代码示例、已知应用、相关模式编目:23个设计模式,3个类别(创建型、结构型、行为型)第20页,共26页,2023年,2月20日,星期一二、面向对象设计模式设计模式的分类根据其目的(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种:创建型模式主要用于创建对象。结构型模式主要用于处理类或对象的组合。行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。第21页,共26页,2023年,2月20日,星期一二、面向对象设计模式设计模式的分类根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和对象模式两种:类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。对象模式处理对象间的关系,这些关系在运行时刻变化,更具动态性。第22页,共26页,2023年,2月20日,星期一二、面向对象设计模式GoF设计模式简介范围\目的创建型模式结构型模式行为型模式类模式工厂方法模式(类)适配器模式解释器模式模板方法模式对象模式抽象工厂模式建造者模式原型模式单例模式(对象)适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式职责链模式命令模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式访问者模式第23页,共26页,2023年,2月20日,星期一二、面向对象设计模式设计模式的优点
设计模式是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将避免我们做一些重复性的工作,而且可以设计出高质量的软件系统。设计模式的主要优点如下:设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。对于使用不同编程语言的开发和设计人员可以通过设计模式来交流系统设计方案,每一个模式都对应一个标准的解决方案,设计模式可以降低开发人员理解系统的复杂度。第24页,共26页,2023年,2月20日,星期一二、面向对象设计模式设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。设计模式使得设计方案更加灵活,且易于修改。设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。设计模式的优点第25页,共26页,2023年,2月20日,星期一二、面向对象设计模式面向对象的设计原则寻找合适的对象:什么时候设计类,候选词分析法,多个设计模式创造了一些类。决定对象的粒度:多个设计模式可以优化对象的粒度。指定对象接口:候选词分析法,多个设计模式也有指导。描述对象的实现区分类继承与接口继承:简单理解C++纯虚函数类(抽象类)针对接口编程而不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 迎小年贺团圆传统节日小年介绍课件
- 2024民办高等教育行业趋势分析报告
- 2024-2025学年年七年级数学人教版下册专题整合复习卷26.3 实际问题与二次函数(1)(含答案)-
- 寿险的意义与功用课件
- 《公顷和平方千米》教案
- 新版《税法1》考试复习题库大全-上(单选题)
- 2024年房地产经纪人《房地产经纪业务操作》核心备考题库(含典型题、重点题)
- 辽宁省大连市王府高级中学2024-2025学年高二上学期第二学段考试数学试题(含答案)
- 珍惜时间高效学习
- 有效沟通技巧
- 地铁司机岗位招聘笔试题与参考答案
- 2024年电工(高级技师)考前必刷必练题库500题(含真题、必会题)
- 2024秋期国家开放大学专科《统计学原理》一平台在线形考(形成性考核一至三)试题及答案
- 《工业产品销售单位落实质量安全主体责任监督管理规定》(60题)
- 世界技能大赛集训工作方案
- 实验室安全准入考试题库答案
- 2024年新人教版七年级上册地理课件 第一章综合复习
- 2输变电工程施工质量验收统一表式(变电工程土建专业)-2024年版
- 2025年高考语文复习备考复习策略讲座
- 心电图并发症预防及处理
- 四年级科学上册(教科版)第7课让弦发出高低不同的声音(教学设计)
评论
0/150
提交评论