




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章面向?qū)ο蠹夹g(shù)概述面向?qū)ο蠹夹g(shù)是一種全新設(shè)計(jì)和構(gòu)造軟件的技術(shù),它使計(jì)算機(jī)解決問題的方式更符合人類的思維方式,更能直接地描述客觀世界,通過增加代碼的可重用性、可擴(kuò)充性和程序自動(dòng)生成功能來提高編程效率,并且大大減少軟件維護(hù)的開銷,已經(jīng)被越來越多的軟件設(shè)計(jì)人員所接受。希望通過本章的介紹,能從宏觀上了解面向?qū)ο蠹夹g(shù),有助于對具體實(shí)現(xiàn)的掌握。本章首先介紹面向?qū)ο蠹夹g(shù)的基本概念、基本特征,介紹了面向?qū)ο笈c面向過程程序設(shè)計(jì)的區(qū)別,然后介紹目前流行的幾種面向?qū)ο蟪绦蛟O(shè)計(jì)語言,特別強(qiáng)調(diào)C+對面向?qū)ο蠹夹g(shù)的支持及其發(fā)展現(xiàn)狀,其中還涉及到.NET技術(shù)。1.1 面向?qū)ο蠹夹g(shù)的基本概念面向?qū)ο蠹夹g(shù)是一種新的軟件技術(shù),其概念來源于程序設(shè)計(jì),從20世紀(jì)60年代提出面向?qū)ο蟮母拍?,到現(xiàn)在已發(fā)展成為一種比較成熟的編程思想,并且逐步成為目前軟件開發(fā)領(lǐng)域的主流技術(shù)。同時(shí),它不僅局限于程序設(shè)計(jì)方面,已經(jīng)成為軟件開發(fā)領(lǐng)域的一種方法論。它對信息科學(xué)、軟件工程、人工智能和認(rèn)知科學(xué)等都產(chǎn)生了重大影響,尤其在計(jì)算機(jī)科學(xué)與技術(shù)的各個(gè)方面影響深遠(yuǎn)。通過面向?qū)ο蠹夹g(shù),可以將客觀世界直接映射到面向?qū)ο蠼饪臻g,從而為軟件設(shè)計(jì)和系統(tǒng)開發(fā)帶來革命性影響。1.1.1 面向?qū)ο笈c面向過程的區(qū)別在面向?qū)ο蟪绦蛟O(shè)計(jì)(Object Oriented Programming,OOP)方法出現(xiàn)之前,程序員用面向過程的方法開發(fā)程序。面向過程的方法把密切相關(guān)、相互依賴的數(shù)據(jù)和對數(shù)據(jù)的操作相互分離,這種實(shí)質(zhì)上的依賴與形式上的分離使得大型程序不但難于編寫,而且難于調(diào)試和修改。在多人合作中,程序員之間很難讀懂對方的代碼,更談不上代碼的重用。由于現(xiàn)代應(yīng)用程序規(guī)模越來越大,對代碼的可重用性與易維護(hù)性的要求也相應(yīng)提高。面向?qū)ο蠹夹g(shù)便應(yīng)運(yùn)而生了。面向?qū)ο蠹夹g(shù)是一種以對象為基礎(chǔ),以事件或消息來驅(qū)動(dòng)對象執(zhí)行處理的程序設(shè)計(jì)技術(shù)。它以數(shù)據(jù)為中心而不是以功能為中心來描述系統(tǒng),數(shù)據(jù)相對于功能而言具有更強(qiáng)的穩(wěn)定性。它將數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,作為一個(gè)整體來處理,采用數(shù)據(jù)抽象和信息隱蔽技術(shù),將這個(gè)整體抽象成一種新的數(shù)據(jù)類型類,并且考慮不同類之間的聯(lián)系和類的重用性。類的集成度越高,就越適合大型應(yīng)用程序的開發(fā)。另一方面,面向?qū)ο蟪绦虻目刂屏鞒逃蛇\(yùn)行時(shí)各種事件的實(shí)際發(fā)生來觸發(fā),而不再由預(yù)定順序來決定,更符合實(shí)際。事件驅(qū)動(dòng)程序執(zhí)行圍繞消息的產(chǎn)生與處理,靠消息循環(huán)機(jī)制來實(shí)現(xiàn)。更重要的是,可以利用不斷擴(kuò)充的框架產(chǎn)品MFC(Microsoft Foundation Classes),在實(shí)際編程時(shí)可以采用搭積木的方式來組織程序,站在“巨人”肩上實(shí)現(xiàn)自己的愿望。面向?qū)ο蟮某绦蛟O(shè)計(jì)方法使得程序結(jié)構(gòu)清晰、簡單,提高了代碼的重用性,有效地減少了程序的維護(hù)量,提高了軟件的開發(fā)效率。例如,用面向?qū)ο蠹夹g(shù)來解決學(xué)生管理方面的問題。重點(diǎn)應(yīng)該放在學(xué)生上,要了解在管理工作中,學(xué)生的主要屬性,要對學(xué)生做些什么操作等等,并且把它們作為一個(gè)整體來對待,形成一個(gè)類,稱為學(xué)生類。作為其實(shí)例,可以建立許多具體的學(xué)生,而每一個(gè)具體的學(xué)生就是學(xué)生類的一個(gè)對象。學(xué)生類中的數(shù)據(jù)和操作可以提供給相應(yīng)的應(yīng)用程序共享,還可以在學(xué)生類的基礎(chǔ)上派生出大學(xué)生類、中學(xué)生類或小學(xué)生類等,實(shí)現(xiàn)代碼的高度重用。在結(jié)構(gòu)上,面向?qū)ο蟪绦蚺c面向過程程序有很大不同,面向?qū)ο蟪绦蛴深惖亩x和類的使用兩部分組成,在主程序中定義各對象并規(guī)定它們之間傳遞消息的規(guī)律,程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實(shí)現(xiàn)的,對象接到消息后,啟動(dòng)消息處理函數(shù)完成相應(yīng)的操作。類與對象是面向?qū)ο蟪绦蛟O(shè)計(jì)中最基本且最重要的兩個(gè)概念,有必要仔細(xì)理解和徹底掌握。它們將貫穿全書并且逐步深化。1.1.2 對象的概念與類的確定與人們認(rèn)識客觀世界的規(guī)律一樣,面向?qū)ο蠹夹g(shù)認(rèn)為客觀世界是由各種各樣的對象組成,每種對象都有各自的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,不同對象間的相互作用和聯(lián)系就構(gòu)成了各種不同的系統(tǒng),構(gòu)成了客觀世界。在面向?qū)ο蟪绦蛑?,客觀世界被描繪成一系列完全自治、封裝的對象,這些對象通過外部接口訪問其他對象??梢姡瑢ο笫墙M成一個(gè)系統(tǒng)的基本邏輯單元,是一個(gè)有組織形式的含有信息的實(shí)體。而類是創(chuàng)建對象的樣板,在整體上代表一組對象,設(shè)計(jì)類而不是設(shè)計(jì)對象可以避免重復(fù)編碼,類只需要編碼一次,就可以創(chuàng)建本類的所有對象。對象(Object)由屬性(Attribute)和行為(Action)兩部分組成。對象只有在具有屬性和行為的情況下才有意義,屬性是用來描述對象靜態(tài)特征的一個(gè)數(shù)據(jù)項(xiàng),行為是用來描述對象動(dòng)態(tài)特征的一個(gè)操作。對象是包含客觀事物特征的抽象實(shí)體,是屬性和行為的封裝體,在程序設(shè)計(jì)領(lǐng)域,可以用“對象數(shù)據(jù)十作用于這些數(shù)據(jù)上的操作”這一公式來表達(dá)。 類(Class)是具有相同屬性和行為的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個(gè)主要部分,類是對象集合的再抽象。類與對象的關(guān)系如同一個(gè)模具與用這個(gè)模具鑄造出來的鑄件之間的關(guān)系。類給出了屬于該類的全部對象的抽象定義,而對象則是符合這種定義的一個(gè)實(shí)體。所以,一個(gè)對象又稱作類的一個(gè)實(shí)例(Instance)。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類的確定與劃分非常重要,是軟件開發(fā)中關(guān)鍵的一步,劃分的結(jié)果直接影響到軟件系統(tǒng)的質(zhì)量。如果劃分得當(dāng),既有利于程序進(jìn)行擴(kuò)充,又可以提高代碼的可重用性。因此,在解決實(shí)際問題時(shí),需要正確地進(jìn)行分“類”。理解一個(gè)類究竟表示哪一組對象,如何把實(shí)際問題中的事物匯聚成一個(gè)個(gè)的“類”,而不是一組數(shù)據(jù)。這是面向?qū)ο蟪绦蛟O(shè)計(jì)中的一個(gè)難點(diǎn)。類的確定和劃分并沒有統(tǒng)一的標(biāo)準(zhǔn)和固定的方法,基本上依賴設(shè)計(jì)人員的經(jīng)驗(yàn)、技巧以及對實(shí)際問題的把握。但有一個(gè)基本原則:尋求一個(gè)大系統(tǒng)中事物的共性,將具有共性的系統(tǒng)成分確定為一個(gè)類。確定某事物是一個(gè)類的步驟包括:第一步,要判斷該事物是否有一個(gè)以上的實(shí)例,如果有,則它是一個(gè)類;第二步,要判斷類的實(shí)例中有沒有絕對的不同點(diǎn),如果沒有,則它是一個(gè)類。另外,還要知道什么事物不能被劃分為類。不能把一組函數(shù)組合在一起構(gòu)成類,也就是說,不能把一個(gè)面向過程的模塊直接變成類。類不是函數(shù)的集合!1.1.3 消息與事件的概念消息(Message)是描述事件發(fā)生的信息,事件(Event)由多個(gè)消息組成。消息是對象之間發(fā)出的行為請求。封裝使對象成為一個(gè)相對獨(dú)立的實(shí)體,而消息機(jī)制為它們提供了一個(gè)相互間動(dòng)態(tài)聯(lián)系的途徑,使它們的行為能互相配合,構(gòu)成一個(gè)有機(jī)的運(yùn)行系統(tǒng)。對象通過對外提供的行為在系統(tǒng)中發(fā)揮自己的作用,當(dāng)系統(tǒng)中的其他對象請求這個(gè)對 象執(zhí)行某個(gè)行為時(shí),就向這個(gè)對象發(fā)送一個(gè)消息,這個(gè)對象就響應(yīng)這個(gè)請求,完成指定的 行為。 程序的執(zhí)行取決于事件發(fā)生的順序,由順序產(chǎn)生的消息驅(qū)動(dòng),不必預(yù)先確定消息產(chǎn)生的順序,更符合客觀世界的實(shí)際。1.2 面向?qū)ο蠹夹g(shù)的基本特征面向?qū)ο蠹夹g(shù)強(qiáng)調(diào)在軟件開發(fā)過程中面向客觀世界或問題域中的事物,采用人類在認(rèn)識客觀世界的過程中普遍運(yùn)用的思維方法,直觀、自然地描述客觀世界中的有關(guān)事物。面向?qū)ο蠹夹g(shù)的基本特征主要有抽象性、封裝性、繼承性和多態(tài)性。1.2.1 抽象性把眾多的事物進(jìn)行歸納、分類是人們在認(rèn)識客觀世界時(shí)經(jīng)常采用的思維方法,“物以類聚,人以群分”就是分類的意思,分類所依據(jù)的原則是抽象。抽象(Abstract)就是忽略事物中與當(dāng)前目標(biāo)無關(guān)的非本質(zhì)特征,更充分地注意與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征。從而找出事物的共性,并把具有共性的事物劃為一類,得到一個(gè)抽象的概念。例如,在設(shè)計(jì)一個(gè)學(xué)生成績管理系統(tǒng)的過程中,考察學(xué)生張華這個(gè)對象時(shí),就只關(guān)心他的班級、學(xué)號、成績等,而忽略他的身高、體重等信息。因此,抽象性是對事物的抽象概括描述,實(shí)現(xiàn)了客觀世界向計(jì)算機(jī)世界的轉(zhuǎn)化。將客觀事物抽象成對象及類是比較難的過程,也是面向?qū)ο蠓椒ǖ牡谝徊健@?,將學(xué)生抽象成對象及類的過程如圖1-1所示。學(xué)生1學(xué)生2學(xué)生3學(xué)生4學(xué)生5屬性:服務(wù):班級查詢各屬性學(xué)號修改各屬性姓名打印各屬性專業(yè)成績學(xué)生類學(xué)生對象1學(xué)生對象2學(xué)生對象3學(xué)生對象4學(xué)生對象5抽象創(chuàng)建圖1-1 抽象過程示意圖1.2.2 封裝性封裝(Encapsulation)就是把對象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。圖1-1中的學(xué)生類也反映了封裝性。封裝有兩個(gè)含義:一是把對象的全部屬性和行為結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位。對象的屬性值(除了公有的屬性值)只能由這個(gè)對象的行為來讀取和修改;二是盡可能隱蔽對象的內(nèi)部細(xì)節(jié),對外形成一道屏障,與外部的聯(lián)系只能通過外部接口實(shí)現(xiàn)。封裝的信息隱蔽作用反映了事物的相對獨(dú)立性,可以只關(guān)心它對外所提供的接口,即能做什么,而不注意其內(nèi)部細(xì)節(jié),即怎么提供這些服務(wù)。例如,用陶瓷封裝起來的一塊集成電路芯片,其內(nèi)部電路是不可見的,而且使用者也不關(guān)心它的內(nèi)部結(jié)構(gòu),只關(guān)心芯片引腳的個(gè)數(shù)、引腳的電氣參數(shù)及引腳提供的功能,利用這些引腳,使用者將各種不同的芯片連接起來,就能組裝成具有一定功能的模塊。封裝的結(jié)果使對象以外的部分不能隨意存取對象的內(nèi)部屬性,從而有效地避免了外部錯(cuò)誤對它的影響,大大減小了查錯(cuò)和排錯(cuò)的難度。另一方面,當(dāng)對象內(nèi)部進(jìn)行修改時(shí),由于它只通過少量的外部接口對外提供服務(wù),因此同樣減小了內(nèi)部的修改對外部的影響。同時(shí),如果一味地強(qiáng)調(diào)封裝,則對象的任何屬性都不允許外部直接存取,要增加許多沒有其他意義,只負(fù)責(zé)讀或?qū)懙男袨?。這為編程工作增加了負(fù)擔(dān),增加了運(yùn)行開銷,并且使得程序顯得臃腫。為了避免這一點(diǎn),在語言的具體實(shí)現(xiàn)過程中應(yīng)使對象有不同程度的可見性,進(jìn)而與客觀世界的具體情況相符合。封裝機(jī)制將對象的使用者與設(shè)計(jì)者分開,使用者不必知道對象行為實(shí)現(xiàn)的細(xì)節(jié),只需要用設(shè)計(jì)者提供的外部接口讓對象去做。封裝的結(jié)果實(shí)際上隱蔽了復(fù)雜性,并提供了代碼重用性,從而降低了軟件開發(fā)的難度。1.2.3 繼承性 客觀事物既有共性,也有特性。如果只考慮事物的共性,而不考慮事物的特性,就不能反映出客觀世界中事物之間的層次關(guān)系,不能完整地、正確地對客觀世界進(jìn)行抽象描述。運(yùn)用抽象的原則就是舍棄對象的特性,提取其共性,從而得到適合一個(gè)對象集的類。如果在這個(gè)類的基礎(chǔ)上,再考慮抽象過程中被舍棄的一部分對象的特性,則可形成一個(gè)新的類,這個(gè)類具有前一個(gè)類的全部特征,是前一個(gè)類的子集,形成一種層次結(jié)構(gòu),即繼承結(jié)構(gòu),如圖1-2所示。中學(xué)生農(nóng) 民教 師助 教學(xué) 生教 授工 人小學(xué)生研究生講 師大學(xué)生人圖1-2 類的繼承結(jié)構(gòu)繼承(Inheritance)是一種聯(lián)結(jié)類與類的層次模型。繼承性是指特殊類的對象擁有其一般類的屬性和行為。繼承意味著“自動(dòng)地?fù)碛小?,即特殊類中不必重新定義已在一般類中定義過的屬性和行為,而它卻自動(dòng)地、隱含地?fù)碛衅湟话泐惖膶傩耘c行為。繼承允許和鼓勵(lì)類的重用,提供了一種明確表述共性的方法。一個(gè)特殊類既有自己新定義的屬性和行為,又有繼承下來的屬性和行為。盡管繼承下來的屬性和行為是隱式的,但無論在概念上還是在實(shí)際效果上,都是這個(gè)類的屬性和行為。當(dāng)這個(gè)特殊類又被它更下層的特殊類繼承時(shí),它繼承來的和自己定義的屬性和行為又被下一層的特殊類繼承下去。因此,繼承是傳遞的,體現(xiàn)了大自然中特殊與一般的關(guān)系。 在軟件開發(fā)過程中,繼承性實(shí)現(xiàn)了軟件模塊的可重用性、獨(dú)立性,縮短了開發(fā)周期,提高了軟件開發(fā)的效率,同時(shí)使軟件易于維護(hù)和修改。這是因?yàn)橐薷幕蛟黾幽骋粚傩曰蛐袨?,只需在相?yīng)的類中進(jìn)行改動(dòng),而它派生的所有類都自動(dòng)地、隱含地作了相應(yīng)的改動(dòng)。由此可見,繼承是對客觀世界的直接反映,通過類的繼承,能夠?qū)崿F(xiàn)對問題的深入抽象描述,反映出人類認(rèn)識問題的發(fā)展過程。1.2.4 多態(tài)性面向?qū)ο笤O(shè)計(jì)借鑒了客觀世界的多態(tài)性,體現(xiàn)在不同的對象收到相同的消息時(shí)產(chǎn)生多種不同的行為方式。例如,在一般類“幾何圖形”中定義了一個(gè)行為“繪圖”,但并不確定執(zhí)行時(shí)到底畫一個(gè)什么圖形。特殊類“橢圓”和“多邊形”都繼承了幾何圖形類的繪圖行為,但其功能卻不同,一個(gè)是要畫出一個(gè)橢圓,另一個(gè)是要畫出一個(gè)多邊形。這樣一個(gè)繪圖的消息發(fā)出后,橢圓、多邊形等類的對象接收到這個(gè)消息后各自執(zhí)行不同的繪圖函數(shù)。如圖1-3所示,這就是多態(tài)性的表現(xiàn)。類:Shape行為:Draw類:Ellipse行為:Draw類:Rectangle行為:Draw圖1-3 多態(tài)性示意圖具體來說,多態(tài)性(Polymorphism)是指類中同一函數(shù)名對應(yīng)多個(gè)具有相似功能的不同函數(shù),可以使用相同的調(diào)用方式來調(diào)用這些具有不同功能的同名函數(shù)。繼承性和多態(tài)性的結(jié)合,可以生成一系列雖類似但獨(dú)一無二的對象。由于繼承性,這些對象共享許多相似的特征;由于多態(tài)性,針對相同的消息,不同對象可以有獨(dú)特的表現(xiàn)方式,實(shí)現(xiàn)特性化的設(shè)計(jì)。上述面向?qū)ο蠹夹g(shù)四大特征的充分運(yùn)用,為提高軟件開發(fā)效率起著重要的作用,通過編寫可重用代碼、編寫可維護(hù)代碼、改代碼模塊、共享代碼等方法充分發(fā)揮其優(yōu)勢。面向?qū)ο蠹夹g(shù)可使程序員不必反復(fù)地編寫類似的程序,通過繼承機(jī)制進(jìn)行特殊類化的過程使得程序設(shè)計(jì)變成僅對特殊類與一般類的差異進(jìn)行編程的過程。當(dāng)高質(zhì)量的代碼可重復(fù)使用時(shí),復(fù)雜性就得以降低,效率則得到提高。不斷擴(kuò)充的MFC類庫和繼承機(jī)制能很大程度地提高開發(fā)人員建立、擴(kuò)充和維護(hù)系統(tǒng)的能力。面向?qū)ο蠹夹g(shù)將數(shù)據(jù)與操作封裝在一起,簡化了調(diào)用過程,方便了維護(hù),并減少了程序設(shè)計(jì)過程中出錯(cuò)的可能性。繼承性和封裝性使得應(yīng)用程序的修改帶來的影響更加局部化,而且類中的操作是易于修改的,因?yàn)樗鼈儽环旁谖┮坏牡胤?。因此,采用面向?qū)ο蠹夹g(shù)進(jìn)行程序設(shè)計(jì)具有開發(fā)時(shí)間短、效率高、可靠性好、所開發(fā)的程序更強(qiáng)壯等優(yōu)點(diǎn)。1.3 面向?qū)ο蟪绦蛟O(shè)計(jì)語言20世紀(jì)60年代,出現(xiàn)了最早的面向?qū)ο蟪绦蛟O(shè)計(jì)語言Simula67語言,具有了類和對象的概念,被公認(rèn)為是面向?qū)ο笳Z言的鼻祖。隨后又推出了純面向?qū)ο蟪绦蛟O(shè)計(jì)語言,如美國Xerox Palo Alto研究中心推出的Smalltalk,它完整地體現(xiàn)并進(jìn)一步豐富了面向?qū)ο蟮母拍?。進(jìn)而出現(xiàn)了混合型面向?qū)ο蟪绦蛟O(shè)計(jì)語言,如 C+,這類語言一般是在其他語言的基礎(chǔ)上開發(fā)出來的。還有與人工智能語言結(jié)合形成的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,如LOOPS、Flavors和CLOS。以及適合網(wǎng)絡(luò)應(yīng)用的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,如 Java語言等。下面簡要介紹幾種目前常用的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。1.3.1 混合型面向?qū)ο蟪绦蛟O(shè)計(jì)語言C+C+是ATT Bell實(shí)驗(yàn)室的Bjarne Stroustrup博士于20世紀(jì)80年代早期提出的,是迄今為止商業(yè)上最受歡迎的混合型面向?qū)ο蟪绦蛟O(shè)計(jì)語言。C+兼容了C語言并彌補(bǔ)了其缺陷,支持面向過程程序設(shè)計(jì)方法;增加了面向?qū)ο蟮哪芰?,支持面向?qū)ο蟪绦蛟O(shè)計(jì)方法。許多軟件公司都為C+設(shè)計(jì)編譯系統(tǒng)。如AT&T、Apple、Sun、Borland和Microsoft等,國內(nèi)最為流行的是Borland C+和 Visual C+。同時(shí),許多大學(xué)和公司也在為C+編寫各種不同的類庫,其中Borland公司的OWL(Object Windows Libray)和Microsoft公司的MFC(Microsoft Foundation Class)是優(yōu)秀的代表作,尤其是MFC在國內(nèi)外都得到廣泛應(yīng)用。C+被數(shù)以十萬計(jì)的程序員應(yīng)用到幾乎每個(gè)領(lǐng)域中。早期的應(yīng)用趨向于系統(tǒng)程序設(shè)計(jì),有幾個(gè)主要操作系統(tǒng)都是用C+寫出的:Compbell、Rozier、Hamilton、Berg、Parrington,更多系統(tǒng)用C+做了其中的關(guān)鍵部分。C+還用于寫設(shè)備驅(qū)動(dòng)程序,或者其他需要在實(shí)時(shí)約束下直接操作硬件的軟件。許多年來,美國的長途電話系統(tǒng)的核心控制依賴于C+。圖形學(xué)和用戶界面是使用C+最深入的領(lǐng)域,如Apple Macintosh或Windows的基本用戶界面都是C+程序。此外,一些最流行的支持UNIX中X的庫也是用C+寫的。C+能夠有效地用到各種各樣的應(yīng)用系統(tǒng)中,并且廣泛應(yīng)用于教學(xué)和研究。1.3.2 純面向?qū)ο蟪绦蛟O(shè)計(jì)語言JavaJava是由SUN公司的J.Gosling、B.Joe等人在20世紀(jì)90年代初開發(fā)出的一種純面向?qū)ο蟪绦蛟O(shè)計(jì)語言。Java是標(biāo)準(zhǔn)的又是大眾化的面向?qū)ο蟪绦蛟O(shè)計(jì)語言。首先,Java作為一種解釋型程序設(shè)計(jì)語言,具有簡單性、面向?qū)ο笮?、平臺無關(guān)性、可移植性、安全性、動(dòng)態(tài)性和健壯性,不依賴于機(jī)器結(jié)構(gòu),并且提供了并發(fā)的機(jī)制,具有很高的性能;其次,它最大限度地利用了網(wǎng)絡(luò),Java的應(yīng)用程序(Applet)可在網(wǎng)絡(luò)上傳輸,可以說是網(wǎng)絡(luò)世界的通用語言;另外,Java還提供了豐富類庫,使程序設(shè)計(jì)者可以方便地建立自己的系統(tǒng)。因此,Java具有強(qiáng)大的圖形、圖像、動(dòng)畫、音頻、視頻、多線程及網(wǎng)絡(luò)交互能力,使其在設(shè)計(jì)交互式、多媒體網(wǎng)頁和網(wǎng)絡(luò)應(yīng)用程序方面大顯身手。Java程序有兩種類型:一種是可在Web網(wǎng)頁上運(yùn)行的Applet,稱為小應(yīng)用程序??紤]到網(wǎng)絡(luò)環(huán)境、連接速度等原因,Applet一般都比較小,適合客戶端下載,很多網(wǎng)站利用Java開發(fā)出了商業(yè)網(wǎng)絡(luò)平臺,實(shí)現(xiàn)交互運(yùn)行,還有大量的Applet嵌入到網(wǎng)頁,使頁面變得更加活潑生動(dòng),但Applet不能單獨(dú)運(yùn)行,必須嵌入在HTML文件中,由Web瀏覽器執(zhí)行;另一種是Application,即應(yīng)用程序,可完成任何計(jì)算任務(wù),運(yùn)行時(shí)不必借助于Web瀏覽器,可單獨(dú)執(zhí)行。Java從C+發(fā)展而來。Java摒棄了C+中許多不合理的內(nèi)容,真正做到了面向?qū)ο蟆T贘ava中,一切都是對象。Java通過new運(yùn)算符創(chuàng)建對象,通過new運(yùn)算符返回的對象引用來操縱對象,而不是直接操作指針,這樣可以防止程序員的誤操作而導(dǎo)致的錯(cuò)誤。Java通過內(nèi)存垃圾收集機(jī)制,自動(dòng)管理內(nèi)存,不需要程序員顯式地釋放所分配的內(nèi)存,從而大大減輕了程序員的負(fù)擔(dān)。Java與C+都有類的概念,其最大的差異是C+支持多重繼承,而Java只支持單重繼承。Java拋棄多重繼承是為了使類之間的繼承關(guān)系更加清晰,不會造成任何混亂。1.3.3 可視化程序設(shè)計(jì)語言Visual Basic1991年Microsoft公司推出了基于BASIC語言的可視化面向?qū)ο箝_發(fā)工具Visual Basic,標(biāo)志著軟件設(shè)計(jì)和開發(fā)技術(shù)一個(gè)新時(shí)代的開始。在其帶動(dòng)下,相繼產(chǎn)生了Visual C+、Visual J+、Visual FoxPro以及Borland Delphi、Power Builder等眾多可視化開發(fā)工具,這些工具的共同特點(diǎn)是,提供了Windows界面下一些常用界面元素樣本。所謂可視化技術(shù)一般是指軟件開發(fā)階段的可視化和對計(jì)算機(jī)圖形技術(shù)和方法的應(yīng)用。這里是指前者,即可視化程序設(shè)計(jì),是應(yīng)用可視化開發(fā)工具開發(fā)圖形用戶界面(GUI)應(yīng)用程序的方法。軟件開發(fā)人員不需編寫大量代碼去描述界面元素的外觀和位置,而只需選定特定界面元素的樣本,并用鼠標(biāo)拖放到屏幕的窗體上,然后再通過不同的方法,編寫一些容易理解的事件處理程序,就可完成應(yīng)用軟件的設(shè)計(jì)。在 Visual Basic中,既繼承了BASIC語言所具有的語法簡單、容易學(xué)習(xí)、容易使用、數(shù)據(jù)處理能力強(qiáng)的特點(diǎn),又引入了面向?qū)ο?、事件?qū)動(dòng)的編程機(jī)制和可視化程序設(shè)計(jì)方法,大大降低了開發(fā)Windows應(yīng)用程序的難度,有效地提高了應(yīng)用程序開發(fā)的效率。同時(shí),Visual Basic還兼顧了高級編程技術(shù),不僅可以編寫功能強(qiáng)大的數(shù)據(jù)庫應(yīng)用程序、多媒體處理程序,還可以用來建立客戶與服務(wù)器應(yīng)用程序、通過Internet訪問遍及全球的分布式應(yīng)用程序、創(chuàng)建ActiveX控件以及與其他應(yīng)用程序緊密集成。它可以實(shí)現(xiàn)Windows的絕大部分高級功能,如多任務(wù)、多文檔界面(MDI)、對象的鏈接與嵌入(OLE)、動(dòng)態(tài)數(shù)據(jù)交換、動(dòng)態(tài)鏈接庫(DLL)子程序的調(diào)用等,尤其是動(dòng)態(tài)鏈接技術(shù),使得 Visual Basic可以調(diào)用 Windows系統(tǒng)的各種資源。但是,Visual Basic存在語法不嚴(yán)格、開發(fā)出的系統(tǒng)穩(wěn)定性較低的缺點(diǎn)。相對Visual C+語言來說,Visual Basic面向系統(tǒng)底層的編程能力有限,不適合開發(fā)系統(tǒng)監(jiān)控程序,不適合設(shè)備驅(qū)動(dòng)程序的開發(fā)。比較而言,Visual C+雖然學(xué)習(xí)起來難度較大,但開發(fā)出的系統(tǒng)穩(wěn)定性高,同時(shí)還能使用Visual C+做一些Windows系統(tǒng)下特殊應(yīng)用的開發(fā),如設(shè)備驅(qū)動(dòng)程序等。1.4 C+對面向?qū)ο蠹夹g(shù)的支持 C+作為一種面向?qū)ο蟪绦蛟O(shè)計(jì)語言,具有對象、類、消息等概念,同時(shí)支持面向?qū)ο蠹夹g(shù)的抽象性、封裝性、繼承性和多態(tài)性。1 C+對抽象性的支持C+抽象包括兩個(gè)方面,一是過程抽象,二是數(shù)據(jù)抽象。過程抽象是指任何一個(gè)明確定義功能的操作都可被使用者看作單個(gè)的實(shí)體看待,盡管這個(gè)操作實(shí)際上可能由一系列更低級的操作來完成。數(shù)據(jù)抽象定義了數(shù)據(jù)類型和對該類對象的操作,并限定了對象的值只能通過這些操作來修改和調(diào)用。 2.C+對封裝性的支持C+將數(shù)據(jù)和相關(guān)操作封裝在類中,同時(shí)可以用訪問權(quán)限控制對象內(nèi)部數(shù)據(jù)的訪問。 3.C+對繼承性的支持C+允許從一個(gè)或多個(gè)已經(jīng)定義的類中派生出新的類并繼承其數(shù)據(jù)和操作,同時(shí)在新類中可以重新定義或增加新的數(shù)據(jù)和操作,這樣建立起類的層次結(jié)構(gòu)。被繼承的類稱為基類或父類,派生的新類稱為派生類或子類。4.C+對多態(tài)性的支持C+多態(tài)分為編譯時(shí)多態(tài)和運(yùn)行時(shí)多態(tài)。編譯時(shí)多態(tài)是指在程序的編譯階段由編譯系統(tǒng)根據(jù)操作數(shù)確定需要調(diào)用哪個(gè)同名的函數(shù);運(yùn)行時(shí)多態(tài)是指在程序的運(yùn)行階段才根據(jù)產(chǎn)生的信息確定需要調(diào)用哪個(gè)同名的函數(shù)。調(diào)用不同的函數(shù)就意味著執(zhí)行不同的處理。在C+中,對編譯時(shí)多態(tài)的支持是通過函數(shù)重載和運(yùn)算符重載實(shí)現(xiàn)的;對運(yùn)行時(shí)多態(tài)的支持是通過繼承和虛函數(shù)來實(shí)現(xiàn)的。1.5 Visual C+的發(fā)展隨著C+逐漸成為ANSI標(biāo)準(zhǔn),便迅速成為程序員最廣泛使用的工具,其開發(fā)環(huán)境也隨之不斷地推出。Visual C+從1.0發(fā)展到6.0等版本,軟件系統(tǒng)逐漸龐大,功能日益完善。1.5.1 Visual C+ 6.01986年Borland公司開發(fā)了Turbo C+,而后又推出了 Borland C+。Microsoft公司于20世紀(jì)80年代中期在 Microsoft C 6.0的基礎(chǔ)上開發(fā)了Microsoft C/C+ 7.0,同時(shí)引進(jìn)了類庫MFC 1.0版本,完善了源代碼。這些版本都是依賴于DOS環(huán)境,或在Windows下的DOS模式下運(yùn)行。隨后Microsoft公司推出了Microsoft C/C+ 8.0,即 Visual C+1.0版本,它是Microsoft公司推出的第一個(gè)真正基于 Windows環(huán)境下的可視化集成開發(fā)環(huán)境,將編輯、編譯、連接和運(yùn)行集成為一體。由于Internet的流行,在4.0版本中,Visual C+引進(jìn)了為Internet編程而設(shè)計(jì)的新類庫。5.0版本也增加了一些新類,但注意力更多地集中在改善產(chǎn)品的界面上,以提供一個(gè)更好的在線幫助系統(tǒng)、更高級的宏能力和對在開發(fā)者組內(nèi)進(jìn)行類和其他代碼共享的支持。6.0版本在功能上做了進(jìn)一步的改進(jìn)。Visual C+ 一直是用于創(chuàng)建高性能的Windows和Web應(yīng)用程序與Web服務(wù)的最佳語言。Microsoft公司自喻Visual C+是所有開發(fā)語言及工具中的“旗艦”。Visual C+不僅是C+語言的集成開發(fā)環(huán)境,而且與Win32緊密相連,利用Visual C+可以完成各種各樣的應(yīng)用程序的開發(fā),從底層軟件直到上層直接面向用戶的軟件,而且Visual C+強(qiáng)大的調(diào)試功能也為大型應(yīng)用程序的開發(fā)提供了有效的排錯(cuò)手段。1.5.2 Visual C+.NETVisual C+.NET是Microsoft的新一代Visual C+語言。2000年6月22日,Microsoft公司正式推出了Microsoft.NET(以下簡稱.NET),使Microsoft公司現(xiàn)有的軟件在Web時(shí)代不僅適用于傳統(tǒng)的PC,而且也能夠滿足新設(shè)備的需要,諸如蜂窩電話以及個(gè)人數(shù)字助理(Personal Digital Assistant,PDA)等。1.NET簡介 .NET是一個(gè)開發(fā)平臺,它定義了一種公用語言子集(Common Language Subset,CLS),這是一種為符合其規(guī)范的語言與類庫之間提供無縫集成的混合語言。.NET統(tǒng)一了編程類庫,提供了對下一代網(wǎng)絡(luò)通信標(biāo)準(zhǔn)可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)的完全支持,使應(yīng)用程序的開發(fā)變得更容易、更簡單。Microsoft公司在其軟件中添加了手寫和語音識別的功能,讓人們能夠與計(jì)算機(jī)進(jìn)行更好地交流。與Microsoft的其他產(chǎn)品一樣,.NET與Windows平臺緊密集成,其運(yùn)行庫已經(jīng)與操作系統(tǒng)融合一體。 .NET是一種面向網(wǎng)絡(luò)、支持各種用戶終端的開發(fā)平臺。Microsoft公司的宏偉目標(biāo)是讓Microsoft.NET徹底改變軟件的開發(fā)方式、發(fā)行方式、使用方式等等,并且面向所有開發(fā)商與運(yùn)營商。.NET的核心內(nèi)容之一就是要搭建第三代Internet平臺,這個(gè)網(wǎng)絡(luò)平臺將解決網(wǎng)站之間的協(xié)同合作問題,從而最大限度地獲取信息。在.NET平臺上,不同網(wǎng)站之間通過相關(guān)的協(xié)定聯(lián)系在一起,網(wǎng)站之間自動(dòng)交流,協(xié)同工作,提供最全面的服務(wù)??傊?NET戰(zhàn)略是一場軟件革命。.NET為使用與開發(fā)人員提供了功能強(qiáng)大、種類豐富的管理與開發(fā)工具,同時(shí)這些工具也是.NET框架提供的服務(wù),.NET平臺提供了大量的工具和服務(wù),能夠最大限度地發(fā)掘和使用計(jì)算及通信能力。其中,Visual Studio.NET是.NET的核心開發(fā)工具,包括了Microsoft公司提供的各種開發(fā)語言,其中有Visual C+.NET 和Visual C#等。2.C#與.NET當(dāng)Microsoft公司推出組件對象模型(Component Object Model,COM),通過將組件改變?yōu)橥ㄓ谩⒓尚偷臉?gòu)件,開發(fā)人員逐漸地從過去的繁雜編程事務(wù)中解脫出來,可以選擇自己最得心應(yīng)手的編程語言進(jìn)行編程。然而,軟件組件與應(yīng)用程序之間的結(jié)合仍然是松散的,不同的編程語言與開發(fā)平臺限制了模塊間的互用性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣告設(shè)計(jì)專業(yè)必修課程
- 巴楚縣2024年數(shù)學(xué)三上期末學(xué)業(yè)水平測試模擬試題含解析
- 首飾店面設(shè)計(jì)調(diào)研報(bào)告
- 面館設(shè)計(jì)方案
- 2025年工程項(xiàng)目管理新課程試題及答案
- 酒店婚宴服務(wù)預(yù)定及合同條款
- 物流與供應(yīng)鏈管理案例分析練習(xí)
- 工程項(xiàng)目風(fēng)險(xiǎn)管理案例試題與答案
- 食品加工企業(yè)生產(chǎn)管理手冊
- 水利水電工程資金管理試題及答案
- 汽車維修總體服務(wù)方案
- 兒童骨折微創(chuàng)手術(shù)
- 2025屆“新課程標(biāo)準(zhǔn)”下的中考道德與法治復(fù)習(xí)策略 課件
- T-CTTS 0019-2023 數(shù)字化實(shí)驗(yàn)室等級評價(jià)規(guī)范
- 保溫安全生產(chǎn)管理制度
- 2023年中國鐵路沈陽局集團(tuán)有限公司招聘高校畢業(yè)生考試真題
- 戊酸二氟可龍乳膏-臨床用藥解讀
- 2024年臨期食品創(chuàng)新創(chuàng)業(yè)計(jì)劃書
- 2023鋼膜結(jié)構(gòu)停車棚施工合同協(xié)議書
- 電力行業(yè)安全檢查表(文檔-)(正式版)
- 小學(xué)生古詩詞知識競賽題(附答案)
評論
0/150
提交評論