第十一讲:软件实现

上传人:夏** 文档编号:585076306 上传时间:2024-09-01 格式:PPT 页数:76 大小:2.27MB
返回 下载 相关 举报
第十一讲:软件实现_第1页
第1页 / 共76页
第十一讲:软件实现_第2页
第2页 / 共76页
第十一讲:软件实现_第3页
第3页 / 共76页
第十一讲:软件实现_第4页
第4页 / 共76页
第十一讲:软件实现_第5页
第5页 / 共76页
点击查看更多>>
资源描述

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

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

2、John Vlissides)GOF之书pGOF之书之书:Design Patterns:Elements of Reusable Object-Oriented Software(设计模式:可复用的面向设计模式:可复用的面向对象软件的基本原理对象软件的基本原理)。)。p该书被广大喜爱者昵称为该书被广大喜爱者昵称为GOF之书,被认为是学习设计模式之书,被认为是学习设计模式的必读著作,的必读著作,GOF之书已经被公认为是之书已经被公认为是设计模式领域的奠基设计模式领域的奠基之作之作。GOF之23种设计模式p创建型模式创建型模式1.1.抽象工厂模式抽象工厂模式2.2.工厂方法模式工厂方法模式 3.

3、3.单例模式单例模式4.4.建造者模式建造者模式 5.5.原型模式原型模式 p结构型模式结构型模式1.1.适配器模式适配器模式2.2.外观模式外观模式 3.3.桥接模式桥接模式 4.4.组合模式组合模式5.5.装饰模式装饰模式6.6.享元模式享元模式7.7.代理模式代理模式p行为型模式行为型模式1.1.迭代器模式迭代器模式2.2.观察者模式观察者模式3.3.策略模式策略模式4.4.职责链模式职责链模式5.5.命令模式命令模式 6.6.解释器模式解释器模式7.7.中介者模式中介者模式8.8.备忘录模式备忘录模式9.9.状态模式状态模式10.10.模板方法模式模板方法模式11.11.访问者模式访问

4、者模式7 7内容提纲p设计模式概述设计模式概述p经典设计模式介绍经典设计模式介绍p用户界面设计用户界面设计经典设计模式介绍p创建型模式创建型模式1.1.抽象工厂模式抽象工厂模式2.2.工厂方法模式工厂方法模式 3.3.单例模式单例模式4.4.建造者模式建造者模式 5.5.原型模式原型模式 p结构型模式结构型模式1.1.适配器模式适配器模式2.2.外观模式外观模式 3.3.桥接模式桥接模式 4.4.组合模式组合模式5.5.装饰模式装饰模式6.6.享元模式享元模式7.7.代理模式代理模式p行为型模式行为型模式1.1.迭代器模式迭代器模式2.2.观察者模式观察者模式3.3.策略模式策略模式4.4.命

