久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

面向?qū)ο蟮某绦蛟O(shè)計(jì)

來(lái)自站長(zhǎng)百科
(重定向自Object Oriented Programming
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

面向?qū)ο蟪绦蛟O(shè)計(jì)(Object Oriented Programming,OOP)是一種計(jì)算機(jī)編程架構(gòu)。OOP 的一條基本原則是計(jì)算機(jī)程序是由單個(gè)能夠起到子程序作用的單元或?qū)ο蠼M合而成。OOP 達(dá)到了軟件工程的三個(gè)主要目標(biāo):重用性、靈活性擴(kuò)展性。為了實(shí)現(xiàn)整體運(yùn)算,每個(gè)對(duì)象都能夠接收信息、處理數(shù)據(jù)和向其它對(duì)象發(fā)送信息。

理論歷史[ ]

1967年挪威計(jì)算中心的Kisten Nygaard和Ole Johan Dahl開(kāi)發(fā)了Simula67語(yǔ)言,它提供了比子程序更高一級(jí)的抽象和封裝,引入了數(shù)據(jù)抽象和類(lèi)的概念,它被認(rèn)為是第一個(gè)面向?qū)ο笳Z(yǔ)言。世紀(jì)70年代初,Palo Alto研究中心的Alan Kay所在的研究小組開(kāi)發(fā)出Smalltalk語(yǔ)言,之后又開(kāi)發(fā)出Smalltalk-80,Smalltalk-80被認(rèn)為是最純正的面向?qū)ο笳Z(yǔ)言,它對(duì)后來(lái)出現(xiàn)的面向?qū)ο笳Z(yǔ)言,如Object-C,C++,Self,Eiffl都產(chǎn)生了深遠(yuǎn)的影響。隨著面向?qū)ο笳Z(yǔ)言的出現(xiàn),面向?qū)ο蟪绦蛟O(shè)計(jì)也就應(yīng)運(yùn)而生且得到迅速發(fā)展。之后,面向?qū)ο蟛粩嘞蚱渌A段滲透,1980年Grady Booch提出了面向?qū)ο笤O(shè)計(jì)的概念,之后面向?qū)ο蠓治鲩_(kāi)始。1985年,第一個(gè)商用面向?qū)ο髷?shù)據(jù)庫(kù)問(wèn)世。1990年以來(lái),面向?qū)ο蠓治?、測(cè)試、度量和管理等研究都得到長(zhǎng)足發(fā)展。實(shí)際上,“對(duì)象”和“對(duì)象的屬性”這樣的概念可以追溯到20世紀(jì)50年代初,它們首先出現(xiàn)于關(guān)于人工智能的早期著作中。但是出現(xiàn)了面向?qū)ο笳Z(yǔ)言之后,面向?qū)ο笏枷氩诺玫搅搜杆俚陌l(fā)展。過(guò)去的幾十年中,程序設(shè)計(jì)語(yǔ)言對(duì)抽象機(jī)制的支持程度不斷提高:從機(jī)器語(yǔ)言到匯編語(yǔ)言,到高級(jí)語(yǔ)言,直到面向?qū)ο笳Z(yǔ)言。匯編語(yǔ)言出現(xiàn)后,程序員就避免了直接使用0-1,而是利用符號(hào)來(lái)表示機(jī)器指令,從而更方便地編寫(xiě)程序;當(dāng)程序規(guī)模繼續(xù)增長(zhǎng)的時(shí)候,出現(xiàn)了Fortran、C、Pascal等高級(jí)語(yǔ)言,這些高級(jí)語(yǔ)言使得編寫(xiě)復(fù)雜的程序變得容易,程序員們可以更好地對(duì)付日益增加的復(fù)雜性。但是,如果軟件系統(tǒng)達(dá)到一定規(guī)模,即使應(yīng)用結(jié)構(gòu)化程序設(shè)計(jì)方法,局勢(shì)仍將變得不可控制。作為一種降低復(fù)雜性的工具,面向?qū)ο笳Z(yǔ)言產(chǎn)生了,面向?qū)ο蟪绦蛟O(shè)計(jì)也隨之產(chǎn)生。

