第12章 面向对象实现
第9-12章 面向对象
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 )的一种方法。
《软件工程导论》课后习题答案
作业及解答(第3章)
• 数据结构的描述 符 号
= +
含 义
x = a+b
举
例
被定义为 与 或
[...,...] 或 [...|...] { ... }或 m{...}n (...) “...” ..
23:59:38
x = [a , b],x = [a | b] 重复 x = {a}, x = 3{a}8 可选 x = (a) 基本数据元素 x = “a” 连结符 x = 1..9
P1 记录存款信息
P2 打印存单 F5存款信息 F3存单 E1 储户 F4利息
F5存款信息 D1存款信息 F7密码 F2取款单
F5存款信息 P3 核算密码
F4利息 F4利息 F6取款信息 P6 设置利率 P4 计算利息
P5 打印利息清单 F8储蓄利率
E2 业务员
23:59:38
F8储蓄利率
F8储蓄利率
23:59:38
重庆工学院计算机科学与工程学院 李梁(liliang@) 李梁
作业及解答( 作业及解答(第3章)
23:59:38
重庆工学院计算机科学与工程学院 李梁(liliang@) 李梁
作业及解答( 作业及解答(第3章)
• 3-6 复印机的工作过程大致如下:未接到复印 命令时处于闲置状态,一旦接到复印命令则进 入复印状态,完成一个复印命令规定的工作后 又回到闲置状态,等待下一个复印命令;如果 执行复印命令时发现没纸,则进入缺纸状态, 发出警告,等待装纸,装满纸后进入闲置状态, 准备接收复印命令;如果复印时发生卡纸故障, 则进入卡纸状态,发出警告等待维修人员来排 除故障,故障排除后回到闲置状态。 • 请用状态转换图描绘复印机的行为。
面向对象编程语言的设计与实现
面向对象编程语言的设计与实现面向对象编程(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)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。
面向对象程序设计的核心概念包括封装、继承、多态和抽象。
封装封装是将数据(属性)和操作这些数据的方法(行为)绑定在一起的过程。
封装的目的是隐藏对象的内部状态和实现细节,只暴露出一个可以被外界访问的接口。
这样,对象的使用者不需要了解对象内部的复杂性,只需要通过公共接口与对象交互。
继承继承是一种机制,允许新创建的类(子类)继承现有类(父类)的属性和方法。
这使得代码重用变得可能,同时也支持层次结构的创建。
子类可以扩展或修改父类的行为,但通常保持父类的大部分功能。
多态多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
在面向对象编程中,多态性通常是通过方法重载(同一个类中多个同名方法,参数不同)和方法重写(子类重写父类的方法)实现的。
抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面,忽略不相关的细节。
在面向对象编程中,抽象通常是通过创建抽象类和接口来实现的。
抽象类可以包含抽象方法,这些方法没有具体的实现,必须由子类提供。
类和对象类是创建对象的蓝图或模板,定义了对象的结构和行为。
对象是根据类创建的实例,具有类定义的属性和方法。
每个对象都是唯一的,即使它们是同一个类的实例。
面向对象设计原则在面向对象设计中,有几个关键的设计原则,如单一职责原则、开放-封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则等。
这些原则帮助开发者创建灵活、可维护和可扩展的系统。
面向对象的优势- 代码重用:通过继承和多态性,可以减少代码重复。
- 易于维护:封装和抽象使得修改系统的一部分不会影响其他部分。
- 模块化:系统被分解为独立的模块,每个模块负责特定的功能。
- 可扩展性:系统可以容易地扩展新功能,而不需要重写现有代码。
面向对象实现主要包括两方面的工作: (1)将面向对象设计的结果
所选择的语言应该具有丰富的类库和方便的开发环境。 10
(4)其它因素
选择一种面向对象语言时还需要考虑的因素有:语言的难 易程度,使用语言期间可以提供的技术支持,能提供给开发人 员使用的开发平工具、开发平台;所选语言对机器性能和内存 的需求;集成已有软件的容易程度等。 二、程序设计风格 良好的程序设计风格包括传统的程序设计风格,也包括为 适应面向对象方法而必须遵守的一些规则,主要包括(1)提 高可重用性;(2)提高可扩充性;(3)提高健壮性。
所有属性和方法,但是当逻辑上不存在一般--特殊关系时,
为了重用已有的代码,可以使用委托机制。 (4)把重用代码封装在类中 可以将一些可重用的软件包封装在类中,来实现重用。
15
2、提高可扩充性 提高程序的可扩充性的面向对象程序设计准则: (1)将实现策略封装 将类的实现策略(描述属性的数据结构及修改属性的算法) 封装起来,对外只提供公有的接口,以利于今后的修改和扩充。 (2)不要用一个方法遍历多条关联链
6
7、效率 面向对象程序设计语言的效率并不低,主要原因如下(1) 早期大多数面向对象程序设计语言是编译型的;(2)类库中提 供了效率很高的基本数据结构类;(3)优化了动态联编实现多 态性时查找过程。 8、持久保持对象
选择面向对象语言时要考虑怎样将存储对象的问题,因为
长期保存数据的原因如下: (1)实现不同程序之间传递数据;
为了提高可重用性,通常将策略和实现分开。
13
(5)全面覆盖 处理过程要全面覆盖输入的数据,不仅对正常值可以处理, 而且对极限值、界外值等都有响应。
(6)尽量不使用全局信息
尽量降低方法与外界的耦合程度,不使用全局信息。 (7)利用继承机制 使用继承机制是实现共享和提高重用程度的主要途径。 (1)调用子过程 把公共代码分离出来,构成一个被其它方法调用的公用方 法,是实现代码重用的最常用,最简单的方法。通常可以在基 类中定义这个公用方法,供派生类中的方法调用。
第12章 设计模式示例
面象对象程序设计
第12章 设计模式示例
图12.2 Observer模式的逻辑结构
Subject
Attach(Observer) Detach(Observer) Notify( )
Observer
Update( )
Subjects
ConcreteSubject
SubjectState GetState ( ) SetState ( )
ConcreteObserver
ObserverState Update ( )
2013/7/30
面象对象程序设计
第12章 设计模式示例
这样设计的Observer模式具有如下特点。
(1) 目标和观察者间的耦合是抽象的。 (2) 支持广播通信方式。 (3) Observer模式的一个问题是可能形成意外的更新。
2013/7/30
面象对象程序设计
第12章 设计模式示例
图12.1 网上商店应用
会员客户 采购部门
通知更改 商品 询问
假如,商品的数量和价格发生了变化,自然希望客户会员能够 得到通知,并且采购部门也应该得到消息。这就要求在设计中 有一个机制能够自动观察到这种变化。一般说来,在面向对象 程序设计中,许多对象彼此会有各种关联。一种常见的情况是, 一组对象彼此存在一对多的关系,当其中一个对象的状态发生 改变时,该组中的每个其他对象都需要对自己进行更新,这时, 每个其他对象首先应该得到通知,并且更新应该是自动的。显 然,这类问题是在面向对象程序设计中经常会遇到的。 Observer模式提供了解决这类问题的方案。
之间的耦合度。各个参与者的作用如下。
1) Subject(目标) (1) 知道它的所有观察者,这表示,可以有任意多个观察者观察 同一个目标; (2) 提供接口,以便注册和删除观察者对象。
PowerBuilder程序设计教程第12章
第一页
上一页 下一页
最后 一页
结束 放映
12.2.2 创建定制可视用户对象
//cb_save的Clicked事件脚本 String ls_errtext If dw_l.Update( )=l Then Commit; Else Ls_errtext=SQLCA.SQLErrtext RollBack; MessageBox(”存盘失败!”,ls_errtext) End If (4) 为数据窗口dw_l的Rowfocuschanged事件输入如下脚本: //dw_l的rowfocuschanged事件 //将当前行设置为选中行 this.SelectRow(0,False) this.SelectRow(currentrow,true)
第12章 用户对象
在面向对象程序设计中,有两个重要的概念:对象和类。在PowerBuilder中, 系统提供了很多标准的对象和类,它们有各自的功能、表现特征、属性、 事件和函数。
12.1 用户对象的概念
用户对象只需定义一次,就能够反复多次使用,并且每修改一次,就能把修 改结果反映到所有使用该用户对象的地方。 在PowerBuilder中用户对象分为两类:可视用户对象(Visual User Object) 和类(非可视)用户对象(Class User Object)。 1、可视用户对象 可视用户对象是一个可视的控件或一组完成一定功能的控件。 可视用户对象共分为以下三类: (1)标准可视用户对象(Standard Visual) 标准可视用户对象是对PowerBuilder现有控件的扩充,它在现有控件的基本 功能的基础上增加应用程序需要的功能。标准可视用户对象继承了原始 控件的各种特征,包括属性、事件和函数。
12.2.5 创建定制类用户对象
PHP网站开发项目式教程(微课版)(第2版)任务12 使用PHP面向对象程序设计方法
需要解决的核心问题 • 如何创建类?类的属性和方法如何定义?如何对类进行实例化? • 对类进行访问控制时,可以使用哪几个关键字?它们各自的含
义是什么? • 类的静态属性和方法如何定义?如何访问?
__set()方法需要两个参数,分别是将要设置的属性名称和取 值;__get()方法只需要属性名称一个参数,该方法会返回属性的 值。
由类创建的对象,其数据类型是对象,不能直接使用print或 者echo语句输出。在要输出对象时,可以在类中定义__toString() 方法,在该方法中会返回可输出的字符串。
在PHP中可使用clone关键字建立与原对象拥有相同属性和方 法的对象,若需要改变这些属性,则可以使用PHP提供的魔术方 法__clone(),这个方法在“克隆”对象时会自动调用。
魔术方法__call()可以用于实现方法的重载。使用该方法的 格式如下。 function __call(arg1, arg2){}
在面向对象的语言中,除了事物的内部状态数据需要使用类 进行封装之外,在类中往往还需要提供两种方法,一种是操作这 些状态数据的方法,另一种是为实现这类事物的行为特征而定义 的方法,这些方法使用函数来实现。
即在面向对象的程序设计中,开发者希望直接对客观世界进 行模拟:定义一个类,对应客观世界的某种事物;实际业务中需 要关心这个事物的哪些状态,程序就为这些状态定义属性;实际 业务中需要关心这个事物的哪些行为,程序就为这些行为定义方 法函数。
__autoload()方法用于自动加载对象,它不是一个类方法, 而是一个单独的函数。如果脚本中定义了__autoload()函数,则 使用new关键字实例化没有声明的类时,这个类的名称将作为实 参传递给__autoload()函数,该函数会根据实参类名自动确定类 文件名,并加载类文件中的同名类。
软件工程教学大纲(正式版)
《软件工程导论》课程教学大纲一、课程基本信息课程编号:英文名称名:Software Engineering总学时:54学时学分:3课程类别:专业必修课适用专业:全校本(专)计算机科学与技术先修课程:数据结构,大学数学,离散数学,计算机算法设计。
二、课程性质与目的、要求《软件工程》是计算机专业的一门工程性基础课程,在软件工程学科人才培养体系中占有重要的地位。
软件开发是建立计算机应用系统的重要环节,人们通过软件工程学把软件开发纳入工程化的轨道,而软件工程学是用以指导软件人员进行软件的开发、维护和管理的科学。
《软件工程》已成为高等学校计算机软件教学体系中的一门核心课程,本课程以IEEE最新发布的软件工程知识体系为基础构建内容框架,注重贯穿软件开发整个过程的系统性认识和实践性应用,以当前流行的统一开发过程、面向对象技术和UML 语言作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践” 软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,使学生在理解和实践的基础上掌握当前软件工程的方法、技术和工具。
通过本课程的学习,要求学生能掌握软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;学生应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大型软件开发项目打下坚实的理论基础。
本课程注重培养学生理论应用于实践的能力,课堂上教师向学生讲述软件工程中的相关原理和概念,并通过课程设计,培养学生对整个软件开发过程的能力,让学生能切实体会到软件工程在实践中的指导作用,并按软件工程的要求完成规范的各项软件开发文档。
本课程对提高学生的软件开发能力和项目管理能力有重要的现实意义。
三、教学内容及学时分配本课程的教学内容共分十三章。
第1章软件工程学概述(2课时)学习目的与要求:通过本章的学习,了解和掌握软件工程的基本概念(如软件和软件工程的定义、等),软件危机的表现形式、产生的原因及消除的途径,软件工程的基本原理、方法学,软件的生存期,几种主要的软件开发模型等。
张海藩《软件工程导论》(第6版)(课后习题 第12章 面向对象实现)【圣才出品】
第12章面向对象实现1.面向对象实现应该选用哪种程序设计语言?为什么?答:(1)面向对象实现应该尽量选用面向对象语言来实现面向对象分析、设计的结果。
(2)原因①一致的表示方法。
面向对象开发基于不随时间变化的、一致的表示方法。
既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。
②可重用性。
既可重用面向对象分析结果,也可重用相应的面向对象设计和面向对象程序设计结果。
③可维护性。
程序显式地表达问题域语义,对维护人员理解待维护的软件有很大帮助。
在选择编程语言时,应该考虑的首要因素是哪个语言能最恰当地表达问题域语义。
2.面向对象程序设计语言主要有哪些技术特点?答:(1)支持类与对象概念的机制。
(2)实现聚集结构的机制。
(3)实现泛化结构的机制。
(4)实现属性和服务的机制。
(5)类型检查机制。
(6)类库。
(7)效率。
(8)持久保存对象的机制。
(9)参数化类的机制。
(10)开发环境。
3.选择面向对象程序设计语言时主要应该考虑哪些因素?答:(1)将来能否占主导地位。
(2)可重用性。
(3)类库和开发环境。
(4)其他因素,包括售后服务、对运行环境的需求、集成已有软件的难易程度等。
4.良好的面向对象程序设计风格主要有哪些准则?答:面向对象程序设计风格应遵循如下准则:(1)提高重用性。
(2)提高可扩展性。
(3)提高健壮性。
5.测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点?答:(1)单元测试,是在类层面上的测试。
由于继承和复合,类(或对象)在很多情况下已不再是单纯意义上的单个操作。
因此,具体的测试将在多有与操作有关的每个子类语境中进行。
(2)集成测试,由于面向对象软件中类的成分直接和间接交互,使得传统测试放法已经失去意义。
因此有两种策略可供选择,分别是基于线程的测试和基于使用的测试。
(3)确认测试,关注与用户可见的动作和用户识别的系统输出,但基于场景的测试总是主宰面向对象系统的确认测试。
面向对象编程语言的设计与实现原理分析
面向对象编程语言的设计与实现原理分析随着计算机领域的持续发展,面向对象编程(Object-Oriented Programming,简称OOP)已经成为一种十分流行的编程思想和范式。
面向对象编程语言的设计与实现原理是实现OOP的关键,本文将对此进行深入分析。
一、面向对象编程语言的基本概念面向对象编程是一种基于对象的概念进行程序设计的方法。
它将现实世界中的事物(对象)抽象成类,通过封装、继承和多态等特性来组织和管理代码。
面向对象编程语言是支持这种编程思想的语言。
面向对象编程语言具备以下基本概念:1. 类(Class):类是对象的模板或蓝图,描述了对象的属性和行为。
它是创建对象的基础。
2. 对象(Object):对象是类的实例,通过类来创建。
它具有类定义的属性和行为。
3. 封装(Encapsulation):通过封装,对象的内部数据和实现细节被隐藏起来,只对外部提供公共接口,保证了代码的安全性和可维护性。
4. 继承(Inheritance):继承允许新建的类继承现有类的属性和行为,并可以对其进行扩展和修改。
这样可以减少代码的重复性,提高代码的复用性和可扩展性。
5. 多态(Polymorphism):多态允许以统一的方式使用不同类的对象,提高了代码的灵活性和适应性。
二、面向对象编程语言的设计原理1. 抽象(Abstraction):面向对象编程语言通过抽象将真实世界中的事物转化为类和对象,去除了冗余的细节,使得代码更加清晰易懂。
抽象通过类的定义来描述对象的共同特征和行为,使得对象的创建和操作变得简单。
2. 封装(Encapsulation):封装将对象的属性和行为封装在一起,对外提供公共接口和方法来访问和操作对象,同时隐藏了对象的内部实现细节。
这样可以提高代码的安全性,避免对对象的直接访问和修改,以减少错误和bug 的产生。
3. 继承(Inheritance):继承是面向对象编程的重要特性,通过继承可以创建新的类,继承父类的属性和方法,并可以进行扩展和修改。
《Python程序设计》课程标准
《Python程序设计》课程标准课程名称:Python程序设计课程类别:专业课课程代码:适用专业:软件技术开课部门:信息工程系一、课程定位(一)课程性质《Python程序设计》是软件技术等相关专业的专业基础课程。
主要讲述Python程序设计的基础知识和相关技术,是软件技术、大数据技术与应用、云计算技术与应用专业的专业基础课程。
(二)课程任务Python语言是学生通过学习该课程,掌握Python程序设计语言的基本知识和使用Python语言进行软件开发的思想和基本方法,进而掌握程序设计的基本步骤和通用方法,提高通过编写程序解决实际问题的能力,为今后进一步使用数据采集和分析等大数据及人工智能方面的运用打好基础。
课程着眼于学生的长远发展,重点培养其软件开发、大数据及人工智能领域岗位基本工作技能、职业素养、社会适应能力、交流沟通能力、团队协作能力、创新能力和自主学习能力。
(三)课程衔接前导课程:《C语言程序设计》、《计算机应用基础》。
后续课程:Python网络高级教程。
二、课程目标通过本课程的学习,使得学生能够理解Python的编程模式(命令式编程、函数式编程),熟练运用Python运算符、内置函数以及列表、元组、字典、集合等基本数据类型和相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用字符串方法,适当了解正则表达式,熟练使用Python读写文本文件,适当了解二进制文件操作,了解Python程序的调试方法,了解Python面向对象程序设计模式,掌握使用Python操作SQLite数据库的方法,掌握Python+pandas进行数据处理的基本用法,掌握使用Python+matpIotI ib进行数据可视化的用法,同时还应培养学生的代码优化与安全编程意识。
在教学和学习过程中,应充分发挥Python语言的优势,从最简单、最直观的思路出发,尽快解决问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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题要求设计的定货系统。