5、令模式命令模式 5.5.职责链模式职责链模式6.6.解释器模式解释器模式7.7.中介者模式中介者模式8.8.备忘录模式备忘录模式9.9.状态模式状态模式10.10.模板方法模式模板方法模式11.11.访问者模式访问者模式抽象工厂模式的UML图工厂方法模式的UML图单例模式的结构p模式的结构中模式的结构中包括包括一种一种角色角色:单例类(单例类(SingletonSingleton) 单例模式的应用实例(1/2)1 1单例类(单例类(SingletonSingleton): : Moon.java Moon.java public class Moonpublic class Moon priv

6、ate static Moon uniqueMoon; private static Moon uniqueMoon; double radius; double radius; double distanceToEarth; double distanceToEarth; private Moon() private Moon() uniqueMoon=this; uniqueMoon=this; radius=1738; radius=1738; distanceToEarth=363300; distanceToEarth=363300; public static Moon getMo

7、on() public static Moon getMoon() if(uniqueMoon=null) if(uniqueMoon=null) uniqueMoon=new Moon(); uniqueMoon=new Moon(); return uniqueMoon; return uniqueMoon; public String show() public String show() String s= String s=月亮的半径是月亮的半径是+radius+km,+radius+km,距地球是距地球是+distanceToEarth+km;+distanceToEarth+km

8、; return s; return s; 经典设计模式介绍p创建型模式创建型模式1.1.抽象工厂模式抽象工厂模式2.2.工厂方法模式工厂方法模式 3.3.单例模式单例模式4.4.建造者模式建造者模式 5.5.原型模式原型模式 p结构型模式结构型模式1.1.适配器模式适配器模式2.2.外观模式外观模式 3.3.桥接模式桥接模式 4.4.组合模式组合模式5.5.装饰模式装饰模式6.6.享元模式享元模式7.7.代理模式代理模式p行为型模式行为型模式1.1.迭代器模式迭代器模式2.2.观察者模式观察者模式3.3.策略模式策略模式4.4.命令模式命令模式 5.5.职责链模式职责链模式6.6.解释器模式

9、解释器模式7.7.中介者模式中介者模式8.8.备忘录模式备忘录模式9.9.状态模式状态模式10.10.模板方法模式模板方法模式11.11.访问者模式访问者模式适配器模式的UML图外观模式的UML图经典设计模式介绍p创建型模式创建型模式1.1.抽象工厂模式抽象工厂模式2.2.工厂方法模式工厂方法模式 3.3.单例模式单例模式4.4.建造者模式建造者模式 5.5.原型模式原型模式 p结构型模式结构型模式1.1.适配器模式适配器模式2.2.外观模式外观模式 3.3.桥接模式桥接模式 4.4.组合模式组合模式5.5.装饰模式装饰模式6.6.享元模式享元模式7.7.代理模式代理模式p行为型模式行为型模式

10、1.1.迭代器模式迭代器模式2.2.观察者模式观察者模式3.3.策略模式策略模式4.4.命令模式命令模式 5.5.职责链模式职责链模式6.6.解释器模式解释器模式7.7.中介者模式中介者模式8.8.备忘录模式备忘录模式9.9.状态模式状态模式10.10.模板方法模式模板方法模式11.11.访问者模式访问者模式迭代器模式的UML图观察者模式的UML图策略模式的UML图2020内容提纲p设计模式概述设计模式概述p经典设计模式介绍经典设计模式介绍p用户界面设计用户界面设计p用户界面通常也称为人机界面用户界面通常也称为人机界面(HCI),它是交互式,它是交互式应用软件系统的门面。应用软件系统的门面。p

11、用户界面设计的重要性:用户界面设计的重要性:苹果的成功苹果的成功用户界面设计用户界面设计在软件设计中的归类p软件设计的主要任务软件设计的主要任务体系结构设计体系结构设计接口设计接口设计数据设计数据设计过程设计过程设计软件构件间的接口设计软件构件间的接口设计软件和其它硬件或软件间的接口软件和其它硬件或软件间的接口设计设计人与计算机间交互信息的人与计算机间交互信息的界面设界面设计计p以用户为中心:将界面置于用户的控制之下将界面置于用户的控制之下p减轻用户的记忆负担:良好的直觉特性良好的直觉特性p保持界面的一致性用户界面设计原则课程进度我们现在的我们现在的位置位置2525提纲p软件实现的目标和任务软

12、件实现的目标和任务p程序设计语言程序设计语言p软件编码规范软件编码规范p程序效率程序效率p目标:目标: 选择某种程序设计语言,将详细设计结构进行编码实现,并形成可执行的软件系统的过程。p任务:任务:程序设计语言的选择集成开发环境的选择程序编码实现软件实现的目标和任务2727提纲p软件实现的目标和任务软件实现的目标和任务p程序设计语言程序设计语言p软件编码规范软件编码规范p程序效率程序效率p程序设计语言的分类程序设计语言的分类p程序设计语言介绍程序设计语言介绍p程序设计语言的选择程序设计语言的选择程序设计语言按程序设计语言的历史发展过程:按程序设计语言的历史发展过程:机器语言、汇编语言、高机器语

13、言、汇编语言、高级语言级语言按与机器的依赖程度:按与机器的依赖程度:低级、中级和高级语言低级、中级和高级语言按应用范围:按应用范围:通用语言与专用语言。通用语言与专用语言。通用语言通用语言又可细分为系又可细分为系统程序设计语言、科学计算语言、事务处理语言和实时控制统程序设计语言、科学计算语言、事务处理语言和实时控制语言等语言等按程序的设计方法:按程序的设计方法:命令性语言和作用性语言命令性语言和作用性语言按语言的成分:按语言的成分:顺序语言、并行语言和实时语言等顺序语言、并行语言和实时语言等按语言的组成方法:按语言的组成方法:汇集式语言和可扩充语言汇集式语言和可扩充语言程序设计语言的分类p按程

14、序设计语言的历史发展按程序设计语言的历史发展过程,程序设计语过程,程序设计语言可分为:言可分为:机器语言机器语言汇编语言汇编语言高级语言高级语言程序设计语言的介绍机器语言时代(19461953)p光电阅读机将记录在穿孔卡片上数据读入计算机光电阅读机将记录在穿孔卡片上数据读入计算机p计算的结果则利用打孔机在卡片上打出的一些小孔计算的结果则利用打孔机在卡片上打出的一些小孔机器语言p卡片上的小孔卡片上的小孔就组成了计就组成了计算机和专家明白但绝大多算机和专家明白但绝大多数人不明白的天书数人不明白的天书机机器语言器语言(完全用完全用0、1代码代码写的程序写的程序) 汇编语言p汇编语言出现汇编语言出现:

15、用:用助记符助记符来代替来代替0,1代码,帮助人们理解机代码,帮助人们理解机器语言器语言p助记符:助记符:MOV, ADD, .p汇编程序汇编程序:将用汇编语言编写的程序翻译成机器语言程序的:将用汇编语言编写的程序翻译成机器语言程序的程序程序p汇编汇编:具体的翻译成机器语言的过程:具体的翻译成机器语言的过程p汇编语言程序的特征:汇编语言程序的特征:依赖于具体的硬件平台依赖于具体的硬件平台翻译之后的代码体积小翻译之后的代码体积小 高级语言时代(1954至今)p高级语言的特征:高级语言的特征:接近于自然语言接近于自然语言直观、好理解,便于记忆直观、好理解,便于记忆屏蔽了程序设计中与硬件相关的屏蔽了

16、程序设计中与硬件相关的细节,实现了细节,实现了程序设计对程序设计对机器硬件的独立性机器硬件的独立性,使程序设计转向求解问题本身,使程序设计转向求解问题本身常见的高级语言(1/3)FORTRANFORTRAN:公式:公式翻译程序翻译程序设计语言,设计语言,第一第一个广泛使用的个广泛使用的高级高级语言语言,1956Pacial: 第一个结构化的程序设计语言,六十年代末第一个结构化的程序设计语言,六十年代末C: 结构化设计语言,结构化设计语言,既具有高级语言的特征,又具有低级既具有高级语言的特征,又具有低级语言的语言的功能,功能,1972 (它的它的诞生是现代程序语言革命的起点,是程序设计语诞生是现

17、代程序语言革命的起点,是程序设计语言发展史中的一个言发展史中的一个里程碑里程碑)C+:C+:C C语言语言的的扩展(加入了面向对象),扩展(加入了面向对象),提供了类,多态,提供了类,多态,异常处理,模板,标准类库异常处理,模板,标准类库等,等,80年代初期年代初期常见的高级语言(2/3)JAVAJAVA: : 一一种面向对象的种面向对象的编程语言(编程语言(太阳公司)太阳公司),其语法,其语法结结构与构与C+C+类似。类似。JavaJava在虚拟机上运行,通过为不同的平台在虚拟机上运行,通过为不同的平台提供虚拟机,实现了提供虚拟机,实现了JavaJava跨平台的跨平台的特性特性C#: C#:

18、 语法语法与与JavaJava类似,是类似,是.Net.Net平台上编程语言平台上编程语言(微软公司)(微软公司), ,2000Delphi: 由传统Pascal语言发展而来的Object Pascal,支支持面向过程、面向数据和面向对象的三种开发持面向过程、面向数据和面向对象的三种开发方法方法,1995,提供了大量的快速应用程序开发组件常见的高级语言(3/3)Perl: linux/unix下的脚本语言下的脚本语言,1987Python: 一一种种面向面向对象对象、直译直译式语言,语法简洁式语言,语法简洁, ,1991Ruby: 一一种为简单快捷的面向对象种为简单快捷的面向对象编程的脚本语言

19、编程的脚本语言, ,1995Php: 一一种种 HTML HTML 内嵌式内嵌式的脚本的脚本语言语言,语言的风格有类似于语言的风格有类似于C C语语言言, ,1995参考阅读假如编程语言是私家车假如编程语言是私家车 http:/ http:/ 常见高级语言的目前使用情况Java: 适合于适合于WEB、桌面、控制台等程序,目前、桌面、控制台等程序,目前霸占了霸占了企业级应用企业级应用市场市场C#: 同同JAVA类似,目前迅速崛起类似,目前迅速崛起C/C+: 是是嵌入式开发和系统给开发嵌入式开发和系统给开发的利器的利器。操作系统、。操作系统、驱动程序、各种游戏大都驱动程序、各种游戏大都是基于是基于

20、C/C+开发的开发的Delphi:擅长擅长于于快速的桌面程序开发快速的桌面程序开发,数据库数据库开发开发,例,例如进销存如进销存软件,目前逐渐下滑软件,目前逐渐下滑perl、python、ruby,php等其它语言也占据了一定等其它语言也占据了一定的市场的市场高级语言的现状(1/3)编程语言编程语言本身的发展非常缓慢本身的发展非常缓慢,虽然中间出现了面向对象,虽然中间出现了面向对象语言等一些语言等一些进展进展过去的大部分的进展没有体现在编程语言本身上,而是过去的大部分的进展没有体现在编程语言本身上,而是体体现在框架及工具现在框架及工具等等方面方面Java编程框架:编程框架:Struts、Spr

21、ing现在的现在的IDE,已经,已经有了无数强大的功能,例如语法提有了无数强大的功能,例如语法提示,重构,调试器,探测器等等示,重构,调试器,探测器等等,高级语言的现状(2/3)开发语言排行榜:开发语言排行榜:http:/http:/每月更新一次每月更新一次依据的指数是基于世界范围内的资深软件工程师和第三方依据的指数是基于世界范围内的资深软件工程师和第三方供应商提供供应商提供其结果作为当前业内程序开发语言的流行使用程度的有效其结果作为当前业内程序开发语言的流行使用程度的有效指标指标排名110的编程语言排名1120的编程语言p程序设计语言的分类程序设计语言的分类p程序设计语言介绍程序设计语言介绍

22、p程序设计语言的选择程序设计语言的选择程序设计语言编程语言的选择用户的选择用户的选择程序员的知识程序员的知识软件的应用领域软件的应用领域工程项目的规模工程项目的规模软件的可移植性软件的可移植性性能上的考虑性能上的考虑4747提纲p软件实现的目标和任务软件实现的目标和任务p程序设计语言程序设计语言p软件编码规范软件编码规范p程序效率程序效率p遵循一定的规范,可以提高程序遵循一定的规范,可以提高程序的:的:可靠性、可靠性、可读性、可读性、可修改性、可修改性、可维护性、可维护性、一致性一致性为什么需要软件编码规范?使开发人员之间的工作使开发人员之间的工作成果可以共享,充分利成果可以共享,充分利用资源

23、。用资源。头文件头文件规范规范注释注释规范规范命名命名规范规范排版排版规范规范 目录结构规范目录结构规范软件编码规范的内容 C/C+源程序的组织结构p头文件头文件用于保存程序的声明用于保存程序的声明后缀:后缀:.h.hp程序定义文件程序定义文件用于保存程序的实现用于保存程序的实现后缀:后缀:.c/.cpp.c/.cpp 头文件的结构与规范文件头注释(涉及版权和版本声明、文件名、作者等信息)文件头注释(涉及版权和版本声明、文件名、作者等信息)预处理块预处理块函数和类结构声明函数和类结构声明防止头文件被重复引用,用防止头文件被重复引用,用ifndef/ define /endif结构产生预处理块结

24、构产生预处理块只只存放存放“声明声明”而不存放而不存放“定义定义” 头文件的引用方式用用# #include include 格式来格式来引用引用标准库的头文件标准库的头文件(编(编译器将从标准库目录开始搜索)译器将从标准库目录开始搜索)用用# #include “filename.h”include “filename.h”格式来引用格式来引用非标准库的头文件非标准库的头文件(编译器将从用户的工作目录开始搜索)(编译器将从用户的工作目录开始搜索)/ / 防止被重复引用防止被重复引用/ / 标准库的头文件标准库的头文件 / / 非标准库的头文件非标准库的头文件 / / 全局函数声明全局函数声明

25、 / / 类类/ /结构声明结构声明 头文件头文件规范规范注释注释规范规范命名命名规范规范排版排版规范规范 目录结构规范目录结构规范软件编码规范的内容1 1、注释的缩进要与代码的缩进一致注释的缩进要与代码的缩进一致2 2、注释之间要用空行隔开、注释之间要用空行隔开3 3、对所有的变量、数据结构、以及函数、对所有的变量、数据结构、以及函数进行声进行声明明时都应加以注释,说明含义时都应加以注释,说明含义4 4、头文件和源文件的头部都应进行注释、头文件和源文件的头部都应进行注释5 5、函数的头部也应进行块注释函数的头部也应进行块注释,列出函数的功,列出函数的功能、输入参数、返回值等能、输入参数、返回

26、值等注释规范头文件头文件规范规范注释注释规范规范命名命名规范规范排版排版规范规范 目录结构规范目录结构规范软件编码规范的内容好的命名应是好的命名应是直观直观且且容易理解容易理解的的标识符长度应当标识符长度应当“长度简短、含义丰富长度简短、含义丰富”变量、函数等命名应遵循一定的规范变量、函数等命名应遵循一定的规范命名规范头文件头文件规范规范注释注释规范规范命名命名规范规范排版排版规范规范 目录结构规范目录结构规范软件编码规范的内容排版规范(1/7)1 1)程序块采用缩进风格编写,缩进为程序块采用缩进风格编写,缩进为2 2个空格个空格排版规范(2/7)2 2)每个类声明、函数定义之后都要有空行每个

