朱海濱,現(xiàn)為加拿大尼波星大學(xué)(Nipissing University)計算機(jī)與數(shù)學(xué)系助理教授, 尼波星大學(xué)學(xué)科規(guī)劃委員會(Academic Planning Committee of Nipissing University)委員,湖南大學(xué)軟件學(xué)院兼職教授,國際電氣電子工程師學(xué)會(IEEE) 高級會員(senior member), 國際計算機(jī)器學(xué)會(ACM)會員(member),中國旅美科技學(xué)會(CAST |USA)終身會員(life member)。 1988年和1997年分別獲中國國防科技大學(xué)碩士和博士學(xué)位。曾任2003年國際電氣工程師協(xié)會系統(tǒng)人控制論(IEEE SMC)國際會議程序委員,2004年加拿大軟件工程教育年會程序委員,2004年國際電氣工程師協(xié)會系統(tǒng) |人 |控制論(IEEE SMC)國際會議程序委員。 曾任美國新澤西理工學(xué)院訪問教授和特聘講師,中國國防科技大學(xué)教授,國防科技大學(xué)學(xué)術(shù)(科技)委員會委員, 國防科技大學(xué)計算機(jī)系學(xué)術(shù)委員會委員, 湖南省計算機(jī)學(xué)會計算機(jī)體系結(jié)構(gòu)與網(wǎng)絡(luò)專業(yè)委員會副主任。 曾獲國際并行工程會議(ISPE/CE 2004)最佳論文獎, 國際商用機(jī)器公司(IBM)Eclipse創(chuàng)新獎(2004),國際面向?qū)ο蟪绦蛟O(shè)計系統(tǒng)、語言及應(yīng)用學(xué)術(shù)年會(OOPSLA 03)教育家獎(2004),中國國家級優(yōu)秀教材二等獎一項(2002),中國國家級優(yōu)秀教學(xué)成果二等獎一項(1999),中國部委級科技進(jìn)步一等獎三項(1991, 1994, 1997),中國部級優(yōu)秀教材二等獎一項 (1996) 。 主編教材三部,主譯教材一部, 助編教材一部, 發(fā)表論文50余篇。在中、美、加三國系統(tǒng)講授過20門計算機(jī)專業(yè)課程,聽課學(xué)生數(shù)達(dá)900(中國300, 美國460,加拿大200)余人。 目前主要研究方向包括面向?qū)ο笙到y(tǒng)及模型,基于角色的協(xié)同工作(Role |Based ollaboration),數(shù)據(jù)挖掘,分布式系統(tǒng)與軟件工程,以及遠(yuǎn)程教育工具與平臺。 周孟初,1983年獲華東工程學(xué)院(現(xiàn)南京理工大學(xué))學(xué)士學(xué)位;1986年獲北京理工大學(xué)自動控制系碩士,并于同年加入兵器工業(yè)部計算機(jī)應(yīng)用研究所;1987年赴美學(xué)習(xí)深造,1990年獲美國倫塞利爾(Rensselaer)理工學(xué)院博士學(xué)位。1987—1990年期間,曾先后在倫塞利爾理工學(xué)院CIM制造中心,紐約州生產(chǎn)率與技術(shù)轉(zhuǎn)讓中心任助理研究員。自1990年起,在美國新澤西理工學(xué)院任助理教授、副教授及正教授等,1995年獲終身教職。創(chuàng)辦并主持了離散事件系統(tǒng)實驗室。從事Petri網(wǎng)的基本理論與工程應(yīng)用,計算機(jī)集成系統(tǒng)的建模、分析和控制機(jī)理,多重生命周期,生物信號,及傳感網(wǎng)絡(luò)等方面的研究。已經(jīng)發(fā)表專著兩部,主編及助編研究專著各一部,發(fā)表雜志論文60多篇,會議論文100多篇,13篇book chapters。其中在IEEE Transactions發(fā)表的長文(regular papers)有24篇。許多論文中的概念、模型、結(jié)構(gòu)、方法和算法等多屬首次提出,并得到學(xué)術(shù)界的承認(rèn),有的得到企業(yè)界的應(yīng)用。1998年創(chuàng)辦了IEEE Systems, Man and Cybernetics學(xué)會的離散事件系統(tǒng)專業(yè)委員會并擔(dān)任其主席。2001年創(chuàng)辦了IEEE Robotics and Automation學(xué)會的半導(dǎo)體工廠自動化專業(yè)委員會并擔(dān)任其共同主席,委員會吸收了大批工業(yè)界人士,先后舉辦多次研討會,并在國際一流雜志上多次組織出版了相關(guān)專業(yè)的專輯,極大地促進(jìn)了相關(guān)領(lǐng)域的發(fā)展與工業(yè)應(yīng)用。多次擔(dān)任重大國際會議的總主席及程序委員會主席。擔(dān)任多個國際雜志編委。主要獎項有: 1994年美國國家科學(xué)基金委研究創(chuàng)新獎; 1994年美國制造工程師協(xié)會頒發(fā)的“計算機(jī)集成制造系統(tǒng)大學(xué)領(lǐng)先獎”; 1996年新澤西理工學(xué)院院長頒發(fā)的該年度Harlen J. Perlis 研究獎(成為該獎自成立以來最年輕的得主,記錄保持至今); 2000年 Whos Who in Science and Engineering (Marquis Whos Who), 5th Edition; 2000年德國洪堡基金會的美國資深科學(xué)家洪堡研究獎; 2001年新澤西亞美文化委員會的亞裔成就獎以及中國旅美科技協(xié)會的學(xué)術(shù)成就獎; 2002年Who s Who in Engineering Education (WWEE), 2002 edition; 2003年獲得IEEE Fellow(院士)稱號; 2003年IEEE Systems, Man and Cybernetics Society 杰出貢獻(xiàn)獎; 2003年中國自然科學(xué)基金海外青年學(xué)者合作研究基金獎。 現(xiàn)擔(dān)任中科院及北京科委海外評審專家, 包括美國NSF在內(nèi)的多個國家科學(xué)基金的項目評審專家。他曾應(yīng)邀在中國、澳大利亞、法國、德國、意大利、日本、韓國、墨西哥及中國臺灣與香港等多處做學(xué)術(shù)報告。
圖書目錄
Part 1Principles of Object\|Oriented Programming CHAPTER 1Introduction to Object\|Oriented Programming 1.1Object\|Oriented Thinking Methodology6 1.1.1Induction and Deduction6 1.1.2Composition and Decomposition7 1.1.3Object\|Orientation as a Thinking Methodology9 1.2Programming Techniques and Concepts11 1.2.1What is Programming?11 1.2.2Abstraction, Information Hiding and Modeling13 1.2.3Procedural Programming and Modules15 1.2.4Encapsulation18 1.2.5Abstract Data Type20 1.3Object\|Oriented Programming21 1.4Other Programming Paradigms24 1.4.1Imperative Programming25 1.4.2Functional Programming25 1.4.3Logic Programming26 1.4.4Relationships between Object\|Oriented Programming and Other Paradigms27 1.5Object\|Oriented Languages28 1.5.1Simula 6728 1.5.2Smalltalk29 1.5.3C++30 1.5.4Java31 1.5.5C#32 1.5.6Others33 1.6Summary34 CHAPTER 2Object, Classes and Inheritance 2.1Object39 2.1.1Real\|World Object Properties39 2.1.2Virtual Objects41 2.1.3The External and Internal View of an Object42 2.1.4Definition of an Object43 Contents Object\|Oriented Programming in C++: A Project\|Based Approach 2.2Message43 2.2.1The Only Way to Interact43 2.2.2Definition of a Message44 2.2.3Message Categories45 2.2.4Objects in Programming45 2.3Encapsulation and Protocol45 2.4Class46 2.4.1Abstraction46 2.4.2Classification47 2.4.3The Basic View of a Class48 2.4.4Class Definition49 2.4.5Relationships among Classes50 2.4.6The Characteristics of a Class50 2.5Instantiation51 2.6Metaclass53 2.7Inheritance55 2.7.1The Properties of Inheritance55 2.7.2Inheritance Definition56 2.7.3Categories of Inheritance57 2.7.4Naming Conflicts58 2.7.5Precedence Conflicts59 2.8Superclass and Subclass60 2.8.1Subclassing60 2.8.2Modifiability61 2.9Abstract Class61 2.10Summary63 CHAPTER 3Polymorphism, Dynamic Binding, Overloading and Other Concepts3.1Polymorphism69 3.1.1General Meanings of Polymorphism69 3.1.2Introduction of Polymorphism to Programming Languages70 3.1.3Categories of Polymorphism71 3.1.4The Drawbacks of Polymorphism73 3.2Overloading75 3.2.1Overloading Based on Scopes 75 3.2.2Overloading Based on Type Signatures76 3.3Static and Dynamic Binding77 3.4Overriding79 3.4.1Overriding Variables80 3.4.2Overriding Methods82 3.5Other Object\|Oriented Programming Concepts82 3.5.1Object Interactions83 3.5.2Design Patterns86 3.5.3Objects and Agents95 3.5.4Object\|Orientation and Reusable Components98 3.6Summary100 CHAPTER 4Object\|Oriented Design 4.1Object\|Oriented Software Engineering105 4.2Object\|Oriented Design108 4.2.1OOA vs. OOD108 4.2.2OOD Steps and Tasks110 4.2.3Discussions114 4.3Unified Modeling Language115 4.3.1Use Case Modeling and Use Case Diagrams115 4.3.2Class and Object Diagrams117 4.3.3Association Diagram118 4.3.4Dynamic Modeling121 4.3.5Other Diagrams122 4.4CASE Tools for Object\|Oriented Design123 4.4.1The Basic Architecture of OO ICASE Tools124 4.4.2Some ICASE Tools for OOA/OOD126 4.5Metrics of Object Systems128 4.5.1The Analysis for the Complexity of an Object System128 4.5.2Lorenz Metrics130 4.5.3The CK OO Metrics Suite132 4.5.4The Productivity Metrics of Object Systems134 4.6Summary135 Part 2Problem Solving with C++ CHAPTER 5Overview of the Basics of C++ 5.1The Simplest C++ Program141 5.2Functions143 5.2.1Function Declaration and Definition143 5.2.2Parameters and Arguments144 5.2.3Constant Reference Parameter147 5.2.4Returned Values148 5.2.5Default Arguments148 5.2.6Viewing Functions as Objects149 5.3Fundamental Objects in C++150 5.3.1Basic Classes and Their Instances151 5.3.2Variable Declaration153 5.3.3Variable Scopes154 5.4Basic Streams for Input and Output156 5.4.1Output Stream156 5.4.2Input Stream157 5.5C++ Control Structures158 5.5.1Sequential Statements158 5.5.2Conditional Structures159 5.5.3Iterative Structures161 5.6Pointers and Memory Allocation165 5.6.1Pointers to Constants167 5.6.2Constant Pointers168 5.6.3Pointers and Arrays168 5.6.4Void Pointers170 5.6.5Allocating Memory172 5.6.6Functions Returning a Pointer175 5.7Summary177 CHAPTER 6Objects and Classes in C++ 6.1Project Description181 6.2Analysis and Design182 6.3Class183 6.4Accessing Modifiers184 6.5Member Function Implementation186 6.6Constructors189 6.7Destructor190 6.8Enumeration191 6.9Switch/Case Structure and rand() Function193 6.10Basic Do\|Loop Structure197 6.11Instantiation and Messages198 6.12Standard Input and Output Streams200 6.13Deleting Objects201 6.14The Complete main() Function for the Project 202 6.15Object Copying204 6.16Summary207 CHAPTER 7Inheritance in C++ 7.1Project Description211 7.2Analysis and Design212 7.3Base and Derived Classes215 7.3.1Static Variable217 7.4Overriding218 7.5Accessibility of Inherited Members219 7.6Constructor Initializer225 7.7Constructor and Destructor Execution Order226 7.8Creating Instances of Derived Classes227 7.9Create Report on Screen: More on Output Stream229 7.10Function main()232 7.11Running Result of Our Project234 7.12Multiple and Virtual Inheritance236 7.12.1Virtual Base Classes237 7.13Summary238 CHAPTER 8Polymorphism and Overloading in C++ 8.1 Project Description: A Self\|Test Program243 8.2Analysis and Design244 8.3Abstract Classes and Virtual Functions247 8.4Derived Classes from an Abstract Class250 8.4.1Derived Abstract Class252 8.5The ExamPaper Class256 8.5.1Polymorphism and Dynamic Binding257 8.5.2Overloading Functions259 8.5.3Other Implementations259 8.6Function main()261 8.6.1Compatibility between Base and Derived Classes263 8.6.2The Main Loop of a Test266 8.6.3The Final Code of main()268 8.7Other Auxiliary Statements271 8.8Sample Running Results272 8.9Other C++ Concepts Relevant to Polymorphism275 8.9.1Polymorphism and Pointers275 8.9.2Virtual Destructors276 8.9.3“this” Pointer278 8.9.4Overloading Functions and Inheritance279 8.10Summary280 CHAPTER 9Templates, Exception Handling and Overloaded Operators in C++9.1Project Description: A Dictionary Application285 9.2Analysis and Design287 9.3Templates288 9.4Exception Handling292 9.5Function main()298 9.6Auxiliary Statements and Running Results302 9.7Relevant Concepts with Templates305 9.7.1Class Templates and Classes305 9.7.2Function Templates306 9.7.3Overloaded Operators308 9.7.4Overloading a Function Template310 9.8Concepts Relevant with Exception Handling312 9.8.1Unwinding the Exception Stack312 9.8.2Exception with No Catch313 9.8.3Exception within an Exception314 9.8.4Exceptions in Templates316 9.8.5Grouping Exceptions317 9.8.6Re\|throwing an Exception318 9.8.7Exception Interface Specification319 9.9Summary320 CHAPTER 10Container Classes in C++ 10.1Project Description: A Student Registration Program325 10.2Analysis and Design326 10.3Linked List327 10.3.1Simple Linked List328 10.3.2Doubly Linked List334 10.4Application of Simple List340 10.5Application of Doubly Linked List341 10.6An Auxiliary Class and Function main()346 10.7Compilation and Execution Results350 10.8Application of Doubly Linked List in a Polymorphic Way353 10.9Summary360 CHAPTER 11Streams and Friends in C++ 11.1I/O Operators and Streams366 11.1.1Streams366 11.1.2Output of Basic Objects366 11.1.3Input of Basic Objects368 11.1.4The States of Streams370 11.1.5The Flags and Formats of Streams372 11.1.6Overloaded I/O Operators on Streams377 11.1.7Manipulators381 11.1.8File Streams386 11.1.9String Streams390 11.2Friend391 11.2.1Friend Functions392 11.2.2Friend Classes393 11.2.3Properties of Friends399 11.3Summary400 CHAPTER 12Use of the Standard Library of C++ 12.1C++ STL405 12.1.1Containers and Algorithms406 12.1.2Iterators411 12.1.3Other Parts of the STL414 12.2List415 12.2.1The Interfaces of List416 12.2.2The Application of List416 12.2.3The Algorithm Library422 12.2.4Function Objects433 12.3Map434 12.3.1The Interfaces of Map and Pair435 12.3.2Application of Maps436 12.4String443 12.4.1The Interface of String443 12.4.2The Application of String445 12.5Summary448Index450References460 Part 1Principles of Object\|Oriented Programming CHAPTER 1Introduction to Object\|Oriented Programming 1.1Object\|Oriented Thinking Methodology6 1.1.1Induction and Deduction6 1.1.2Composition and Decomposition7 1.1.3Object\|Orientation as a Thinking Methodology9 1.2Programming Techniques and Concepts11 1.2.1What is Programming?11 1.2.2Abstraction, Information Hiding and Modeling13 1.2.3Procedural Programming and Modules15 1.2.4Encapsulation18 1.2.5Abstract Data Type20 1.3Object\|Oriented Programming21 1.4Other Programming Paradigms24 1.4.1Imperative Programming25 1.4.2Functional Programming25 1.4.3Logic Programming26 1.4.4Relationships between Object\|Oriented Programming and Other Paradigms27 1.5Object\|Oriented Languages28 1.5.1Simula 6728 1.5.2Smalltalk29 1.5.3C++30 1.5.4Java31 1.5.5C#32 1.5.6Others33 1.6Summary34 CHAPTER 2Object, Classes and Inheritance 2.1Object39 2.1.1Real\|World Object Properties39 2.1.2Virtual Objects41 2.1.3The External and Internal View of an Object42 2.1.4Definition of an Object43 Contents Object\|Oriented Programming in C++: A Project\|Based Approach 2.2Message43 2.2.1The Only Way to Interact43 2.2.2Definition of a Message44 2.2.3Message Categories45 2.2.4Objects in Programming45 2.3Encapsulation and Protocol45 2.4Class46 2.4.1Abstraction46 2.4.2Classification47 2.4.3The Basic View of a Class48 2.4.4Class Definition49 2.4.5Relationships among Classes50 2.4.6The Characteristics of a Class50 2.5Instantiation51 2.6Metaclass53 2.7Inheritance55 2.7.1The Properties of Inheritance55 2.7.2Inheritance Definition56 2.7.3Categories of Inheritance57 2.7.4Naming Conflicts58 2.7.5Precedence Conflicts59 2.8Superclass and Subclass60 2.8.1Subclassing60 2.8.2Modifiability61 2.9Abstract Class61 2.10Summary63 CHAPTER 3Polymorphism, Dynamic Binding, Overloading and Other Concepts3.1Polymorphism69 3.1.1General Meanings of Polymorphism69 3.1.2Introduction of Polymorphism to Programming Languages70 3.1.3Categories of Polymorphism71 3.1.4The Drawbacks of Polymorphism73 3.2Overloading75 3.2.1Overloading Based on Scopes 75 3.2.2Overloading Based on Type Signatures76 3.3Static and Dynamic Binding77 3.4Overriding79 3.4.1Overriding Variables80 3.4.2Overriding Methods82 3.5Other Object\|Oriented Programming Concepts82 3.5.1Object Interactions83 3.5.2Design Patterns86 3.5.3Objects and Agents95 3.5.4Object\|Orientation and Reusable Components98 3.6Summary100 CHAPTER 4Object\|Oriented Design 4.1Object\|Oriented Software Engineering105 4.2Object\|Oriented Design108 4.2.1OOA vs. OOD108 4.2.2OOD Steps and Tasks110 4.2.3Discussions114 4.3Unified Modeling Language115 4.3.1Use Case Modeling and Use Case Diagrams115 4.3.2Class and Object Diagrams117 4.3.3Association Diagram118 4.3.4Dynamic Modeling121 4.3.5Other Diagrams122 4.4CASE Tools for Object\|Oriented Design123 4.4.1The Basic Architecture of OO ICASE Tools124 4.4.2Some ICASE Tools for OOA/OOD126 4.5Metrics of Object Systems128 4.5.1The Analysis for the Complexity of an Object System128 4.5.2Lorenz Metrics130 4.5.3The CK OO Metrics Suite132 4.5.4The Productivity Metrics of Object Systems134 4.6Summary135 Part 2Problem Solving with C++ CHAPTER 5Overview of the Basics of C++ 5.1The Simplest C++ Program141 5.2Functions143 5.2.1Function Declaration and Definition143 5.2.2Parameters and Arguments144 5.2.3Constant Reference Parameter147 5.2.4Returned Values148 5.2.5Default Arguments148 5.2.6Viewing Functions as Objects149 5.3Fundamental Objects in C++150 5.3.1Basic Classes and Their Instances151 5.3.2Variable Declaration153 5.3.3Variable Scopes154 5.4Basic Streams for Input and Output156 5.4.1Output Stream156 5.4.2Input Stream157 5.5C++ Control Structures158 5.5.1Sequential Statements158 5.5.2Conditional Structures159 5.5.3Iterative Structures161 5.6Pointers and Memory Allocation165 5.6.1Pointers to Constants167 5.6.2Constant Pointers168 5.6.3Pointers and Arrays168 5.6.4Void Pointers170 5.6.5Allocating Memory172 5.6.6Functions Returning a Pointer175 5.7Summary177 CHAPTER 6Objects and Classes in C++ 6.1Project Description181 6.2Analysis and Design182 6.3Class183 6.4Accessing Modifiers184 6.5Member Function Implementation186 6.6Constructors189 6.7Destructor190 6.8Enumeration191 6.9Switch/Case Structure and rand() Function193 6.10Basic Do\|Loop Structure197 6.11Instantiation and Messages198 6.12Standard Input and Output Streams200 6.13Deleting Objects201 6.14The Complete main() Function for the Project 202 6.15Object Copying204 6.16Summary207 CHAPTER 7Inheritance in C++ 7.1Project Description211 7.2Analysis and Design212 7.3Base and Derived Classes215 7.3.1Static Variable217 7.4Overriding218 7.5Accessibility of Inherited Members219 7.6Constructor Initializer225 7.7Constructor and Destructor Execution Order226 7.8Creating Instances of Derived Classes227 7.9Create Report on Screen: More on Output Stream229 7.10Function main()232 7.11Running Result of Our Project234 7.12Multiple and Virtual Inheritance236 7.12.1Virtual Base Classes237 7.13Summary238 CHAPTER 8Polymorphism and Overloading in C++ 8.1 Project Description: A Self\|Test Program243 8.2Analysis and Design244 8.3Abstract Classes and Virtual Functions247 8.4Derived Classes from an Abstract Class250 8.4.1Derived Abstract Class252 8.5The ExamPaper Class256 8.5.1Polymorphism and Dynamic Binding257 8.5.2Overloading Functions259 8.5.3Other Implementations259 8.6Function main()261 8.6.1Compatibility between Base and Derived Classes263 8.6.2The Main Loop of a Test266 8.6.3The Final Code of main()268 8.7Other Auxiliary Statements271 8.8Sample Running Results272 8.9Other C++ Concepts Relevant to Polymorphism275 8.9.1Polymorphism and Pointers275 8.9.2Virtual Destructors276 8.9.3“this” Pointer278 8.9.4Overloading Functions and Inheritance279 8.10Summary280 CHAPTER 9Templates, Exception Handling and Overloaded Operators in C++9.1Project Description: A Dictionary Application285 9.2Analysis and Design287 9.3Templates288 9.4Exception Handling292 9.5Function main()298 9.6Auxiliary Statements and Running Results302 9.7Relevant Concepts with Templates305 9.7.1Class Templates and Classes305 9.7.2Function Templates306 9.7.3Overloaded Operators308 9.7.4Overloading a Function Template310 9.8Concepts Relevant with Exception Handling312 9.8.1Unwinding the Exception Stack312 9.8.2Exception with No Catch313 9.8.3Exception within an Exception314 9.8.4Exceptions in Templates316 9.8.5Grouping Exceptions317 9.8.6Re\|throwing an Exception318 9.8.7Exception Interface Specification319 9.9Summary320 CHAPTER 10Container Classes in C++ 10.1Project Description: A Student Registration Program325 10.2Analysis and Design326 10.3Linked List327 10.3.1Simple Linked List328 10.3.2Doubly Linked List334 10.4Application of Simple List340 10.5Application of Doubly Linked List341 10.6An Auxiliary Class and Function main()346 10.7Compilation and Execution Results350 10.8Application of Doubly Linked List in a Polymorphic Way353 10.9Summary360 CHAPTER 11Streams and Friends in C++ 11.1I/O Operators and Streams366 11.1.1Streams366 11.1.2Output of Basic Objects366 11.1.3Input of Basic Objects368 11.1.4The States of Streams370 11.1.5The Flags and Formats of Streams372 11.1.6Overloaded I/O Operators on Streams377 11.1.7Manipulators381 11.1.8File Streams386 11.1.9String Streams390 11.2Friend391 11.2.1Friend Functions392 11.2.2Friend Classes393 11.2.3Properties of Friends399 11.3Summary400 CHAPTER 12Use of the Standard Library of C++ 12.1C++ STL405 12.1.1Containers and Algorithms406 12.1.2Iterators411 12.1.3Other Parts of the STL414 12.2List415 12.2.1The Interfaces of List416 12.2.2The Application of List416 12.2.3The Algorithm Library422 12.2.4Function Objects433 12.3Map434 12.3.1The Interfaces of Map and Pair435 12.3.2Application of Maps436 12.4String443 12.4.1The Interface of String443 12.4.2The Application of String445 12.5Summary448Index450References460