第十一讲:软件实现.ppt

上传人:本田雅阁 文档编号:2122357 上传时间:2019-02-19 格式:PPT 页数:76 大小:2.27MB
返回 下载 相关 举报
第十一讲:软件实现.ppt_第1页
第1页 / 共76页
第十一讲:软件实现.ppt_第2页
第2页 / 共76页
第十一讲:软件实现.ppt_第3页
第3页 / 共76页
亲,该文档总共76页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第十一讲:软件实现.ppt》由会员分享,可在线阅读,更多相关《第十一讲:软件实现.ppt(76页珍藏版)》请在三一文库上搜索。

1、软 件 工 程 导 论,刘春 计算机与信息工程学院 软件工程系,2,回顾,设计模式概述 经典设计模式介绍 用户界面设计,什么是设计模式?,设计模式:描述一个在我们周围不断重复发生的问题,以及该问题的解决方案。,使用设计模式,我们就能一次一次地利用已有方案而不必做重复劳动。,设计模式之四人帮(GOF),GOF:Gang of Four Erich Gamma、Richard Helm、 Ralph Johnson、 John Vlissides),GOF之书,GOF之书:Design Patterns:Elements of Reusable Object-Oriented Software(设

2、计模式:可复用的面向对象软件的基本原理)。 该书被广大喜爱者昵称为GOF之书,被认为是学习设计模式的必读著作,GOF之书已经被公认为是设计模式领域的奠基之作。,GOF之23种设计模式,创建型模式 1.抽象工厂模式 2.工厂方法模式 3.单例模式 4.建造者模式 5.原型模式 结构型模式 1.适配器模式 2.外观模式 3.桥接模式 4.组合模式 5.装饰模式 6.享元模式 7.代理模式,行为型模式 1.迭代器模式 2.观察者模式 3.策略模式 4.职责链模式 5.命令模式 6.解释器模式 7.中介者模式 8.备忘录模式 9.状态模式 10.模板方法模式 11.访问者模式,7,内容提纲,设计模式概

3、述 经典设计模式介绍 用户界面设计,经典设计模式介绍,创建型模式 1.抽象工厂模式 2.工厂方法模式 3.单例模式 4.建造者模式 5.原型模式 结构型模式 1.适配器模式 2.外观模式 3.桥接模式 4.组合模式 5.装饰模式 6.享元模式 7.代理模式,行为型模式 1.迭代器模式 2.观察者模式 3.策略模式 4.命令模式 5.职责链模式 6.解释器模式 7.中介者模式 8.备忘录模式 9.状态模式 10.模板方法模式 11.访问者模式,抽象工厂模式的UML图,工厂方法模式的UML图,单例模式的结构,模式的结构中包括一种角色: 单例类(Singleton),单例模式的应用实例(1/2),1

4、单例类(Singleton): Moon.java public class Moon private static Moon uniqueMoon; double radius; double distanceToEarth; private Moon() uniqueMoon=this; radius=1738; distanceToEarth=363300; public static Moon getMoon() if(uniqueMoon=null) uniqueMoon=new Moon(); return uniqueMoon; public String show() Stri

5、ng s=“月亮的半径是“+radius+“km,距地球是“+distanceToEarth+“km“; return s; ,经典设计模式介绍,创建型模式 1.抽象工厂模式 2.工厂方法模式 3.单例模式 4.建造者模式 5.原型模式 结构型模式 1.适配器模式 2.外观模式 3.桥接模式 4.组合模式 5.装饰模式 6.享元模式 7.代理模式,行为型模式 1.迭代器模式 2.观察者模式 3.策略模式 4.命令模式 5.职责链模式 6.解释器模式 7.中介者模式 8.备忘录模式 9.状态模式 10.模板方法模式 11.访问者模式,适配器模式的UML图,外观模式的UML图,经典设计模式介绍,创