27、类声明、函数定义之后都要有空行3 3)函数函数体内,逻辑上密切相关的语句之间不加空行,体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行隔开其它地方应加空行隔开排版规范(3/7)4 4)一行代码只做一件事情,一行代码只做一件事情,如只定义一个变量、或只写一如只定义一个变量、或只写一条条语句语句排版规范(4/7)5 5)if,while,do if,while,do try,catchtry,catch等语句应独占一行,不论执行语等语句应独占一行,不论执行语句有多少都要加句有多少都要加排版规范(5/7)6 6)对空格的处理:对空格的处理:关键字之后要留空格关键字之后要留空格函数名之后不要留

28、空格,紧跟左括号函数名之后不要留空格,紧跟左括号“(”;“(”向后紧跟,而向后紧跟,而“)”,“,”,“;”向前紧跟,紧跟处不留空格向前紧跟,紧跟处不留空格“,”之后要留空格,如之后要留空格,如function(x,y,z);function(x,y,z);如果如果“;”不是一行的不是一行的结束符,其后要间隔一个空格,如结束符,其后要间隔一个空格,如for(int i=0;i10;i+)for(int i=0;i=,=,)(,)等二元操作符前后应加空格等二元操作符前后应加空格一元操作符如!,一元操作符如!, ,+,-,& &等前后不加空格等前后不加空格像像“”, ,“. .”, ,“-”这这类

29、操作符前后不加空格类操作符前后不加空格对于表达式比较长的对于表达式比较长的for,while ,switchfor,while ,switch语句和语句和ifif语句,为了紧凑,语句,为了紧凑,可以适当去掉一些空格可以适当去掉一些空格修饰符修饰符“* *”和和“& &”应紧靠数据类型应紧靠数据类型排版规范(6/7)7 7)尽可能在定义变量的同时初始化该变量)尽可能在定义变量的同时初始化该变量排版规范(7/7)8 8)尽量控制一行代码的长度)尽量控制一行代码的长度一行代码长度应该控制在一行代码长度应该控制在8080个字符个字符以内以内拆分出的新行要进行适当的缩进,使排版整齐,语句可读拆分出的新行

