欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
面向對象

面向對象(Object Oriented,OO)是當前計算機界關(guān)心的重點(diǎn),它是90年代軟件開(kāi)發(fā)方法的主流。面向對象的概念和應用已超越了程序設計軟件開(kāi)發(fā),擴展到很寬的范圍。如數據庫系統、交互式界面、應用結構、應用平臺、分布式系統、網(wǎng)絡(luò )管理結構、CAD技術(shù)、人工智能等領(lǐng)域。

      談到面向對象,這方面的文章非常多。但是,明確地給出對象的定義或說(shuō)明對象的定義的非常少——至少我現在還沒(méi)有發(fā)現。其初,“面向對象”是專(zhuān)指在程序設計中采用封裝、繼承、抽象等設計方法??墒?,這個(gè)定義顯然不能再適合現在情況。面向對象的思想已經(jīng)涉及到軟件開(kāi)發(fā)的各個(gè)方面。如,面向對象的分析(OOA,Object Oriented Analysis),面向對象的設計(OOD,Object Oriented Design)、以及我們經(jīng)常說(shuō)的面向對象的編程實(shí)現(OOP,Object Oriented Programming)。許多有關(guān)面向對象的文章都只是講述在面向對象的開(kāi)發(fā)中所需要注意的問(wèn)題或所采用的比較好的設計方法??催@些文章只有真正懂得什么是對象,什么是面向對象,才能最大程度地對自己有所裨益。這一點(diǎn),恐怕對初學(xué)者甚至是從事相關(guān)工作多年的人員也會(huì )對它們的概念模糊不清。

 

      面向對象是當前計算機界關(guān)心的重點(diǎn),它是90年代軟件開(kāi)發(fā)方法的主流。面向對象的概念和應用已超越了程序設計和軟件開(kāi)發(fā),擴展到很寬的范圍。如數據庫系統、交互式界面、應用結構、應用平臺、分布式系統、網(wǎng)絡(luò )管理結構、CAD技術(shù)、人工智能等領(lǐng)域。

一、傳統開(kāi)發(fā)方法存在問(wèn)題

      1.軟件重用性差
      重用性是指同一事物不經(jīng)修改或稍加修改就可多次重復使用的性質(zhì)。軟件重用性是軟件工程追求的目標之一。

      2.軟件可維護性差
      軟件工程強調軟件的可維護性,強調文檔資料的重要性,規定最終的軟件產(chǎn)品應該由完整、一致的配置成分組成。在軟件開(kāi)發(fā)過(guò)程中,始終強調軟件的可讀性、可修改性和可測試性是軟件的重要的質(zhì)量指標。實(shí)踐證明,用傳統方法開(kāi)發(fā)出來(lái)的軟件,維護時(shí)其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。

      3.開(kāi)發(fā)出的軟件不能滿(mǎn)足用戶(hù)需要
      用傳統的結構化方法開(kāi)發(fā)大型軟件系統涉及各種不同領(lǐng)域的知識,在開(kāi)發(fā)需求模糊或需求動(dòng)態(tài)變化的系統時(shí),所開(kāi)發(fā)出的軟件系統往往不能真正滿(mǎn)足用戶(hù)的需要。

      用結構化方法開(kāi)發(fā)的軟件,其穩定性、可修改性和可重用性都比較差,這是因為結構化方法的本質(zhì)是功能分解,從代表目標系統整體功能的單個(gè)處理著(zhù)手,自頂向下不斷把復雜的處理分解為子處理,這樣一層一層的分解下去,直到僅剩下若干個(gè)容易實(shí)現的子處理功能為止,然后用相應的工具來(lái)描述各個(gè)最低層的處理。因此,結構化方法是圍繞實(shí)現處理功能的“過(guò)程”來(lái)構造系統的。然而,用戶(hù)需求的變化大部分是針對功能的,因此,這種變化對于基于過(guò)程的設計來(lái)說(shuō)是災難性的。用這種方法設計出來(lái)的系統結構常常是不穩定的 ,用戶(hù)需求的變化往往造成系統結構的較大變化,從而需要花費很大代價(jià)才能實(shí)現這種變化。

二、面向對象的基本概念

      (1)對象。
      對象是人們要進(jìn)行研究的任何事物,從最簡(jiǎn)單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。

      (2)對象的狀態(tài)和行為。
      對象具有狀態(tài),一個(gè)對象用數據值來(lái)描述它的狀態(tài)。
      對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。
      對象實(shí)現了數據和操作的結合,使數據和操作封裝于對象的統一體中

      (3)類(lèi)。
      具有相同或相似性質(zhì)的對象的抽象就是類(lèi)。因此,對象的抽象是類(lèi),類(lèi)的具體化就是對象,也可以說(shuō)類(lèi)的實(shí)例是對象。
      類(lèi)具有屬性,它是對象的狀態(tài)的抽象,用數據結構來(lái)描述類(lèi)的屬性。
      類(lèi)具有操作,它是對象的行為的抽象,用操作名和實(shí)現該操作的方法來(lái)描述。

      (4)類(lèi)的結構。
      在客觀(guān)世界中有若干類(lèi),這些類(lèi)之間有一定的結構關(guān)系。通常有兩種主要的結構關(guān)系,即一般--具體結構關(guān)系,整體--部分結構關(guān)系。

      ①一般——具體結構稱(chēng)為分類(lèi)結構,也可以說(shuō)是“或”關(guān)系,或者是“is a”關(guān)系。
      ②整體——部分結構稱(chēng)為組裝結構,它們之間的關(guān)系是一種“與”關(guān)系,或者是“has a”關(guān)系。

      (5)消息和方法。
      對象之間進(jìn)行通信的結構叫做消息。在對象的操作中,當一個(gè)消息發(fā)送給某個(gè)對象時(shí),消息包含接收對象去執行某種操作的信息。發(fā)送一條消息至少要包括說(shuō)明接受消息的對象名、發(fā)送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說(shuō)明,參數可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。

      類(lèi)中操作的實(shí)現過(guò)程叫做方法,一個(gè)方法有方法名、參數、方法體。消息傳遞如圖10-1所示。


