第四讲 结构化程序设计与面向对象程序设计

合集下载

结构化程序设计与面向对象程序设计的简述

结构化程序设计与面向对象程序设计的简述

关于结构化程序设计与面向对象程序设计的简述一、结构化程序设计它采用结构化技术(结构化技术分析结构化设计结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持机构化技术的运用。

结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。

在程序的静态形式与动态执行流程之间具有良好的对应关系。

1、优点结构化程序设计方法主要由三种逻辑结构组成,分别为:顺序结构、循环结构、选择结构。

结构化程序设计的每种结构,只有一个入口和一个出口,这是结构化设计的一个原则。

遵循结构化程序设计的原则,按照结构化程序设计方法设计出的程序具有明显的优点。

如:其一,程序易于阅读、理解、排错和维护。

程序员采用结构化编程方法,将一个复杂的程序分解成若干个子结构,便于控制、降低程序的复杂性,因此容易编写程序,同时便于验证程序。

其二,提高了编程工作的效率,降低了软件开发成本。

由于结构化编程方法能够把错误控制到最低限度,每个模块可以独立编制、测试,因此能够减少调试和查错的时间。

2、缺点结构化程序设计主要有三点缺点;如:一、用户的要求难以在系统分析阶段准确定义,从而使系统在交付使用时会产生许多问题。

二、用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。

三、系统的开发周期长,结构化程度较低的系统,在开发初期难以锁定功能要求。

二、面向对象程序设计是一种计算机编程架构。

面向对象程序设计的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。

它达到了软件工程的三个主要目标:重用性、灵活性和扩展性。

为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。

面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。

1、优点面向对象程序设计的优点有好几个方面。

如:一、简单性:因为面向对象语言里面的对象都是反映的真实世界的对象,所以复杂性就降低了而且程序结构也更加清晰;二、模块性:每一个对象都来源于一个单独的实体,它内部的工作与系统的其他部分是分离的三、易修改性:在面向对象程序中对数据表现层和工作过程进行小的改动是非常简单的,类内部的改动不会影响程序的其他部分,因为外边的程序与这个类的交互是通过一个公开的接口方法进行的。

结构化程序设计与面向对象程序设计的简述

结构化程序设计与面向对象程序设计的简述

结构化程序设计与面向对象程序设计的简述结构化程序设计与面向对象程序设计的简述1. 简介结构化程序设计和面向对象程序设计是两种常用的软件开发方法学。

通过合理的软件结构化和程序设计,可以提高代码的可读性、可维护性和可扩展性。

本文将对结构化程序设计和面向对象程序设计进行简单概述。

2. 结构化程序设计结构化程序设计是一种基于顺序、选择和循环的编程范式。

它的目标是通过合理的程序分解、模块化和控制流程设计,使程序更易于理解和维护。

结构化程序设计强调以下几个原则:2.1 分解结构化程序设计将复杂的问题分解为多个简单的子问题,通过将问题分解为模块化的部分,在模块内部解决小问题,并将这些模块组合起来解决整个问题。

2.2 模块化模块化是结构化程序设计的核心思想之一。

模块化将程序划分为独立的、可复用的模块,每个模块都有特定的功能,可以独立进行设计、编码和,提高代码的可读性、可维护性和可重用性。

2.3 控制流程设计结构化程序设计通过使用顺序、选择和循环结构,对程序的控制流程进行设计。

合理的控制流程设计可以使程序具有良好的结构,易于理解和维护。

3. 面向对象程序设计面向对象程序设计是一种以对象为基础的编程范式。

它从现实世界的对象角度出发,将对象抽象为类,通过类的封装、继承和多态性,实现软件的模块化、可复用和灵活性。

面向对象程序设计的主要特点包括:3.1 封装封装将数据和操作封装在类的内部,对外部提供公共接口。

封装可以隐藏内部实现细节,提供更好的安全性和可维护性。

3.2 继承继承可以创建新的类,并从现有的类继承属性和方法。

通过继承,可以实现类的层次结构,提高代码的复用性和可扩展性。

3.3 多态性多态性允许不同类的对象使用相同的接口,实现相同的方法。

通过多态性,可以在不修改原有代码的情况下,增加新的功能。

4. 结构化程序设计与面向对象程序设计的比较结构化程序设计和面向对象程序设计都是常用的软件开发方法学,但在某些方面有所不同。

结构化编程和面向对象编程

结构化编程和面向对象编程

结构化编程和⾯向对象编程结构化设计:结构化程序设计⽅法主张按功能来分析系统需求, 原则有⾃顶向下, 逐步求精, 模块化等.结构化程序设计⾸先采⽤结构化分析(SA)⽅法对系统进⾏需求分析, 然后采⽤结构化设计(SD)⽅法对系统进⾏概要设计,详细设计, 最后采⽤结构化编程(SP)⽅法实现系统.结构化程序设计按功能来把系统逐步细化, 因此⼜叫做⾯向功能的程序设计⽅法.结构化程序设计的每个功能都负责对数据的接收,处理,输出,这种⽅式⼜称为⾯向数据流的处理⽅式⽤DFD(数据流图)表⽰.结构化程序设计⾥最⼩的程序单元是函数.整个程序由⼀个个函数组成, ⽽整个程序的⼊⼝是⼀个主函数(main()), 由主函数调⽤其他函数,函数之间的依赖来构成整个程序的功能.结构化程序设计的局限性:设计不够直观,与⼈类的思维不⼀致.适应性差,可扩展性不强.程序的三种基本结构:结构化程序设计⾮常强调某个功能的算法.算法由⼀系列操作组成. 任何简单或复杂的算法都可以由顺序结构,选择结构,循环结构这三种基本结构来构成.顺序结构: 顺序结构表⽰程序中的各操作是按照它们在代码中的排列顺序依次执⾏的.选择结构: 选择结构表⽰程序的处理需要根据某个特定的条件选择其中的⼀个分⽀执⾏(单选,双选,多选).循环结构: 循环结构表⽰程序反复执⾏某个或某些操作,直到某条件为假(或为真)时才停⽌循环(直到循环, 当循环).当型循环: 当条件为真时循环. 直到型循环: 直到条件为假时结束循环.结构化程序设计中的任何结构都具有唯⼀的⼊⼝和出⼝. java的⽅法⾥⾯则是⼀种结构化设计.⾯向对象设计:⾯向对象的基本思想是使⽤类, 对象, 继承, 封装, 消息等基本概念进⾏程序设计.在系统构造中尽可能的利⽤⼈类的⾃然思维⽅式,强调以现实世界中的事物(对象)为中⼼来思考,认识问题,并根据这些事物的本质特征,把它们抽象表⽰为系统中的类.这使得软件系统的组件可以直接的映像到客观世界,并保持客观世界中事物及其相互关系的本来⾯貌.⾯向对象⽅法的三个基本特征:封装性:将对象的实现细节隐藏起来, 通过⼀些公共的接⼝⽅法来供外部调⽤对象的功能.继承性:是⾯向对象实现的的重要⼿段,⼦类继承⽗类, ⼦类直接获得⽗类的⾮private属性和⽅法.多态性:⼦类对象可以赋值给⽗类对象引⽤, 但运⾏的时候仍然表现出⼦类的⾏为特征,同⼀个类型的对象在执⾏同⼀个⽅法时, 可能表现出不同的特征.⾯向对象还⽀持如下特点:对象是⾯向对象最基本的概念, 它的基本特点有:标识唯⼀性,分类性,多态性,封装性,模块独⽴性好.类是具有公共属性公共⽅法的⼀类事物.类是对象的抽象, 对象是类的实例化. 类的封装提⾼了类的内聚性, 降低了对象之间的耦合性.对象间的相互合作需要⼀个机制协助进⾏, 这样的机制称为"消息", 消息是⼀个实例与另⼀个实例之间的相互通信的机制.⾯向对象⽅法中,类之间的共享属性和共享⽅法的机制称为继承.继承具有传递性.继承分为多继承和单继承(java不⽀持多继承)."基于对象"和⾯向对象⾯向对象和"基于对象"都实现了"封装"的概念, 但是⾯向对象实现了"继承和多态", ⽽"基于对象"没有实现.⾯向对象的程序员按照分⼯分为: 类库的创建者和类库的使⽤者。

结构化与面向对象程序设计

结构化与面向对象程序设计

结构化与⾯向对象程序设计 软件开发⽅法指,在项⽬投资规模和时间限制内,设计、实现符合⽤户需求的⾼质量软件,根据软件开发的特点,提出的多种软件开发的策略。

随着20世纪60年代,计算机软件、硬件发展不均衡,使⼤型软件的开发过程中出现了复杂程度⾼、研制周期长、正确性难以保证的三⼤难题,引发了“软件危机”。

为了同时提⾼软件效率和质量,软件开发⽅法不断⾰新。

经过⼏⼗年的研究和应⽤,两种基于相应的程序设计思想和语⾔的软件开发⽅法,结构化⽅法与⾯向对象⽅法,成为了主流的开发⽅法之⼀,⼴泛地使⽤于软件⼯程。

结构化⽅法包括结构化分析(Structured Analysis,简称SA)、结构化设计(Structured Design,简称SD)和结构化程序设计(Structured Program Design,简称SP)三部分内容。

相应地,⾯向对象⽅法包括⾯向对象分析(Object-Oriented Analysis,简称OOA)、⾯向对象设计(Object—Oriented Design,简称OOD)和⾯向对象程序语⾔(Object-Oriented Program Design,简称OOP)。

两种软件开发⽅法从起源、思想、分析、设计,到程序设计、扩展重⽤、应⽤等各个⽅⾯有着许多的联系和区别,下⽂我将对⼆者进⾏⽐较分析。

两种⽅法针对不同的⼯作环境和应⽤场景,各具优势,也都有所不⾜,我也将讨论⼆者在软件⼯程中的结合,以期产⽣更好的效果。

(⼀)从起源上看 结构化⽅法与⾯向对象⽅法都起源于相应的程序设计思想和语⾔。

20世纪60年代后期,《程序结构理论》和《GOTO陈述有害论》的提出,证明了任何程序的逻辑结构都可以⽤顺序结构、选择结构和循环结构来表⽰,确⽴了结构化程序设计思想,产⽣了如FORTRAN、PASCAL、C等语⾔。

结构化⽅法把对程序的分析、设计,延伸⾄对项⽬⼯程的分析、设计,结合程序设计语⾔的技术⽀持,得以产⽣和发展。

第4讲 面向对象的程序设计

第4讲 面向对象的程序设计

(3)私有成员 私有成员通过在成员声明中使用private修饰 符来定义.C#中的私有成员只有类中的成员 可以访问,在类的外部是禁止直接访问私有 成员的.这也是C#中成员声明的默认方式, 即若在成员声明时没有使用任何访问修饰符, 那么C#自动将它限定为私有成员. (4)内部成员 内部成员通过在成员声明中使用internal修饰 符来定义.该成员只能被程序集中的代码访 问,而程序集之外的代码无法访问.
(3)不能显式地调用析构函数. (4)析构函数的命名规则是在类名前加上一个"~"号. 如上例的Example1类的析构函数为: ~Example1() { }; (5)析构函数在对象销毁时自动调用. 【例7-3】 类的构造函数和析构函数的演示.(程序代 码详见例7-3)[执行结果]
using System; class Exam { static public int a;//静态成员 public int b;//实例成员 public Exam()//构造函数,没有参数,用来给成员变量赋初值0 { a=0; b=0; } public Exam(int m,int n)//构造函数,有参数,用来给成员变量赋特定的初值 { a=m; b=n; } ~Exam()//析构函数 {} } class A_7_3 { public static void Main() { Exam E1=new Exam();//产生类的实例E1,自动调用无参数的构造函数 Console.WriteLine("a={0},b={1}",Exam.a,E1.b); Exam E2=new Exam(10,20);//产生类的实例E2,自动调用有参数的构造函数 Console.WriteLine("a={0},b={1}",Exam.a,E2.b); } }

1、结构化、面向对象程序设计差别、类基本概念

1、结构化、面向对象程序设计差别、类基本概念

1、结构化、⾯向对象程序设计差别、类基本概念1、⾯向对象程序设计与结构化程序设计的优缺点对⽐(1)结构化程序(C程序为例)的特点程序 = 数据结构 + 算法程序由全局变量以及众多相互调⽤的函数组成,算法以函数的形式实现,⽤于对数据结构进⾏操作。

(2)结构化程序设计缺点①结构化程序设计中,函数和其所操作的数据结构,没有直观的联系。

随着程序规模的增加,程序逐渐难以理解,很难⼀下⼦看出来:某个数据结构到底有哪些函数可以对它进⾏操作?某个函数到底是⽤来操作哪些数据结构的?任何两个函数之间存在怎样的调⽤关系?②结构化程序设计没有“封装”和“隐藏”的概念。

③要访问某个数据结构中的某个变量,就可以直接访问,那么当该变量的定义有改动的时候,就要把所有访问该变量的语句找出来修改,⼗分不利于程序的维护、扩充。

④难以查错,当某个数据结构的值不正确时,难以找出到底是那个函数导致的。

⑤重⽤:在编写某个程序时,发现其需要的某项功能,在现有的某个程序⾥已经有了相同或类似的实现,那么⾃然希望能够将那部分代码抽取出来,在新程序中使⽤。

⑥在结构化程序设计中,随着程序规模的增⼤,由于程序⼤量函数、变量之间的关系错综复杂,要抽取这部分代码,会变得⼗分困难。

软件业的⽬标是更快、更正确、更经济地建⽴软件。

总之,结构化的程序,在规模庞⼤时,会变得难以理解,难以扩充(增加新功能),难以查错,难以重⽤。

违背了软件设计的⽬标。

(3)⾯向对象程序设计的特点⾯向对象的程序设计⽅法,能够较好解决上述问题。

⾯向对象的程序 = 类 + 类 + …+ 类设计程序的过程,就是设计类的过程。

(4)⾯向对象的程序设计⽅法:将某类客观事物共同特点(属性)归纳出来,形成⼀个数据结构(可以⽤多个变量描述事物的属性);将这类事物所能进⾏的⾏为也归纳出来,形成⼀个个函数,这些函数可以⽤来操作数据结构(这⼀步叫“ 抽象”)。

然后,通过某种语法形式,将数据结构和操作该数据结构的函数“捆绑”在⼀起,形成⼀个“ 类”,从⽽使得数据结构和操作该数据结构的算法呈现出显⽽易见的紧密关系,这就是“封装” 。

VF讲课课件全篇


F3=F1+F2
*方法一 :用F1,F2,F3表示相邻三个数
SET TALK OFF
F1=1
F2=1 ?F1,F2 I=3 DO WHILE I<=20
F3=F1+F2 F1=F2 F2=F3 ??F3 I=I+1 IF I%6=0 &&每行输出6个数
? &&换行 ENDIF ENDDO
*方法二:数列每2个一组分别用F1,F2表示 SET TALK OFF F1=1 F2=1 FOR I=1 TO 10
CLEA
SET TALK OFF
INPUT "请输入一个数:" TO X &&X:装任意数
A=X
&&把X备份到A
Y=0
&&Y:装逆序数
DO WHILE X<>0
R=X%10
&&R:装X的末位数
Y=Y*10+R &&把R装到逆序数中
X=INT(X/10) &&下次的X
ENDDO
?STR(A)+"的逆序显示为"+STR(Y)
③循环结构能自身嵌套(多重循环),还能 与选择结构的各种形式嵌套。
2)步长循环(for…endfor计数 循环)
格式:书145页
格式: FOR <循环变量>=<初值> TO <终值> [STEP<步 长>]
<语句序列> ENDFOR|NEXT
确定循环变量并赋初值(在FOR中实现)
确定循环条件并判断?(在FOR中实现)

结构化程序设计和面向对象程序设计

结构化程序设计和面向对象程序设计结构化程序设计和面向对象程序设计程序设计是计算机科学领域的基础,是软件开发的重要部分。

结构化程序设计和面向对象程序设计是两种方法,被广泛使用。

本文将分别介绍这两种方法的特点和优势。

一、结构化程序设计结构化程序设计是一种程序设计的方法,它通常采用顺序、选择和循环等基本结构,使用结构化编程语言编写程序。

结构化程序设计强调程序的清晰性和易维护性,对程序员而言,它更容易理解。

结构化程序设计将程序分解为若干小的、独立的模块,每个模块包含若干明确定义的输入和输出,这样能够使程序员更好地组织代码,并且在必须修改时更容易进行维护。

由于它可以实现代码的重用,因此可以使得程序员更加高效率和节省时间和精力,而且非常适合需求比较简单的软件项目。

二、面向对象程序设计面向对象程序设计(OOP)是目前最为先进的程序设计方法之一,它包括了对对象建模、类和继承等概念的广泛应用。

面向对象的编程语言,如Java、Python和C++,都采用了这种方式。

在面向对象的程序设计中,程序被看作一个对象的集合,每个对象都具有属性和方法。

对象可以相互作用,通过方法来告知计算机他们想要做的事情。

因此,面向对象程序设计将程序员体验变为了“物体之间的关系”,从而更贴近现实世界。

面向对象程序设计的特点在于代码的复用性,它能够提高程序员的工作效率,而且更便于阅读和修改。

面向对象程序设计能够最大限度地减少程序员编写重复代码的问题,从而避免了出现代码的冗余和失误,而对于比较复杂的项目,它更为合适,在软件系统中的应用越来越广泛。

因此,如果需要完成一个高质量的、复杂的软件项目,面向对象程序设计是不可或缺的。

综上所述,结构化程序设计和面向对象程序设计都是程序设计领域中重要的方法。

两者都有其自身的优势和使用场景,根据不同的需求来选择不同的编程方法。

当程序比较简单、需求不复杂时,可以采用结构化程序设计;如果程序需要拥有更多的灵活性和可扩展性时,建议采用面向对象的编程方法。

面向对象和结构化程序设计的区别

⾯向对象和结构化程序设计的区别结构化编程强调功能模块。

结构化程序的概念⾸先是从以往编程过程中⽆限制地使⽤转移语句⽽提出的。

转移语句可以使程序的控制流程强制性的转向程序的任⼀处,在传统流程图中,就是⽤上节我们提到的"很随意"的流程线来描述这种转移功能。

如果⼀个程序中多处出现这种转移情况,将会导致程序流程⽆序可寻,程序结构杂乱⽆章,这样的程序是令⼈难以理解和接受的,并且容易出错。

尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。

⽐如:C,FORTRAN,PASCAL等等结构化程序设计⽅法主要由以下三种逻辑结构组成:1)顺序结构:顺序结构是⼀种线性、有序的结构,它依次执⾏各语句模块。