基本概念[ ]

面向?qū)ο蟪绦蛟O(shè)計(jì)中的概念主要包括:對(duì)象、類(lèi)、數(shù)據(jù)抽象、繼承、動(dòng)態(tài)綁定、數(shù)據(jù)封裝、多態(tài)性、消息傳遞。通過(guò)這些概念面向?qū)ο蟮乃枷氲玫搅司唧w的體現(xiàn)。

1)對(duì)象Object) 可以對(duì)其做事情的一些東西。一個(gè)對(duì)象有狀態(tài)、行為和標(biāo)識(shí)三種屬性。

2)類(lèi)class) 一個(gè)共享相同結(jié)構(gòu)和行為的對(duì)象的集合。

3)封裝encapsulation): 第一層意思:將數(shù)據(jù)和操作捆綁在一起,創(chuàng)造出一個(gè)新的類(lèi)型的過(guò)程。 第二層意思:將接口與實(shí)現(xiàn)分離的過(guò)程。

4)繼承 類(lèi)之間的關(guān)系,在這種關(guān)系中,一個(gè)類(lèi)共享了一個(gè)活多個(gè)其他類(lèi)定義的結(jié)構(gòu)和行為。繼承描述了類(lèi)之間的“是一種”關(guān)系。子類(lèi)可以對(duì)基類(lèi)的行為進(jìn)行擴(kuò)展、覆蓋、重定義。

5)組合 即使類(lèi)之間的關(guān)系也是對(duì)象之間的關(guān)系。在這種關(guān)系中一個(gè)對(duì)象或者類(lèi)包含了其他的對(duì)象和類(lèi)。 組合描述了“有”關(guān)系。

6)多態(tài) 類(lèi)型理論中的一個(gè)概念,一個(gè)名稱(chēng)可以表示很多不同類(lèi)的對(duì)象,這些類(lèi)和一個(gè)共同超累有關(guān)。因此,這個(gè)名稱(chēng)表示的任何對(duì)象可以以不同的方式響應(yīng)一些共同的操作集合。

7)動(dòng)態(tài)綁定 也稱(chēng)動(dòng)態(tài)類(lèi)型,指的是一個(gè)對(duì)象或者表達(dá)式的類(lèi)型直到運(yùn)行時(shí)才確定。通常由編譯器插入特殊代碼來(lái)實(shí)現(xiàn)。與之對(duì)立的是靜態(tài)類(lèi)型。

8)靜態(tài)綁定 也稱(chēng)靜態(tài)類(lèi)型,指的是一個(gè)對(duì)象或者表達(dá)式的類(lèi)型在編譯時(shí)確定。

9)消息傳遞 指的是一個(gè)對(duì)象調(diào)用了另一個(gè)對(duì)象的方法(或者稱(chēng)為成員函數(shù))。

10)方法 也稱(chēng)為成員函數(shù),是指對(duì)象上的操作,作為類(lèi)聲明的一部分來(lái)定義。方法定義了可以對(duì)一個(gè)對(duì)象執(zhí)行那些操作。[1]


基本理論[ ]

一項(xiàng)由 Deborah J. Armstrong 進(jìn)行的長(zhǎng)達(dá)40年之久的計(jì)算機(jī)著作調(diào)查顯示出了一系列面向?qū)ο蟪绦蛟O(shè)計(jì)的基本理論。它們是:類(lèi)(Class)定義了一件事物的抽象特點(diǎn)。通常來(lái)說(shuō),類(lèi)定義了事物的屬性和它可以做到的(它的行為)。舉例來(lái)說(shuō),“狗”這個(gè)類(lèi)會(huì)包含狗的一切基礎(chǔ)特征,例如它的孕育、毛皮顏色和吠叫的能力。類(lèi)可以為程序提供模版和結(jié)構(gòu)。一個(gè)類(lèi)的方法和屬性被稱(chēng)為“成員”。

歷史[ ]

