QY從封裝看計算機高級語言的發(fā)展規(guī)律_第1頁
QY從封裝看計算機高級語言的發(fā)展規(guī)律_第2頁
QY從封裝看計算機高級語言的發(fā)展規(guī)律_第3頁
QY從封裝看計算機高級語言的發(fā)展規(guī)律_第4頁
QY從封裝看計算機高級語言的發(fā)展規(guī)律_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

從封裝看計算機高級語言的發(fā)展規(guī)律

計算機科學與技術(shù)學院邱勇內(nèi)容1.

高級語言的發(fā)展2.非結(jié)構(gòu)化程序設(shè)計3.結(jié)構(gòu)化程序設(shè)計對實現(xiàn)功能的封裝4.相關(guān)數(shù)據(jù)的封裝5.進一步提高封裝度6.面向?qū)ο蟪绦蛟O(shè)計中類的封裝7.繼承也是封裝8.oop中其它封裝形式9.JAVA,C#新一代語言中的封裝10.高級語言的發(fā)展總結(jié)11結(jié)論1計算機高級語言的發(fā)展歷程非結(jié)構(gòu)化程序設(shè)計語言結(jié)構(gòu)化程序設(shè)計語言面向?qū)ο蟪绦蛟O(shè)計語言1計算機高級語言的發(fā)展歷程非結(jié)構(gòu)化程序設(shè)計語言早期出現(xiàn)的高級語言在程序設(shè)計時不劃分模塊,稱為非結(jié)構(gòu)化程序設(shè)計語言。如ALGOL,BASIC等。

1計算機高級語言的發(fā)展歷程結(jié)構(gòu)化程序設(shè)計語言