二、面向對象的特征

      (1)對象唯一性。
      每個(gè)對象都有自身唯一的標識,通過(guò)這種標識,可找到相應的對象。在對象的整個(gè)生命期中,它的標識都不改變,不同的對象不能有相同的標識。

      (2)分類(lèi)性。
      分類(lèi)性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類(lèi)。一個(gè)類(lèi)就是這樣一種抽象,它反映了與應用有關(guān)的重要性質(zhì),而忽略其他一些無(wú)關(guān)內容。任何類(lèi)的劃分都是主觀(guān)的,但必須與具體的應用有關(guān)。

      (3)繼承性。
      繼承性是子類(lèi)自動(dòng)共享父類(lèi)數據結構和方法的機制,這是類(lèi)之間的一種關(guān)系。在定義和實(shí)現一個(gè)類(lèi)的時(shí)候,可以在一個(gè)已經(jīng)存在的類(lèi)的基礎之上來(lái)進(jìn)行,把這個(gè)已經(jīng)存在的類(lèi)所定義的內容作為自己的內容,并加入若干新的內容。

      繼承性是面向對象程序設計語(yǔ)言不同于其它語(yǔ)言的最重要的特點(diǎn),是其他語(yǔ)言所沒(méi)有的。

      在類(lèi)層次中,子類(lèi)只繼承一個(gè)父類(lèi)的數據結構和方法,則稱(chēng)為單重繼承。
      在類(lèi)層次中,子類(lèi)繼承了多個(gè)父類(lèi)的數據結構和方法,則稱(chēng)為多重繼承。
      在軟件開(kāi)發(fā)中,類(lèi)的繼承性使所建立的軟件具有開(kāi)放性、可擴充性,這是信息組織與分類(lèi)的行之有效的方法,它簡(jiǎn)化了對象、類(lèi)的創(chuàng )建工作量,增加了代碼的可重性。
      采用繼承性,提供了類(lèi)的規范的等級結構。通過(guò)類(lèi)的繼承關(guān)系,使公共的特性能夠共享,提高了軟件的重用性。

      (4)多態(tài)性(多形性)
      多態(tài)性使指相同的操作或函數、過(guò)程可作用于多種類(lèi)型的對象上并獲得不同的結果。不同的對象,收到同一消息可以產(chǎn)生不同的結果,這種現象稱(chēng)為多態(tài)性。
      多態(tài)性允許每個(gè)對象以適合自身的方式去響應共同的消息。
      多態(tài)性增強了軟件的靈活性和重用性。

三、面向對象的要素

      (1)抽象。
      抽象是指強調實(shí)體的本質(zhì)、內在的屬性。在系統開(kāi)發(fā)中,抽象指的是在決定如何實(shí)現對象之前的對象的意義和行為。使用抽象可以盡可能避免過(guò)早考慮一些細節。

      類(lèi)實(shí)現了對象的數據(即狀態(tài))和行為的抽象。
 
      (2)封裝性(信息隱藏)。
      封裝性是保證軟件部件具有優(yōu)良的模塊性的基礎。
      面向對象的類(lèi)是封裝良好的模塊,類(lèi)定義將其說(shuō)明(用戶(hù)可見(jiàn)的外部接口)與實(shí)現(用戶(hù)不可見(jiàn)的內部實(shí)現)顯式地分開(kāi),其內部實(shí)現按其具體定義的作用域提供保護。
      對象是封裝的最基本單位。封裝防止了程序相互依賴(lài)性而帶來(lái)的變動(dòng)影響。面向對象的封裝比傳統語(yǔ)言的封裝更為清晰、更為有力。

      (3)共享性
      面向對象技術(shù)在不同級別上促進(jìn)了共享
      同一類(lèi)中的共享。同一類(lèi)中的對象有著(zhù)相同數據結構。這些對象之間是結構、行為特征的共享關(guān)系。
      在同一應用中共享。在同一應用的類(lèi)層次結構中,存在繼承關(guān)系的各相似子類(lèi)中,存在數據結構和行為的繼承,使各相似子類(lèi)共享共同的結構和行為。使用繼承來(lái)實(shí)現代碼的共享,這也是面向對象的主要優(yōu)點(diǎn)之一。
      在不同應用中共享。面向對象不僅允許在同一應用中共享信息,而且為未來(lái)目標的可重用設計準備了條件。通過(guò)類(lèi)庫這種機制和結構來(lái)實(shí)現不同應用中的信息共享。

      4.強調對象結構而不是程序結構

四、面向對象的開(kāi)發(fā)方法

      目前,面向對象開(kāi)發(fā)方法的研究已日趨成熟,國際上已有不少面向對象產(chǎn)品出現。面向對象開(kāi)發(fā)方法有Coad方法、Booch方法和OMT方法等。

      1.Booch方法

      Booch最先描述了面向對象的軟件開(kāi)發(fā)方法的基礎問(wèn)題,指出面向對象開(kāi)發(fā)是一種根本不同于傳統的功能分解的設計方法。面向對象的軟件分解更接近人對客觀(guān)事務(wù)的理解,而功能分解只通過(guò)問(wèn)題空間的轉換來(lái)獲得。

      2.Coad方法

      Coad方法是1989年Coad和Yourdon提出的面向對象開(kāi)發(fā)方法。該方法的主要優(yōu)點(diǎn)是通過(guò)多年來(lái)大系統開(kāi)發(fā)的經(jīng)驗與面向對象概念的有機結合,在對象、結構、屬性和操作的認定方面,提出了一套系統的原則。該方法完成了從需求角度進(jìn)一步進(jìn)行類(lèi)和類(lèi)層次結構的認定。盡管Coad方法沒(méi)有引入類(lèi)和類(lèi)層次結構的術(shù)語(yǔ),但事實(shí)上已經(jīng)在分類(lèi)結構、屬性、操作、消息關(guān)聯(lián)等概念中體現了類(lèi)和類(lèi)層次結構的特征。

      3.OMT方法

      OMT方法是1991年由James Rumbaugh等5人提出來(lái)的,其經(jīng)典著(zhù)作為“面向對象的建模與設計”。

      該方法是一種新興的面向對象的開(kāi)發(fā)方法,開(kāi)發(fā)工作的基礎是對真實(shí)世界的對象建模,然后圍繞這些對象使用分析模型來(lái)進(jìn)行獨立于語(yǔ)言的設計,面向對象的建模和設計促進(jìn)了對需求的理解,有利于開(kāi)發(fā)得更清晰、更容易維護的軟件系統。該方法為大多數應用領(lǐng)域的軟件開(kāi)發(fā)提供了一種實(shí)際的、高效的保證,努力尋求一種問(wèn)題求解的實(shí)際方法。

      4.UML(Unified Modeling Language)語(yǔ)言

      軟件工程領(lǐng)域在1995年~1997年取得了前所未有的進(jìn)展,其成果超過(guò)軟件工程領(lǐng)域過(guò)去15年的成就總和,其中最重要的成果之一就是統一建模語(yǔ)言(UML)的出現。UML將是面向對象技術(shù)領(lǐng)域內占主導地位的標準建模語(yǔ)言。