2)循环结构:循环结构是重复执⾏⼀个或⼏个模块,直到满⾜某⼀条件为⽌。

3)选择结构:选择结构是根据条件成⽴与否选择程序执⾏的通路。

**采⽤结构化程序设计⽅法,程序结构清晰,易于阅读、测试、排错和修改。

由于每个模块执⾏单⼀功能,模块间联系较少,使程序编制⽐过去更简单,程序更可靠,⽽且增加了可维护性,每个模块可以独⽴编制、测试。

**⾯向对象程序语⾔中⽀持的对象具有三个明显得特征:封装、继承、多态;⽽Javascript在类别和副本上并没有明显地分界。

事实上,Javascript语⾔中所有的变量数据类型在JS中都是对象。

JS 总共⽀持4种对象:内置对象、⾃定义对象、浏览器程序对象和ActiveX对象。

return this只是返回该对象,以便别处引⽤,但并不是多出⼀个对象。

所以,⾯向过程的程序设计中:程序=算法+数据结构(数据和数据类型)数据结构和算法相分离的,所以,系统庞⼤后,它的控制、移植、重⽤就成了问题。

⽽在⾯向对象的程序设计中:对象=数据结构+算法程序=对象+对象+.....结构化程序设计从系统的功能⼊⼿(有的⽤户也成为⾯向过程的设计),按照⼯程的标准和严格的规范将系统分解为若⼲功能模块,系统是实现模块功能的函数和过程的集合。