30、要进行适当的缩进,使排版整齐,语句可读6969提纲p软件实现的目标和任务软件实现的目标和任务p程序设计语言程序设计语言p软件编码规范软件编码规范p程序效率程序效率程序效率p效率主要指效率主要指处理时间处理时间和和存储器容量存储器容量两个方面两个方面p效率效率的三条原则的三条原则第一,效率是性能要求,应该在需求分析阶段确定效率方面的要求;第二,效率是靠好设计来提高的;第三,程序的效率和程序的简单度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率p为了提高程序的运行速度,应遵循以下为了提高程序的运行速度,应遵循以下原则:原则:(1) 改善循环的循环的效率效率(2) 采用快速的算术运算(3)

31、 对数据结构进行划分和改进,以及对程序算法的优化来提高空间效率(4) 尽量避免使用指针和复杂的表达式指针和复杂的表达式,使用指针时,要防止“野指针”(5) 不要混淆数据类型,避免在表达式中出现类型混杂(6) 尽量采用整数算术表达式和布尔表达式(7) 编码前,尽量简化有关的算术表达式和逻辑表达式(8) 选用等效的高效率算法运行速度的提高p内存采取基于操作系统的分页功能的内存采取基于操作系统的分页功能的虚拟存储管理虚拟存储管理p对于变动对于变动频的频的数据最好采用动态数据最好采用动态存储存储存储空间的优化p提高输入输出效率的指导原则如下:提高输入输出效率的指导原则如下:(1) 对所有的输入数据都进

