從封裝看計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展規(guī)律概述_第1頁(yè)
從封裝看計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展規(guī)律概述_第2頁(yè)
從封裝看計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展規(guī)律概述_第3頁(yè)
從封裝看計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展規(guī)律概述_第4頁(yè)
從封裝看計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展規(guī)律概述_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、從封裝看計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)從封裝看計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展規(guī)律展規(guī)律 邱勇內(nèi) 容 1. 高級(jí)語(yǔ)言的發(fā)展高級(jí)語(yǔ)言的發(fā)展 2. 非結(jié)構(gòu)化程序設(shè)計(jì)非結(jié)構(gòu)化程序設(shè)計(jì) 3. 結(jié)構(gòu)化程序設(shè)計(jì)對(duì)實(shí)現(xiàn)功能的封裝結(jié)構(gòu)化程序設(shè)計(jì)對(duì)實(shí)現(xiàn)功能的封裝 4. 相關(guān)數(shù)據(jù)的封裝相關(guān)數(shù)據(jù)的封裝 5. 進(jìn)一步提高封裝度進(jìn)一步提高封裝度 6. 面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝 7. 繼承也是封裝繼承也是封裝 8. oop中其它封裝形式中其它封裝形式 9. JAVA,C#新一代語(yǔ)言中的封裝新一代語(yǔ)言中的封裝 10.高級(jí)語(yǔ)言的發(fā)展總結(jié)高級(jí)語(yǔ)言的發(fā)展總結(jié) 11 結(jié)論結(jié)論1 計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展歷程 非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言

2、結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言 面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言1 計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展歷程 非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言 早期出現(xiàn)的高級(jí)語(yǔ)言在程序設(shè)計(jì)時(shí)不劃分模塊,稱為非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。如ALGOL,BASIC等。 1 計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展歷程 結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言 以C語(yǔ)言,PASCAL為代表的語(yǔ)言支持結(jié)構(gòu)化程序設(shè)計(jì)方法,可以將程序劃分為模塊,按自上而下,逐步求精的方法設(shè)計(jì)軟件,稱為結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。 1 計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展歷程 面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 是最新一代的程序設(shè)計(jì)的方法,它的將數(shù)據(jù)與處理數(shù)據(jù)的過(guò)程作為一個(gè)整體對(duì)象 具有三大特點(diǎn): (1)封裝性和數(shù)據(jù)隱藏性 (2)繼承和重用 (3)多態(tài)性 1 計(jì)算機(jī)高級(jí)語(yǔ)言的

3、發(fā)展歷程 (1)封裝性和數(shù)據(jù)隱藏性: 通過(guò)建立用戶定義類支持封裝性和數(shù)據(jù)隱藏。完好定義的類建立后,便可看成是完全封裝的實(shí)體,作為一個(gè)整體單元來(lái)使用。同時(shí),類的實(shí)際內(nèi)部工作及相關(guān)數(shù)據(jù)應(yīng)當(dāng)隱藏起來(lái),即無(wú)須知道其工作原理,只需知道如何使用類便可。 1 計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展歷程 (2)繼承和重用: 程序可以在擴(kuò)展現(xiàn)有類型的基礎(chǔ)上聲明新類型(派生類)。新類型繼承原類型屬性方法,并增加某些特性。 (3)多態(tài)性: 一個(gè)接口, 多種方法: 通過(guò)繼承的方法構(gòu)造類,采用多態(tài)性為每個(gè)類指定表現(xiàn)行為。 1 計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展歷程 從本質(zhì)上來(lái)說(shuō),計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展有什么規(guī)律? 新一代的的語(yǔ)言究竟先進(jìn)在什么地方? 只

4、有理解了這些問(wèn)題,才能從本質(zhì)上掌握新一代計(jì)算機(jī)語(yǔ)言的先進(jìn)特性,設(shè)計(jì)出高質(zhì)量的軟件,對(duì)開發(fā)出新型的程序設(shè)計(jì)語(yǔ)言也有一定的啟發(fā)意義。2 非結(jié)構(gòu)化程序設(shè)計(jì)非結(jié)構(gòu)化程序設(shè)計(jì) 計(jì)算機(jī)高級(jí)語(yǔ)言發(fā)展的初期 如BASIC,ALGOL等。1 計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展歷程 BASIC程序例子: 10 LET X=2 20 LET Y=SIN(X) 30 PRINT Y RUN 0.0348994961 計(jì)算機(jī)高級(jí)語(yǔ)言的發(fā)展歷程 BASIC語(yǔ)言特點(diǎn) (1)構(gòu)成簡(jiǎn)單。 BASIC語(yǔ)言的最基本語(yǔ)句只有17種。 (2)是一種“人機(jī)會(huì)話”式的語(yǔ)言。 (3)功能較全、適用面廣。 (4)執(zhí)行方式靈活。BASIC語(yǔ)言提供兩種執(zhí)行方式