结构化程序设计和面向过程程序设计的关系

结构化程序设计和面向过程程序设计的关系嘿,咱来聊聊结构化程序设计和面向过程程序设计这俩货的关系哈。

结构化程序设计就像是一个精心规划的城市布局。

它讲究把程序分成一个个小模块,就好比城市里划分的不同功能区,商业区、住宅区、工业区啥的。

每个模块都有自己的任务,就像每个功能区干自己的事儿。

而面向过程程序设计呢,就像是在这个城市里按照一定顺序办事的居民。

它侧重于描述解决问题的步骤,就像居民按照固定的路线去上班、购物、回家一样。

其实啊,面向过程程序设计就像是住在结构化程序设计这个城市里的人,是依赖这个大布局的。

结构化程序设计就像一个大舞台,搭好了各种场景区域。

而面向过程程序设计就是在这个舞台上表演的演员,按照一定的剧本顺序在不同的场景里表演节目。

要是没有这个舞台结构,演员都不知道在哪表演,可要是没有演员的表演,这个舞台也就空有其表啦。

想象一下,结构化程序设计是一个超级大的乐高积木城堡框架。

那面向过程程序设计就是往这个城堡框架里一块一块添加乐高积木的小工匠。

城堡框架提供了整体的结构,小工匠按照一定的顺序和步骤把城堡充实起来。

