第12章 面向对象实现
- 格式:doc
- 大小:124.50 KB
- 文档页数:7
09-12 面向对象(技术、需求分析、分析、设计与实现)一、选择题(1)面向对象的分析方法主要是建立三类模型,即 ( D )。
A.系统模型、ER 模型、应用模型B.对象模型、动态模型、应用模型C.E-R模型、对象模型、功能模型D.对象模型、动态模型、功能模型(2)面向对象技术中,对象是类的实例。
对象有三种成份:( A )、属性和方法。
A. 标识B. 规则C. 封装D. 消息(3)( C )是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A.多态性B.继承C.封装D.消息(4)消息是对象间交互的一种机制,消息刺激接收对象产生某种行为。
消息的构成有三部分:( B ),消息名,若干变元。
A.发出消息的对象 B.接收消息的对象 C.消息编号 D.时间(5)面向对象设计准则包括:模块化,抽象,( A ),弱耦合,强内聚和可重用。
A.信息隐藏 B.可继承 C.封装性 D.实例化(6)( A )意味着一个操作在不同的类中可以有不同的实现方式。
A.多态性 B.多继承 C.类的复用 D.封装(7)软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫( B )。
A.生存期 B.面向对象分析C.面向对象程序设计 D.面向对象设计(8)把一组具有相似特性的对象的描述,称之为( C )。
A. 多态性B.继承性C.类D.消息(9)面向对象分析的独到之处在于( A )。
A.将数据和操作结合在一起而不是分离 B.仅考虑数据结构C.数据和操作分别独立考虑 D.仅考虑操作过程(10)下面关于面向对象方法中消息的叙述,不正确的是( B )。
A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息D.发送与接收消息的通信机制与传统的子程序调用机制不同(11)面向对象分析是对系统进行( A )的一种方法。
面向对象编程语言的设计与实现面向对象编程(Object-Oriented Programming,OOP)是一种广泛使用的编程范paradimg,它的主要思想是将现实世界的事物抽象成对象,并通过对象之间的交互来实现程序的功能。
面向对象编程语言就是用来实现面向对象编程的工具,本文将探讨面向对象编程语言的设计与实现。
一、面向对象编程语言的特点面向对象编程语言具有以下几个特点:1. 封装性(Encapsulation):面向对象编程语言允许将数据和方法封装在对象内部,通过公共接口进行访问。
这种封装性可以保护数据的安全性,同时提供了简洁而清晰的接口。
2. 继承性(Inheritance):继承是面向对象编程语言中的重要概念,它允许从现有的类创建新的类。
通过继承,子类可以继承父类的属性和方法,并且还可以添加自己的特有属性和方法,从而实现代码的复用和扩展性。
3. 多态性(Polymorphism):面向对象编程语言中的多态性指的是同一类型的对象在不同情境下可能展现出不同的行为。
通过多态性,可以写出更加灵活和可扩展的代码,同时减少代码的冗余。
二、面向对象编程语言的设计原则设计面向对象编程语言的时候,需要遵循一些重要的设计原则,以确保语言的可用性和灵活性:1. 单一职责原则(Single Responsibility Principle):一个类或者对象只应该有一个引起它变化的原因。
这个原则可以确保类的职责单一,减少代码的耦合性,提高代码的可维护性。
2. 开放封闭原则(Open-Closed Principle):软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。
这个原则可以提高代码的可扩展性和重用性。
3. 里氏替换原则(Liskov Substitution Principle):子类对象可以替换父类对象,而程序的行为不变。
遵循这个原则可以确保代码的正确性和一致性。
4. 接口隔离原则(Interface Segregation Principle):使用多个专门的接口,而不是使用单一的总接口。
面向对象程序设计面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。
面向对象程序设计的核心概念包括封装、继承、多态和抽象。
封装封装是将数据(属性)和操作这些数据的方法(行为)绑定在一起的过程。
封装的目的是隐藏对象的内部状态和实现细节,只暴露出一个可以被外界访问的接口。
这样,对象的使用者不需要了解对象内部的复杂性,只需要通过公共接口与对象交互。
继承继承是一种机制,允许新创建的类(子类)继承现有类(父类)的属性和方法。
这使得代码重用变得可能,同时也支持层次结构的创建。
子类可以扩展或修改父类的行为,但通常保持父类的大部分功能。
多态多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
在面向对象编程中,多态性通常是通过方法重载(同一个类中多个同名方法,参数不同)和方法重写(子类重写父类的方法)实现的。
抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面,忽略不相关的细节。
在面向对象编程中,抽象通常是通过创建抽象类和接口来实现的。
抽象类可以包含抽象方法,这些方法没有具体的实现,必须由子类提供。
类和对象类是创建对象的蓝图或模板,定义了对象的结构和行为。
对象是根据类创建的实例,具有类定义的属性和方法。
每个对象都是唯一的,即使它们是同一个类的实例。
面向对象设计原则在面向对象设计中,有几个关键的设计原则,如单一职责原则、开放-封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则等。
这些原则帮助开发者创建灵活、可维护和可扩展的系统。
面向对象的优势- 代码重用:通过继承和多态性,可以减少代码重复。
- 易于维护:封装和抽象使得修改系统的一部分不会影响其他部分。
- 模块化:系统被分解为独立的模块,每个模块负责特定的功能。
- 可扩展性:系统可以容易地扩展新功能,而不需要重写现有代码。
《软件工程导论》课程教学大纲一、课程基本信息课程编号:英文名称名:Software Engineering总学时:54学时学分:3课程类别:专业必修课适用专业:全校本(专)计算机科学与技术先修课程:数据结构,大学数学,离散数学,计算机算法设计。
二、课程性质与目的、要求《软件工程》是计算机专业的一门工程性基础课程,在软件工程学科人才培养体系中占有重要的地位。
软件开发是建立计算机应用系统的重要环节,人们通过软件工程学把软件开发纳入工程化的轨道,而软件工程学是用以指导软件人员进行软件的开发、维护和管理的科学。
《软件工程》已成为高等学校计算机软件教学体系中的一门核心课程,本课程以IEEE最新发布的软件工程知识体系为基础构建内容框架,注重贯穿软件开发整个过程的系统性认识和实践性应用,以当前流行的统一开发过程、面向对象技术和UML 语言作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践” 软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,使学生在理解和实践的基础上掌握当前软件工程的方法、技术和工具。
通过本课程的学习,要求学生能掌握软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;学生应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大型软件开发项目打下坚实的理论基础。
本课程注重培养学生理论应用于实践的能力,课堂上教师向学生讲述软件工程中的相关原理和概念,并通过课程设计,培养学生对整个软件开发过程的能力,让学生能切实体会到软件工程在实践中的指导作用,并按软件工程的要求完成规范的各项软件开发文档。
本课程对提高学生的软件开发能力和项目管理能力有重要的现实意义。
三、教学内容及学时分配本课程的教学内容共分十三章。
第1章软件工程学概述(2课时)学习目的与要求:通过本章的学习,了解和掌握软件工程的基本概念(如软件和软件工程的定义、等),软件危机的表现形式、产生的原因及消除的途径,软件工程的基本原理、方法学,软件的生存期,几种主要的软件开发模型等。
第12章面向对象实现
面向对象实现主要包括两项工作:(1)把面向对象设计结果翻译成用某种程序语言书写的面向对象程序;(2)测试并调试面向对象的程序。
[注]良好的支持面向对象软件开发的程序语言、数据库、开发工具和环境,以及强大的类库(包容类、关联类、接口类、GUI类等)是极其重要的基础设施。
也许它们将从根本上改变“软件工程”的未来!
[注]GUI(Graphical User Interface,简称 GUI,图形用户界面,又称图形用户接口,是指采用图形方式显示的计算机操作用户界面。
12.1程序设计语言
12.1.1面向对象语言的优点
1. 一致的表示方法
2. 可重用性
3. 可维护性
2
软件工程导论(第五版) 12.1.2面向对象语言的技术特点
1. 支持类与对象概念的机制
2. 实现整体部分(即聚集)结构的机制
3. 实现一般特殊(即泛化)结构的机制
4. 实现性和服务的机制
5. 类型检查
6. 类库
7. 效率
8. 持久保存对象
9. 参数化类
10. 开发环境
12.1.3选择面向对象语言
1. 将来能否占主导地位
2. 可重用性
3. 类库和开发环境
4. 其他因素
软件工程导论(第五版) 3 12.2程序设计风格
12.2.1提高可重用性
1. 提高方法的内聚
2. 减小方法的规模
3. 保持方法的一致性
4. 把策略与实现分开
5. 全面覆盖
6. 尽量不使用全局信息
7. 利用继承机制
图12.1通过调用公用方法实现代码重用
图12.2通过因子分解实现代码重用
4
软件工程导论(第五版)
12.2.2提高可扩充性
1. 封装实现策略
2. 不要用一个方法遍历多条关联链
3. 避免使用多分支语句
4. 精心确定公有方法
12.2.3提高健壮性
健壮性是指在硬件故障、输入的数据无效或操作错误等意外环境下,系统能做出适当响应的程度。
1. 预防用户的操作错误
2. 检查参数的合法性
3. 不要预先确定限制条件
4. 先测试后优化
软件工程导论(第五版) 5 12.3测试策略
12.3.1面向对象的单元测试
12.3.2面向对象的集成测试
12.3.3面向对象的确认测试
12.4设计测试用例
目前,面向对象软件的“测试用例”的设计方法,还处于研究、发展阶段,一般来说面向对象测试关注的是“设计适当的操作序列”检查类的状态。
12.4.1测试类的方法
1. 随机测试
2. 划分测试
3. 基于故障的测试
6
软件工程导论(第五版)
12.4.2集成测试方法
图12.3银行系统的类协作图
1. 多类测试
2. 从动态模型导出测试用例
图12.4 account类的状态转换图
软件工程导论(第五版) 7 12.5小结
习题12
1. 面向对象实现应该选用哪种程序设计语言?为什么?
2. 面向对象程序设计语言主要有哪些技术特点?
3. 选择面向对象程序设计语言时主要应该考虑哪些因素?
4. 良好的面向对象程序设计风格主要有哪些准则?
5. 测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点?
6. 测试面向对象软件时,主要有哪些设计单元测试用例的方法?
7. 测试面向对象软件时,主要有哪些设计集成测试用例的方法?
8. 测试面向对象软件时,主要有哪些设计确认测试用例的方法?
9. 试用C++语言实现(编程并测试)本书习题11第4题要求设计的定货系统。