UML不僅統一了Booch方法、OMT方法、OOSE方法的表示方法,而且對其作了進(jìn)一步的發(fā)展,最終統一為大眾接受的標準建模語(yǔ)言。UML是一種定義良好、易于表達、功能強大且普遍適用的建模語(yǔ)言。它融入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向對象的分析與設計,還支持從需求分析開(kāi)始的軟件開(kāi)發(fā)全過(guò)程。

五、面向對象的模型

 ·對象模型

      對象模型表示了靜態(tài)的、結構化的系統數據性質(zhì),描述了系統的靜態(tài)結構,它是從客觀(guān)世界實(shí)體的對象關(guān)系角度來(lái)描述,表現了對象的相互關(guān)系。該模型主要關(guān)心系統中對象的結構、屬性和操作,它是分析階段三個(gè)模型的核心,是其他兩個(gè)模型的框架。

      1.對象和類(lèi)

      (1) 對象。
      對象建模的目的就是描述對象。

      (2) 類(lèi)。
      通過(guò)將對象抽象成類(lèi),我們可以使問(wèn)題抽象化,抽象增強了模型的歸納能力。

      (3) 屬性。
      屬性指的是類(lèi)中對象所具有的性質(zhì)(數據值)。

      (4) 操作和方法。

      操作是類(lèi)中對象所使用的一種功能或變換。類(lèi)中的各對象可以共享操作,每個(gè)操作都有一個(gè)目標對象作為其隱含參數。
  方法是類(lèi)的操作的實(shí)現步驟。

      2.關(guān)聯(lián)和鏈
      關(guān)聯(lián)是建立類(lèi)之間關(guān)系的一種手段,而鏈則是建立對象之間關(guān)系的一種手段。

      (1) 關(guān)聯(lián)和鏈的含義。
      鏈表示對象間的物理與概念聯(lián)結,關(guān)聯(lián)表示類(lèi)之間的一種關(guān)系,鏈是關(guān)聯(lián)的實(shí)例,關(guān)聯(lián)是鏈的抽象。

      (2) 角色。
      角色說(shuō)明類(lèi)在關(guān)聯(lián)中的作用,它位于關(guān)聯(lián)的端點(diǎn)。

      (3) 受限關(guān)聯(lián)。
      受限關(guān)聯(lián)由兩個(gè)類(lèi)及一個(gè)限定詞組成,限定詞是一種特定的屬性,用來(lái)有效的減少關(guān)聯(lián)的重數,限定詞在關(guān)聯(lián)的終端對象集中說(shuō)明。
      限定提高了語(yǔ)義的精確性,增強了查詢(xún)能力,在現實(shí)世界中,常常出現限定詞。

      (4) 關(guān)聯(lián)的多重性。
      關(guān)聯(lián)的多重性是指類(lèi)中有多少個(gè)對象與關(guān)聯(lián)的類(lèi)的一個(gè)對象相關(guān)。重數常描述為“一”或“多”。
      圖10-8表示了各種關(guān)聯(lián)的重數。小實(shí)心圓表示“多個(gè)”,從零到多。小空心圓表示零或一。沒(méi)有符號表示的是一對一關(guān)聯(lián)。

      3.類(lèi)的層次結構
      (1) 聚集關(guān)系。
      聚集是一種“整體-部分”關(guān)系。在這種關(guān)系中,有整體類(lèi)和部分類(lèi)之分。聚集最重要的性質(zhì)是傳遞性,也具有逆對稱(chēng)性。


      聚集可以有不同層次,可以把不同分類(lèi)聚集起來(lái)得到一顆簡(jiǎn)單的聚集樹(shù),聚集樹(shù)是一種簡(jiǎn)單表示,比畫(huà)很多線(xiàn)來(lái)將部分類(lèi)聯(lián)系起來(lái)簡(jiǎn)單得多,對象模型應該容易地反映各級層次,圖10-10表示一個(gè)關(guān)于微機的多極聚集。

       (2)一般化關(guān)系。
      一般化關(guān)系是在保留對象差異的同時(shí)共享對象相似性的一種高度抽象方式。它是“一般---具體”的關(guān)系。一般化類(lèi)稱(chēng)為你類(lèi),具體類(lèi)又能稱(chēng)為子類(lèi),各子類(lèi)繼承了交類(lèi)的性質(zhì),而各子類(lèi)的一些共同性質(zhì)和操作又歸納到你類(lèi)中。因此,一般化關(guān)系和繼承是同時(shí)存在的。一般化關(guān)系的符號表示是在類(lèi)關(guān)聯(lián)的連線(xiàn)上加一個(gè)小三角形,如圖10-11

      4.對象模型
      (1)模板。模板是類(lèi)、關(guān)聯(lián)、一般化結構的邏輯組成。
      (2)對象模型。

      對象模型是由一個(gè)或若干個(gè)模板組成。模板將模型分為若干個(gè)便于管理的子塊,在整個(gè)對象模型和類(lèi)及關(guān)聯(lián)的構造塊之間,模板提供了一種集成的中間單元,模板中的類(lèi)名及關(guān)聯(lián)名是唯一的。

·動(dòng)態(tài)模型

      動(dòng)態(tài)模型是與時(shí)間和變化有關(guān)的系統性質(zhì)。該模型描述了系統的控制結構,它表示了瞬間的、行為化的系統控制
性質(zhì),它關(guān)心的是系統的控制,操作的執行順序,它表示從對象的事件和狀態(tài)的角度出發(fā),表現了對象的相互行為。
該模型描述的系統屬性是觸發(fā)事件、事件序列、狀態(tài)、事件與狀態(tài)的組織。使用狀態(tài)圖作為描述工具。它涉及到事件、狀態(tài)、操作等重要概念。
       1.事件
      事件是指定時(shí)刻發(fā)生的某件事。

       2.狀態(tài)
       狀態(tài)是對象屬性值的抽象。對象的屬性值按照影響對象顯著(zhù)行為的性質(zhì)將其歸并到一個(gè)狀態(tài)中去。狀態(tài)指明了對象
