《软件工程——理论、方法与实践》课件第11章.ppt
《《软件工程——理论、方法与实践》课件第11章.ppt》由会员分享,可在线阅读,更多相关《《软件工程——理论、方法与实践》课件第11章.ppt(66页珍藏版)》请在文字多文库上搜索。
1、,第11章 软 件 实 现,11.1 程序设计语言11.2 编码风格11.3 程序的效率本章小结习题,11.1 程序设计语言程序设计语言一直在不断地演化和演变,其发展经历了从机器语言到高级语言的过程。计算机问世初期,程序设计语言是与计算机硬件紧密相关的机器语言和汇编语言,编写这种语言程序难度大、效率低,不易于理解且难以调试。,11.1.1 程序设计语言的特性特定的程序设计语言有一些特定的限制,它们影响着程序员描述和处理问题的方式。程序设计语言应着重考虑程序员易学易用、不易出错,因此程序设计语言须考虑下列特性:(1)一致性(Uniforminy)。(2)二义性(Ambiguity)。(3)紧致性
2、(Compactness)。(4)局部性(Locality)。(5)线性(Linearity)。,11.1.2 程序设计语言的选择总的来说,程序设计语言的选择需要结合具体问题进行分析评价,下面给出一些可供参考的实用标准:(1)系统用户的要求。(2)程序员的知识。(3)软件可移植性要求。(4)软件的应用领域。,目前面向对象方法是软件开发的主流方法,因此面向对象语言的选择问题更受关注。开发人员在选择面向对象语言时,应该着重考虑以下一些实际因素:(1)将来能否占主导地位。(2)可复用性。(3)类库和开发环境。(4)其他因素。,11.2 编 码 风 格11.2.1 命名程序设计过程要涉及到对变量、常量
3、、函数、类、对象等编程元素进行命名。一个变量的作用域越大,它的名字所携带的信息就应该越多。,下面是一些通用的规则:(1)标识符的命名应当直观,可以望文知义,最好采用英文单词或其组合。(2)标识符的长度应当符合“最小长度下的最大信息”原则,过长的英文单词应该采用一些通用而合理的缩写或者应用领域专业术语的缩写。(3)程序中不要出现仅依靠大小写来区分的相似标识符。(4)程序中不要出现局部变量和全局变量同名的现象,以免引起误解。(5)变量名应当使用“名词”或者“形容词+名词”的形式。(6)函数名应当使用“动词”或者“动词+名词”的形式。,例11.1 Java命名实例。package org.jr.jz
4、j.editor;import java.awt.*;import javax.swing.*;,public class LineNumber extends JComponent private final static Color DEFAULT_BACKGROUND=Color.white;private final static Color DEFAULT_FOREGROUND=new Color(153,153,204);private final static Color DEFAULT_LINECLR=new Color(192,192,192);private final s
5、tatic Font DEFAULT_FONT=new Font(SansSerif,Font.PLAIN,12);private final static int HEIGHT=Integer.MAX_VALUE-1000000;private final static int MARGIN=5;,private FontMetrics fontMetrics;private int lineHeight;private int currentRowWidth;private JComponent component;private int componentFontHeight;priva
6、te int componentFontAscent;,public LineNumber(JComponent component)if(component=null)setBackground(DEFAULT_BACKGROUND);setForeground(DEFAULT_FOREGROUND);setFont(DEFAULT_FONT);ponent=this;,else setBackground(DEFAULT_BACKGROUND);setForeground(component.getForeground();setFont(component.getFont();ponen
7、t=component;,componentFontHeight=component.getFontMetrics(component.getFont().getHeight();componentFontAscent=component.getFontMetrics(component.getFont().getAscent();setPreferredWidth(9999);this.setBorder(BorderFactory.createLineBorder(DEFAULT_LINECLR,1);,public void setPreferredWidth(int row)int w
8、idth=fontMetrics.stringWidth(String.valueOf(row);if(currentRowWidth width)currentRowWidth=width;setPreferredSize(new Dimension(2*MARGIN+width,HEIGHT);,public void setFont(Font font)super.setFont(font);fontMetrics=getFontMetrics(getFont();public int getLineHeight()if(lineHeight=0)return componentFont
9、Height;else return lineHeight;,public void setLineHeight(int lineHeight)if(lineHeight 0)this.lineHeight=lineHeight;public int getStartOffset()return component.getInsets().top+componentFontAscent;,public void paintComponent(Graphics g)int lineHeight=getLineHeight();int startOffset=getStartOffset();Re
10、ctangle drawHere=g.getClipBounds();g.setColor(getBackground();g.fillRect(drawHere.x,drawHere.y,drawHere.width,drawHere.height);g.setColor(getForeground();,int startLineNumber=(drawHere.y/lineHeight)+1;int endLineNumber=startLineNumber+(drawHere.height/lineHeight);int start=(drawHere.y/lineHeight)*li
11、neHeight+startOffset;for(int i=startLineNumber;i=endLineNumber;i+)String lineNumber=String.valueOf(i);int width=fontMetrics.stringWidth(lineNumber);,g.drawString(lineNumber,MARGIN+currentRowWidth-width,start);start+=lineHeight;setPreferredWidth(endLineNumber);,11.2.2 注释注释是帮助阅读和理解程序的有效手段,用自然语言或伪码描述。注
12、释说明了程序的功能,特别是在维护阶段,对理解程序提供了明确的指导。,书写注释应该注意以下问题:(1)程序中的注释不宜过多,否则会使人眼花缭乱。(2)不必要注释含义已经十分清楚的代码。(3)修改代码时应该同时修改注释,以保证代码和注释的一致性。(4)注释应该准确易懂,防止出现二义性,错误的注释不但无益而且有害。(5)注释的位置应该与被描述的代码相邻,应该写在程序代码的上方并且和代码左对齐。(6)变量定义和分支语句必须写注释,因为这些语句往往是程序某一特定功能的关键。,例11.2 Java注释实例。package com.lowagie.text;import.MalformedURLExcept
13、ion;/*A Watermark is a graphic element(GIF or JPEG)*that is shown on a certain position on each page.*seeElement*seeJpeg*seeGif*seePng*/,public class Watermark extends Image implements Element/member variables/*This is the offset in x-direction of the Watermark.*/private float offsetX=0;/*This is th
14、e offset in y-direction of the Watermark.*/private float offsetY=0;,/Constructors/*Constructs a Watermark-object,using an Image.*paramimagean Image-object*paramoffsetXthe offset in x-direction*paramoffsetYthe offset in y-direction*/,public Watermark(Image image,float offsetX,float offsetY)throws Mal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程理论、方法与实践 软件工程 理论 方法 实践 课件 11