5、,分別是程序執(zhí)行方式和命令執(zhí)行方式。 2 非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言 非結(jié)構(gòu)化程序設(shè)計(jì)的缺點(diǎn): 整個(gè)程序不分模塊,所有的變量和代碼都是全局的. 程序結(jié)構(gòu)=變量1,變量2,.,變量m,代碼1,代碼2,.,代碼n變量1變量2變量3變量4代碼1代碼2代碼3代碼4程序1 程序2 變量1代碼1變量2代碼2變量3代碼3 2 非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言 隨著計(jì)算機(jī)應(yīng)用的發(fā)展,當(dāng)程序稍大一些時(shí),非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言固有的缺點(diǎn)就會(huì)暴露出來(lái): (1)變量是全局的,所有變量都可以被任何代碼所使用; (2)代碼是全局的,可以隨意轉(zhuǎn)向到任何位置去執(zhí)行,容易造成混亂。2 非結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言非

6、結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言 例如,一個(gè)程序有三項(xiàng)功能,每個(gè)功能與相應(yīng)的變量和執(zhí)行相應(yīng)的代碼的關(guān)系可能如下圖所示 功能1功能2功能3變量1變量2變量3變量4代碼1代碼2代碼3代碼4代碼5代碼6程序 功能圖1 非結(jié)構(gòu)化程序的結(jié)構(gòu)我們會(huì)發(fā)現(xiàn),多個(gè)功能在一個(gè)程序中可互相使用變量,互相執(zhí)行代碼,使程序的結(jié)構(gòu)顯得混亂。當(dāng)功能數(shù)不多時(shí)不會(huì)有太大的影響。 而當(dāng)功能數(shù)多于十個(gè)乃至幾十個(gè)時(shí),這樣的程序結(jié)構(gòu)將復(fù)雜至無(wú)法控制的地步,主要表現(xiàn)為程序編碼難、調(diào)試難和維護(hù)難。 3 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言:結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言: 為了解決以上的程序結(jié)構(gòu)混亂問(wèn)題,以適應(yīng)開發(fā)大程序的要求,產(chǎn)

7、生了結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,如PASCAL,C等。 結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言支持模塊化的設(shè)計(jì)方法, 可以將一個(gè)復(fù)雜的程序分解為一個(gè)個(gè)功能相對(duì)簡(jiǎn)單的模塊,再通過(guò)對(duì)這些模塊的調(diào)用完成原來(lái)程序的功能。 3 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 設(shè)計(jì)模塊的原則是 (1)高內(nèi)聚:在每個(gè)模塊中, 只含有單一的功能和與該功能相關(guān)的變量; (2)低耦合:模塊之間盡量減少聯(lián)系。 模塊內(nèi)的變量被稱為局部變量,只在模塊內(nèi)部可見(jiàn); 一個(gè)模塊也不允許轉(zhuǎn)移到另一個(gè)模塊內(nèi)部去。 3 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 對(duì)于上例,只要將這3個(gè)功能有關(guān)的代碼和變量分別設(shè)計(jì)成模塊,再設(shè)計(jì)一個(gè)主模塊調(diào)用,就可以

8、避免以上的混亂。如圖2所示。 將變量與代碼放入模塊將變量與代碼放入模塊主控模塊模塊1模塊2模塊33 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 可以說(shuō),模塊如同一個(gè)箱子, 實(shí)現(xiàn)了將一部分程序及變量的封裝. 主控模塊模塊1模塊2模塊33 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 可以說(shuō),模塊如同一個(gè)箱子,裝入了一部分程序及變量. 也可以成為-封裝.那么, 一個(gè)模塊到底該裝入什么樣的程序代碼和變量? 主控模塊模塊1模塊2模塊33 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 模塊如同一個(gè)箱子, 實(shí)現(xiàn)了將程序中按功能邏輯相關(guān)的代碼與變量的封裝 主控模塊模塊1模塊2模塊33 結(jié)