對輸入事件的響應。

      3.狀態(tài)圖

      狀態(tài)圖是一個(gè)標準的計算機概念,他是有限自動(dòng)機的圖形表示,這里把狀態(tài)圖作為建立動(dòng)態(tài)模型的圖形工具。
      狀態(tài)圖反映了狀態(tài)與事件的關(guān)系。當接收一事件時(shí),下一狀態(tài)就取決于當前狀態(tài)和所接收的該事件,由該事件引起的狀態(tài)變化稱(chēng)為轉換。
      狀態(tài)圖是一種圖,用結點(diǎn)表示狀態(tài),結點(diǎn)用圓圈表示;圓圈內有狀態(tài)名,用箭頭連線(xiàn)表示狀態(tài)的轉換,上面標記事件名,箭頭方向表示轉換的方向。

·功能模型

      功能模型描述了系統的所有計算。功能模型指出發(fā)生了什么,動(dòng)態(tài)模型確定什么時(shí)候發(fā)生,而對象模型確定發(fā)生的客體。功能模型表明一個(gè)計算如何從輸入值得到輸出值,它不考慮計算的次序。功能模型由多張數據流圖組成。數據流圖用來(lái)表示從源對象到目標對象的數據值的流向,它不包含控制信息,控制信息在動(dòng)態(tài)模型中表示,同時(shí)數據流圖也不表示對象中值的組織,值的組織在對象模型中表示。圖10-15給出了一個(gè)窗口系統的圖標顯示的數據流圖。

       數據流圖中包含有處理、數據流、動(dòng)作對象和數據存儲對象。

      1.處理
       數據流圖中的處理用來(lái)改變數據值。最低層處理是純粹的函數,一張完整的數據流圖是一個(gè)高層處理。

       2.數據流
       數據流圖中的數據流將對象的輸出與處理、處理與對象的輸入、處理與處理聯(lián)系起來(lái)。在一個(gè)計算機中,用數據流來(lái)表示一中間數據值,數據流不能改變數據值。

      3.動(dòng)作對象
       動(dòng)作對象是一種主動(dòng)對象,它通過(guò)生成或者使用數據值來(lái)驅動(dòng)數據流圖。

      4.數據存儲對象
      數據流圖中的數據存儲是被動(dòng)對象,它用來(lái)存儲數據。它與動(dòng)作對象不一樣,數據存儲本身不產(chǎn)生任何操作,它只響應存儲和訪(fǎng)問(wèn)的要求。


六、面向對象的分析

      面向對象分析的目的是對客觀(guān)世界的系統進(jìn)行建模。本節以上面介紹的模型概念為基礎,結合“銀行網(wǎng)絡(luò )系統”的具體實(shí)例來(lái)構造客觀(guān)世界問(wèn)題的準確、嚴密的分析模型。
      分析模型有三種用途:用來(lái)明確問(wèn)題需求;為用戶(hù)和開(kāi)發(fā)人員提供明確需求;為用戶(hù)和開(kāi)發(fā)人員提供一個(gè)協(xié)商的基礎,作為后繼的設計和實(shí)現的框架。

(一) 面向對象的分析

     系統分析的第一步是:陳述需求。分析者必須同用戶(hù)一塊工作來(lái)提煉需求,因為這樣才表示了用戶(hù)的真實(shí)意圖,其中涉及對需求的分析及查找丟失的信息。下面以“銀行網(wǎng)絡(luò )系統”為例,用面向對象方法進(jìn)行開(kāi)發(fā)。
銀行網(wǎng)絡(luò )系統問(wèn)題陳述: 設計支持銀行網(wǎng)絡(luò )的軟件,銀行網(wǎng)絡(luò )包括人工出納站和分行共享的自動(dòng)出納機。每個(gè)分理處用分理處計算機來(lái)保存各自的帳戶(hù),處理各自的事務(wù);各自分理處的出納站與分理處計算機通信,出納站錄入帳戶(hù)和事務(wù)數據;自動(dòng)出納機與分行計算機通信,分行計算機與撥款分理處結帳,自動(dòng)出納機與用戶(hù)接口接受現金卡,與分行計算機通信完成事務(wù),發(fā)放現金,打印收據;系統需要記錄保管和安全措施;系統必須正確處理同一帳戶(hù)的并發(fā)訪(fǎng)問(wèn);每個(gè)分處理為自己的計算機準備軟件,銀行網(wǎng)絡(luò )費用根據顧客和現金卡的數目分攤給各分理處。
圖10-18給出銀行網(wǎng)絡(luò )系統的示意圖。


(二)建立對象模型

      首先標識和關(guān)聯(lián),因為它們影響了整體結構和解決問(wèn)題的方法,其次是增加屬性,進(jìn)一步描述類(lèi)和關(guān)聯(lián)的基本網(wǎng)絡(luò ),使用繼承合并和組織類(lèi),最后操作增加到類(lèi)中去作為構造動(dòng)態(tài)模型和功能模型的副產(chǎn)品。

      1.確定類(lèi)

      構造對象模型的第一步是標出來(lái)自問(wèn)題域的相關(guān)的對象類(lèi),對象包括物理實(shí)體和概念。所有類(lèi)在應用中都必須有意義,在問(wèn)題陳述中,并非所有類(lèi)都是明顯給出的。有些是隱含在問(wèn)題域或一般知識中的。

按圖10-19所示的過(guò)程確定類(lèi)

   