32、行检验所有的输入数据都进行检验,从而识别错误的输入,以保证每个数据的有效性。(2) 检查输入项的各种重要组合的合理性输入项的各种重要组合的合理性,必要时报告输入状态信息。(3) 使得输入的步骤和操作尽可能简单使得输入的步骤和操作尽可能简单,并保持简单的输入格式。(4) 输入数据时,应允许使用自由格式输入,允许默认值允许默认值;输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;在以交互式输入输出方式进行输入时,要在屏幕上使用提示符明确提示交互输入的请求指明可使用选择项的种类和取值范围,同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息。输入/输出效率的提高(1/3)

33、p提高输入输出效率的指导原则如下:提高输入输出效率的指导原则如下:(5) 对所有的输入输出操作,安排适当的缓冲区,以减少频繁的信息交换。(6) 对辅助存储(如磁盘),应当成块传送,以提高输入输出效率。(7) 对辅助存储的输入输出,应考虑设备特性,改善输入输出的质量和速度。(8) 对终端或打印机的输入输出,应考虑设备特性,改善输入输出的质量和速度。输入/输出效率的提高(2/3)p提高输入输出效率的指导原则如下:提高输入输出效率的指导原则如下:(9) 任何不易理解的、对改善输入输出效果关系不大的措施都是不可取的。(10) 不应该为追求所谓超高效的输入输出,而损害程序的可理解性。(11) 良好的输入输出程序设计风格对提高输入输出效率会有明显的效果。输入/输出效率的提高(3/3)p软件软件实现的目的就是要把详细设计的结果翻译成用选定的实现的目的就是要把详细设计的结果翻译成用选定的语言书写的源程序。语言书写的源程序。p这一过程要选择合适的程序设计语言,遵守软件编码规范,这一过程要选择合适的程序设计语言,遵守软件编码规范,开发出高效率的软件。开发出高效率的软件。小结

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号