如果没有框架,小工匠只能瞎堆;要是没有小工匠,框架也就是个空架子。

结构化程序设计像一艘大船的船体结构,分了好多隔舱什么的。

面向过程程序设计就像是船员们在船上按照固定流程操作的步骤。

船体结构保证了船不会轻易散架,而船员们的操作步骤才能让船正常航行。

要是船体结构乱套了,船员都不知道在哪干活,要是船员瞎操作,再好的船体结构也得翻船。

把结构化程序设计比作是一场大型交响乐的乐队编制。

不同的乐器组就像程序里的不同模块。

面向过程程序设计就像是乐手们演奏的顺序和节奏。

乐队编制定好了,乐手们才能有条不紊地按照节奏演奏出美妙的音乐。

没有编制,乐手们乱奏一气,没有乐手们按顺序演奏,编制再好也是无声的。

结构化程序设计像是一个大衣柜的结构,有不同的隔层和抽屉。

面向过程程序设计就像是整理衣柜时先放什么衣服后放什么衣服的步骤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静
止状态的数据,数据流是处于运动中的数据。
2 结构化方法的基本原理
画数据流图的基本原则:自顶向下、逐层细化、完善求精。
具体步骤:
(1)绘顶层数据流图。找出对整个系统而言的输入、输出数据,确定外部实体, 它们决定了系统与 外界的接口。
2 结构化方法的基本原理
1) 数据流图(Data Flow Diagram ,DFD图)
它是描述数据加工处理过程的工具,有四种基本符号如下 图所示。
外部实体
处理
数据流
数据存储
基本符号的含义: 矩形方框表示数据的源点或终点,是系统的外部实体. 圆形表示变换数据的处理。 两条平行横线代表数据存储。 箭头表示数据流,即特定数据的流动方向。
库存书无
2 结构化方法的基本原理
2)数据字典
数据字典是对所有与系统相关的数据元素的一个有组织的列表,精确、严格地定义各个数据元素,使得用户及 开发人员对于输入、输出、存储和处理形成共同的理解。 数据字典由对下列6类元素的定义组成:数据流、数据流分量、数据结构、数据存储、处理逻辑、外部实体。数 据字典是对数据流图的详细描述。 例如: 借阅制度表 = 读者类别+允许借阅册数+罚款规定+丢失图书罚款规定 读者类别 = [ 金卡 | 银卡 | 铜卡 ] 又如: 酒店客房预订请求 = 客人数据+住宿期限+客房类别 客人数据 = 客人姓名+地址+身份证号码+[护照号码] +支付方式 身份证号码 = 15{十进制数字}18 护照号码 = 字母 + 8{十进制数字}8 字母 = "A"…"Z" 十进制数字 = "0"…"9"
结构化设计----概要设计的系统功能结构层次图(H图)
根据数据流图得出系统功能结构图。图中的7个功能模块对应第1层
数据流图中的7个加工处理。
会员借书卡
7.0 续卡
书店借书系统
续卡请求
6.0 注销
注销会员请求
登录信息 登录请求
5.0 登录请求
会员信息被注销信息会员信息
借书管理员
登录 1.0
借还书 2.0
2 结构化方法的基本原理
2.1结构化开发--结构化分析与设计过程
结构化开发的主要过程:问题定义、可行性论证及软件计划、需求分 析、总体设计、详细设计等。
每个阶段使用的工具如图所示。
阶段
拟解决的关键性问 题
工具
问题定义
要解决的问题是什 么
可行性论证 有行得通的解决办 及软件计划 法吗
需求分析
系统必须做什么
2 结构化方法的基本原理
结构化分析是以系统中数据的加工处理过程分析为主要内容的分析方法。 结构化设计是以模块功能及其处理过程设计为主要内容进行详细设计的 一种设计方法。其概念最早由E.W.Dijikstra在1965年提出,它是软件发展的 一个重要的里程碑。
结构化开发方法也称为面向过程的方法或传统软件工程开发方法,它的 观点是采用自顶向下、逐步求精的程序设计方法。
1 概述
结构化程序设计思想 体现了人们抽象思维和复杂问题分解的基本原则与要求; 结构化技术的三个方面:
① 结构化分析(SA) 基于功能分解的分析方法,即使用数据流程图、决策表等 工具建立符合用户需求的结构化说明书
② 结构化设计(SD) 面向数据流的设计方法,从而提出满足系统需求的最佳 软件结构,完成软件层次图或者软件结构图
使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三 种基本控制结构构造;
详细描述处理过程常用三种工具:图形、表格和语言; 使用的手段主要有数据流图、数据字典、层次方框图、流程图、结构化 语言等。
结构化程序设计的一般步骤是:分析业务流程、分析数据信息的加工处 理过程;画出数据流图;建立数据字典;提出系统的总体逻辑方案;细化数 据流图;确定模块的接口;为每个模块确定采用的算法和数据结构;根据ER图设计数据库、根据模块算法编程等。
2 结构化方法的基本原理
3)E-R图(实体-关系图 ) 例如:图书馆“读者借还书”的E-R图。
借书卡号
书号
1 读者
n 借还书
图书
姓名
日期
书名
2 结构化方法的基本原理
4)层次图与HIPO图(Hierarchy层次结构) 层次图用来描绘软件的层次结构,图中的一个矩形框代表一 个模块,方框间的连线表示调用关系。它适于在自顶向下设 计软件的过程中使用,描述模块的划分。 在第1层数据流图中对“书店借书系统”划分模块得到对应 的系统功能结构的层次图,如图所示。 HIPO图是“层次图加输入/处理/输出图”的英文缩写, 为了 能使HIPO图更清晰,首先要对层次图中的各个模块编号, 加了 编号后的层次图,称为H图.图中体现了编号的规则.
for),结构体(struct)。
④ 面向对象的编程思想(设计模式)
面向对象的程序设计思想后来居上,在软件的模块化、可重用、可扩展性等方 面体现出了强大的优势。从程序语法上看,面向对象比结构性的程序多了两个 特性: 1, 结构体成员的私有化。结构化程序里面,结构体的成员都是公有的。然而 在面向对象里面,结构体改称为类,并且成员分为公有和私有两个部分。就因 为这一点的不同,就产生了接口的概念。接口不就是类成员的公有部分么? 2, 类的继承。因为出现了继承,才出现了多态。然而就是因为多态,才出现 诸如:隐藏啊,虚函数啊 …等等这些概念。多态的出现,能够让同一组数据, 在不同的阶段,用同一种表达方式,执行不同的操作。
数据流图、数据字典
总体设计
概括地说,应该怎 样做
系统结构图、层次方框图
详细设计
具体怎样做
HIPO图、处理流程图
交付成果
可行性分析报告 需求规格说明书 概要设计说明书 详细设计说明书
2 结构化方法的基本原理
2.2 结构化开发方法—结构化分析与设计举例 ----书店借书系统
用到的分析与设计工具 数据流图 数据字典 系统功能结构层次图与HIPO图、处理流程图 E-R图
③ 结构化编程(SP)
1 概述
面向对象的程序设计
反映了客观世界由对象组成的本质特点;面向对象技术的三个方面: ① 面向对象分析(OOA)
基于现实世界客观存在的事物出发,运用人类的自然思维方式,强调 直接以现实世界的事物为中心来思考、认识问题 ② 面向对象设计(OOD) 从客观事物的本质特点出发,把它们抽象表示为系统的类,作为系统 的基本构成单元,使得该系统的组件可以直接反映客观世界中事物及 其相互关系的本来面貌 ③ 面向对象编程(OOP)
2 结构化方法的基本原理
结构化分析—画出数据流图 例如,书店借书系统的顶层数据流图如图2-3所示。
会员借书卡
会员信息被注销信息 借书单
补交押金 罚款单
读者
续卡请求 注册信息
卡到期
书店借书系统 拒绝借或还书请求
读者
借书请求 还书请求 注销会员请求
图书 会员信息
查询会员信息 登录请求
登录信息
借书管理员
④ 数据存储:以“学生选课”为例
数据存储名:学生选课 说明:记录学生所选课程的成绩 编号:(无) 流入的数据流:选课信息,成绩信息 流出的数据流:选课信息,成绩信息 组成:学号,课程号,成绩 数据量:50000个记录
存取方式:随机存取 ⑤ 处理过程:以“学生选课”为例
处理过程名:学生选课 说明:学生从可选修的课程中选出课程 输入数据流:学生,课程 输出数据流:学生选课 处理:每学期学生都可以从公布的选修课程中选修自己愿意选 修的课程,选课时有些选修课有先修课程的要求,还要保证选 修课的上课时间不能与该生必修课时间相冲突,每个学生四年 内的选修课门数不能超过8门。
读者注册信息表 图书信息表 借还记录信息表
2 结构化方法的基本原理
数据字典应用举例 以学生选课数据字典为例简要说明 如何定义数据字典。 学生选课的数据流图如右所示:
①数据项:以“学号”为例 数据项名:学号 数据项含义:唯一标识每一个学生 别名:学生编号 数据类型:字符型 长度:8 取值范围:00000~99999 取值含义:前2位为入学年号,后3位为顺序编号 与其他数据项的逻辑关系:(无) ② 数据结构:以“学生”为例 数据结构名:学生 含义说明:是学籍管理子系统的主体数据结构,定义 了一个学生的有关信息 组成:学号,姓名,性别,年龄,所在系 ③ 数据流:以“选课信息”为例 数据流名:选课信息 说明:学生所选课程信息 数据流来源:“学生选课”处理 数据流去向:“学生选课”存储 组成:学号,课程号 平均流量:每天10个 高峰期流量:每天100个
② 过程性的编程思想(汇编语言)
学习汇编的核心是汇编是一种过程性的编程语言,并且目前的CPU只能 执行过程性的程序,任何高级语言都必须转换成过程性的编程语言后 再交给CPU执行。 在汇编里主要有三个操作:比较,跳转(goto),过程调用(call)。
1 概述
③ 结构性的编程思想(数据结构)
20世纪60年代编程思想发生了一场革命性的变化,结构性的编程方法出现了。 结构化程序设计思想曾为解决“软件危机”立下过汗马功劳,它在一定程度上 解决了软件的可靠性、可理解性、可维护性等问题; C语言里面有几个能表现出结构化思想的地方:分支(if), 循环(while,
会员管理 3.0
读者 注册
会员借书卡
1.0 注册
查询的信息
4.0 查询
图书状态信息 会员信息查询
借书管理员信息
借 还 书 处 理
2.1








2.1.1 2.1.2
打 印 借
会 员 注
相关文档
最新文档