計(jì)算機(jī)科學(xué)中對(duì)象和實(shí)例概念的最早萌芽可以追溯到麻省理工學(xué)院的PDP-1系統(tǒng)。這一系統(tǒng)大概是最早的基于容量架構(gòu)(capability based architecture)的實(shí)際系統(tǒng)。另外1963年Ivan Sutherland的Sketchpad應(yīng)用中也蘊(yùn)含了同樣的思想。對(duì)象作為編程實(shí)體最早是于1960年代由Simula 67語(yǔ)言引入思維。Simula這一語(yǔ)言是奧利-約翰·達(dá)爾和克利斯登·奈加特在挪威奧斯陸計(jì)算機(jī)中心為模擬環(huán)境而設(shè)計(jì)的。(據(jù)說(shuō),他們是為了模擬船只而設(shè)計(jì)的這種語(yǔ)言,并且對(duì)不同船只間屬性的相互影響感興趣。他們將不同的船只歸納為不同的類(lèi),而每一個(gè)對(duì)象,基于它的類(lèi),可以定義它自己的屬性和行為。)這種辦法是分析式程序的最早概念體現(xiàn)。在分析式程序中,我們將真實(shí)世界的對(duì)象映射到抽象的對(duì)象,這叫做“模擬”。Simula不僅引入了“類(lèi)”的概念,還應(yīng)用了實(shí)例這一思想——這可能是這些概念的最早應(yīng)用。 20世紀(jì)70年代施樂(lè)PARC研究所發(fā)明的Smalltalk語(yǔ)言將面向?qū)ο蟪绦蛟O(shè)計(jì)的概念定義為,在基礎(chǔ)運(yùn)算中,對(duì)對(duì)象和消息的廣泛應(yīng)用。Smalltalk的創(chuàng)建者深受Simula 67的主要思想影響,但Smalltalk中的對(duì)象是完全動(dòng)態(tài)的——它們可以被創(chuàng)建、修改并銷(xiāo)毀,這與Simula中的靜態(tài)對(duì)象有所區(qū)別。此外,Smalltalk還引入了繼承性的思想,它因此一舉超越了不可創(chuàng)建實(shí)例的程序設(shè)計(jì)模型和不具備繼承性的Simula。 此外,Simula 67的思想亦被應(yīng)用在許多不同的語(yǔ)言,如Lisp、Pascal。 面向?qū)ο蟪绦蛟O(shè)計(jì)在80年代成為了一種主導(dǎo)思想,這主要應(yīng)歸功于C++——C語(yǔ)言的擴(kuò)充版。在圖形用戶(hù)界面(GUI)日漸崛起的情況下,面向?qū)ο蟪绦蛟O(shè)計(jì)很好地適應(yīng)了潮流。GUI和面向?qū)ο蟪绦蛟O(shè)計(jì)的緊密關(guān)聯(lián)在Mac OS X中可見(jiàn)一斑。Mac OS X是由Objective-C語(yǔ)言寫(xiě)成的,這一語(yǔ)言是一個(gè)仿Smalltalk的C語(yǔ)言擴(kuò)充版。面向?qū)ο蟪绦蛟O(shè)計(jì)的思想也使事件處理式的程序設(shè)計(jì)更加廣泛被應(yīng)用(雖然這一概念并非僅存在于面向?qū)ο蟪绦蛟O(shè)計(jì))。一種說(shuō)法是,GUI的引入極大地推動(dòng)了面向?qū)ο蟪绦蛟O(shè)計(jì)的發(fā)展。 蘇黎世聯(lián)邦理工學(xué)院的尼克勞斯·維爾特和他的同事們對(duì)抽象數(shù)據(jù)和模塊化程序設(shè)計(jì)進(jìn)行了研究。Modula-2將這些都包括了進(jìn)去,而Oberon則包括了一種特殊的面向?qū)ο蠓椒ā煌赟malltalk與C++。 面向?qū)ο蟮奶匦砸脖患尤肓水?dāng)時(shí)較為流行的語(yǔ)言:Ada、BASIC、Lisp、Fortran、Pascal以及種種。由于這些語(yǔ)言最初并沒(méi)有面向?qū)ο蟮脑O(shè)計(jì),故而這種糅合常常會(huì)導(dǎo)致兼容性和維護(hù)性的問(wèn)題。與之相反的是,“純正的”面向?qū)ο笳Z(yǔ)言卻缺乏一些程序員們賴(lài)以生存的特性。在這一大環(huán)境下,開(kāi)發(fā)新的語(yǔ)言成為了當(dāng)務(wù)之急。作為先行者,Eiffel成功地解決了這些問(wèn)題,并成為了當(dāng)時(shí)較受歡迎的語(yǔ)言。 在過(guò)去的幾年中,Java語(yǔ)言成為了廣為應(yīng)用的語(yǔ)言,除了它與C和C++語(yǔ)法上的近似性。Java的可移植性是它的成功中不可磨滅的一步,因?yàn)檫@一特性,已吸引了龐大的程序員群的投入。 近日,一些既支持面向?qū)ο蟪绦蛟O(shè)計(jì),又支持面向過(guò)程程序設(shè)計(jì)的語(yǔ)言悄然浮出水面。它們中的佼佼者有Python、Ruby等等. 正如面向過(guò)程程序設(shè)計(jì)使得結(jié)構(gòu)化程序設(shè)計(jì)的技術(shù)得以提升,現(xiàn)代的面向?qū)ο蟪绦蛟O(shè)計(jì)方法使得對(duì)設(shè)計(jì)模式的用途、契約式設(shè)計(jì)和建模語(yǔ)言(如UML)技術(shù)也得到了一定提升。