查找問(wèn)題陳述中的所有名詞,產(chǎn)生如下的暫定類(lèi)。
 軟件            銀行網(wǎng)絡(luò )         出納員        自動(dòng)出納機           分行
 分處理          分處理計算機     帳戶(hù)          事務(wù)                 出納站
 事務(wù)數據        分行計算機       現金卡        用戶(hù)                 現金
 收據            系統             顧客          費用                 帳戶(hù)數據
 訪(fǎng)問(wèn)            安全措施         記錄保管

     根據下列標準,去掉不必要的類(lèi)和不正確的類(lèi)。
 (1) 冗余類(lèi):若兩個(gè)類(lèi)表述了同一個(gè)信息 ,保留最富有描述能力的類(lèi)。如"用戶(hù)"和"顧客"就是重復的描述,因為"顧客"最富有描述性,因此保留它。
 (2) 不相干的類(lèi):除掉與問(wèn)題沒(méi)有關(guān)系或根本無(wú)關(guān)的類(lèi)。例如,攤派費用超出了銀行網(wǎng)絡(luò )的范圍。
 (3) 模糊類(lèi):類(lèi)必須是確定的,有些暫定類(lèi)邊界定義模糊或范圍太廣,如"記錄保管"就模糊類(lèi),它是"事務(wù)"中的一部分。
 (4) 屬性:某些名詞描述的是其他對象的屬性,則從暫定類(lèi)中刪除。如果某一性質(zhì)的獨立性很重要,就應該把他歸屬到類(lèi),而不把它作為屬性。
 (5) 操作:如果問(wèn)題陳述中的名詞有動(dòng)作含義,則描述的操作就不是類(lèi)。但是具有自身性質(zhì)而且需要獨立存在的操作應該描述成類(lèi)。如我們只構造電話(huà)模型,"撥號"就是動(dòng)態(tài)模型的一部分而不是類(lèi),但在電話(huà)撥號系統中,"撥號"是一個(gè)重要的類(lèi),它日期、時(shí)間、受話(huà)地點(diǎn)等屬性。

      在銀行網(wǎng)絡(luò )系統中,模糊類(lèi)是"系統"、"安全措施"、"記錄保管"、"銀行網(wǎng)絡(luò )"等。屬于屬性的有:"帳戶(hù)數據"、"收據"、"現金"、"事務(wù)數據"。屬于實(shí)現的如:"訪(fǎng)問(wèn)"、"軟件"等。這些均應除去。

   2.準備數據字典

   為所有建模實(shí)體準備一個(gè)數據字典。準確描述各個(gè)類(lèi)的精確含義,描述當前問(wèn)題中的類(lèi)的范圍,包括對類(lèi)的成員、用法方面的假設或限制。

   3.確定關(guān)聯(lián)

   兩個(gè)或多個(gè)類(lèi)之間的相互依賴(lài)就是關(guān)聯(lián)。一種依賴(lài)表示一種關(guān)聯(lián),可用各種方式來(lái)實(shí)現關(guān)聯(lián),但在分析模型中應刪除實(shí)現的考慮,以便設計時(shí)更為靈活。關(guān)聯(lián)常用描述性動(dòng)詞或動(dòng)詞詞組來(lái)表示,其中有物理位置的表示、傳導的動(dòng)作、通信、所有者關(guān)系、條件的滿(mǎn)足等。從問(wèn)題陳述中抽取所有可能的關(guān)聯(lián)表述,把它們記下來(lái),但不要過(guò)早去細化這些表述。

  下面是銀行網(wǎng)絡(luò )系統中所有可能的關(guān)聯(lián),大多數是直接抽取問(wèn)題中的動(dòng)詞詞組而得到的。在陳述中,有些動(dòng)詞詞組表述的關(guān)聯(lián)是不明顯的。最后,還有一些關(guān)聯(lián)與客觀(guān)世界或人的假設有關(guān),必須同用戶(hù)一起核實(shí)這種關(guān)聯(lián),因為這種關(guān)聯(lián)在問(wèn)題陳述中找不到。

   銀行網(wǎng)絡(luò )問(wèn)題陳述中的關(guān)聯(lián):
 ·銀行網(wǎng)絡(luò )包括出納站和自動(dòng)出納機;
 ·分行共享自動(dòng)出納機;
 ·分理處提供分理處計算機;
 ·分理處計算機保存帳戶(hù);
 ·分理處計算機處理帳戶(hù)支付事務(wù);
 ·分理處擁有出納站;
 ·出納站與分理處計算機通信;
 ·出納員為帳戶(hù)錄入事務(wù);
 ·自動(dòng)出納機接受現金卡;
 ·自動(dòng)出納機與用戶(hù)接口;
 ·自動(dòng)出納機發(fā)放現金;
 ·自動(dòng)出納機打印收據;
 ·系統處理并發(fā)訪(fǎng)問(wèn);
 ·分理處提供軟件;
 ·費用分攤給分理處。
  隱含的動(dòng)詞詞組:
 ·分行由分理處組成;
 ·分理處擁有帳戶(hù);
 ·分行擁有分行計算機;
 ·系統提供記錄保管;
 ·系統提供安全;
 ·顧客有現金卡。
  基于問(wèn)題域知識的關(guān)聯(lián):
 ·分理處雇傭出納員;
 ·現金卡訪(fǎng)問(wèn)帳戶(hù)。

  使用下列標準去掉不必要和不正確的關(guān)聯(lián):

 (1) 若某個(gè)類(lèi)已被刪除,那么與它有關(guān)的關(guān)聯(lián)也必須刪除或者用其它類(lèi)來(lái)重新表述。在例中,我們刪除了"銀行網(wǎng)絡(luò )",相關(guān)的關(guān)聯(lián)也要刪除。
 (2) 不相干的關(guān)聯(lián)或實(shí)現階段的關(guān)聯(lián):刪除所有問(wèn)題域之外的關(guān)聯(lián)或涉及實(shí)現結構中的關(guān)聯(lián)。如"系統處理并發(fā)訪(fǎng)問(wèn)"就是一種實(shí)現的概念。
 (3) 動(dòng)作:關(guān)聯(lián)應該描述應用域的結構性質(zhì)而不是瞬時(shí)事件,因此應刪除"自動(dòng)出納機接受現金卡","自動(dòng)出納機與用戶(hù)接口"等。
 (4) 派生關(guān)聯(lián):省略那些可以用其他關(guān)聯(lián)來(lái)定義的關(guān)聯(lián)。因為這種關(guān)聯(lián)是冗余的。銀行網(wǎng)絡(luò )系統的初步對象圖如圖10-20所示。其中含有關(guān)聯(lián)。

     4.確定屬性

   屬性是個(gè)體對象的性質(zhì),屬性通常用修飾性的名詞詞組來(lái)表示.形容詞常常表示具體的可枚舉的屬性值,屬性不可能在問(wèn)題陳述中完全表述出來(lái),必須借助于應用域的知識及對客觀(guān)世界的知識才可以找到它們。只考慮與具體應用直接相關(guān)的屬性,不要考慮那些超出問(wèn)題范圍的屬性。首先找出重要屬性,避免那些只用于實(shí)現的屬性,要為各個(gè)屬性取有意義的名字。按下列標準刪除不必要的和不正確的屬性:

 (1) 對象:若實(shí)體的獨立存在比它的值重要,那么這個(gè)實(shí)體不是屬性而是對象。如在郵政目錄中,"城市"是一個(gè)屬性,然而在人口普查中,"城市"則被看作是對象。在具體應用中,具有自身性質(zhì)的實(shí)體一定是對象。
 (2) 定詞:若屬性值取決于某種具體上下文,則可考慮把該屬性重新表述為一個(gè)限定詞。
 (3) 名稱(chēng):名稱(chēng)常常作為限定詞而不是對象的屬性,當名稱(chēng)不依賴(lài)于上下文關(guān)系時(shí),名稱(chēng)即為一個(gè)對象屬性,尤其是它不惟一時(shí)。
 (4) 標識符:在考慮對象模糊性時(shí),引入對象標識符表示,在對象模型中不列出這些對象標識符,它是隱含在對象模型中,只列出存在于應用域的屬性。
 (5) 內部值:若屬性描述了對外不透明的對象的內部狀態(tài),則應從對象模型中刪除該屬性。
 (6) 細化:忽略那些不可能對大多數操作有影響的屬性。

  5.使用繼承來(lái)細化類(lèi)

   使用繼承來(lái)共享公共機構,以次來(lái)組織類(lèi),可以用兩種方式來(lái)進(jìn)行。
 (1) 自底向上通過(guò)把現有類(lèi)的共同性質(zhì)一般化為父類(lèi),尋找具有相似的屬性,關(guān)系或操作的類(lèi)來(lái)發(fā)現繼承。例如"遠程事務(wù)"和"出納事務(wù)"是類(lèi)似的,可以一般化為"事務(wù)"。有些一般化結構常常是基于客觀(guān)世界邊界的現有分類(lèi),只要可能,盡量使用現有概念。對稱(chēng)性常有助于發(fā)現某些丟失的類(lèi)。
 (2) 自頂向下將現有的類(lèi)細化為更具體的子類(lèi)。具體化常??梢詮膽糜蛑忻黠@看出來(lái)。應用域中各枚舉字情況是最常見(jiàn)的具體化的來(lái)源。例如:菜單,可以有固定菜單,頂部菜單,彈出菜單,下拉菜單等,這就可以把菜單類(lèi)具體細化為各種具體菜單的子類(lèi)。當同一關(guān)聯(lián)名出現多次且意義也相同時(shí),應盡量具體化為相關(guān)聯(lián)的類(lèi),例如"事務(wù)"從"出納站"和"自動(dòng)出納機"進(jìn)入,則"錄入站"就是"出納站"和"自動(dòng)出納站"的一般化。在類(lèi)層次中,可以為具體的類(lèi)分配屬性和關(guān)聯(lián)。各屬性和都應分配給最一般的適合的類(lèi),有時(shí)也加上一些修正。

      應用域中各枚舉情況是最常見(jiàn)的具體化的來(lái)源。

   6.完善對象模型

   對象建模不可能一次就能保證模型是完全正確的,軟件開(kāi)發(fā)的整個(gè)過(guò)程就是一個(gè)不斷完善的過(guò)程。模型的不同組成部分多半是在不同的階段完成的,如果發(fā)現模型的缺陷,就必須返回到前期階段去修改,有些細化工作是在動(dòng)態(tài)模型和功能模型完成之后才開(kāi)始進(jìn)行的。
  (1) 幾種可能丟失對象的情況及解決辦法:
 ·同一類(lèi)中存在毫無(wú)關(guān)系的屬性和操作,則分解這個(gè)類(lèi),使各部分相互關(guān)聯(lián);
 ·一般化體系不清楚,則可能分離扮演兩種角色的類(lèi)
 ·存在無(wú)目標類(lèi)的操作,則找出并加上失去目標的類(lèi);
 ·存在名稱(chēng)及目的相同的冗余關(guān)聯(lián),則通過(guò)一般化創(chuàng )建丟失的父類(lèi),把關(guān)聯(lián)組織在一起。

  (2) 查找多余的類(lèi)。
  類(lèi)中缺少屬性,操作和關(guān)聯(lián),則可刪除這個(gè)類(lèi)。

  (3)查找丟失的關(guān)聯(lián)。
   丟失了操作的訪(fǎng)問(wèn)路徑,則加入新的關(guān)聯(lián)以回答查詢(xún)。

  (4) 網(wǎng)絡(luò )系統的具體情況作如下的修改:
 ①現金卡有多個(gè)獨立的特性。把它分解為兩個(gè)對象:卡片權限和現金卡。
 a.卡片權限:它是銀行用來(lái)鑒別用戶(hù)訪(fǎng)問(wèn)權限的卡片,表示一個(gè)或多個(gè)用戶(hù)帳戶(hù)的訪(fǎng)問(wèn)權限;各個(gè)卡片權限對象中可能具有好幾個(gè)現金卡,每張都帶有安全碼,卡片碼,它們附在現金卡上,表現銀行的卡片權限。
 b.現金卡:它是自動(dòng)出納機得到表示碼的數據卡片,它也是銀行代碼和現金卡代碼的數據載體。
 ②"事務(wù)"不能體現對帳戶(hù)之間的傳輸描述的一般性,因它只涉及一個(gè)帳戶(hù),一般來(lái)說(shuō),在每個(gè)帳戶(hù)中,一個(gè)"事務(wù)"包括一個(gè)或多個(gè)"更新",一個(gè)"更新"是對帳戶(hù)的一個(gè)動(dòng)作,它們是取款,存款,查詢(xún)之一。一個(gè)"更新"中所有"更新"應該是一個(gè)原子操作。
 ③"分理處"和"分離處理機"之間,"分行"和"分行處理機"之間的區別似乎并不影響分析,計算機的通信處理實(shí)際上是實(shí)現的概念,將"分理處計算機"并入到"分理處",將"分行計算機"并入到"分行"。