6、建型模式 1.抽象工厂模式 2.工厂方法模式 3.单例模式 4.建造者模式 5.原型模式 结构型模式 1.适配器模式 2.外观模式 3.桥接模式 4.组合模式 5.装饰模式 6.享元模式 7.代理模式,行为型模式 1.迭代器模式 2.观察者模式 3.策略模式 4.命令模式 5.职责链模式 6.解释器模式 7.中介者模式 8.备忘录模式 9.状态模式 10.模板方法模式 11.访问者模式,迭代器模式的UML图,观察者模式的UML图,策略模式的UML图,20,内容提纲,设计模式概述 经典设计模式介绍 用户界面设计,用户界面通常也称为人机界面(HCI),它是交互式应用软件系统的门面。 用户界面设计的

7、重要性:苹果的成功,用户界面设计,用户界面设计在软件设计中的归类,软件设计的主要任务 体系结构设计 接口设计 数据设计 过程设计,软件构件间的接口设计 软件和其它硬件或软件间的接口设计 人与计算机间交互信息的界面设计,以用户为中心:将界面置于用户的控制之下 减轻用户的记忆负担:良好的直觉特性 保持界面的一致性,用户界面设计原则,课程进度,我们现在的位置,25,提纲,软件实现的目标和任务 程序设计语言 软件编码规范 程序效率,目标: 选择某种程序设计语言,将详细设计结构进行编码实现,并形成可执行的软件系统的过程。 任务: 程序设计语言的选择 集成开发环境的选择 程序编码实现,软件实现的目标和任务

8、,27,提纲,软件实现的目标和任务 程序设计语言 软件编码规范 程序效率,程序设计语言的分类 程序设计语言介绍 程序设计语言的选择,程序设计语言,按程序设计语言的历史发展过程:机器语言、汇编语言、高级语言 按与机器的依赖程度:低级、中级和高级语言 按应用范围:通用语言与专用语言。通用语言又可细分为系统程序设计语言、科学计算语言、事务处理语言和实时控制语言等 按程序的设计方法:命令性语言和作用性语言 按语言的成分:顺序语言、并行语言和实时语言等 按语言的组成方法:汇集式语言和可扩充语言,程序设计语言的分类,按程序设计语言的历史发展过程,程序设计语言可分为: 机器语言 汇编语言 高级语言,程序设计

9、语言的介绍,机器语言时代(19461953),光电阅读机将记录在穿孔卡片上数据读入计算机 计算的结果则利用打孔机在卡片上打出的一些小孔,机器语言,卡片上的小孔就组成了计算机和专家明白但绝大多数人不明白的天书机器语言(完全用0、1代码写的程序),汇编语言,汇编语言出现:用助记符来代替0,1代码,帮助人们理解机器语言 助记符:MOV, ADD, . 汇编程序:将用汇编语言编写的程序翻译成机器语言程序的程序 汇编:具体的翻译成机器语言的过程 汇编语言程序的特征: 依赖于具体的硬件平台 翻译之后的代码体积小,高级语言时代(1954至今),高级语言的特征: 接近于自然语言 直观、好理解,便于记忆 屏蔽了

10、程序设计中与硬件相关的细节,实现了程序设计对机器硬件的独立性,使程序设计转向求解问题本身,常见的高级语言(1/3),FORTRAN:公式翻译程序设计语言,第一个广泛使用的高级语言,1956 Pacial: 第一个结构化的程序设计语言,六十年代末 C: 结构化设计语言,既具有高级语言的特征,又具有低级语言的功能,1972 (它的诞生是现代程序语言革命的起点,是程序设计语言发展史中的一个里程碑) C+:C语言的扩展(加入了面向对象),提供了类,多态,异常处理,模板,标准类库等,80年代初期,常见的高级语言(2/3),JAVA: 一种面向对象的编程语言(太阳公司),其语法结构与C+类似。Java在虚