語(yǔ)言[ ]

一種語(yǔ)言要稱(chēng)為面向?qū)ο笳Z(yǔ)言,必須支持面向?qū)ο髱讉€(gè)主要的概念。根據(jù)支持程度的不同,通常所說(shuō)的面向?qū)ο笳Z(yǔ)言可以分成兩類(lèi):基于對(duì)象的語(yǔ)言和面向?qū)ο蟮恼Z(yǔ)言。

基于對(duì)象的語(yǔ)言[ ]

基于對(duì)象的語(yǔ)言?xún)H支持類(lèi)和對(duì)象,舉例來(lái)說(shuō),Ada就是一個(gè)典型的基于對(duì)象的語(yǔ)言,因?yàn)樗恢С掷^承、多態(tài),此外其他基于對(duì)象的語(yǔ)言還有Alphard、CLU、Euclid、Modula。

面向?qū)ο蟮恼Z(yǔ)言[ ]

面向?qū)ο蟮恼Z(yǔ)言支持的概念包括:類(lèi)與對(duì)象、繼承、多態(tài)。 面向?qū)ο蟮恼Z(yǔ)言中一部分是新發(fā)明的語(yǔ)言,如Smalltalk、Java,這些語(yǔ)言本身往往吸取了其他語(yǔ)言的精華,而又盡量剔除他們的不足,因此面向?qū)ο蟮奶卣魈貏e明顯,充滿(mǎn)了蓬勃的生機(jī);另外一些則是對(duì)現(xiàn)有的語(yǔ)言進(jìn)行改造,增加面向?qū)ο蟮奶卣餮莼鴣?lái)的。如由Pascal發(fā)展而來(lái)的Object Pascal,由C發(fā)展而來(lái)的Objective-C,C++ ,由Ada發(fā)展而來(lái)的Ada 95等,這些語(yǔ)言保留著對(duì)原有語(yǔ)言的兼容,并不是純粹的面向?qū)ο笳Z(yǔ)言,但由于其前身往往是有一定影響的語(yǔ)言,因此這些語(yǔ)言依然寶刀不老,在程序設(shè)計(jì)語(yǔ)言中占有十分重要的地位。


優(yōu)點(diǎn)[ ]

