第6章 面向对象的妥协
- 格式:ppt
- 大小:216.00 KB
- 文档页数:36
面向对象程序设计课堂笔记1.面向对象编程(OOP)的概念:OOP是一种编程范式,其核心思想是将现实世界的事物抽象成类、对象等概念,通过封装、继承、多态等特性来实现代码的复用、可维护性和可扩展性。
2. 类和对象的概念:类是一种抽象的概念,用来描述一类具有相同特征与行为的事物;对象是类的一个具体实例,它具有该类定义的属性和行为。
3. 封装的概念:封装是OOP的一种基本特性,它将数据和行为封装在一个类中,外部无法直接访问类内部的数据,只能通过类提供的公共接口(方法)访问和修改数据。
4. 继承的概念:继承是OOP的一种基本特性,它允许子类继承父类的属性和行为,并可以在此基础上扩展和重写父类的方法。
5. 多态的概念:多态是OOP的一种基本特性,它允许不同的对象对同一消息做出不同的响应,即同一方法在不同对象上的表现形式不同。
6. 接口的概念:接口是一种抽象的概念,用来描述一个类所提供的方法和属性,而不涉及具体的实现细节。
它可以让多个类实现相同的接口,从而提高代码的灵活性和可扩展性。
7. 设计模式的概念:设计模式是一种被广泛应用的编程思想,它提供了一套经验丰富的解决方案来解决常见的软件设计问题,如单例模式、工厂模式、观察者模式等。
8. SOLID原则的概念:SOLID原则是面向对象设计的基本原则,它由5个原则组成,分别是单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖倒置原则。
这些原则旨在提高代码的可读性、可维护性和可扩展性。
9. UML图的概念:UML图是一种用来描述软件系统结构和行为的标准化图形语言,它包括用例图、类图、时序图、活动图等多种类型,可以帮助开发人员更好地理解和设计软件系统。
10. 实践中的应用:在实际的编程中,需要根据具体的业务需求和设计要求来运用面向对象的思想和技术进行程序设计。
同时,也需要不断学习和掌握新的技术和工具,以提高自己的编程能力和水平。
高级编程:面向对象的设计与实现随着计算机技术的飞速发展,编程语言也在不断地不断进步与完善。
而在编程语言中,面向对象编程已成为一种不可或缺的编程方式。
在实际开发中,采用面向对象的设计思想和实现方法,可以极大地提高程序的可复用性、可扩展性和可维护性。
本文将简要介绍面向对象编程的基本概念、设计原则以及实现方法,并通过一个简单的案例来演示面向对象编程的实现过程。
一、面向对象编程的基本概念面向对象编程(Object-oriented Programming,简称OOP)是一种编程范式或程序设计方法,它以对象为基本单位,通过类、继承、多态等机制来描述和实现现实世界中的事物以及它们之间的关系。
其中,对象是一个实际存在的数据结构,它包含了数据和方法两个部分,而类是一种模板,用来描述一类对象的特征以及它们所能执行的操作。
通过继承和多态机制,可以使得不同的对象具有不同的行为和状态。
二、面向对象编程的设计原则1. 单一职责原则(Single Responsibility Principle,简称SRP)单一职责原则是指一个类只负责完成一个职责或功能,也就是说一个类应该只有一个引起它变化的原因。
这样可以使得类具有高内聚性和低耦合性,使得代码更加清晰、简单。
2. 开放闭合原则(Open-Closed Principle,简称OCP)开放闭合原则是指一个类应该对扩展开放,对修改关闭,也就是说一个类应该允许新增功能而不需要修改原有代码。
这种设计原则可以使得代码更具可扩展性和灵活性。
3. 里氏替换原则(Liskov Substitution Principle,简称LSP)里氏替换原则是指任何超类出现的地方,子类一定可以替换超类并且程序还能正常运行,也就是说子类应该完全继承超类的所有方法,同时还可以加入新的方法。
这样可以保证程序的正确性和稳定性。
4. 接口隔离原则(Interface Segregation Principle,简称ISP)接口隔离原则是指一个类不应该依赖一些它不需要使用的接口,也就是说接口应该被细分为更小的粒度,从而使得客户端只依赖它需要使用的接口。
面向对象七大设计原则面向对象(Object-Oriented)编程是一种用于设计、编码和组织计算机程序的编程范式。
其核心是将程序中的数据和行为封装到类中,使得程序可以更易于扩展和维护。
在面向对象编程中,遵循七大设计原则是非常重要的,下面分别进行介绍:1、单一职责原则(SRP)单一职责原则强调一个类只应该有一个单一的责任。
这样可以使类更加简单,易于维护和扩展。
如果一个类具有多个职责,那么一旦其中一个职责发生变化,就可能会影响到其他职责。
2、开放封闭原则(OCP)开放封闭原则强调软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。
也就是说,当需要添加新功能时,应该通过扩展现有的代码来实现,而不是直接修改原有代码。
这样可以减少对原有代码的影响,并且可以使程序更加稳定和可维护。
3、里氏替换原则(LSP)里氏替换原则指的是,子类应该能够替换掉父类并且不会影响原有的程序逻辑。
也就是说,任何一个基类可以在不影响程序正确性的情况下被其子类所替代。
4、依赖倒置原则(DIP)依赖倒置原则强调抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
也就是说,高层模块(如应用程序)不应该依赖于底层模块(如数据库、文件系统等),而是应该依赖于抽象(如接口、抽象类等)。
5、接口隔离原则(ISP)接口隔离原则指的是,客户端不应该依赖于它不需要的接口。
也就是说,一个类不应该被强迫实现那些它不需要的接口。
这样可以降低类之间的耦合度,并且可以使接口更加清晰和易于维护。
6、迪米特法则(LKP)迪米特法则也叫作最少知识原则(LKP),它强调一个对象应该对其他对象有最少的了解。
也就是说,一个对象不应该直接与其他对象交互,它应该通过中介者来实现。
这样可以减少类之间的耦合度,使得程序更加稳定和易于维护。
7、合成复用原则(CRP)合成复用原则强调在软件设计中应尽量使用合成/聚合而不是继承来实现代码复用。
也就是说,应该通过组合多个简单的对象来构建复杂的对象,而不是通过继承来扩展已有的代码。
第六章习题一、选择题1. 对象是面向对象范型的( A )。
每个对象可用它自己的一组( B )和它可以执行的一组( C )来表征。
应用执行对象的( C )可以改变该对象的( B )。
它的应用必须通过( D )的传递。
可以认为,这种( D )的传递大致等价于过程性范型中的函数调用。
某些语言提供了特殊功能,允许对象引用自己。
若一个对象没有显式地被引用,则可让该对象( E )。
供选择的答案:A. ①基本单位②最小单位③最大单位④语法单位B ~ C. ①行为②功能③操作④数据⑤属性D. ①接口②消息③信息④操作⑤过程E. ①撤消②歇着③缺省④隐式引用⑤引用自己2.在面向对象软件开发过程中特别重视复用。
软件构件应独立于当初开发它们的应用而存在。
在以后的应用开发中,可以调整这些独立构件以适应新问题的需要。
因此,应使得类成为一个( A )的单元。
这样就有一个( B )生存期问题。
( B )生存期有自己的步骤,与任一特定应用的开发( C )。
按照这些步骤,可以完整地描述一个基本( D )。
而不仅仅考虑当前正在开发的系统。
系统开发的各个阶段都可能会标识新的类。
随着各个新类的标识,( B )生存期引导开发工作逐个阶段循序渐进。
在设计与实现类时,应尽可能利用既存类提供为当前应用所需要的功能,利用既存类的三个可能途径是:( E )复用既存类;对既存类进行( F )以得到满足要求的类;重新开始进行开发。
供选择的答案:A. ①可复用②可测试③可适用④可靠B. ①应用②寿命③类④软件C. ①相关②密切相关③负相关④无关D. ①概念②实体③事件④事情E, F. ①修改②更新③照原样④演化3 从分析到设计的过程流如图所示。
一旦已经开发完成一个合理完整的( A )模型后,就要着手( B )的设计。
这需要描述( B )的特征,以准确表达待实现的用户需求,以及实现需求所必须的支持环境。
一旦定义了各个( B ),就开始( C )设计,这时,可利用CRC卡片,将属性转换为( D ),将关系转换为( E )。
面向对象的理解并举例面向对象(Object-oriented)是程序设计方法论的一种流派,从抽象的角度考虑处理和解决问题,让程序可以表示真实世界和模拟真实世界的分析和模拟操作,它被认为是程序开发方面的一种思想。
一、定义:面向对象是程序设计方法论的一种流派,它从抽象的角度考虑处理和解决问题,使程序可以实现对真实世界和模拟真实世界的分析和模拟操作,是程序开发方面的一种思想。
它强调的是开发者的思维由概念对象转变为对对象类的抽象,在创建任何软件时,在任何情况下都要先从物理过程和具体事物出发,将它们抽象为可封装、可复用的对象,而不是从易操作的、可运行的程序出发。
二、特点:1、面向对象就是以“对象”为中心,将程序中每一个部分都要以“对象”的形式表示。
2、面向对象有自己的一套编程思想,重在“对象”和“类”的概念,以及对象和类之间的联系,也就是“继承”的概念。
3、面向对象把程序分为两个部分:逻辑部分和数据部分,它能让程序拥有更强的可维护性和可扩展性。
4、面向对象的思想是以属性和行为来描述对象,对象之间存在着关系,关系由多态(polymorphism)实现。
三、优点:1、易扩展性:由于面向对象程序设计得到了实现,比传统的程序设计模式更容易扩展及共享,减少代码的重复,可以把基本功能编写在一个类中,然后在不同的子类上添加不同的行为,对对象和对象之间的关系可以以多种方式实现,比如继承和关联等。
2、重用性:面向对象程序设计可以利用现有的类,通过继承获得类的信息,这样可以节省时间和提高可重用性。
3、可维护性:面向对象程序设计能够使程序员及早地探测和解决程序可能出现的重大问题,降低模块之间的耦合,减少非利期间的变更,以便在修改部分代码时能够尽量减少影响的范围,从而增加程序的可维护性。
四、应用:1、面向对象的主要应用就是软件开发,比如游戏、系统程序和应用软件等等,此外,面向对象程序设计也广泛应用于数据库开发。
2、计算机可视化图形,如OpenGL、DirectX、RenderWare等,用于图形缓冲以及对象渲染,也都是建立在面向对象技术之上的,从而实现视觉效果。
简述面向对象设计的原则。
面向对象设计的原则以抽象的概念建立起软件系统,使用继承、封装、多态等特性来实现可重用的设计。
它可以让软件更易于维护和扩展,也能提供更容易理解和食用的软件。
面向对象设计也提高了软件的可读性,加快了软件开发的进程,为现有软件提供了可依赖的结构。
面向对象设计有六种原则,它们是:单一职责原则(SRP),开放封闭原则(OCP),里氏代换原则(LSP),接口隔离原则(ISP),依赖反转原则(DIP)以及合成复用原则(CRP)。
第一、单一职责原则(SRP),即一个类应该只完成一个功能。
它可以帮助我们实现模块的划分以及职责的分配,提高模块可替换性和可扩展性。
一个类只做一种事情,让代码可读性更强,维护和扩展更容易。
第二、开放封闭原则(OCP),即一个软件实体(类,模块,函数等)应该可以扩展,但是不可修改。
这样可以降低程序的维护成本,以及增加软件的可扩展性。
第三、里氏代换原则(LSP),它要求子类必须能够替换其父类,如果父类可以接受所有类型的对象,那么子类也必须遵守这个原则。
LSP可以帮助我们编写出可维护和扩展的程序。
第四、接口隔离原则(ISP),它要求一个接口应该只有一个职责,每个接口应该尽量被保持小而聚焦。
Alisp引入了一种结构,将大的接口拆分为多个小接口,这样可以减少类的耦合,降低系统的复杂度,提高可维护性和可扩展性。
第五、依赖反转原则(DIP),最重要的原则之一,它强调高层模块不应该依赖低层模块,二者都应该依赖于抽象,同时也要鼓励以抽象为基础实现解耦,依赖反转从根本上决定了软件的可维护性,使用它可以使程序更具有弹性,可以更好地处理变化。
第六、合成复用原则,它要求对象组合,而非仅仅是继承。
这样的设计可以提高代码的复用性,并使得代码之间的耦合降低,这样可以把高层模块与低层模块分离,构成可维护和可拓展的软件体系结构。
面向对象设计的原则是软件设计的基本准则,它可以为软件开发建立一个结构,提高软件的可维护性以及可扩展性。
第五章面向对象的需求分析面向对象的需求分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。
它包含面向对象风格的图形语言机制和用于指导需求分析的面向对象方法学。
面向对象的思想最初起源于 20世纪 60年代中期的仿真程序设计语言Simula67。
20世纪80年代初出现的Smalltalk 语言及其程序设计环境对面向对象技术的推广应用起到了显著的促进作用。
20世纪90年代中后期诞生并迅速成熟的UML(Unified Modeling Language,统一建模语言)是面向对象技术发展的一个重要里程碑。
UML 统一了面向对象建模的基本概念、术语和表示方法,不仅为面向对象的软件开发过程提供了丰富的表达手段,而且也为软件开发人员提供了互相交流、分享经验的共用语言。
本章首先介绍面向对象的主要概念和思想。
在概述了UML的全貌之后,以“家庭保安系统”为实例,介绍与需求分析相关的部分 UML语言机制以及基于UML的面向对象的需求分析方法和过程。
第一节面向对象的概念与思想一、面向对象的概念关于“面向对象”,有许多不同的看法。
Coad和 Yourdon给出了一个定义:“面向对象 = 对象 + 类 + 继承 + 消息通信”。
如果一个软件系统是使用这样4个概念设计和实现的,则认为这个软件系统是面向对象的。
一个面向对象的程序的每一成分应是对象,计算是通过新的对象的建立和对象之间的消息通信来执行的。
1.对象(object)一般意义来讲,对象是现实世界中存在的一个事物。
可以是物理的,如一个家具或桌子,如图 5-1-1所示,可以是概念上的,如一个开发项目。
对象是构成现实世界的一个独立的单位,具有自己的静态特征(用数据描述)和动态特征(行为或具有的功能)。
例如:人的特征:姓名、性别、年龄等,行为:衣、食、住、行等。
图 5-1-1 对象的定义(1)对象、属性、操作、消息定义对象可以定义为系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组对属性进行操作的服务组成。
《面向对象分析与设计》习题及部分答案第一章 概论1.什么是面向对象方法?面向对象的基本原则主要有哪些?答:面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。
面向对象方法的解决问题的思路是从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自然思维方式来构造软件系统,这与传统的结构化方法从功能入手和信息工程化方法从信息入手是不一样的。
面向对象的基本思想主要有:1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。
这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象)2)用对象的属性表示事物的性质;用对象的操作表示事物的行为。
(属性与操作)3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节。
(对象的封装)4)对事物进行分类。
把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。
(分类)5)复杂的对象可以用简单的对象作为其构成部分。
(聚合)6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。
特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档。
(继承)7)对象之间通过消息进行通讯,以实现对象之间的动态联系。
(消息)8)通过关联表示类(一组对象)之间的静态关系。
(关联)2.与传统开发方法比,面向对象方法有什么优点?答:面向对象方法的解决问题的思路是从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自然思维方式来构造软件系统,这与传统的结构化方法从功能入手和信息工程化方法从信息入手是不一样的。
与传统方法相比,面向对象的方法主要优点有:1)从认识论的角度可以看出,面向对象方法改变了人们认识世界的方式;2)语言的发展——鸿沟变窄;3)面向对象方法使得从问题域到计算机间的鸿沟变窄;4)面向对象方法有助于软件的维护与复用;(1)把易变的数据结构和部分功能封装在对象内并加以隐藏,一是保证了对象行为的可靠性;二是对它们的修改并不会影响其他的对象,有利于维护,对需求变化有较强的适应性。