11、拟机上运行,通过为不同的平台提供虚拟机,实现了Java跨平台的特性 C#: 语法与Java类似,是.Net平台上编程语言(微软公司),2000 Delphi: 由传统Pascal语言发展而来的Object Pascal,支持面向过程、面向数据和面向对象的三种开发方法,1995,提供了大量的快速应用程序开发组件,常见的高级语言(3/3),Perl: linux/unix下的脚本语言,1987 Python: 一种面向对象、直译式语言,语法简洁,1991 Ruby: 一种为简单快捷的面向对象编程的脚本语言,1995 Php: 一种 HTML 内嵌式的脚本语言,语言的风格有类似于C语言,1995,参

12、考阅读,假如编程语言是私家车 http:/ 假如编程语言是一把刀 http:/ 假如编程语言是宗教 http:/ 适合于WEB、桌面、控制台等程序,目前霸占了企业级应用市场 C#: 同JAVA类似,目前迅速崛起 C/C+: 是嵌入式开发和系统给开发的利器。操作系统、驱动程序、各种游戏大都是基于C/C+开发的 Delphi:擅长于快速的桌面程序开发,数据库开发,例如进销存软件,目前逐渐下滑 perl、python、ruby,php等其它语言也占据了一定的市场,高级语言的现状(1/3),编程语言本身的发展非常缓慢,虽然中间出现了面向对象语言等一些进展 过去的大部分的进展没有体现在编程语言本身上,而

13、是体现在框架及工具等方面 Java编程框架:Struts、Spring 现在的IDE,已经有了无数强大的功能,例如语法提示,重构,调试器,探测器等等,,高级语言的现状(2/3),开发语言排行榜:http:/ 每月更新一次 依据的指数是基于世界范围内的资深软件工程师和第三方供应商提供 其结果作为当前业内程序开发语言的流行使用程度的有效指标,排名110的编程语言,排名1120的编程语言,程序设计语言的分类 程序设计语言介绍 程序设计语言的选择,程序设计语言,编程语言的选择,用户的选择 程序员的知识 软件的应用领域 工程项目的规模 软件的可移植性 性能上的考虑,47,提纲,软件实现的目标和任务 程序

14、设计语言 软件编码规范 程序效率,遵循一定的规范,可以提高程序的: 可靠性、 可读性、 可修改性、 可维护性、 一致性,为什么需要软件编码规范?,使开发人员之间的工作成果可以共享,充分利用资源。,头文件规范 注释规范 命名规范 排版规范 目录结构规范,软件编码规范的内容,C / C+源程序的组织结构,头文件 用于保存程序的声明 后缀:.h 程序定义文件 用于保存程序的实现 后缀:.c/.cpp,头文件的结构与规范,文件头注释(涉及版权和版本声明、文件名、作者等信息) 预处理块 函数和类结构声明,防止头文件被重复引用,用ifndef/ define /endif结构产生预处理块,只存放“声明”而

15、不存放“定义”,头文件的引用方式,用#include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索) 用#include “filename.h”格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索),/ 防止被重复引用,/ 标准库的头文件,/ 非标准库的头文件,/ 全局函数声明,/ 类/结构声明,头文件规范 注释规范 命名规范 排版规范 目录结构规范,软件编码规范的内容,1、注释的缩进要与代码的缩进一致 2、注释之间要用空行隔开 3、对所有的变量、数据结构、以及函数进行声明时都应加以注释,说明含义 4、头文件和源文件的头部都应进行注释 5、函数的头部也应进行块注释,列出函数

16、的功能、输入参数、返回值等,注释规范,头文件规范 注释规范 命名规范 排版规范 目录结构规范,软件编码规范的内容,好的命名应是直观且容易理解的 标识符长度应当“长度简短、含义丰富” 变量、函数等命名应遵循一定的规范,命名规范,头文件规范 注释规范 命名规范 排版规范 目录结构规范,软件编码规范的内容,主要目的是增加代码的可读性 常见的一些排版规范 1、程序块采用缩进风格编写,缩进为2个空格 2、每个类声明、函数定义之后都要有空行 3、函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行隔开 4、一行代码只做一件事情,如只定义一个变量、或只写一条语句 5、if,while,do try,