9、構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 模塊封裝的原理是: 程序中邏輯上有關(guān)系元素(變量和代碼)應(yīng)當(dāng)在物理上也放在一起,加以封裝. 換句話說(shuō),邏輯上相關(guān),物理上也應(yīng)相邏輯上相關(guān),物理上也應(yīng)相關(guān),這就是邏輯物理一致性原理。關(guān),這就是邏輯物理一致性原理。3 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 封裝原理:邏輯上有關(guān)系元素,應(yīng)當(dāng)在物理上也放在一起,加以封裝 生活中的封裝原理應(yīng)用.3 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)-功能的封裝功能的封裝 封裝原理: 程序中邏輯上有關(guān)系元素,應(yīng)當(dāng)在物理上也放在一起,加以封裝 再考察一下, 按照封裝原理, 程序中還能實(shí)現(xiàn)什么封裝呢? 4、相關(guān)數(shù)據(jù)的封

10、裝、相關(guān)數(shù)據(jù)的封裝 程序中的數(shù)據(jù)(變量與常量)之間是否也可能存在邏輯相關(guān)性呢? 4、相關(guān)數(shù)據(jù)的封裝、相關(guān)數(shù)據(jù)的封裝 考察以下圖中變量定義學(xué)生信息教師信息變量1變量2變量3變量4變量54、相關(guān)數(shù)據(jù)的封裝、相關(guān)數(shù)據(jù)的封裝 學(xué)生變量與教師變量交叉在一起,顯得混亂。分析其中的邏輯關(guān)系, 我們會(huì)發(fā)現(xiàn)與學(xué)生有關(guān)的變量是邏輯相關(guān)的,同樣與教師有關(guān)的變量也是邏輯相關(guān)的。而這些邏輯相關(guān)的變量并沒(méi)有得到封裝,因此,跟據(jù)封裝的原理,也應(yīng)加以封裝。 4、相關(guān)數(shù)據(jù)的封裝、相關(guān)數(shù)據(jù)的封裝 為解決這個(gè)問(wèn)題,可使用現(xiàn)代程序設(shè)計(jì)語(yǔ)言中普遍支持的高級(jí)數(shù)據(jù)類型-結(jié)構(gòu)類型.例如,圖4所示為用C語(yǔ)言結(jié)構(gòu)定義封裝了與學(xué)生相關(guān)的數(shù)據(jù)。4、

11、相關(guān)數(shù)據(jù)的封裝、相關(guān)數(shù)據(jù)的封裝教師結(jié)構(gòu)變量: 教師變量1 教師變量2 學(xué)生結(jié)構(gòu)變量: 學(xué)生變量1 學(xué)生變量2 4、相關(guān)數(shù)據(jù)的封裝、相關(guān)數(shù)據(jù)的封裝 另外,程序中的常量之間也同樣可能存在邏輯相關(guān)性,例如,多個(gè)有關(guān)色彩的編碼常量,是邏輯相關(guān)的,應(yīng)當(dāng)在物理上放在一起加以封裝。而枚舉類型就可實(shí)現(xiàn)將這種邏輯相關(guān)常量的封裝。 enum Colorred,black,yellow,blue,white; enum Color c;5 進(jìn)一步提高封裝度進(jìn)一步提高封裝度 以C,pascal等語(yǔ)言為代表的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言還有沒(méi)有可能繼續(xù)提高封裝度? 或者說(shuō)程序中是否還有邏輯物理不一致的問(wèn)題? 要回答這個(gè)問(wèn)題,讓我

12、們分析一下客觀世界。 客觀世界由許許多多事物組成. 每個(gè)事物都具有數(shù)據(jù)和功能。 5 進(jìn)一步提高封裝度進(jìn)一步提高封裝度 如: 一個(gè)具體的學(xué)生是一個(gè)事物 具有數(shù)據(jù): 姓名,學(xué)號(hào),成績(jī)等 具有功能: 設(shè)置姓名,學(xué)號(hào),成績(jī),顯示姓名,學(xué)號(hào),成績(jī)等 由此可知,客觀世界中一個(gè)學(xué)生的數(shù)據(jù)及功能是密切相關(guān)的。 而在采用結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言設(shè)計(jì)的程序中,有關(guān)學(xué)生的數(shù)據(jù)和功能在程序中可能被分散在不同地方。 5 進(jìn)一步提高封裝度進(jìn)一步提高封裝度 5 進(jìn)一步提高封裝度進(jìn)一步提高封裝度 如圖所示,客觀對(duì)象的一體性在程序中沒(méi)有得到反映,存在邏輯物理不一致問(wèn)題。為了解決這一問(wèn)題導(dǎo)致了面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)語(yǔ)言的產(chǎn)生。 6

