第十一讲:软件实现

上传人:sx****84 文档编号:243369462 上传时间:2024-09-21 格式:PPT 页数:76 大小:1.83MB
返回 下载 相关 举报
第十一讲:软件实现_第1页
第1页 / 共76页
第十一讲:软件实现_第2页
第2页 / 共76页
第十一讲:软件实现_第3页
第3页 / 共76页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软 件 工 程 导 论,1,回顾,设计模式概述,经典设计模式介绍,用户界面设计,2,什么是设计模式?,设计模式:,描述一个在我们周围不断重复发生的问题,以及该问题的解决方案。,使用设计模式,我们就能一次一次地利用已有方案而不必做重复劳动。,3,设计模式之四人帮(,GOF,),GOF,:,Gang,of,Four,Erich Gamma,、,Richard Helm,、,Ralph Johnson,、,John Vlissides),4,GOF,之书,GOF,之书,:,Design Patterns,:,Elements of Reusable Object-Oriented Software,(,设计模式:可复用的面向对象软件的基本原理,)。,该书被广大喜爱者昵称为,GOF,之书,被认为是学习设计模式的必读著作,,GOF,之书已经被公认为是,设计模式领域的奠基之作,。,5,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.,访问者模式,6,内容提纲,设计模式概述,经典设计模式介绍,用户界面设计,7,经典设计模式介绍,创建型模式,1.,抽象工厂模式,2.,工厂方法模式,3.,单例模式,4.,建造者模式,5.,原型模式,结构型模式,1.,适配器模式,2.,外观模式,3.,桥接模式,4.,组合模式,5.,装饰模式,6.,享元模式,7.,代理模式,行为型模式,1.,迭代器模式,2.,观察者模式,3.,策略模式,4.,命令模式,5.,职责链模式,6.,解释器模式,7.,中介者模式,8.,备忘录模式,9.,状态模式,10.,模板方法模式,11.,访问者模式,8,抽象工厂模式的,UML,图,9,工厂方法模式的,UML,图,10,单例模式的结构,模式的结构中,包括,一种,角色,:,单例类(,Singleton,),11,单例模式的应用实例(,1/2,),1,单例类(,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(),String s=,月亮的半径是,+radius+km,距地球是,+distanceToEarth+km;,return s;,12,经典设计模式介绍,创建型模式,1.,抽象工厂模式,2.,工厂方法模式,3.,单例模式,4.,建造者模式,5.,原型模式,结构型模式,1.,适配器模式,2.,外观模式,3.,桥接模式,4.,组合模式,5.,装饰模式,6.,享元模式,7.,代理模式,行为型模式,1.,迭代器模式,2.,观察者模式,3.,策略模式,4.,命令模式,5.,职责链模式,6.,解释器模式,7.,中介者模式,8.,备忘录模式,9.,状态模式,10.,模板方法模式,11.,访问者模式,13,适配器模式的,UML,图,14,外观模式的,UML,图,15,经典设计模式介绍,创建型模式,1.,抽象工厂模式,2.,工厂方法模式,3.,单例模式,4.,建造者模式,5.,原型模式,结构型模式,1.,适配器模式,2.,外观模式,3.,桥接模式,4.,组合模式,5.,装饰模式,6.,享元模式,7.,代理模式,行为型模式,1.,迭代器模式,2.,观察者模式,3.,策略模式,4.,命令模式,5.,职责链模式,6.,解释器模式,7.,中介者模式,8.,备忘录模式,9.,状态模式,10.,模板方法模式,11.,访问者模式,16,迭代器模式的,UML,图,17,观察者模式的,UML,图,18,策略模式的,UML,图,19,内容提纲,设计模式概述,经典设计模式介绍,用户界面设计,20,用户界面通常也称为人机界面,(HCI),,它是交互式应用软件系统的门面。,用户界面设计的重要性:,苹果的成功,用户界面设计,21,用户界面设计在软件设计中的归类,软件设计的主要任务,体系结构设计,接口设计,数据设计,过程设计,软件构件间的接口设计,软件和其它硬件或软件间的接口设计,人与计算机间交互信息的,界面设计,22,以用户为中心:,将界面置于用户的控制之下,减轻用户的记忆负担:,良好的直觉特性,保持界面的一致性,用户界面设计原则,23,课程进度,我们现在的位置,24,提纲,软件实现的目标和任务,程序设计语言,软件编码规范,程序效率,25,目标:,选择,某种程序设计语言,将详细设计结构进行编码实现,并形成,可执行,的软件系统的过程,。,任务:,程序设计语言的选择,集成,开发环境的,选择,程序,编码,实现,软件实现的目标和任务,26,提纲,软件实现的目标和任务,程序设计语言,软件编码规范,程序效率,27,程序设计语言的分类,程序设计语言介绍,程序设计语言的选择,程序设计语言,28,按程序设计语言的历史发展过程:,机器语言、汇编语言、高级语言,按与机器的依赖程度:,低级、中级和高级语言,按应用范围:,通用语言与专用语言。,通用语言,又可细分为系统程序设计语言、科学计算语言、事务处理语言和实时控制语言等,按程序的设计方法:,命令性语言和作用性语言,按语言的成分:,顺序语言、并行语言和实时语言等,按语言的组成方法:,汇集式语言和可扩充语言,程序设计语言的分类,29,按程序设计语言的历史发展,过程,程序设计语言可分为:,机器语言,汇编语言,高级语言,程序设计语言的介绍,30,机器语言时代,(19461953),31,光电阅读机将记录在穿孔卡片上数据读入计算机,计算的结果则利用打孔机在卡片上打出的一些小孔,机器语言,卡片上的小孔,就组成了计算机和专家明白但绝大多数人不明白的天书,机器语言,(,完全用,0,、,1,代码写的程序,),32,汇编语言,汇编语言出现,:用,助记符,来代替,0,,,1,代码,帮助人们理解机器语言,助记符:,MOV, ADD, .,汇编程序,:将用汇编语言编写的程序翻译成机器语言程序的程序,汇编,:具体的翻译成机器语言的过程,汇编语言程序的特征:,依赖于具体的硬件平台,翻译之后的代码体积小,33,高级语言时代,(1954,至今,),高级语言的特征:,接近于自然语言,直观、好理解,便于记忆,屏蔽了程序设计中与硬件相关的,细节,实现了,程序设计对机器硬件的独立性,,使程序设计转向求解问题本身,34,常见的高级语言(,1/3,),FORTRAN,:公式,翻译程序,设计语言,,第一,个广泛使用的,高级语言,,,1956,Pacial:,第一个结构化的程序设计语言,六十年代末,C:,结构化设计语言,,既具有高级语言的特征,又具有低级语言的,功能,,1972,(,它的,诞生是现代程序语言革命的起点,是程序设计语言发展史中的一个,里程碑,),C+:,C,语言,的,扩展(加入了面向对象),,提供了类,多态,异常处理,模板,标准类库,等,,80,年代初期,35,常见的高级语言(,2/3,),JAVA,:,一,种面向对象的,编程语言(,太阳公司),,其语法,结构与,C+,类似。,Java,在虚拟机上运行,通过为不同的平台提供虚拟机,实现了,Java,跨平台的,特性,C#:,语法,与,Java,类似,是,.Net,平台上编程语言,(微软公司),2000,Delphi,:,由,传统,Pascal,语言发展而来的,Object Pascal,支持面向过程、面向数据和面向对象的三种开发,方法,,,1995,,,提供了大量的快速应用程序开发组件,36,常见的高级语言(,3/3,),Perl:,linux/unix,下的脚本语言,1987,Python:,一,种,面向,对象,、,直译,式语言,语法简洁,1991,Ruby:,一,种为简单快捷的面向对象,编程的脚本语言,1995,Php:,一,种,HTML,内嵌式,的脚本,语言,,,语言的风格有类似于,C,语言,1995,37,参考阅读,假如编程语言是私家车,http,:/ / C+,源程序的组织结构,头文件,用于保存程序的声明,后缀:,.h,程序定义文件,用于保存程序的实现,后缀:,.c/.cpp,50,头文件的结构与规范,文件头注释(涉及版权和版本声明、文件名、作者等信息),预处理块,函数和类结构声明,防止头文件被重复引用,用,ifndef/ define /endif,结构产生预处理块,只,存放“声明”而不存放“定义”,51,头文件的引用方式,用#,include ,格式来,引用,标准库的头文件,(编译器将从标准库目录开始搜索),用#,include “”,格式来引用,非标准库的头文件,(编译器将从用户的工作目录开始搜索),52,/ 防止被重复引用,/ 标准库的头文件,/ 非标准库的头文件,/ 全局函数声明,/ 类/结构声明,53,头文件,规范,注释,规范,命名,规范,排版,规范,目录结构规范,软件编码规范的内容,54,1,、,注释的缩进要与代码的缩进一致,2,、注释之间要用空行隔开,3,、对所有的变量、数据结构、以及函数,进行声明,时都应加以注释,说明含义,4,、头文件和源文件的头部都应进行注释,5,、,函数的头部也应进行块注释,,列出函数的功能、输入参数、返回值等,注释规范,55,头文件,规范,注释,规范,命名,规范,排版,规范,目录结构规范,软件编码规范的内容,56,好的命名应是,直观,且,容易理解,的,标识符长度应当“,长度简短、含义丰富,”,变量、函数等命名应遵循一定的规范,命名规范,57,58,头文件,规范,注释,规范,命名,规范,排版,规范,目录结构规范,软件编码规范的内容,59,主要目的是增加代码的可读性,常见的一些排版规范,1,、,程序块采用缩进风格编写,缩进为,2,个空格,2,、每个类声明、函数定义之后都要有空行,3,、函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行隔开,4,、一行代码只做一件事情,如只定义一个变量、或只写一条语句,5,、,if,while,do try,catch,等语句应独占一行,不论执行语句有多少都要加,6,、代码行最大长度应控制在,70-80,个字符内,,7,、关键字之后要留空格,排版规范(,1/8,),60,排版规范(,1/7,),1,),程序块采用缩进风格编写,缩进为,2,个空格,61,排版规范(,2/7,),2,),每个类声明、函数定义之后都要有空行,3,),函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行隔开,62,排版规范(,3/7,),4,),一行代码只做一件事情,,如只定义一个变量、或只写一条语句,63,排版规范(,4/7,),5,),if,while,do try,catch,等语句应独占一行,不论执行语句有多少都要加,64,排版规范(,5/7,),6,),对空格的处理:,关键字之后要留空格,函数名之后不要留空格,紧跟左括号“(”;“(”向后紧跟,而“)”,“,”,“;”向前紧跟,紧跟处不留空格,“,”之后要留空格,如,function(x,y,z);,如果“;”不是一行的结束符,其后要间隔一个空格,如,for(int i=0;i=,),等二元操作符前后应加空格,一元操作符如!,,,,+,,,-,,,&,等前后不加空格,像“,”,“,.,”,“,-,”,这,类操作符前后不加空格,对于表达式比较长的,for,while ,switch,语句和,if,语句,为了紧凑,可以适当去掉一些空格,修饰符“*”和“,&,”应紧靠数据类型,65,66,排版规范(,6/7,),7,)尽可能在定义变量的同时初始化该变量,67,排版规范(,7/7,),8,)尽量控制一行代码的长度,一行代码长度应该控制在80个字符,以内,拆分出的新行要进行适当的缩进,使排版整齐,语句可读,68,提纲,软件实现的目标和任务,程序设计语言,软件编码规范,程序效率,69,程序效率,效率主要指,处理时间,和,存储器容量,两个方面,效率,的三条原则,第一,效率是性能要求,应该在需求分析阶段确定效率方面的要求;,第二,效率是靠好设计来提高的;,第三,程序的效率和程序的简单度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率,70,为了提高程序的运行速度,应遵循以下,原则:,(1),改善,循环的,效率,(2),采用快速的,算术运算,(3),对数据结构进行划分和改进,以及对程序算法的优化来提高空间,效率,(4),尽量避免使用,指针和复杂的表达式,,使用指针时,要防止,“野指针”,(5),不要混淆数据类型,避免在表达式中出现类型,混杂,(6),尽量采用整数算术表达式和,布尔表达式,(7),编码前,尽量简化有关的算术表达式和,逻辑表达式,(8),选用等效的高效率,算法,运行速度的提高,71,内存采取基于操作系统的分页功能的,虚拟存储管理,对于变动,频的,数据最好采用动态,存储,存储空间的优化,72,提高输入输出效率的指导原则如下:,(1),对,所有的输入数据都进行检验,,从而识别错误的输入,以保证每个数据的有效性。,(2),检查,输入项的各种重要组合的合理性,,必要时报告输入状态信息。,(3),使得输入的步骤和操作尽可能简单,,并保持简单的输入格式。,(4),输入数据时,应允许使用自由格式输入,,允许默认值,;输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目;在以交互式输入输出方式进行输入时,要在屏幕上使用提示符明确提示交互输入的请求指明可使用选择项的种类和取值范围,同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息。,输入,/,输出效率的提高(,1/3,),73,提高输入输出效率的指导原则如下:,(,5),对所有的输入输出操作,安排适当的缓冲区,以减少频繁的信息交换。,(6),对辅助存储,(,如磁盘,),,应当成块传送,以提高输入输出效率。,(7),对辅助存储的输入输出,应考虑设备特性,改善输入输出的质量和速度。,(8),对终端或打印机的输入输出,应考虑设备特性,改善输入输出的质量和速度,。,输入,/,输出效率的提高,(2/3),74,提高输入输出效率的指导原则如下:,(,9),任何不易理解的、对改善输入输出效果关系不大的措施都是不可取的。,(10),不应该为追求所谓超高效的输入输出,而损害程序的可理解性。,(11),良好的输入输出程序设计风格对提高输入输出效率会有明显的效果。,输入,/,输出效率的提高,(3/3),75,软件,实现的目的就是要把详细设计的结果翻译成用选定的语言书写的源程序。,这一过程要选择合适的程序设计语言,遵守软件编码规范,开发出高效率的软件。,小结,76,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!