面向?qū)ο蟪霈F(xiàn)以前,結(jié)構(gòu)化程序設(shè)計(jì)是程序設(shè)計(jì)的主流,結(jié)構(gòu)化程序設(shè)計(jì)又稱(chēng)為面向過(guò)程的程序設(shè)計(jì)。在面向過(guò)程程序設(shè)計(jì)中,問(wèn)題被看作一系列需要完成的任務(wù),函數(shù)(在此泛指例程、函數(shù)、過(guò)程)用于完成這些任務(wù),解決問(wèn)題的焦點(diǎn)集中于函數(shù)。其中函數(shù)是面向過(guò)程的,即它關(guān)注如何根據(jù)規(guī)定的條件完成指定的任務(wù)。 在多函數(shù)程序中,許多重要的數(shù)據(jù)被放置在全局?jǐn)?shù)據(jù)區(qū),這樣它們可以被所有的函數(shù)訪(fǎng)問(wèn)。每個(gè)函數(shù)都可以具有它們自己的局部數(shù)據(jù)。 這種結(jié)構(gòu)很容易造成全局?jǐn)?shù)據(jù)在無(wú)意中被其他函數(shù)改動(dòng),因而程序的正確性不易保證。面向?qū)ο蟪绦蛟O(shè)計(jì)的出發(fā)點(diǎn)之一就是彌補(bǔ)面向過(guò)程程序設(shè)計(jì)中的一些缺點(diǎn):對(duì)象是程序的基本元素,它將數(shù)據(jù)和操作緊密地連結(jié)在一起,并保護(hù)數(shù)據(jù)不會(huì)被外界的函數(shù)意外地改變。 比較面向?qū)ο蟪绦蛟O(shè)計(jì)和面向過(guò)程程序設(shè)計(jì),還可以得到面向?qū)ο蟪绦蛟O(shè)計(jì)的其他優(yōu)點(diǎn): 1)數(shù)據(jù)抽象的概念可以在保持外部接口不變的情況下改變內(nèi)部實(shí)現(xiàn),從而減少甚至避免對(duì)外界的干擾; 2)通過(guò)繼承大幅減少冗余的代碼,并可以方便地?cái)U(kuò)展現(xiàn)有代碼,提高編碼效率,也減低了出錯(cuò)概率,降低軟件維護(hù)的難度; 3)結(jié)合面向?qū)ο蠓治?、面向?qū)ο笤O(shè)計(jì),允許將問(wèn)題域中的對(duì)象直接映射到程序中,減少軟件開(kāi)發(fā)過(guò)程中中間環(huán)節(jié)的轉(zhuǎn)換過(guò)程; 4)通過(guò)對(duì)對(duì)象的辨別、劃分可以將軟件系統(tǒng)分割為若干相對(duì)為獨(dú)立的部分,在一定程度上更便于控制軟件復(fù)雜度; 5)以對(duì)象為中心的設(shè)計(jì)可以幫助開(kāi)發(fā)人員從靜態(tài)(屬性)和動(dòng)態(tài)(方法)兩個(gè)方面把握問(wèn)題,從而更好地實(shí)現(xiàn)系統(tǒng); 6)通過(guò)對(duì)象的聚合、聯(lián)合可以在保證封裝與抽象的原則下實(shí)現(xiàn)對(duì)象在內(nèi)在結(jié)構(gòu)以及外在功能上的擴(kuò)充,從而實(shí)現(xiàn)對(duì)象由低到高的升級(jí)。


設(shè)計(jì)方法[ ]

