第3章 面向对象技术7
软件工程课本练习题
(4)——是一种面向数据流的需求分析方法。这种方法通常与设计阶段的结构化设计衔接起来使用。
(5)面向对象分析模型通常包括——、——和——。
(6)——是某些对象的模板,抽象地描述属于该类的全部对象的属性和操作。
(3)制定项目的主要任务:1、项目资源计划 2、成本预算 3、进程安排
第二章
1.选择题
(1)需求分析阶段的工作可以分为4个方面:对问题的识别、分析与综合、制定需求规格说明书和(A)
A需求分析评审 B对问题的解决 C对过程的讨论 D功能描述
(2)以下不是结构化分析方法描述系统功能模型的方法是(D)
(4)传统的详细设计的工具主要包括( ADE )
A.程序流程图 B.数据结构设计
C.模块和接口 D.判定表
E.程序设计语言
2.填空题
(1)RUP(统一开发过程)模式的最大有点是__________的方法,该方法可以较为直观地建立起系统发构架,通过反复识别,避免需求中的漏项。
(2)类有属性、操作、约束以及其他成分等,属性__________所能具有的值,操作实现类的____________,用户接口就是__________,联系代表____________。
(3)详细设计需要对系统的模块做概要性的说明,主要包括________描述、_________描述和___________描述。
D.确定对象之间的通信 E.完成对象定义
(4)软件建模的三个模型是:( C)描述系统能做什么,( B)描述系统在何时、何地、由何角色、按什么业务规则去执行,以及执行的步骤或流程,( B)描述系统工作前的数据来自何处,工作中的数据暂存什么地方,工作后的数据放到何处,以及这些数据之间的关联。 A.设计模型 B.数据模型 C.功能模型
面向对象设计技术的使用教程
面向对象设计技术的使用教程面向对象设计技术是一种常用的软件设计方法,它能够提高代码的可重用性、可维护性和可扩展性。
本文将详细介绍面向对象设计的原则、概念和方法,以及如何在实际项目中应用这些技术。
一、面向对象设计的原则1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个修改的原因。
2. 开放封闭原则(Open Close Principle,OCP):一个类应该对扩展开放,对修改封闭。
3. 里氏代换原则(Liskov Substitution Principle,LSP):子类对象能够替换父类对象。
4. 依赖倒置原则(Dependency Inversion Principle,DIP):高层模块不应该依赖低层模块,二者都应该依赖抽象。
5. 接口隔离原则(Interface Segregation Principle,ISP):客户端不应该强迫依赖它不需要的接口。
6. 迪米特法则(Law of Demeter,LoD):一个对象对其他对象的了解应该尽可能少。
二、面向对象设计的概念1. 类和对象:类是一种抽象的概念,用来描述一类具有相同属性和行为的对象。
对象是类的一个实例。
2. 封装:将数据和方法封装到一个类中,并对外提供接口进行访问。
3. 继承:通过继承机制,子类可以继承父类的属性和方法,并能够添加、修改或重写特定的属性和方法。
4. 多态:同一种行为具有多种不同的实现方式或表现形式,提高了代码的灵活性和可扩展性。
5. 抽象:通过抽象类和接口实现对类的更高层次的抽象,可以使代码更加模块化和可维护。
三、面向对象设计的方法1. 定义类的属性和方法:首先确定类的名称和作用,然后根据单一职责原则定义类的属性和方法。
2. 进行类之间的关系分析:根据具体项目的需求,确定类与类之间的关系,包括继承、关联、聚合和组合等。
3. 设计类的接口:根据接口隔离原则,定义一个类应该提供的接口,以便与其他类进行交互。
(完整版)软件工程 判断题
判断题:第1章概述1。
由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。
(×)2。
由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵.(×)4。
大多数软件产品在其生命周期中不需要增强功能。
(×)5。
大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
(×)第4章需求工程1. 在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。
(√)2. 软件需求规格说明书在软件开发中具有重要的作用,它是软件可行性分析的依据。
(×)第5章面向对象基础1. 模型是对现实的简化,建模是为了更好地理解所开发的系统。
(√)2。
UML语言支持面向对象的主要概念,并与具体的开发过程相关。
(×)第6章面向对象分析1. 面向对象分析的核心在于建立一个描述软件系统的模型。
(×)第7章软件体系结构设计1. 系统体系结构的最佳表示形式是一个可执行的软件原型。
(×)2. 软件体系结构描述是不同项目相关人员之间进行沟通的使能器.(√)3. 良好的分层体系结构有利于系统的扩展与维护。
(√)4。
消除两个包之间出现的循环依赖在技术上是不可行的.(×)5. 设计模式是从大量成功实践中总结出来且被广泛公认的实践和知识。
(√)第8章面向对象设计1。
面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型.(√)2。
系统设计的主要任务是细化分析模型,最终形成系统的设计模型.(×)3。
关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。
(×)4。
用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。
C++面向对象技术复习题汇总(含答案)
面向对象程序设计C++复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与( )放在一起,作为一个相互依存、不可分割的整体来处理.A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是( )A、int *p=new int(10);B、int *p=new int[10]C、int *p=new int;D、int *p=new int[40](0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:()A、name[3]=’a’;B、name=”lin”;C、name=new char[5]; D、cout<〈name[3];7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:( )A、name[3]=’q';B、name=”lin”;C、name=new char[5];D、name=new char(‘q’);8、假设已经定义:const char *name=”chen”;,下面的语句中错误的是:( )A、name[3]=’q’;B、name=”lin”;C、name=new char[5];D、name=new char(‘q’);9、下面的类型声明中正确的是:( )A、int &a[4];B、int &*p;C、int &&qD、int i,*p=&i;10、假设定义了函数模板( )template 〈class T>T max(T x,T y){ return(x>y)?x:y;}并定义了int i;char c;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了( )A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int x[‘a’];cin>>x;则编译器认为()A、说明语句int x[‘a’]错B、二个语句都错C、语句cin〉〉x 错D、二个语句正确,没有语法错13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y){……}(2) int f(int a,float b){…… }(3) int f(int i,int j){……}(4) float k(int x){…… }是重载函数。
面向对象技术概述
1.1 知识要点1.面向对象技术的基本概念∙面向对象技术是以对象为基础、以事件或者消息来驱动对象执行处理的程序设计技术。
∙对象是包含客观事物特征的抽象实体,是属性和行为的封装体。
在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”这一公式来表达。
∙类是对具有相同属性和行为的一组对象的抽象描述。
∙事件是系统产生的动作或是运行应用程序产生的动作。
事件通过消息描述,消息是描述事件发生的信息。
∙消息是对象间交互的手段,是要求某个对象执行某个操作的规格说明。
2.面向对象技术的基本特征∙抽象性是指忽略事物中与当前目标无关的非本质特征,而强调本质特征的特征。
∙封装性是指把对象的属性和行为封装在一起,并尽可能隐藏对象的内部细节的特征。
∙继承性是指特殊类的对象拥有其一般类的属性和行为的类与类之间层次关系的特征。
∙多态性是指不同对象收到相同消息时可以产生多种不同的行为方式的特征。
【重点】∙面向对象技术的概念。
∙类与对象的概念及关系。
∙面向对象与面向过程程序设计的区别。
∙面向对象技术的基本特征。
面向对象技术与Visual C++学习指导2【难点】∙类与对象的概念。
∙面向对象与面向过程程序设计的区别。
∙面向对象技术的基本特征。
1.2 习题解答1.什么是面向对象技术?【问题解答】面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。
它具有抽象性、封装性、继承性及多态性。
2.面向对象与面向过程程序设计有什么不同?【问题解答】面向对象与面向过程程序设计有如下不同:(1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。
(2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此更易于维护。
(3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。
软件工程(习题与参考答案)
第1章概述(习题与参考答案)[判断题]1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。
(×)2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不需要增强功能。
(×)5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
(×)[选择题]1. ()因素促使计算机系统越来越复杂。
(D)A. 计算机内存和存储容量上的巨大增长B. 外部输入/输出选项的更加多样性C. 计算机体系结构方面的深刻变化D. 以上所有选项2. 下面的()不再是现代软件工程师关注的问题。
(A)A. 为什么计算机硬件的成本这么高?B. 为什么软件需要很长时间才能完成?C. 为什么开发一个软件的成本这么高?D. 为什么不能在产品发布前去除软件错误?3. 软件会逐渐退化而不会磨损,其原因在于()。
(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在使用之后C. 不断的变更使组件接口之间引起错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其原因在于()。
(C)A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法使用C. 软件在不使用其他组件的情况下很容易构造出来D. 商业组件在很多应用领域中可以得到5. 下面的()说法是正确的。
(C)A. 软件危机在20世纪70年代末期全面爆发B. 当前先进的软件工程方法已经解决了软件危机的问题C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的基本目标是()。
(B)A. 消除软件固有的复杂性B. 开发高质量的软件C. 努力发挥开发人员的创造性潜能D. 更好地维护正在使用的软件产品7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
《管理信息系统》主要知识点
《管理信息系统》主要知识点第一章信息与信息技术1、信息概念有两个层次:本体论层次:信息是事物运动的状态及其改变方式认识论层次:主体感知或所表述的事物运动的状态及其改变的方式。
分类:语法信息:信息的外在形式,由主体感知。
语义信息:信息的逻辑涵义,由主体理解。
语用信息:信息的效用,由主体根据目的来判断2、信息支持决策的观点:信息是经过加工后的数据,它会对接受者的行为和决策产生影响,对决策者增加知识具有现实的或潜在的价值。
3、信息资源观点:1)谁先得到信息和利用信息,谁就具有主动权,谁的信息丰富和准确,谁就能统筹全局,后来者的信息作用将大打折扣,难以获得主动权和主导权,在竞争中处于不利地位。
2)我们面临着物资和能源逐渐匮乏的重大社会发展问题,信息的资源转化性质让我们社会的可持续发展增添了一条宝贵的途径。
因此:信息资源就是一类战略性资源。
4、数据、信息和知识的三层次结构关系:达文波特和普勒塞克认为:1)数据是有关事件的离散的客观事实;2)对数据加以背景、分类、计算、更正和精简等处理后,数据就转变为信息;3)知识是相关信息以及经验、价值观和洞察力等的动态组合,是对信息的理解。
5、信息特性主要包括:普遍性、客观性(事实性)、无限性、层次性(等级性)、相对性、依附性、动态性(时效性)、知识性、异步性、易传性(转移性)、共享性、转化性、可伪性、不完全性等6、从不同的角度有不同的信息划分方法:按管理层次分:战略信息、战术信息、作业信息按业务领域分:营销、物流、生产、财务、人事按信息来源分:企业内部信息、企业外部信息7、战略信息:组织生存与发展决策相关的信息,制定战略需要大量外部信息与内部信息。
控制信息:管理控制信息,主要是内部信息。
便于掌握资源利用情况并更有效地分配资源。
作业信息:与组织日常活动相关,是内部信息,保证切实完成作业。
8、信息度量概念的启示:(1)越接近信息源的信息的量越大,为此不仅要收集很多数据,更重要的是收集和选用与问题最直接的信息源的信息。
计算机操作系统(第四版)课后习题答案(完整版)
计算机操作系统(第四版)课后习题答案(完整版)第⼀章1.设计现代OS的主要⽬标是什么?答:(1)有效性(2)⽅便性(3)可扩充性(4)开放性2.OS的作⽤可表现在哪⼏个⽅⾯?答:(1)OS作为⽤户与计算机硬件系统之间的接⼝(2)OS作为计算机系统资源的管理者(3)OS实现了对计算机资源的抽象3.为什么说OS实现了对计算机资源的抽象?答:OS⾸先在裸机上覆盖⼀层I/O设备管理软件,实现了对计算机硬件操作的第⼀层次抽象;在第⼀层软件上再覆盖⽂件管理软件,实现了对硬件资源操作的第⼆层次抽象。
OS 通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。
4.试说明推动多道批处理系统形成和发展的主要动⼒是什么?答:主要动⼒来源于四个⽅⾯的社会需求与技术发展:(1)不断提⾼计算机资源的利⽤率;(2)⽅便⽤户;(3)器件的不断更新换代;(4)计算机体系结构的不断发展。
5.何谓脱机I/O和联机I/O?答:脱机I/O 是指事先将装有⽤户程序和数据的纸带或卡⽚装⼊纸带输⼊机或卡⽚机,在外围机的控制下,把纸带或卡⽚上的数据或程序输⼊到磁带上。
该⽅式下的输⼊输出由外围机控制完成,是在脱离主机的情况下进⾏的。
⽽联机I/O⽅式是指程序和数据的输⼊输出都是在主机的直接控制下进⾏的。
6.试说明推动分时系统形成和发展的主要动⼒是什么?答:推动分时系统形成和发展的主要动⼒是更好地满⾜⽤户的需要。
主要表现在:CPU 的分时使⽤缩短了作业的平均周转时间;⼈机交互能⼒使⽤户能直接控制⾃⼰的作业;主机的共享使多⽤户能同时使⽤同⼀台计算机,独⽴地处理⾃⼰的作业。
7.实现分时系统的关键问题是什么?应如何解决?答:关键问题是当⽤户在⾃⼰的终端上键⼊命令时,系统应能及时接收并及时处理该命令,在⽤户能接受的时延内将结果返回给⽤户。
解决⽅法:针对及时接收问题,可以在系统中设置多路卡,使主机能同时接收⽤户从各个终端上输⼊的数据;为每个终端配置缓冲区,暂存⽤户键⼊的命令或数据。
2020年智慧树知道网课《软件工程导论(江西师范大学)》课后章节测试满分答案
第一章测试1【单选题】(2分)下列哪个时期不是软件生存期三个时期中的内容()。
A.维护时期B.定义时期C.开发时期D.计划时期2【单选题】(2分)软件生存周期包括可行性分析的项目开发计划、需求分析、概要设计、详细设计、编码、()、维护等活动。
A.应用B.检测C.其他答案均不正确D.测试3【单选题】(2分)软件是一种()产品。
A.消耗B.有形C.逻辑D.物质4【单选题】(2分)面向对象技术特别强调的是()。
A.结构化编程B.程序结构C.对象的使用方式D.对象的数据结构5【单选题】(2分)螺旋模型最大的优点是()。
A.与用户沟通方便B.风险驱动C.快速建立模型D.需求灵活变动6【单选题】(2分)RUP中的软件开发生命周期在时间上被分解为四个顺序的阶段,分别是()。
A.初始、分析、构造、维护B.初始、细化、构造、维护C.初始、细化、构造、交付D.分析、细化、构造、交付7【单选题】(2分)软件开发过程模型不包括()。
A.对象模型B.增量模型C.瀑布模型D.喷泉模型8【判断题】(1分)一个成功的项目唯一提交的就是运行程序。
()A.错B.。
面向对象技术在数据库中的应用
2 、面 向对象技术应 用 到数据库 中的优势
关系型 数据库 不能对大 对象提供
支持 .例如 文本 .图像 视频 以及地
i h s o u e ir y h s a t l t a wn s p r i ,t i r ce ot i
领域可 以满足 某些领域 对数据 库
的需 求 .面 向对象技 术应用到 数
3 )对 象关 系映 射数据 库 系 统( MDB ) OR MS
对象关 系映劓数 据库系统 是在对
据库领 域具有 自身 的优 势 .本 文 介绍 了面向对 象技术 在关系数 据
库 中的实现方式 以及对 最. . 类 属 性 链类 继承 和关联 关系在关系 数据库 中的实现方 法。
电子商务 20 2 6 061 3
维普资讯
于关 系型数据库相比 .面向对象技术 用系统 中,面向对象技术 中对象 的应
的优势主要体 现在以下几个 方面
用可以处理 复杂的数据横 型和关 系模
1 )利用对象来支持复杂的
数据模 型
型.并且可以方便地对对象进行修改 . 可以支持大 型数据库应 用系统中大对 面 向对 象技术利 用
ito u e h e ia in n r d c t e r al to wa o z y f
主要支持 持久对 象和实现 数据 球空 间对象等对象就不符台关 系模型
o i t o i t e h o g n t be — r n d tc n l y i h c ee o e
面受到 限制. .
关键词: 对象 面向 技求 数据
软件工程教程 作者 吴迪 电子科技大学出版社
第一篇软件工程引论第1章软件工程概述1.1 软件1.2 软件危机1.3 软件工程1.4软件生存周期1.5软件开发模型1.6 软件工程技术的发展1.7本章小结习题第二篇传统软件工程第2章软件问题定义及可行性分析2.1 软件问题定义2.2 可行性研究的任务2.3 可行性研究的步骤2.4 系统流程图2.5 数据流图2.6 数据字典2.7 成本效益分析2.8本章小结习题第3章需求分析3.1 需求分析的任务和原则3.2 需求分析的步骤3.3 结构化需求分析方法3.4 需求分析的图形工具3.5 需求管理3.6 本章小结习题第4章总体设计4.1 总体设计的目标和任务4.2 总体设计的过程4.3 总体设计的原理4.4 软件结构设计准则4.5 描绘软件结构的图形工具4.6 面向数据流的软件结构设计方法4.7本章小结习题第5章详细设计5.1 详细设计的目标和任务5.2 详细设计的原则5.3 用户界面设计5.4 详细设计工具5.5 面向数据结构的设计方法5.6 程序复杂程度度量5.7本章小结习题第6章软件编码与软件测试6.1 程序设计语言6.2 程序设计风格6.3 软件测试定义6.4 软件测试方法6.5 软件测试过程6.6 测试用例定义6.7 黑盒测试用例设计6.8 白盒测试用例设计6.9 软件测试原则和策略6.10 软件调试6.11 本章小结习题第7章软件维护7.1 软件维护概述7.2软件维护类型7.3 软件维护过程7.4 软件可维护性7.5 软件重用和再工程7.6 本章小结习题第三篇面向对象软件工程第8章面向对象技术与UML8.1 面向对象技术概述8.2 UML概述8.3 UML图8.4本章小结习题第9章面向对象分析9.1 面向对象分析概述9.2 面向对象分析过程9.3 面向对象分析原则9.4 建立对象模型9.5 建立动态模型9.6 建立功能模型9.7 本章小结习题第10章面向对象设计10.1 面向对象设计概述10.2 面向对象设计过程与准则10.3 面向对象设计启发规则10.4 系统设计10.5 对象设计10.6本章小结习题第11章面向对象编码与测试11.1 面向对象设计语言11.2 面向对象设计风格11.3 面向对象测试策略11.4 面向对象测试用例设计11.5本章小结习题第四篇软件管理与项目实例第12章软件项目管理12.1 软件项目管理概述12.2 软件项目估算12.3 进度管理12.4 风险管理12.5 团队管理12.6 质量管理12.7 软件配置管理12.8 本章小结习题第13章软件工程标准与文档13.1 软件工程标准13.2 软件文档与编写要求13.3 软件文档撰写规范指南13.4本章小结习题第14章项目实例14.1 XXX系统实例(传统软件工程项目实例)14.2 XXX系统实例(面向对象软件工程项目实例)14.3本章小结习题参考文献。
面向对象
面向对象技术面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。
面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。
1.抽象性把众多的事物进行归纳、分类是人们在认识客观世界时经常采用的思维方法,“物以类聚,人以群分”就是分类的意思,分类所依据的原则是抽象。
抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。
从而找出事物的共性,并把具有共性的事物划为一类,得到一个抽象的概念。
例如,在设计一个学生成绩管理系统的过程中,考察学生张华这个对象时,就只关心他的班级、学号、成绩等,而忽略他的身高、体重等信息。
因此,抽象性是对事物的抽象概括描述,实现了客观世界向计算机世界的转化。
将客观事物抽象成对象及类是比较难的过程,也是面向对象方法的第一步。
2.封装性封装(Encapsulation)就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。
封装有两个含义:一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。
对象的属性值(除了公有的属性值)只能由这个对象的行为来读取和修改;二是尽可能隐蔽对象的内部细节,对外形成一道屏障,与外部的联系只能通过外部接口实现。
封装的结果使对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。
另一方面,当对象内部进行修改时,由于它只通过少量的外部接口对外提供服务,因此同样减小了内部的修改对外部的影响。
封装机制将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要用设计者提供的外部接口让对象去做。
封装的结果实际上隐蔽了复杂性,并提供了代码重用性,从而降低了软件开发的难度。
3.继承性继承(Inheritance)是一种联结类与类的层次模型。
《面向对象分析与设计》
《面向对象分析与设计》第一部分面向对象技术的基本概念和基本方法1.1 软件开发方法的发展计算机诞生之后,计算机技术一直处于高速发展状态,计算机科学技术的发展由原来只依靠硬件的发展逐渐变为更多地依靠软件的发展。
事实上,软件技术的发展经历了多代历程。
第一代(20世纪50-60年代),是以FORTRAN和ALGOL等编程语言为标志的算法技术时代。
那时,程序设计全靠人们发挥创造才能,全靠技巧和窍门。
基于这种算法技术的软件生产率非常低,程序很难看懂,甚至程序员自己写的程序过一段时间后自己也看不懂,这给软件的修改、维护带来极大的困难。
于是60年代末出现了“软件危机”。
第二代(20世纪70年代末开始到80年代盛行的),以PASCAL、COBOL等编程语言和关系数据库管理系统为标志的结构化系统分析和设计技术。
为了克服软件危机,人们主要从如下两个方向做了努力:一是从管理的角度改进软件开发方法,提出了软件工程方法,大大改善了软件的质量与可维护性。
二是侧重于对软件开发过程中分析与设计方法的研究和改进。
这方面的重要成果就是在70年代出现了风靡一时的结构化开发方法—结构化系统分析和设计技术。
第三代(80年代开始至今还盛行的)以Smalltalk、C++等为代表的面向对象软件开发方法。
问题1:面向对象软件开发方法发展的动因是什么?传统的结构化程序设计以算法为核心,把本来密切相关的数据和对数据的操作分离开来,很难保持数据和操作的一致性,其软件开发方法也不符合人们的自然思维习惯,设计出来的软件系统其解空间与问题空间不一致,致使程序难以理解、修改和扩充,最终导致程序复杂性问题和软件危机。
为了超越程序复杂性障碍,克服软件危机,人们提出了面向对象软件开发方法。
问题2:面向对象软件开发方法的优点有哪些?面向对象开发方法一改过去传统的以功能分析和功能分解为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。
面向对象技术(答案)
●下面关于面向对象方法中消息的叙述,不正确的是____(2)__。
(2)A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息D.发送与接收消息的通信机制与传统的子程序调用机制不同正确答案:B【解析】在系统中既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此的通信,这样的方法才称为"面向对象的方法"。
●面向对象技术中,对象是类的实例。
对象有三种成份:____(3)____、属性和方法(或操作)。
(3) A. 标识B. 规则C. 封装D. 消息正确答案:A解析:对象有三种成份:标识(对象名)、属性和方法(或操作)。
●在面向对象技术中,类属是一种__(1)__机制。
一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与__(2)__的那些部分,而用变元来表示与__(3)__的那些部分。
(1)A.包含多态B.参数多态C.过载多态D.强制多态(2)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关(3)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关解析:在面向对象技术中,对象在收到信息后要予以响应。
不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。
多态有多种不同的形式,其中参数多态和包含多态称为通用多态,过载多态和强制多态成为特定多态。
参数多态应用比较广泛,被称为最纯的多态。
这是因为同一对象、函数或过程能以一致的形式用于不同的类型。
包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。
过载多态是同一变量被用来表示不同的功能,通过上下文以决定一个类所代表的功能。
即通过语法对不同语义的对象使用相同的名,编译能够消除这一模糊。
强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。
面向对象技术
二面向对象技术的基本概念
1.对象 对象是客观世界中的一个实体,它具有以下特性: (1)有一个名字以区别其它对象; (2)有一个状态用来描述它的某些特征; (3)有一组操作,每个操作决定对象的一种功能或行为; (4)对象的操作可分为两类:一类是自身所承受的操作, 一类是施加于其它对象的操作。 简而言之,对象是其自身具有的状态特征及可以对这 些状态施加的操作结合在一起所所构成的独立实体。 在面向对象技术中的“对象”术语,既可能泛指客观 世界中的某些事物,也可能专指它们在系统中的抽象。 在系统中,对象是系统中用来描述客观事物的一个实 体,它是构成系统的一个基本单位。一个对象有一组 属性和对属性进行操作的一组方法构成。
(3)面向对象的实现 面向对象的实现(编程)是要在面向对象设计的 基础上,选择一种面向对象的编程语言(c++,Java 等),把设计作适当映射并改写成相应的程序。 (4)面向对象的测试 面向对象的测试是指在测试过程中运用面向对象 技术,进行以对象(或类)为核心的测试。 (5)面向对象的维护 面向对象的维护是指在软件运行之后的正常活动, 软件维护不是一种“简单”的修理,而是一种复杂的 开发活动,它同样需要经过分析、设计、实现和测试, 因此是一种系统更新的迭代过程。
(1)一个清楚的边界,所有对象内部组件的范围被限定 在这个边界内; (2)一个接口,这个接口描述这个对象和其它对象之间 的相互作用; (3)受保护的内部实现,这个实现给出了由软件对象提 供的功能的细节,实现细节不能在这个的范围被限定 在定义这个对象的类的外面访问。 面向对象系统中的封装单位是对象,即主要是对象的 封装。 6.继承 继承:继承所表达的就是一种对象类之间的相互关系, 它使得某类对象可以继承另外一类对象的特征和能力。 若类间具有继承关系,则它们之间应具有下列几个特 征:
课后习题答案
第一章 (2)第二章 (3)第三章 (4)第四章 (5)第五章 (6)第六章 (8)第七章 (10)第八章 (10)第九章 (11)课后习题答案第一章项目的市场调研习题1.选择题(1)软件是计算机系统中与硬件相互依存的另一部分,它包括文档、数据和()。
A.数据B. 软件C.文档D. 程序(2)软件工程是一门研究如何用系统化、()、可度量化等工程原则和方法去进行指导软件开发和维护的学科。
A.规范化B.标准化C.抽象化D.简单化(3)软件工程的出现主要是由于()。
A.方法学的影响B.软件危机的出现C.其他工程学科的发展D.计算机的发展(4)可行性研究主要包括经济可行性、技术可行性、法律可行性和()等六个方面。
A.运行可行性B.条件可行性C.环境可行性D.维护可行性(5)编制项目开发计划的目的是用文件的形式,把在开发过程中各项工作的负责人员、开发进度、所需经费预算、所需软件、硬件条件等问题做出的安排以()记载下来。
A.文件形式B. 文档形式C. 电子档案形式D. 条文形式2.填空题(1)软件工程是开发、运行、维护和修复软件的系统方法,这里所说的系统方法,是把系统化的、规范化的、可度量化的途径应用于软件生存周期中,也就是把工程化应用于软件中。
(2)可行性研究的任务不是具体解决系统中的问题,而是确定问题是否值得解决、是否能够解决。
(3)软件的开发计划也称项目实施计划,是一个综合的计划,是软件开发工作的指导性文档,阅读对象是软件开发的主管部门、软件技术人员和普通用户。
3.思考题(1)软件危机产生的原因是什么?为何要引入软件工程的概念?答:①忽视了软件开发前期的需求分析的需求分析;②开发过程没有统一、规范的方法论的指导,文档资料不齐全,忽视了人与人之间的交流。
③忽视测试阶段的工作,提交给用户的软件质量差。
④请示软件的维护。
(2)可行性研究的主要任务有哪些?答:①经济可行性②技术可行性③时机可行性④管理上的可行性⑤法律可行性⑥运行可行性(3)制定项目开发计划的主要任务是什么?答:①项目资源计划软件开发中的资源包括用于支持软件开发的硬件,软件工具以及人力资源。
《系统集成项目管理工程师》第3章《信息系统集成专业技术知识》(中项)问答题(含答案)
第3章《信息系统集成专业技术知识》1、信息系统生命周期是_立项_、_开发_、_运维_、_消亡_。
2、常用的信息系统开发方法有_结构化方法_、_原型法_、_面向对象法_。
3、_结构化方法_是应用最为广泛的一种开发方法,但其缺点是_开发周期长_,并且要求在开发之初_全面认识系统需求_。
4、_原型法_认为在无法全面准确地提出用户需求的情况下,并不要求对系统做全面、详细的分析,而是基于对用户需求的初步理解,先快速开发一个原型系统,然后通过反复修改来实现用户的最终系统需求。
它可以分为_抛弃型原型_和_进化型原型_。
5、_面向对象法_是用对象表示客观事物,对象是一个严格模块化的实体,在系统开发中可被共享和重复引用,以达到复用的目的。
6、系统总体设计和系统详细设计分别有哪些?系统总体设计:系统的总体架构方案设计、软件系统的总体架构设计、数据存储的总体设计、计算机和网络系统的方案设计等。
系统详细设计:代码设计、数据库设计、人/机界面设计、处理过程设计等。
7、系统架构是将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。
对整个系统的分解,既需要_纵向_分解,也需要对同一逻辑层分块,进行_横向_分解。
系统的选型主要取决于_系统架构_。
8、软件需求的定义是什么?有什么要求?有什么作用?软件需求是针对待解决问题的特性的描述。
所定义的需求必须可以被验证。
通过需求分析,可以检测和解决需求之间的冲突;发现系统的边界;并详细描述出系统需求。
9、测试是在编码阶段完成后才进行的。
判断对错并说明原因。
错误。
现在的软件测试被认为是应该包括在整个开发和维护过程中的活动,不再只是仅在编码阶段完成后才开始。
10、软件维护有哪几种类型?更正性维护、适应性维护、完善性维护、预防性维护。
11、管理评审、技术评审、软件审计的目的分别是什么?管理评审的目的是监控进展,决定计划和进度的状态,或评价用于达到目标所用管理方法的有效性。
技术评审的目的是评价软件产品,以确定其对使用意图的适合性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七讲接口?为什么引入接口。
组件技术,组件对象模型COM, COM+ 事务服务器MTS , 应用程序编程接口API.7.1接口抽象类--------〉接口1、接口类似纯抽象类。
2、接口不提供任何实现的代码,提供规范,不提供细节。
3、接口成员只包含方法,属性和索引器,不包含数据成员。
7.1.2使用接口1、类可以实现多个接口。
2、解决了多重继承问题。
7.1.3使用接口的好处1、多重继承2、给类添加了固定的特征,并必须实现之。
7.2定义接口基本结构:Interface Iname{接口成员;}说明:借口中的成员是公有的,(public).7.2.1定义带方法成员的接口定义一个接口Public interface Isharp{double Area();double Circumference();Int Sides();}例:using System;public interface IShape{ double Area();double Circumference();Int Sides();}public class Circle : IShape{ public int x;public int y;public double radius;private const float PI = 3.14159F;public double Area() //每个方法的参数类型和接口必须保持一致{ double theArea;theArea = PI * radius * radius;return theArea; }public double Circumference(){ return ((double) (2 * PI * radius));}public int Sides(){ return 1;}public Circle(){ x = 0;y = 0;radius = 0.0;}}public class Square : IShape{public int side;public double Area(){return ((double) (side * side));}public double Circumference(){return ((double) (4 * side));}public int Sides(){return 4;}public Square(){side = 0;}}public class myApp{public static void Main(){Circle myCircle = new Circle();myCircle.radius = 5;Square mySquare = new Square();mySquare.side = 4;Console.WriteLine("Displaying Circle information:");displayInfo(myCircle);Console.WriteLine("\nDisplaying Square information:");displayInfo(mySquare);}static void displayInfo( IShape myShape ) //能接受任何实现了接口的对象。
{Console.WriteLine("Area: {0}", myShape.Area());Console.WriteLine("Sides: {0}", myShape.Sides());Console.WriteLine("Circumference: {0}", myShape.Circumference());}}7.2.2在接口中指定属性接口中包含有关属性的规范。
无需实现。
例:限定符数据类型属性名{Get;Set;}实例:using System;public interface IShape{int Sides // 定义属性规范{get;set;}double Area();}public class Square : IShape{private int sides;public int SideLength;public double Area(){return ((double) (SideLength * SideLength));}public int Sides{get { return sides; } 1、//可以缺少吗?set { sides = value; }}public Square(){Sides = 4;}}public class myApp{public static void Main(){Square mySquare = new Square();mySquare.SideLength = 5;Console.WriteLine("\nDisplaying Square information:");Console.WriteLine("Area: {0}", mySquare.Area());Console.WriteLine("Sides: {0}", mySquare.Sides);}}实验1 在接口中定义只读属性、只写属性,实现时应注意什么?编写程序说明之。
7.3使用多个接口看例子:Class Square : Ishape,IshapeDisply{….}实例:using System;public interface Ishape //定义接口Ishape{ double Area();int Sides { get; }}public interface IshapeDisplay //定义接口IshapeDisplay{ void Display();}public class Square : IShape, IShapeDisplay{ private int sides;public int SideLength;public int Sides{get { return sides; }}public double Area(){return ((double) (SideLength * SideLength));}public double Circumference(){return ((double) (Sides * SideLength));}public Square(){sides = 4;}public void Display(){Console.WriteLine("\nDisplaying Square information:");Console.WriteLine("Side length: {0}", this.SideLength);Console.WriteLine("Sides: {0}", this.Sides);Console.WriteLine("Area: {0}", this.Area());}}public class myApp{public static void Main(){Square mySquare = new Square();mySquare.SideLength = 7;mySquare.Display();}}7.4显式接口成员?若接口成员名称和已有名称相同时会出现什么情况A:只需要实现一次例:using System;public interface A{double Area();int Sides { get; }void Display();}public interface B{void Display();}public class Square : A, B{private int sides;public int SideLength;public int Sides{get { return sides; }}public double Area(){return ((double) (SideLength * SideLength));}public double Circumference(){return ((double) (Sides * SideLength));}public Square(){sides = 4;}void A.Display() //显式实现{Console.WriteLine("\nDisplaying Square Shape\'s information:");Console.WriteLine("Side length: {0}", this.SideLength);Console.WriteLine("Sides: {0}", this.Sides);Console.WriteLine("Area: {0}", this.Area());}void B.Display() //显式实现{Console.WriteLine("\nThis method could draw the shape...");}}public class myApp{public static void Main(){Square mySquare = new Square();mySquare.SideLength = 7;A sa = (A) mySquare; //显式转换B sb = (B) mySquare; //显式转换sa.Display();sb.Display();}}7.5 从已有接口派生出新的接口public interface IShape{ double Area();double Circumference();Int Sides();}interface I3Dshape : IShape{Int Depth{get; set;};}?可否有覆盖和重载现象作业:?7.6 隐藏接口成员using System;public interface IShape{int ShapeShifter( int val );int Sides { get; set; }}public class Shape : IShape{private int sides;public int Sides{get { return sides; }set { sides = value; }}int IShape.ShapeShifter( int val )//隐藏了方法{Console.WriteLine("Shifting Shape....");val += 1;return val;}public Shape(){Sides = 5;}}public class myApp{public static void Main(){Shape myShape = new Shape();Console.WriteLine("My shape has been created.");Console.WriteLine("Using get accessor. Sides = {0}", myShape.Sides);// myShape.Sides = myShape.ShapeShifter(myShape.Sides); // error 不能直接访问IShape tmp = (IShape) myShape; //强制转换myShape.Sides = tmp.ShapeShifter( myShape.Sides);Console.WriteLine("ShapeShifter called. Sides = {0}", myShape.Sides);}}补充:组织应用程序C# 程序是通过使用名字空间来组织的,名字空间即可以作为应用程序的内部结构体系,也可以作为应用程序的外部结构体系。