(三)建立動(dòng)態(tài)模型

   1.準備腳本
   動(dòng)態(tài)分析從尋找事件開(kāi)始,然后確定各對象的可能事件順序。在分析階段不考慮算法的執行,算法是實(shí)現模型的一部分。

   2.確定事件
   確定所有外部事件。事件包括所有來(lái)自或發(fā)往用戶(hù)的信息、外部設備的信號、輸入、轉換和動(dòng)作,可以發(fā)現正常事件,但不能遺漏條件和異常事件。

   3.準備事件跟蹤表
   把腳本表示成一個(gè)事件跟蹤表,即不同對象之間的事件排序表,對象為表中的列,給每個(gè)對象分配一個(gè)獨立的列。


   4.構造狀態(tài)圖
   對各對象類(lèi)建立狀態(tài)圖,反映對象接收和發(fā)送的事件,每個(gè)事件跟蹤都對應于狀態(tài)圖中一條路徑。

(四)建立功能建模

   功能模型用來(lái)說(shuō)明值是如何計算的,表明值之間的依賴(lài)關(guān)系及相關(guān)的功能,數據流圖有助于表示功能依賴(lài)關(guān)系,其中的處理應于狀態(tài)圖的活動(dòng)和動(dòng)作,其中的數據流對應于對象圖中的對象或屬性。

   1.確定輸入值、輸出值
   先列出輸入、輸出值,輸入、輸出值是系統與外界之間的事件的參數。

   2.建立數據流圖
   數據流圖說(shuō)明輸出值是怎樣從輸入值得來(lái)的,數據流圖通常按層次組織。

