- UML基礎與Rose建模實用教程(第三版)
- 謝星星 周新國編著
- 1495字
- 2020-11-23 15:05:04
1.1.3 對象與類的確定
面向對象的技術認為客觀世界是由各種各樣的對象所組成的,每個對象都有自己的數據和操作,不同對象之間的相互聯系和作用構成了各種系統。在面向對象的程序設計中,系統被描繪成由一系列完全自治、封裝的對象所組成,而且對象與對象之間通過對象暴露在外的接口進行調用的。對象是組成系統的基本單元,是一個具有組織形式的含有信息的實體。比如可以這樣表述:有一個名字叫張三的人。人這個實體對象,包含姓名是張三這個信息。而類是創建對象的模板,在整體上可以代表一組對象,比如創建人這個類,它就代表人這個概念,可以使用這個類來表達張三、李四等。設計類而不是設計對象可以避免重復編碼,類只需要編碼一次就可以實例化屬于這個類的任何對象。
對象(Object)是由狀態(State)和行為(Behavior)構成的。事實上,屬性(Property)、狀態(State)還有數據(Data)這些在各種書中提到的概念,意思都相似,都是用于描述一個對象的數據元素,這些概念具體到各種語言便有不同的叫法。對象的狀態值用來定義對象的狀態。例如,當判斷學生是否可以借書的時候,可以對學生的學號(不妨稱為第一個狀態)和學生的目前借書數量(可以稱為第二個狀態)來進行判斷。行為(Behavior)、操作(Operation)以及方法(Method)這些在各種書中提到的概念,是用于描述訪問對象的數據或修改、維護數據值的操作。如上文描述學生的行為,“告訴圖書管理員你的學號”和“選擇需要借閱的圖書”等。對象只有在具有狀態和行為的情況下才有意義,狀態用來描述對象的靜態特征,行為用來描述對象的動態特征。對象是包含客觀事物特征的抽象實體,封裝了狀態和行為,在程序設計領域可以用“對象=數據+數據的操作”來表達這種設計思路。
類(Class)是具有相同屬性和操作的一組對象的集合,即抽象模型中的“類”描述了一組相似對象的共同特征,為屬于該類的全部對象提供了統一的抽象描述。例如名為“學生”的類被用于描述能夠到圖書館借閱圖書的學生對象的集合。
類的定義要包含以下的要素:
- 定義該類對象的數據結構(屬性的名稱和類型)。
- 對象所要執行的操作,也就是類的對象要被調用執行哪些操作,以及這些操作進行時對象要執行哪些操作,比如數據庫操作等。
類是對象集合的再抽象,類與對象的關系如同一個模具和使用這個模具澆注出來的鑄件一樣,類是創建軟件對象的模板。類給出了屬于該類的全部對象的抽象定義,而對象是符合這種定義的一個實體。類具有以下兩個作用:
- 在內存中申請并獲得一個數據區,用于存儲新對象的屬性。
- 把一系列行為和對象關聯起來。
一個對象又被稱作類的一個實例,也稱為實體化(Instantiation)。術語“實體化(Instantiation)”是指對象在類聲明的基礎上被創建出來的過程。比如聲明了一個“學生”類,可以在這個基礎上創建一個“姓名叫張三的學生”對象。
類的確定和劃分沒有一個統一的標準和方法,基本上依賴于設計人員的經驗、技巧以及對實際項目中問題的把握。通常的標準是“尋求共性、抓住特性”,即在一個大的系統環境中,尋求事物的共性,將具有共性的事物用一個類進行表述,在具體的程序設計時,具體到某一個對象,要抓住對象的特性。確定一個類的步驟通常包含以下方面:
- 確定系統的范圍,如圖書管理系統,需要確定一下和圖書管理相關的內容。
- 在系統范圍內尋找對象,該對象通常具有一個和多個類似的事物。比如在圖書管理中,某院系有一個名叫張三的學生,某院系一個名叫李四的學生,都是學生。
- 將對象抽象成為一個類,再按照上面有關類的定義,確定類的數據和操作。
在面向對象的程序設計中,類和對象的確定是非常的重要,是軟件開發的第一步,軟件開發中類和對象的確定直接影響到軟件的質量。如果劃分得當,對于軟件的維護與擴充以及軟件的重用性方面都有很大的幫助。
- 編寫高質量代碼:改善C程序代碼的125個建議
- H5頁面設計:Mugeda版(微課版)
- Java程序設計案例教程
- PHP 7從零基礎到項目實戰
- 網絡數據采集技術:Java網絡爬蟲實戰
- Django Design Patterns and Best Practices
- JQuery風暴:完美用戶體驗
- Learning Cocos2d-JS Game Development
- Clojure Web Development Essentials
- 可視化H5頁面設計與制作:Mugeda標準教程
- INSTANT Lift Web Applications How-to
- Unreal Engine Game Development Cookbook
- 系統分析師UML用例實戰
- Mastering Magento Theme Design
- Web前端開發精品課:HTML5 Canvas開發詳解