17、catch等语句应独占一行,不论执行语句有多少都要加 6、代码行最大长度应控制在70-80个字符内, 7、关键字之后要留空格,排版规范(1/8),排版规范(1/7),1)程序块采用缩进风格编写,缩进为2个空格,排版规范(2/7),2)每个类声明、函数定义之后都要有空行 3)函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行隔开,排版规范(3/7),4)一行代码只做一件事情,如只定义一个变量、或只写一条语句,排版规范(4/7),5)if,while,do try,catch等语句应独占一行,不论执行语句有多少都要加,排版规范(5/7),6)对空格的处理: 关键字之后要留空格 函数名之后

18、不要留空格,紧跟左括号“(”;“(”向后紧跟,而“)”,“,”,“;”向前紧跟,紧跟处不留空格 “,”之后要留空格,如function(x,y,z);如果“;”不是一行的结束符,其后要间隔一个空格,如for(int i=0;i=,)等二元操作符前后应加空格 一元操作符如!,+,-,&等前后不加空格 像“”,“.”,“-”这类操作符前后不加空格 对于表达式比较长的for,while ,switch语句和if语句,为了紧凑,可以适当去掉一些空格 修饰符“*”和“&”应紧靠数据类型,排版规范(6/7),7)尽可能在定义变量的同时初始化该变量,排版规范(7/7),8)尽量控制一行代码的长度 一行代码长

19、度应该控制在80个字符以内 拆分出的新行要进行适当的缩进,使排版整齐,语句可读,69,提纲,软件实现的目标和任务 程序设计语言 软件编码规范 程序效率,程序效率,效率主要指处理时间和存储器容量两个方面 效率的三条原则 第一,效率是性能要求,应该在需求分析阶段确定效率方面的要求; 第二,效率是靠好设计来提高的; 第三,程序的效率和程序的简单度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率,为了提高程序的运行速度,应遵循以下原则: (1) 改善循环的效率 (2) 采用快速的算术运算 (3) 对数据结构进行划分和改进,以及对程序算法的优化来提高空间效率 (4) 尽量避免使用指针和复杂的表达

20、式,使用指针时,要防止“野指针” (5) 不要混淆数据类型,避免在表达式中出现类型混杂 (6) 尽量采用整数算术表达式和布尔表达式 (7) 编码前,尽量简化有关的算术表达式和逻辑表达式 (8) 选用等效的高效率算法,运行速度的提高,内存采取基于操作系统的分页功能的虚拟存储管理 对于变动频的数据最好采用动态存储,存储空间的优化,提高输入输出效率的指导原则如下: (1) 对所有的输入数据都进行检验,从而识别错误的输入,以保证每个数据的有效性。 (2) 检查输入项的各种重要组合的合理性,必要时报告输入状态信息。 (3) 使得输入的步骤和操作尽可能简单,并保持简单的输入格式。 (4) 输入数据时,应允

21、许使用自由格式输入,允许默认值;输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;在以交互式输入输出方式进行输入时,要在屏幕上使用提示符明确提示交互输入的请求指明可使用选择项的种类和取值范围,同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息。,输入/输出效率的提高(1/3),提高输入输出效率的指导原则如下: (5) 对所有的输入输出操作,安排适当的缓冲区,以减少频繁的信息交换。 (6) 对辅助存储(如磁盘),应当成块传送,以提高输入输出效率。 (7) 对辅助存储的输入输出,应考虑设备特性,改善输入输出的质量和速度。 (8) 对终端或打印机的输入输出,应考虑设备特性,改善输入输出的质量和速度。,输入/输出效率的提高(2/3),提高输入输出效率的指导原则如下: (9) 任何不易理解的、对改善输入输出效果关系不大的措施都是不可取的。 (10) 不应该为追求所谓超高效的输入输出,而损害程序的可理解性。 (11) 良好的输入输出程序设计风格对提高输入输出效率会有明显的效果。,输入/输出效率的提高(3/3),软件实现的目的就是要把详细设计的结果翻译成用选定的语言书写的源程序。 这一过程要选择合适的程序设计语言,遵守软件编码规范,开发出高效率的软件。,小结,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1