与面向对象程序设计相比,结构化程序设计有什么样的优势和劣势

JavaScript016

与面向对象程序设计相比,结构化程序设计有什么样的优势和劣势,第1张

结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的"很随意"的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。比如:C,FORTRAN,PASCAL等等

结构化程序设计方法主要由以下三种逻辑结构组成:

1)顺序结构:顺序结构是一种线性、有序的结构,它依次执行各语句模块。

2)循环结构:循环结构是重复执行一个或几个模块,直到满足某一条件为止。

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

**采用结构化程序设计方法,程序结构清晰,易于阅读、测试、排错和修改。由于每个模块执行单一功能,模块间联系较少,使程序编制比过去更简单,程序更可靠,而且增加了可维护性,每个模块可以独立编制、测试。**

面向对象程序语言中支持的对象具有三个明显得特征:

封装、继承、多态;而Javascript在类别和副本上并没有明显地分界。事实上,Javascript语言中所有的变量数据类型在JS中都是对象。JS总共支持4种对象:内置对象、自定义对象、浏览器程序对象和ActiveX对象。

return

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

所以,面向过程的程序设计中:程序=算法+数据结构

数据结构和算法相分离的,所以,系统庞大后,它的控制、移植、重用就成了问题。

而在面向对象的程序设计中:

对象=数据结构+算法

程序=对象+对象+.....

所以克服了面向过程的设计中存在的问题。

S中内置了17个对象,常用的是Array对象、Date对象、正则表达式对象、string对象、Global对象

Array对象中常用方法:

Concat():表示把几个数组合并成一个数组。

Join():返回字符串值,其中包含了连接到一起的数组的所有元素,元素由指定的分隔符分隔开来。

Pop():移除数组最后一个元素。

Shift():移除数组中第一个元素。

Slice(start,end):返回数组中的一段。

Push():往数组中新添加一个元素,返回最新长度。

Sort():对数组进行排序。

Reverse():反转数组的排序。

toLocaleString()返回当前系统时间

Array对象属性常用的只有一个:

Length:表示取得当前数组长度

Global对象

是一个固有对象,目的是把所有的全局方法集中在一个对象中。

Global没有语法,直接调用其方法。

escape(): 对 String 对象编码以便它们能在所有计算机上可读.

escape(charString)

必选项 charstring 参数是要编码的任意 String 对象或文字。

isNaN():判断一个值是否是NaN。

parseInt():返回由字符串得到的整数

正则表达式对象

本对象包含正则表达式模式以及表明如何应用模式的标志。

语法 1

re = /pattern/[flags]

语法 2

re = new RegExp("pattern",["flags"])

re为将要赋值正则表达式模式的变量名

pattern为正则表达式

flags为标记:有如下3中

1:g(全文查找)

2:i(忽略大小写)

3:m(多行查找)

当预先知道查找字符串时用语法 1。当查找字符串经常变动或不知道时用语法 2,比如由用户输入得到的字符串。

String对象

charAt():返回指定索引的位置的字符

concat():返回字符串值,表示两个或多个字符串的连接

match():使用正则表达式模式对字符串执行查找,并将包含查找结果最为结果返回

function MatchDemo(){

var r, re// 声明变量。

var s = "The rain in Spain falls mainly in the plain"

re = /ain/i // 创建正则表达式模式。

r = s.match(re) // 尝试匹配搜索字符串。

return(r)// 返回第一次出现 "ain" 的地方。

}

Replace(a,b):字符b替换a

Search(stringObject):指明是否存在相应的匹配。如果找到一个匹配,search 方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1。

Slice(start,end):返回字符段片段

Split():字符串拆分

Substr(start,length):字符串截取

Substring(start,end)取得指定长度内的字符串

toUpperCase():返回一个字符串,该字符串中的所有字母都被转化为大写字母。

toLowerCase():返回一个字符串,该字符串中的所有字母都被转化为小写字母。

Math对象

ceil():向上取整。

floor():向下取整。

round():四舍五入。

random():取随机数。

Date对象

get/setDate():返回或设置日期。

get/setFullYear():返回或设置年份,用四位数表示。

get/setYear():返回或设置年份。

get/setMonth():返回或设置月份。0为一月

get/setHours():返回或设置小时,24小时制

get/setMinutes():返回或设置分钟数。

get/setSeconds():返回或设置秒钟数。

get/setTime():返回或设置时间(毫秒为单位)

浏览器上点F12

代码:

<script>

var writerInfoArr = new Array()//js的数组不要设置长度,我们就当他是4个。

var writerInfo = new Object()

for(var i=0i<4i++){

writerInfo.name="《故事会》"writerInfo.author="张三"writerInfo.addr="建平村1号"writerInfo.len=5

writerInfoArr[i]=writerInfo

}

console.log(writerInfoArr)

</script>