一a一片一级一片啪啪-一a一级片-一a级毛片-一一级黄色片-国产免费福利片-国产免费福利网站

熱門關鍵字:  聽力密碼  聽力密碼  新概念美語  單詞密碼  巧用聽寫練聽力
圖書信息

面向對象的思考過程(原書第二版)

中國水利水電出版社
    【作 者】[美] Matt Weisfeld 著 【I S B N 】978-7-5084-2291-0 【責任編輯】吳萍 【適用讀者群】研究生 【出版時間】2004-08-01 【開 本】16開 【裝幀信息】平裝(光膜) 【版 次】第1版第1次印刷 【頁 數】 【千字數】296 【印 張】13.25 【定 價】26 【叢 書】暫無分類 【備注信息】
圖書詳情

    面向對象的程序設計(OOP)是現代程序設計語言的基本概念,本書深入探討了如何以面向對象的方式來進行思考。全書共分為15章,內容包括:面向對象的基本概念,如何以對象的方式進行思考,高級的面向對象概念,類的剖析,類設計,繼承和組合,框架和重用,創建對象,使用UML創建對象模型,持久對象,可移植的數據,分布式對象和企業,設計模式等。

    本書是當代程序員的基礎理論讀物,適合于大學本科計算機專業的學生以及想要學習面向對象技術的程序員。

    Authorized translation from the English language edition, entitled OBJECT-ORIENTED THOUGHT PROCESS, THE, 2nd Edition, 0672326116 by WEISFELD, MATT, published by Pearson Education, Inc, publishing as Que/Sams, Copyright © 2004 by Sams Publishing.

    All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.CHINESE SIMPLIFIED language edition published by CHINA WATERPOWER PRESS/BEIJING MULTI-CHANNEL ELECTRONIC INFORMATION CO.LTD, Copyright © 2004 by CHINA WATERPOWER PRESS/BEIJING MULTI-CHANNEL ELECTRONIC INFORMATION CO.LTD.

    顧名思義,本書是關于面向對象(OO)的思考過程的。很明顯,選擇本書的主題和書名都是重要的決定,然而,這些決定并不簡單。許多圖書講述面向對象的一種或者另一種層次。若干暢銷圖書講述以下主題:OO分析、OO設計、OO程序設計、設計模式、OO數據庫、統一建模語言(UML)、各種OO程序設計語言以及許多與OO程序設計有關的其他主題。

    然而,在研究以上所有圖書時,許多人忘記各個主題都是建立在下面這個單一基礎之上:如何以OO的方式進行思考。遺憾的是,許多軟件開發專家常常還沒有花適當的時間和精力來真正了解這些圖書中的概念,就開始鉆研它們。

    我認為學習OO概念不是通過學習某種具體的開發方法或者某組工具就可以實現的。簡而言之,以OO的方式完成工作是一種思考方法。本書完全和OO思考過程有關。

    從OO思考過程中分離出方法和工具并不容易。許多人都是通過其中一種方法或者工具來了解OO概念的。許多C程序員是在直接轉移到C++時首次了解到面向對象,在此之前甚至沒有間接接觸這個方法。一些軟件專業人員是通過演示文稿(包含使用UML的對象模型)而首次接觸面向對象的,在此之前他們也沒有直接接觸過OO概念。

    理解學習OO概念和使用支持該范例的方法和工具之間的顯著區別是很重要的。在“What the UML Is—and Isn’t”一文中,作者Craig Larman說:“遺憾的是,軟件工程和UML圖表語言領域中,獲得閱讀和編寫UML符號的技能在某些時候似乎和獲得面向對象分析和設計的技能同等重要。當然,事實并非如此,后者比前者更重要。因此,我建議尋找以下培訓和培訓材料:其中面向對象的分析和設計要比UML符號或者某種電腦輔助軟件工程工具的用途更為重要。”

    盡管學習一門建模語言是一個很重要的步驟,但是先學習OO技能更重要。在學習OO概念之前先學習UML,類似于在不了解任何電子技術時學習如何閱讀電氣圖。

    程序設計語言存在相同的問題。前面說過,許多C程序員還沒有直接接觸到OO概念,就通過轉移到C++而進入面向對象領域。很多情況下,聲稱自己是C++程序員的開發人員只是使用C++編輯器的C程序員。

    隨著Java、C#.NET、Visual Basic .NET之類的面向對象語言越來越流行,這個問題越來越重要。有很多Visual Basic程序員必須轉移到Visual Basic .NET中。類似地,許多可能沒有遵守嚴格的OO慣例的C++程序員,需要轉移到Java或者C#中,在使用這些語言時,他們就別無選擇,只能以OO方式進行思考。

    早期的Visual Basic版本不是OO的。C不是OO的,而開發C++時考慮了與C的向后兼容性。因此,僅僅使用C++編輯器編寫C的句子構造,而拋棄了C++所有的OO特性,這是非常可能的。更壞的情況下,程序員可以使用足夠的OO特性,剛好使某個程序不能使用OO進行理解,而非OO程序員也可以這樣。

    因此,在開始OO開發的時候,首先學習基本的OO概念是至關重要的。我們應該抵擋住直接跨入某種程序設計語言(如C++、C#或者Java)或者某種建模語言(如UML)的誘惑,而花時間來學習面向對象的思考過程。

    本書是向程序員介紹面向對象技術的概念性圖書。它的讀者對象當然包括想要跨越到面向對象技術的結構化程序設計人員。因此,書中包括的一些資料實際上是結構化的技術和面向對象技術之間的橋梁。第6章就是該方法的一個好例子,該章添加了結構化程序設計人員所熟悉的技術。重要的是理解面向對象和結構化實踐并非是相互排斥的。結構化技術的使用在OO設計中隨處可見(僅僅考慮for循環或者if語句)。

    20世紀80年代后期,在我的第一堂Smalltalk課上,教師告訴全班同學,新的OO范例是一種全新的思考方式。他接著說到:“雖然我們差不多都是非常優秀的程序員,但是其中的10%~20%永遠都不能真正以OO的方式完成工作。”如果這個陳述確實是正確的,也主要是因為一些人從來沒有真正地花時間進行范例轉換并學習基礎的OO概念。

    第二版的新內容

    正如我常說的,我認為第一版主要是一本概念性的圖書。盡管第二版仍然堅持這個目標,但我還添加了若干應用主題,它們非常適合于面向對象的概念。這些應用包括以下幾點:

     對象建模

     對象持久性

     XML

     對象和Internet

     企業

     設計模式

    從本質上說,講述這些主題的章節仍然是概念性的。然而,其中一些章節包括Java代碼,它們展示了如何實現這些概念。

    讀者對象

    本書是對基本的OO概念的總體介紹。適合的讀者包括設計人員、開發人員、項目管理人員以及任何想要總體了解面向對象的人。閱讀這本書將為閱讀其他講述更高級的OO主題的圖書打下堅實的基礎。

    在這些主題更高級的書中,我最喜歡的圖書之一仍然是Stephen Gilbert和Bill McCarty所著的《Object-Oriented Design in Java》。我確實非常喜歡該書中的方法,并且在我教過的OO概念課堂上,將它用作教科書。在本書中我經常引用到《Object-Oriented Design in Java》,并且推薦您學完本書之后學習這本書。

    其他我認為非常有用的圖書包括Scott Meyers所著的《Effective C++》、Stephen R. Schach所著的《Classical and Object-Oriented Software Engineering》、Bruce Eckel所著的《Thinking in C++》、Martin Fowler所著的《UML Distilled》以及Peter Coad和Mark Mayfield所著的《Java Design》。

    在公司和學校向程序員講授介紹性的Java時,我很快就發現其中很多程序員很容易掌握Java語法。然而,他們很難了解該語言的OO本質。

    本書的范圍

    到目前為止很明顯,我堅信在跨入某個程序設計語言或者建模語言之前先熟悉面向對象的思考過程是很有益的。本書處處都是Java代碼例子以及UML圖,然而,您不必了解Java或者UML來閱讀它們。既然我說過先學習概念,為什么這里有這么多Java代碼和UML圖呢?首先,用它們來闡述OO概念都很棒。其次,它們對OO過程都很重要,并且我們應該對其進行介紹性的講解。重點并沒有放在Java或者UML上,而是使用它們作為輔助工具,以了解基本概念。

    本書中的Java例子說明循環和函數之類的概念。然而,理解這些代碼本身并不是理解這些概念的先決條件,手頭擁有講述Java語法的書可能會有所幫助。

    強調一下,本書不講述Java或者UML,講述它們都需要幾卷的篇幅。我希望本書能激起您學習其他OO主題(如OO分析、面向對象的設計以及OO程序設計)的愿望。

    本書約定

    本書使用以下排版約定:

    代碼行、命令、語句以及其他與代碼相關的術語是以等寬字體(monospace)出現的。

    代表實際應該鍵入的內容的占位符是以斜體等寬字體(italic monospace)出現的。應該鍵入的文本是以粗體等寬字體(bold monospace)出現的。

    貫穿本書,有一些特殊的說明性內容,例如:

    注意

    注意顯示關于該討論的有趣信息,它是一點見解或者對新技術的啟示。

    提示

    提示向您提供建議或者展示完成任務的更容易的方式。

    警告

    警告提醒您某個可能的問題并向您提供如何避免該問題的建議。

    本書中使用的源代碼

    您可以從http://www.samspublishing.com下載本書中討論到的所有源代碼和例子。在“search”窗口,簡單地鍵入本書的ISBN(0672326116),按下Enter健,然后就出現帶有指向源代碼鏈接的頁面。

    譯者序
    前言
    致謝
    第1章 面向對象的概念簡介 1
    1.1 面向過程程序設計和OO程序設計 1
    1.2 從面向過程開發轉向面向對象開發 4
    1.2.1 面向過程的程序設計 4
    1.2.2 OO程序設計 4
    1.3 對象的確切定義 5
    1.3.1 對象數據 5
    1.3.2 對象行為 5
    1.4 類的確切定義 8
    1.4.1 類是對象模板 8
    1.4.2 屬性 9
    1.4.3 方法 9
    1.4.4 消息 10
    1.5 使用UML構建類圖 10
    1.6 封裝 10
    1.6.1 接口 11
    1.6.2 實現 11
    1.6.3 接口/實現范例的現實例子 11
    1.6.4 接口/實現范例的Java例子 12
    1.7 繼承 13
    1.7.1 超類和子類 14
    1.7.2 抽象 14
    1.7.3 Is-a關系 15
    1.8 多態 16
    1.9 組合 18
    1.10 小結 18
    第2章 如何以對象的方式進行思考 20
    2.1 了解接口和實現的區別 20
    2.1.1 接口 22
    2.1.2 實現 22
    2.1.3 接口/實現的例子 22
    2.2 在設計接口時使用抽象的思想 26
    2.3 盡可能向用戶提供最少的接口 27
    2.3.1 確定用戶 28
    2.3.2 對象行為 28
    2.3.3 環境限制 28
    2.3.4 確定公共接口 29
    2.3.5 確定實現 29
    2.4 小結 30
    2.5 參考文獻 30
    第3章 高級的面向對象概念 31
    3.1 構造函數 31
    3.1.1 何時調用構造函數 31
    3.1.2 構造函數的內部機理 31
    3.1.3 默認構造函數 32
    3.1.4 使用多個構造函數 32
    3.1.5 設計構造函數 36
    3.2 錯誤處理 36
    3.2.1 忽略問題 36
    3.2.2 檢測問題并異常終止應用程序 36
    3.2.3 檢測問題并且嘗試解決問題 37
    3.2.4 拋出異常 37
    3.3 作用域的概念 39
    3.3.1 局部屬性 39
    3.3.2 對象屬性 40
    3.3.3 類的屬性 42
    3.4 運算符重載 43
    3.5 多重繼承 43
    3.6 對象操作 44
    3.7 小結 45
    3.8 參考文獻 45
    第4章 類的剖析 46
    4.1 類的名稱 46
    4.2 注釋 47
    4.3 屬性 48
    4.4 構造函數 49
    4.5 訪問函數 50
    4.6 公共接口方法 52
    4.7 私有實現方法 53
    4.8 小結 53
    4.9 參考文獻 53
    第5章 類設計指導 54
    5.1 標識公共接口 54
    5.2 設計健壯的構造函數(或析構函數) 56
    5.3 在類中設計錯誤處理 57
    5.3.1 用文檔說明類以及使用注釋 57
    5.3.2 帶著協作的意向創建對象 57
    5.4 在設計時考慮到重用 58
    5.5 設計時考慮擴展 58
    5.5.1 使名稱形象化 59
    5.5.2 提取不能移植的代碼 59
    5.5.3 提供復制和比較對象的方法 59
    5.5.4 盡可能使作用域最小 60
    5.5.5 類應該對自己負責 60
    5.6 在設計時考慮可維護性 61
    5.6.1 使用迭代 62
    5.6.2 測試接口 62
    5.7 使用對象持久性 64
    5.8 小結 65
    5.9 參考文獻 65
    第6章 使用對象進行設計 66
    6.1 設計指導 66
    6.1.1 進行正確的分析 69
    6.1.2 制作工作陳述 69
    6.1.3 收集需求 69
    6.1.4 開發用戶接口原型 70
    6.1.5 確定類 70
    6.1.6 確定每一個類的職責 70
    6.1.7 確定類和類之間如何相互作用 70
    6.1.8 創建類模型來描述系統 70
    6.2 案例分析:Blackjack(撲克牌中的二十一點)例子 71
    6.2.1 使用CRC卡片 72
    6.2.2 確定Blackjack的類 73
    6.2.3 確定類的職責 76
    6.2.4 UML用例:確定協作 80
    6.2.5 制作CRC卡片的第一步 83
    6.2.6 UML類圖:對象模型 85
    6.2.7 為用戶接口設計原型 86
    6.3 小結 86
    6.4 參考文獻 86
    第7章 掌握繼承和組合 87
    7.1 繼承 88
    7.1.1 泛化和特化 90
    7.1.2 設計決策 90
    7.2 組合 92
    7.3 為什么封裝對OO很重要 94
    7.3.1 繼承是如何削弱封裝的 95
    7.3.2 一個詳細的多態例子 96
    7.3.3 對象的職責 97
    7.4 小結 100
    7.5 參考文獻 100
    第8章 框架和重用:利用接口和抽象類進行設計 101
    8.1 代碼的重用 101
    8.2 什么是框架 101
    8.3 什么是契約 103
    8.3.1 抽象類 104
    8.3.2 接口 105
    8.3.3 嘗試一起使用它們 107
    8.3.4 編譯器證據 109
    8.3.5 制定契約 109
    8.3.6 系統插入點 111
    8.4 一個電子商務的例子 111
    8.4.1 電子商務的問題 111
    8.4.2 非重用方法 112
    8.4.3 電子商務解決方案 114
    8.4.4 UML對象模型 114
    8.5 小結 117
    8.6 參考文獻 117
    第9章 創建對象 118
    9.1 組合關系 119
    9.2 協調地創建 119
    9.3 組合的類型 121
    9.3.1 聚合 121
    9.3.2 關聯 122
    9.3.3 同時使用聚合和關聯 123
    9.4 避免依賴性 123
    9.5 基數(Cardinality) 124
    9.5.1 多個對象的關聯 126
    9.5.2 可選的關聯 127
    9.6 同時使用這些關系:一個例子 127
    9.7 小結 128
    9.8 參考文獻 128
    第10章 使用UML創建對象模型 129
    10.1 什么是UML 129
    10.2 類圖的結構 130
    10.3 屬性和方法 131
    10.3.1 屬性 131
    10.3.2 方法 131
    10.4 訪問標號 132
    10.5 繼承 132
    10.6 接口 134
    10.7 組合 134
    10.7.1 聚合 134
    10.7.2 關聯 135
    10.8 基數 137
    10.9 小結 138
    10.10 參考文獻 138
    第11章 持久對象:串行化和關系數據庫 139
    11.1 持久對象的基礎 139
    11.2 把對象保存到“扁平”文件中 140
    11.2.1 串行化某個文件 141
    11.2.2 回顧實現和接口 142
    11.3 寫入關系數據庫中 143
    11.4 加載驅動程序 146
    11.4.1 建立連接 147
    11.4.2 SQL語句 147
    11.5 小結 150
    11.6 參考文獻 150
    第12章 對象和XML:可移植的數據 151
    12.1 可移植代碼 151
    12.2 可擴展標記語言(XML) 152
    12.3 XML與HTML 153
    12.4 XML和面向對象語言 153
    12.5 在兩個公司之間共享數據 154
    12.6 用文檔類型定義檢驗文檔 155
    12.7 把DTD集成到XML文檔中 156
    12.8 使用層疊式樣式表 161
    12.9 小結 163
    12.10 參考文獻 163
    第13章 對象和Internet 164
    13.1 基于對象的腳本編寫語言 164
    13.2 一個JavaScript驗證的例子 166
    13.3 Java Applets是對象 170
    13.4 JavaBeans是對象 172
    13.5 小結 174
    13.6 參考文獻 174
    第14章 分布式對象和企業 175
    14.1 公共對象請求代理體系結構(CORBA) 176
    14.2 Java的遠程方法調用(RMI) 179
    14.3 Java的Enterprise JavaBeans 180
    14.4 企業JavaBeans的類型 182
    14.4.1 會話beans 183
    14.4.2 實體beans 183
    14.5 小結 184
    14.6 參考文獻 184
    第15章 設計模式 185
    15.1 為什么需要設計模式 185
    15.2 Smalltalk的模型/視圖/控制器 186
    15.3 設計模式的類型 188
    15.3.1 創建模式 188
    15.3.2 結構模式 191
    15.3.3 行為模式 194
    15.4 反模式 195
    15.5 小結 196
    15.6 參考文獻 196





最新評論共有 0 位網友發表了評論
發表評論
評論內容:不能超過250字,需審核,請自覺遵守互聯網相關政策法規。
用戶名: 密碼:
匿名?
注冊
主站蜘蛛池模板: 中文字幕一区二区在线视频 | 怡红院免费va男人的天堂 | 99久久免费午夜国产精品 | 国产精品成人一区二区 | 国产精品99r8免费视频2022 | 美女黄视频免费观看 | 成人精品视频 | 最近中文在线中文 | 国产精品露脸脏话对白 | 久久久日本久久久久123 | 欧美男人天堂 | 欧美一级高清毛片aaa | 一级成人a做片免费 | 久久精品国产在爱久久 | 国产日韩精品视频一区二区三区 | 亚洲免费天堂 | 亚洲视频在线免费 | 久久精品亚洲乱码伦伦中文 | 成人国产在线看不卡 | 久久精品国内一区二区三区 | 99久久一区| 色秀视频在线观看88品善网 | 欧美日韩一区二区在线视频 | 欧美在线观看a | 亚洲自偷自偷图片在线高清 | 欧美亚洲日本韩国一级毛片 | 黄色一级a毛片 | 91精品久久 | v欧美精品v日本精品 | 天天五月天丁香婷婷深爱综合 | 成年人毛片网站 | 国产九九精品视频 | 一区二区高清在线 | 国产三级日本三级日产三级66 | 国产女女视屏免费 | 国产区精品一区二区不卡中文 | 2021国产精品一区二区在线 | 精品国产成人高清在线 | 中文字幕一区二区三区亚洲精品 | 国产三级观看 | 国产精品亚洲一区二区三区在线观看 |