(五)確定操作

   在建立對象模型時(shí),確定了類(lèi)、關(guān)聯(lián)、結構和屬性,還沒(méi)有確定操作。只有建立了動(dòng)態(tài)模型和功能模型之后,才可能最后確定類(lèi)的操作。

七、面向對象的設計

   面向對象設計是把分析階段得到的需求轉變成符合成本和質(zhì)量要求的、抽象的系統實(shí)現方案的過(guò)程。從面向對象分析到面向對象設計,是一個(gè)逐漸擴充模型的過(guò)程。

   瀑布模型把設計進(jìn)一步劃分成概要設計和詳細設計兩個(gè)階段,類(lèi)似地,也可以把面向對象設計再細分為系統設計和對象設計。系統設計確定實(shí)現系統的策略和目標系統的高層結構。對象設計確定解空間中的類(lèi)、關(guān)聯(lián)、接口形式及實(shí)現操作的算法。

(一)面向對象設計的準則

   1.模塊化
   面向對象開(kāi)發(fā)方法很自然地支持了把系統分解成模塊的設計原則:對象就是模塊。它是把數據結構和操作這些數據的方法緊密地結合在一起所構成的模塊。
   2.抽象
   面向對象方法不僅支持過(guò)程抽象,而且支持數據抽象。
   3.信息隱藏
   在面向對象方法中,信息隱藏通過(guò)對象的封裝性來(lái)實(shí)現。
   4.低耦合
   在面向對象方法中,對象是最基本的模塊,因此,耦合主要指不同對象之間相互關(guān)聯(lián)的緊密程度。低耦合是設計的一個(gè)重要標準,因為這有助于使得系統中某一部分的變化對其它部分的影響降到最低程度。
   5.高內聚
   (1)操作內聚。
   (2)類(lèi)內聚。
   (3)一般——具體內聚。

(二)面向對象設計的啟發(fā)規則

   1.設計結果應該清晰易懂
   使設計結果清晰、易懂、易讀是提高軟件可維護性和可重用性的重要措施。顯然,人們不會(huì )重用那些他們不理解的設計。
   要做到:
   (1)用詞一致。
   (2)使用已有的協(xié)議。
   (3)減少消息模式的數量。
   (4)避免模糊的定義。

   2.一般——具體結構的深度應適當

   3.設計簡(jiǎn)單類(lèi)
   應該盡量設計小而簡(jiǎn)單的類(lèi),這樣便以開(kāi)發(fā)和管理。為了保持簡(jiǎn)單,應注意以下幾點(diǎn):
   (1)避免包含過(guò)多的屬性。
   (2)有明確的定義。
   (3)盡量簡(jiǎn)化對象之間的合作關(guān)系。
   (4)不要提供太多的操作。

   4.使用簡(jiǎn)單的協(xié)議
   一般來(lái)說(shuō),消息中參數不要超過(guò)3個(gè)。

   5.使用簡(jiǎn)單的操作
   面向對象設計出來(lái)的類(lèi)中的操作通常都很小,一般只有3至5行源程序語(yǔ)句,可以用僅含一個(gè)動(dòng)詞和一個(gè)賓語(yǔ)的簡(jiǎn)單句子描述它的功能

   6.把設計變動(dòng)減至最小
   通常,設計的質(zhì)量越高,設計結果保持不變的時(shí)間也越長(cháng)。即使出現必須修改設計的情況,也應該使修改的范圍盡可能小。
(三)系統設計

   系統設計是問(wèn)題求解及建立解答的高級策略。必須制定解決問(wèn)題的基本方法,系統的高層結構形式包括子系統的分解、它的固有并發(fā)性、子系統分配給硬軟件、數據存儲管理、資源協(xié)調、軟件控制實(shí)現、人機交互接口。

1.系統設計概述

    設計階段先從高層入手,然后細化。系統設計要決定整個(gè)結構及風(fēng)格,這種結構為后面設計階段的更詳細策略的設計提供了基礎。

   (1)系統分解。
   系統中主要的組成部分稱(chēng)為子系統,子系統既不是一個(gè)對象也不是一個(gè)功能,而是類(lèi)、關(guān)聯(lián)、操作、事件和約束的集合。
   (2)確定并發(fā)性。
   分析模型、現實(shí)世界及硬件中不少對象均是并發(fā)的。
   (3)處理器及任務(wù)分配。
   各并發(fā)子系統必須分配給單個(gè)硬件單元,要么是一個(gè)一般的處理器,要么是一個(gè)具體的功能單元。
   (4)數據存儲管理。
   系統中的內部數據和外部數據的存儲管理是一項重要的任務(wù)。通常各數據存儲可以將數據結構、文件、數據庫組合在一起,不同數據存儲要在費用、訪(fǎng)問(wèn)時(shí)間、容量及可靠性之間做出折衷考慮。
   (5)全局資源的處理。
   必須確定全局資源,并且制定訪(fǎng)問(wèn)全局資源的策略。
   (6)選擇軟件控制機制。
   分析模型中所有交互行為都表示為對象之間的事件。系統設計必須從多種方法中選擇某種方法來(lái)實(shí)現軟件的控制。
   (7)人機交互接口設計。
   設計中的大部分工作都與穩定的狀態(tài)行為有關(guān),但必須考慮用戶(hù)使用系統的交互接口。

   2.系統結構的一般框架

   3.系統分解——建立系統的體系結構
   可用的軟件庫以及程序員的編程經(jīng)驗。
   通過(guò)面向對象分析得到的問(wèn)題域精確模型,為設計體系結構奠定了良好的基礎,建立了完整的框架。

   4.選擇軟件控制機制
   軟件系統中存在兩種控制流,外部控制流和內部控制流。

   5.數據存儲管理
   數據存儲管理是系統存儲或檢索對象的基本設施,它建立在某種數據存儲管理系統之上,并且隔離了數據存儲管理模式的影響。

   6.設計人機交互接口
   在面向對象分析過(guò)程中,已經(jīng)對用戶(hù)界面需求作了初步分析,在面向對象設計過(guò)程中,則應該對系統的人機交互接口進(jìn)行詳細設計,以確定人機交互的細節,其中包括指定窗口和報表的形式、設計命令層次等項內容。