13、 面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝 為了使程序中與客觀對(duì)象取得一致,在面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中可以定義類, 在類中將與對(duì)象相關(guān)的變量(在OOP中稱為屬性)和功能模塊(在OOP中稱為方法)進(jìn)行封裝。 6 面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝 在OOP中對(duì)學(xué)生對(duì)象和教師對(duì)象分別進(jìn)行封裝,形成學(xué)生類,教師類: public class Student private int num,age; private String name,sex; private float score; Student(int num,int age,String name,String

14、 sex,float score) this.num=num; this.age=age;=name; this.sex=sex; this.score=score; public void getnum() system.out.println(this.num); . 6 面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝 6 面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝 類可以實(shí)現(xiàn)將對(duì)象的數(shù)據(jù)與方法的封裝,但不同類之間是否存在可封裝的內(nèi)容呢?7 繼承也是封裝的一種形式繼承也是封裝的一種形式考察下面的兩個(gè)類:7 繼承也是封裝的一種形式繼承也是封裝的一種形式 我們

15、會(huì)發(fā)現(xiàn),這兩個(gè)類中存在共同的部分,這些共同部分實(shí)際上是一般“人”的屬性和方法,因些,這些部分是邏輯相關(guān)的,有必要進(jìn)行進(jìn)一步的封裝-封裝為基類:人員類,而學(xué)生和教師類可以從這個(gè)基類繼承產(chǎn)生。7 繼承也是封裝的一種形式繼承也是封裝的一種形式7 繼承也是封裝的一種形式繼承也是封裝的一種形式 將多個(gè)類中邏輯上相關(guān)的一組方法與屬性封裝到一起,構(gòu)成這多個(gè)類的共同基類,而原多個(gè)類變?yōu)閺脑摶惖呐缮男问剑@就是面向?qū)ο蟮睦^承性 繼承本質(zhì)上仍是一種高級(jí)封裝。繼承本質(zhì)上仍是一種高級(jí)封裝。 當(dāng)然實(shí)際工作中我們可能先設(shè)計(jì)基類,再設(shè)計(jì)其派生類。但這也是我們先在頭腦中完成了由個(gè)別到一般的歸納,在設(shè)計(jì)中應(yīng)用了由一般到個(gè)別

16、的演繹。8、OOP中其它封裝形式中其它封裝形式 按照封裝原理, OOP中還可進(jìn)行更高級(jí)的封裝: (1)類模板 如果在程序中要使用一組類,這組類的功能與結(jié)構(gòu)的相似性的,則這種相似性也是一種邏輯相關(guān),應(yīng)當(dāng)進(jìn)行封裝。OOP的類模板可以實(shí)現(xiàn)這種封裝 。 template class tarray int size; T *array; public: tarray(int sz=10) size=sz; array=new Tsz; tarray(tarray &a); tarray() deletearray; int getsize()return size; tarray &operator=(

17、tarray &a); int & operator(T n); ;8、OOP中其它封裝形式中其它封裝形式 (2)函數(shù)模板 如果在程序中存在一組方法在功能與結(jié)構(gòu)是相似性的,這也構(gòu)成邏輯相關(guān),應(yīng)當(dāng)加以封裝。OOP的函數(shù)模板可以實(shí)現(xiàn)這種封裝。 template T Power( T base, int exponent ) T i, product = 1; for ( i=1; i=exponent; i+ ) product *= base; return( product ); 8、oop中其它封裝形式中其它封裝形式 (3)函數(shù)重載 將邏輯上相關(guān)的一組方法采用一個(gè)函數(shù)名,這種物理上的一致性也

18、構(gòu)成一種封裝,這就是函數(shù)重載。函數(shù)重載是OOP多態(tài)性的一種方式。 void display( int a) cout The int is: a n; void display( float a ) cout The float is: a n; void display( char text ) cout The text is: text n; 8、oop中其它封裝形式中其它封裝形式 (4) 方法覆蓋 在父類中定義虛方法接口,在派生類中覆蓋父類的虛方法,可以實(shí)現(xiàn)OOP中的高級(jí)多態(tài)性:動(dòng)態(tài)聯(lián)編多態(tài)性。這其中父子類中相同的方法接口也是對(duì)邏輯相關(guān)方法的物理封裝。 class shape protected: int hight,width; public: shape(int h,int w)hight=h; width=w; virtual void showarea() ;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論