以C語言,PASCAL為代表的語言支持結(jié)構(gòu)化程序設(shè)計方法,可以將程序劃分為模塊,按自上而下,逐步求精的方法設(shè)計軟件,稱為結(jié)構(gòu)化程序設(shè)計語言。1計算機高級語言的發(fā)展歷程面向?qū)ο蟪绦蛟O(shè)計語言是最新一代的程序設(shè)計的方法,它的將數(shù)據(jù)與處理數(shù)據(jù)的過程作為一個整體——對象具有三大特點:(1)封裝性和數(shù)據(jù)隱藏性(2)繼承和重用(3)多態(tài)性1計算機高級語言的發(fā)展歷程(1)封裝性和數(shù)據(jù)隱藏性:通過建立用戶定義類支持封裝性和數(shù)據(jù)隱藏。完好定義的類建立后,便可看成是完全封裝的實體,作為一個整體單元來使用。同時,類的實際內(nèi)部工作及相關(guān)數(shù)據(jù)應當隱藏起來,即無須知道其工作原理,只需知道如何使用類便可。1計算機高級語言的發(fā)展歷程(2)繼承和重用:程序可以在擴展現(xiàn)有類型的基礎(chǔ)上聲明新類型(派生類)。新類型繼承原類型屬性方法,并增加某些特性。(3)多態(tài)性:一個接口,多種方法:通過繼承的方法構(gòu)造類,采用多態(tài)性為每個類指定表現(xiàn)行為。1計算機高級語言的發(fā)展歷程從本質(zhì)上來說,計算機高級語言的發(fā)展有什么規(guī)律?新一代的的語言究竟先進在什么地方?只有理解了這些問題,才能從本質(zhì)上掌握新一代計算機語言的先進特性,設(shè)計出高質(zhì)量的軟件,對開發(fā)出新型的程序設(shè)計語言也有一定的啟發(fā)意義。2非結(jié)構(gòu)化程序設(shè)計計算機高級語言發(fā)展的初期如BASIC,ALGOL等。1計算機高高級語言的發(fā)發(fā)展歷程BASIC程程序例子:10LETX=220LETY=SIN(X)30PRINTYRUN0.0348994961計算機高高級語言的發(fā)發(fā)展歷程BASIC語語言特點(1)構(gòu)成簡簡單。BASIC語言言的最基本語語句只有17種。(2)是一種種“人機會話話”式的語言言。(3)功能較較全、適用面面廣。(4)執(zhí)行方方式靈活。BASIC語語言提供兩種種執(zhí)行方式,,分別是程序序執(zhí)行方式和和命令執(zhí)行方方式。2非結(jié)構(gòu)化化程序設(shè)計語語言非結(jié)構(gòu)化程序序設(shè)計的缺點點:整個程序不分分模塊,所有有的變量和代代碼都是全局局的.程序結(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)構(gòu)化程程序設(shè)設(shè)計語語言隨著計計算機機應用用的發(fā)發(fā)展,,當程程序稍稍大一一些時時,非非結(jié)構(gòu)構(gòu)化程程序設(shè)設(shè)計語語言固固有的的缺點點就會會暴露露出來來:(1)變量量是全全局的的,所所有變變量都都可以以被任任何代代碼所所使用用;(2)代碼碼是全全局的的,可可以隨隨意轉(zhuǎn)轉(zhuǎn)向到到任何何位置置去執(zhí)執(zhí)行,,容易易造成成混亂亂。2非非結(jié)構(gòu)構(gòu)化程程序設(shè)設(shè)計語語言例如,,一個個程序序有三三項功功能,,每個個功能能與相相應的的變量量和執(zhí)執(zhí)行相相應的的代碼碼的關(guān)關(guān)系可可能如如下圖圖所示示功能1功能2功能3變量1變量2變量3變量4代碼1代碼2代碼3代碼4代碼5代碼6程序功功能圖1非非結(jié)結(jié)構(gòu)化化程序序的結(jié)結(jié)構(gòu)我們會會發(fā)現(xiàn)現(xiàn),多多個功功能在在一個個程序序中可可互相相使用變變量,,互相相執(zhí)行行代碼碼,使使程序序的結(jié)結(jié)構(gòu)顯顯得混亂亂。當當功能能數(shù)不不多時時不會會有太太大的的影響響。而當當功功能能數(shù)數(shù)多多于于十十個個乃乃至至幾幾十十個個時時,,這樣樣的的程程序序結(jié)結(jié)構(gòu)構(gòu)將將復復雜雜至至無無法法控控制制的的地地步步,,主要要表表現(xiàn)現(xiàn)為為程程序序編編碼碼難難、、調(diào)調(diào)試試難難和和維維護護難難。。3結(jié)結(jié)構(gòu)構(gòu)化化程程序序設(shè)設(shè)計計--功功能能的的封封裝裝結(jié)構(gòu)構(gòu)化化程程序序設(shè)設(shè)計計語語言言::為了了解解決決以以上上的的程程序序結(jié)結(jié)構(gòu)構(gòu)混混亂亂問問題題,,以以適適應應開開發(fā)發(fā)大大程程序序的的要要求求,,產(chǎn)產(chǎn)生生了了結(jié)結(jié)構(gòu)構(gòu)化化程程序序設(shè)設(shè)計計語語言言,,如如PASCAL,,C等等。。結(jié)構(gòu)化程程序設(shè)計計語言支支持模塊塊化的設(shè)設(shè)計方法法,可可以將一一個復雜雜的程序序分解為為一個個個功能相相對簡單單的模塊塊,再通通過對這這些模塊塊的調(diào)用用完成原原來程序序的功能能。3結(jié)構(gòu)構(gòu)化程序序設(shè)計--功能能的封裝裝設(shè)計模塊塊的原則則是(1)高高內(nèi)聚:在每個個模塊中中,只只含有單單一的功功能和與與該功能能相關(guān)的的變量;;(2)低低耦合::模塊之之間盡量量減少聯(lián)聯(lián)系。模模塊內(nèi)內(nèi)的變量量被稱為為局部變變量,只只在模塊塊內(nèi)部可可見;一一個模模塊也不不允許轉(zhuǎn)轉(zhuǎn)移到另另一個模模塊內(nèi)部部去。3結(jié)結(jié)構(gòu)化程程序設(shè)計計--功功能的封封裝對于上例例,只要要將這3個功能能有關(guān)的的代碼和和變量分分別設(shè)計計成模塊塊,再設(shè)設(shè)計一個個主模塊塊調(diào)用,,就可以以避免以以上的混混亂。如如圖2所所示。主控模塊模塊1模塊2模塊3將變量與與代碼放放入模塊塊3結(jié)結(jié)構(gòu)化程程序設(shè)計計--功功能的封封裝可以說,,模塊如如同一個個箱子,實現(xiàn)現(xiàn)了將一一部分程程序及變變量的封封裝.主控模塊模塊1模塊2模塊33結(jié)結(jié)構(gòu)化程程序設(shè)計計--功功能的封封裝可以說,,模塊如如同一個個箱子,裝入了了一部分分程序及及變量.也也可以以成為---封封裝.那么,一一個模模塊到到底該該裝入入什么么樣的的程序序代碼碼和變變量?主控模塊模塊1模塊2模塊33結(jié)結(jié)構(gòu)構(gòu)化程程序設(shè)設(shè)計--功功能的的封裝裝模塊如如同一一個箱箱子,實實現(xiàn)了了將程程序中中按功功能邏邏輯相相關(guān)的的代碼碼與變變量的的封裝裝主控模塊模塊1模塊2模塊33結(jié)結(jié)構(gòu)化化程序序設(shè)計計--功能能的封封裝模塊封封裝的的原理理是::程序中中邏輯上上有關(guān)系系元素素(變變量和和代碼碼)應應當在在物理上上也放在在一起起,加加以封封裝.換句話話說,,邏輯上上相關(guān)關(guān),物物理上上也應應相關(guān)關(guān),這這就是是邏輯輯物理理一致致性原原理。。3結(jié)結(jié)構(gòu)化化程序序設(shè)計計--功能能的封封裝封裝原原理:邏輯上有關(guān)系元素素,應當在在物理上也放在一起起,加以封封裝生活中的封封裝原理應應用.3結(jié)構(gòu)化化程序設(shè)計計--功能能的封裝封裝原理:程序中邏輯上有關(guān)系元素素,應當在在物理上也放在一起起,加以封封裝再考察一下下,按按照封裝原原理,程程序中還還能實現(xiàn)什什么封裝呢呢?4、相關(guān)數(shù)數(shù)據(jù)的封裝裝程序中的數(shù)數(shù)據(jù)(變量量與常量))之間是否否也可能存存在邏輯相相關(guān)性呢??4、相關(guān)數(shù)數(shù)據(jù)的封裝裝考察以下圖圖中變量定定義學生信息教師信息變量1變量2變量3變量4變量54、相關(guān)數(shù)數(shù)據(jù)的封裝裝學生變量與與教師變量量交叉在一一起,顯得得混亂。分分析其中的的邏輯關(guān)系系,我們們會發(fā)現(xiàn)與與學生有關(guān)關(guān)的變量是是邏輯相關(guān)關(guān)的,同樣樣與教師有有關(guān)的變量量也是邏輯輯相關(guān)的。。而這些邏邏輯相關(guān)的的變量并沒沒有得到封封裝,因此此,跟據(jù)封封裝的原理理,也應加加以封裝。。4、相關(guān)數(shù)數(shù)據(jù)的封裝裝為解決這個個問題,可可使用現(xiàn)代代程序設(shè)計計語言中普普遍支持的的高級數(shù)據(jù)據(jù)類型---結(jié)構(gòu)類類型.例如如,圖4所所示為用C語言結(jié)構(gòu)構(gòu)定義封裝裝了與學生生相關(guān)的數(shù)數(shù)據(jù)。4、相關(guān)數(shù)數(shù)據(jù)的封裝裝教師結(jié)構(gòu)變量:教師變量1教師變量2……學生結(jié)構(gòu)變量:學生變量1學生變量2……4、相關(guān)數(shù)數(shù)據(jù)的封裝裝另外,程序序中的常量量之間也同同樣可能存存在邏輯相相關(guān)性,例例如,多個個有關(guān)色彩彩的編碼常常量,是邏邏輯相關(guān)的的,應當在在物理上放放在一起加加以封裝。。而枚舉類類型就可實實現(xiàn)將這種種邏輯相關(guān)關(guān)常量的封封裝。enumColor{red,black,yellow,blue,white};enumColorc;5進進一一步步提提高高封封裝裝度度以C,,pascal等等語語言言為為代代表表的的結(jié)結(jié)構(gòu)構(gòu)化化程程序序設(shè)設(shè)計計語語言言還還有有沒沒有有可可能能繼繼續(xù)續(xù)提提高高封封裝裝度度??或或者者說說程程序序中中是是否否還還有有邏邏輯輯物物理理不不一一致致的的問問題題?要要回回答答這這個個問問題題,,讓讓我我們們分分析析一一下下客客觀觀世世界界。。客觀世世界由由許許許多多多事物物組成成.每每個個事物物都具具有數(shù)數(shù)據(jù)和和功能能。5進進一步步提高高封裝裝度如:一一個個具體體的學學生是是一個個事物物具有數(shù)數(shù)據(jù):姓姓名名,學學號,,成績績等具有功功能:設(shè)設(shè)置置姓名名,學學號,,成績績,顯顯示姓姓名,,學號號,成成績等等由此可知,,客觀世界界中一個學學生的數(shù)據(jù)據(jù)及功能是是密切相關(guān)關(guān)的。而在采用結(jié)結(jié)構(gòu)化程序序設(shè)計語言言設(shè)計的程程序中,有有關(guān)學生的的數(shù)據(jù)和功功能在程序序中可能被被分散在不不同地方。。5進一步步提高封裝裝度5進一步步提高封裝裝度如圖所示,,客觀對象象的一體性性在程序中中沒有得到到反映,存存在邏輯物物理不一致致問題。為為了解決這這一問題導導致了面向向?qū)ο蟪绦蛐蛟O(shè)計(OOP)語語言的產(chǎn)生生。6面向?qū)ο蟪绦蛟O(shè)設(shè)計中類的的封裝為了使程序序中與客觀觀對象取得得一致,在在面向?qū)ο笙蟪绦蛟O(shè)計計語言中可可以定義類類,在類類中將與對對象相關(guān)的的變量(在在OOP中中稱為屬性性)和功能能模塊((在OOP中稱為方方法)進行行封裝。6面向?qū)ο蟪绦蛟O(shè)設(shè)計中類的的封裝在OOP中對對學生對象和和教師對象分分別進行封裝裝,形成學生生類,教師類類:publicclassStudent{privateintnum,age;privateStringname,sex;privatefloatscore;Student(intnum,intage,Stringname,Stringsex,floatscore){this.num=num;this.age=age;=name;this.sex=sex;this.score=score;}publicvoidgetnum(){system.out.println(this.num);}......}6面向?qū)ο笙蟪绦蛟O(shè)計中中類的封裝6面向?qū)ο笙蟪绦蛟O(shè)計中中類的封裝類可以實現(xiàn)將將對象的數(shù)據(jù)據(jù)與方法的封封裝,但不同同類之間是否否存在可封裝裝的內(nèi)容呢??7繼承也是是封裝的一種種形式考察下面的兩兩個類:7繼承也是是封裝的一種種形式我們會發(fā)現(xiàn),,這兩個類中中存在共同的的部分,這些些共同部分實實際上是一般般“人”的屬屬性和方法,,因些,這些些部分是邏輯輯相關(guān)的,有有必要進行進進一步的封裝裝---封裝裝為基類:人人員類,而學學生和教師類類可以從這個個基類繼承產(chǎn)產(chǎn)生。7繼繼承也也是封封裝的的一種種形式式7繼繼承也也是封封裝的的一種種形式式將多個個類中中邏輯輯上相相關(guān)的的一組組方法法與屬屬性封封裝到到一起起,構(gòu)構(gòu)成這這多個個類的的共同同基類類,而而原多多個類類變?yōu)闉閺脑撛摶愵惖呐膳缮牡男问绞?,這這就是是面向向?qū)ο笙蟮睦^繼承性性繼承本本質(zhì)上上仍是是一種種高級級封裝裝。當然實實際工工作中中我們們可能能先設(shè)設(shè)計基基類,,再設(shè)設(shè)計其其派生生類。。但這這也是是我們們先在在頭腦腦中完完成了了由個個別到到一般般的歸歸納,,在設(shè)設(shè)計中中應用用了由由一般般到個個別的的演繹繹。8、OOP中中其它封裝形形式按照封裝原理理,OOP中還可進進行更高級的的封裝:(1)類模板板如果在程序中中要使用一組組類,這組類類的功能與結(jié)結(jié)構(gòu)的相似性性的,則這種種相似性也是是一種邏輯相相關(guān),應當進進行封裝。OOP的類模模板可以實現(xiàn)現(xiàn)這種封裝。。template<classT>classtarray{intsize;T*array;public:tarray(intsz=10){size=sz;array=newT[sz];}tarray(tarray<T>&a);~tarray(){delete[]array;}intgetsize(){returnsize;}tarray<T>&operator=(tarray<T>&a);int&operator[](Tn);};8、OOP中中其它封裝形形式(2)函數(shù)模模板如果在程序中中存在一組方方法在功能與與結(jié)構(gòu)是相似似性的,這也也構(gòu)成邏輯相相關(guān),應當加加以封裝。OOP的函數(shù)數(shù)模板可以實實現(xiàn)這種封裝裝。template<classT>TPower(Tbase,intexponent){Ti,product=1;for(i=1;i<=exponent;i++)product*=base;return(product);}8、oop中中其它封裝形形式(3)函數(shù)重重載將邏輯上相關(guān)關(guān)的一組方法法采用一個函函數(shù)名,這種種物理上的一一致性也構(gòu)成成一種封裝,,這就是函數(shù)數(shù)重載。函數(shù)數(shù)重載是OOP多態(tài)性的的一種方式。。voiddisplay(inta){cout<<"Theintis:"<<a<<"\n";}voiddisplay(floata){cout<<"Thefloatis:"<<a<<"\n";}voiddisplay(chartext[]){cout<<"Thetextis:"<<text<<"\n";}8、oop中中其它封裝形形式(4)方法法覆蓋在父類中定義義虛方法接口口,在派生類類中覆蓋父類類的虛方法,,可以實現(xiàn)OOP中的高高級多態(tài)性::動態(tài)聯(lián)編多多態(tài)性。這其其中父子類中中相同的方法法接口也是對對邏輯相關(guān)方方法的物理封封裝。classshape{protected:inthight,width;public:shape(inth,intw){hight=h;width=w;}virtualvoidshowarea(){}};classrectangle:publicshape{public:rectangle(inth,intw):shape(h,w){}voidshowarea(){cout<<"rectanglearea="<<hight*width<<endl;}};classtriangle:publicshape{public:triangle(inth,intw):shape(h,w){}voidshowarea(){cout<<"trianglearea="<<hight*width/2<<endl;}};9JAVA,C#新一代語語言的封裝裝新一代語言言在以下幾幾方面進行行了封裝,,將封裝提提高到了一一個新的高高度:(1)程序序中消除非非封裝因素素:不再支支持全局變變量和全局局方法,這這就是完全全的OOP。9JAVA,C#新一代語語言的封裝裝(2)將將封裝的著著眼點從程程序轉(zhuǎn)向運運行庫?9JAVA,C#新一代語語言的封裝裝(2)將將封裝的著著眼點從程程序轉(zhuǎn)向運運行庫:將將運行庫中中邏輯相關(guān)關(guān)的部分封封裝為類,,這就是類類庫(packages)。9JAVA,C#新一代語語言的封裝裝9JAVA,C#新一代語語言的封裝裝(3)將封封裝的著眼眼點從單個個應用內(nèi)部部到應用之之間?9JAVA,C#新一代語語言的封裝裝(3)將封封裝的著眼眼點從單個個應用內(nèi)部部到應用之之間:將不不同應用之之間與運行行平臺邏輯輯相關(guān)部分分進行封裝裝,這就是是通用語言言運行時或或虛擬機等等,這些內(nèi)內(nèi)容被從應應用中分離離出來,這這就產(chǎn)生了了最令人振振奮的跨平平臺的語言言特性。9JAVA,C#新一代語語言的封裝裝9JAVA,C#新一代語語言的封裝裝新一代語言言在以下幾幾方面進行行了封裝,,將封裝提提高到了一一個新的高高度:(1)完完全的OOP(2)類類庫(3)虛虛擬擬機機,源源代代碼碼+編編譯譯時時+運運行行時時的的跨跨平平臺臺完全全符符合合封封裝裝原原理理!10高高級語語言發(fā)發(fā)展總總結(jié)10高高級語語言發(fā)發(fā)展總總結(jié)11結(jié)結(jié)論論通過以以上分分析我我們可可以得得到這這樣的的重要要結(jié)論論:(1))新的程程序設(shè)設(shè)計語語言可可以

溫馨提示

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

最新文檔

評論

0/150

提交評論