(四)對象設計
   1.對象設計概述
   2.三種模型的結合
   (1)獲得操作。
   (2)確定操作的目標對象。
   3.算法設計
   4.優(yōu)化設計
   5.控制的實(shí)現
   6.調整繼承
   7.關(guān)聯(lián)的設計
                               
八、面向對象的實(shí)現

(一)程序設計語(yǔ)言

   1.選擇面向對象語(yǔ)言
   采用面向對象方法開(kāi)發(fā)軟件的基本目的和主要優(yōu)點(diǎn)是通過(guò)重用提高軟件的生產(chǎn)率。因此,應該優(yōu)先選用能夠最完善、最準確地表達問(wèn)題域語(yǔ)義的面向對象語(yǔ)言。

   在選擇編程語(yǔ)言時(shí),應該考慮的其他因素還有:對用戶(hù)學(xué)習面向對象分析、設計和編碼技術(shù)所能提供的培訓操作;在使用這個(gè)面向對象語(yǔ)言期間能提供的技術(shù)支持;能提供給開(kāi)發(fā)人員使用的開(kāi)發(fā)工具、開(kāi)發(fā)平臺,對機器性能和內存的需求,集成已有軟件的容易程度。

   2.程序設計風(fēng)格
   (1)提高重用性。
   (2)提高可擴充性。
   (3)提高健壯性。

(二)類(lèi)的實(shí)現

   在開(kāi)發(fā)過(guò)程中,類(lèi)的實(shí)現是核心問(wèn)題。在用面向對象風(fēng)格所寫(xiě)的系統中,所有的數據都被封裝在類(lèi)的實(shí)例中。而整個(gè)程序則被封裝在一個(gè)更高級的類(lèi)中。在使用既存部件的面向對象系統中,可以只花費少量時(shí)間和工作量來(lái)實(shí)現軟件。只要增加類(lèi)的實(shí)例,開(kāi)發(fā)少量的新類(lèi)和實(shí)現各個(gè)對象之間互相通信的操作,就能建立需要的軟件。

   一種方案是先開(kāi)發(fā)一個(gè)比較小、比較簡(jiǎn)單的來(lái),作為開(kāi)發(fā)比較大、比較復雜的類(lèi)的基礎。

   (1)“原封不動(dòng)”重用。
   (2)進(jìn)化性重用。
   一個(gè)能夠完全符合要求特性的類(lèi)可能并不存在。
   (3)“廢棄性”開(kāi)發(fā)。
   不用任何重用來(lái)開(kāi)發(fā)一個(gè)新類(lèi)。
   (4)錯誤處理。
   一個(gè)類(lèi)應是自主的,有責任定位和報告錯誤。

(三)應用系統的實(shí)現

   應用系統的實(shí)現是在所有的類(lèi)都被實(shí)現之后的事。實(shí)現一個(gè)系統是一個(gè)比用過(guò)程性方法更簡(jiǎn)單、更簡(jiǎn)短的過(guò)程。有些實(shí)例將在其他類(lèi)的初始化過(guò)程中使用。而其余的則必須用某種主過(guò)程顯式地加以說(shuō)明,或者當作系統最高層的類(lèi)的表示的一部分。

   在C++和C中有一個(gè)main( )函數,可以使用這個(gè)過(guò)程來(lái)說(shuō)明構成系統主要對象的那些類(lèi)的實(shí)例。

(四)面向對象測試

   (1)算法層。
   (2)類(lèi)層。
   測試封裝在同一個(gè)類(lèi)中的所有方法和屬性之間的相互作用。
   (3)模板層。
   測試一組協(xié)同工作的類(lèi)之間的相互作用。
   (4)系統層。
   把各個(gè)子系統組裝成完整的面向對象軟件系統,在組裝過(guò)程中同時(shí)進(jìn)行測試。

九、面向對象和基于對象的區別

      很多人沒(méi)有區分“面向對象”和“基于對象”兩個(gè)不同的概念。面向對象的三大特點(diǎn)(封裝,繼承,多態(tài))卻一不可。通?!盎趯ο蟆笔鞘褂脤ο?,但是無(wú)法利用現有的對象模板產(chǎn)生新的對象類(lèi)型,繼而產(chǎn)生新的對象,也就是說(shuō)“基于對象”沒(méi)有繼承的特點(diǎn)。而“多態(tài)”表示為父類(lèi)類(lèi)型的子類(lèi)對象實(shí)例,沒(méi)有了繼承的概念也就無(wú)從談?wù)摗岸鄳B(tài)”?,F在的很多流行技術(shù)都是基于對象的,它們使用一些封裝好的對象,調用對象的方法,設置對象的屬性。但是它們無(wú)法讓程序員派生新對象類(lèi)型。他們只能使用現有對象的方法和屬性。所以當你判斷一個(gè)新的技術(shù)是否是面向對象的時(shí)候,通??梢允褂煤髢蓚€(gè)特性來(lái)加以判斷?!懊嫦驅ο蟆焙汀盎趯ο蟆倍紝?shí)現了“封裝”的概念,但是面向對象實(shí)現了“繼承和多態(tài)”,而“基于對象”沒(méi)有實(shí)現這些,的確很饒口。

      從事面向對象編程的人按照分工來(lái)說(shuō),可以分為“類(lèi)庫的創(chuàng )建者”和“類(lèi)庫的使用者”。使用類(lèi)庫的人并不都是具備了面向對象思想的人,通常知道如何繼承和派生新對象就可以使用類(lèi)庫了,然而我們的思維并沒(méi)有真正的轉過(guò)來(lái),使用類(lèi)庫只是在形式上是面向對象,而實(shí)質(zhì)上只是庫函數的一種擴展。

      面向對象是一種思想,是我們考慮事情的方法,通常表現為我們是將問(wèn)題的解決按照過(guò)程方式來(lái)解決呢,還是將問(wèn)題抽象為一個(gè)對象來(lái)解決它。很多情況下,我們會(huì )不知不覺(jué)的按照過(guò)程方式來(lái)解決它,而不是考慮將要解決問(wèn)題抽象為對象去解決它。有些人打著(zhù)面向對象的幌子,干著(zhù)過(guò)程編程的勾當。


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
第7章 UML建模語(yǔ)言
第7章 UML建模語(yǔ)言
面向對象程序可視化類(lèi)圖的逆向自動(dòng)生成
51Testing軟件測試網(wǎng):面向對象軟件的測試
gis原理十
UML建模相關(guān)概念
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久