在數(shù)據(jù)輸入模塊內(nèi)部設(shè)計(jì)中,采用面向?qū)ο蟮脑O(shè)計(jì)方法。[6]面向?qū)ο蟮幕靖拍钊缦拢?對(duì)象:對(duì)象是要研究的任何事物。從一本書(shū)到一家圖書(shū)館,單的整數(shù)到整數(shù)列龐大的數(shù)據(jù)庫(kù)、極其復(fù)雜的自動(dòng)化工廠(chǎng)、航天飛機(jī)都可看作對(duì)象,它不僅能表示有形的實(shí)體,也能表示無(wú)形的(抽象的)規(guī)則、計(jì)劃或事件。對(duì)象由數(shù)據(jù)(描述事物的屬性)和作用于數(shù)據(jù)的操作(體現(xiàn)事物的行為)構(gòu)成一獨(dú)立整體。從程序設(shè)計(jì)者來(lái)看,對(duì)象是一個(gè)程序模塊,從用戶(hù)來(lái)看,對(duì)象為他們提供所希望的行為。在對(duì)內(nèi)的操作通常稱(chēng)為方法。 類(lèi):類(lèi)是對(duì)象的模板。即類(lèi)是對(duì)一組有相同數(shù)據(jù)和相同操作的對(duì)象的定義,一個(gè)類(lèi)所包含的方法和數(shù)據(jù)描述一組對(duì)象的共同屬性和行為。類(lèi)是在對(duì)象之上的抽象,對(duì)象則是類(lèi)的具體化,是類(lèi)的實(shí)例。類(lèi)可有其子類(lèi),也可有其它類(lèi),形成類(lèi)層次結(jié)構(gòu)。 消息:消息是對(duì)象之間進(jìn)行通信的一種規(guī)格說(shuō)明。一般它由三部分組成:接收消息的對(duì)象、消息名及實(shí)際變?cè)?面向?qū)ο笾饕卣鳎?封裝性:封裝是一種信息隱蔽技術(shù),它體現(xiàn)于類(lèi)的說(shuō)明,是對(duì)象的重要特性。封裝使數(shù)據(jù)和加工該數(shù)據(jù)的方法(函數(shù))封裝為一個(gè)整體,以實(shí)現(xiàn)獨(dú)立性很強(qiáng)的模塊,使得用戶(hù)只能見(jiàn)到對(duì)象的外特性(對(duì)象能接受哪些消息,具有那些處理能力),而對(duì)象的內(nèi)特性(保存內(nèi)部狀態(tài)的私有數(shù)據(jù)和實(shí)現(xiàn)加工能力的算法)對(duì)用戶(hù)是隱蔽的。封裝的目的在于把對(duì)象的設(shè)計(jì)者和對(duì)象者的使用分開(kāi),使用者不必知曉行為實(shí)現(xiàn)的細(xì)節(jié),只須用設(shè)計(jì)者提供的消息來(lái)訪(fǎng)問(wèn)該對(duì)象。 繼承性:繼承性是子類(lèi)自動(dòng)共享父類(lèi)之間數(shù)據(jù)和方法的機(jī)制。它由類(lèi)的派生功能體現(xiàn)。一個(gè)類(lèi)直接繼承其它類(lèi)的全部描述,同時(shí)可修改和擴(kuò)充。繼承具有傳遞性。繼承分為單繼承(一個(gè)子類(lèi)只有一父類(lèi))和多重繼承(一個(gè)類(lèi)有多個(gè)父類(lèi))。類(lèi)的對(duì)象是各自封閉的,如果沒(méi)繼承性機(jī)制,則類(lèi)對(duì)象中數(shù)據(jù)、方法就會(huì)出現(xiàn)大量重復(fù)。繼承不僅支持系統(tǒng)的可重用性,而且還促進(jìn)系統(tǒng)的可擴(kuò)充性。 多態(tài)性:對(duì)象根據(jù)所接收的消息而做出動(dòng)作。同一消息為不同的對(duì)象接受時(shí)可產(chǎn)生完全不同的行動(dòng),這種現(xiàn)象稱(chēng)為多態(tài)性。利用多態(tài)性用戶(hù)可發(fā)送一個(gè)通用的信息,而將所有的實(shí)現(xiàn)細(xì)節(jié)都留給接受消息的對(duì)象自行決定,如是,同一消息即可調(diào)用不同的方法。例如:Print消息被發(fā)送給一圖或表時(shí)調(diào)用的打印方法與將同樣的Print消息發(fā)送給一正文文件而調(diào)用的打印方法會(huì)完全不同。多態(tài)性的實(shí)現(xiàn)受到繼承性的支持,利用類(lèi)繼承的層次關(guān)系,把具有通用功能的協(xié)議存放在類(lèi)層次中盡可能高的地方,而將實(shí)現(xiàn)這一功能的不同方法置于較低層次,這樣,在這些低層次上生成的對(duì)象就能給通用消息以不同的響應(yīng)。在OOPL中可通過(guò)在派生類(lèi)中重定義基類(lèi)函數(shù)(定義為重載函數(shù)或虛函數(shù))來(lái)實(shí)現(xiàn)多態(tài)性。 綜上可知,在面對(duì)對(duì)象方法中,對(duì)象和傳遞消息分別表現(xiàn)事物及事物間相互聯(lián)系的概念。類(lèi)和繼承是是適應(yīng)人們一般思維方式的描述范式。方法是允許作用于該類(lèi)對(duì)象上的各種操作。這種對(duì)象、類(lèi)、消息和方法的程序設(shè)計(jì)范式的基本點(diǎn)在于對(duì)象的封裝性和類(lèi)的繼承性。通過(guò)封裝能將對(duì)象的定義和對(duì)象的實(shí)現(xiàn)分開(kāi),通過(guò)繼承能體現(xiàn)類(lèi)與類(lèi)之間的關(guān)系,以及由此帶來(lái)的動(dòng)態(tài)聯(lián)編和實(shí)體的多態(tài)性,從而構(gòu)成了面向?qū)ο蟮幕咎卣鳌?面向?qū)ο笤O(shè)計(jì)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開(kāi)發(fā)過(guò)程中,指導(dǎo)開(kāi)發(fā)活動(dòng)的系統(tǒng)方法,是建立在“對(duì)象”概念基礎(chǔ)上的方法學(xué)。對(duì)象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實(shí)體有直接對(duì)應(yīng)關(guān)系,一個(gè)對(duì)象類(lèi)定義了具有相似性質(zhì)的一組對(duì)象。而每繼承性是對(duì)具有層次關(guān)系的類(lèi)的屬性和操作進(jìn)行共享的一種方式。所謂面向?qū)ο缶褪腔趯?duì)象概念,以對(duì)象為中心,以類(lèi)和繼承為構(gòu)造機(jī)制,來(lái)認(rèn)識(shí)、理解、刻畫(huà)客觀世界和設(shè)計(jì)、構(gòu)建相應(yīng)的軟件系統(tǒng)。。按照Bjarne STroustRUP的說(shuō)法,面向?qū)ο蟮木幊谭妒剑?l 決定你要的類(lèi); 2 給每個(gè)類(lèi)提供完整的一組操作; 3 明確地使用繼承來(lái)表現(xiàn)共同點(diǎn)。 由這個(gè)定義,我們可以看出:面向?qū)ο笤O(shè)計(jì)就是“根據(jù)需求決定所需的類(lèi)、類(lèi)的操作以及類(lèi)之間關(guān)聯(lián)的過(guò)程”。


特點(diǎn)[ ]

面向?qū)ο笤O(shè)計(jì)方法以對(duì)象為基礎(chǔ),利用特定的軟件工具直接完成從對(duì)象客體的描述到軟件結(jié)構(gòu)之間的轉(zhuǎn)換。這是面向?qū)ο笤O(shè)計(jì)方法最主要的特點(diǎn)和成就。面向?qū)ο笤O(shè)計(jì)方法的應(yīng)用解決了傳統(tǒng)結(jié)構(gòu)化開(kāi)發(fā)方法中客觀世界描述工具與軟件結(jié)構(gòu)的不一致性問(wèn)題,縮短了開(kāi)發(fā)周期,解決了從分析和設(shè)計(jì)到軟件模塊結(jié)構(gòu)之間多次轉(zhuǎn)換映射的繁雜過(guò)程,是一種很有發(fā)展前途的系統(tǒng)開(kāi)發(fā)方法。 但是同原型方法一樣, 面向?qū)ο笤O(shè)計(jì)方法需要一定的軟件基礎(chǔ)支持才可以應(yīng)用,另外在大型的MIS開(kāi)發(fā)中如果不經(jīng)自頂向下的整體劃分,而是一開(kāi)始就自底向上的采用面向?qū)ο笤O(shè)計(jì)方法開(kāi)發(fā)系統(tǒng),同樣也會(huì)造成系統(tǒng)結(jié)構(gòu)不合理、各部分關(guān)系失調(diào)等問(wèn)題。所以面向?qū)ο笤O(shè)計(jì)方法和結(jié)構(gòu)化方法目前仍是兩種在系統(tǒng)開(kāi)發(fā)領(lǐng)域相互依存的、不可替代的方法。


相關(guān)條目[ ]

參考來(lái)源[ ]