An Introduction to Design Patterns in C++ with Qt 4

Alan Ezust, Paul Ezust

  • 出版商: Prentice Hall
  • 出版日期: 2006-08-31
  • 定價: $1,815
  • 售價: 6.0$1,089
  • 語言: 英文
  • 頁數: 656
  • 裝訂: Paperback
  • ISBN: 0131879057
  • ISBN-13: 9780131879058
  • 相關分類: C++ 程式語言QtDesign Pattern
  • 立即出貨(限量) (庫存=1)

買這商品的人也買了...

商品描述

Description

Learn C++, Patterns, and Qt 4 Cross-Platform Development

Master C++ and design patterns together, using the world's leading open source framework for cross-platform development: Qt 4.

An Introduction to Design Patterns in C++ with Qt 4 is a complete tutorial and reference that assumes no previous knowledge of C, C++, objects, or patterns. You'll walk through every core concept, one step at a time, learning through an extensive collection of Qt 4.1-tested examples and exercises.

By the time you're done, you'll be creating multithreaded GUI applications that access databases and manipulate XML files--applications that run on platforms including Windows, Linux, Unix, and Mac OS X. Best of all, you'll be writing code that's efficient, reusable, and elegant.

  • Learn objects fast: classes, inheritance, polymorphism, and more
  • Master powerful design patterns
  • Discover efficient high-level programming techniques using libraries, generics, and containers
  • Build graphical applications using Qt widgets, models, and views
  • Learn advanced techniques ranging from multithreading to reflective programming
  • Use Qt's built-in classes for accessing MySQL data
  • Includes a complete C++ language reference

 

Table of Contents

Preface xix
Acknowledgments xxiii
Rationale for the Book xxv
About the Authors xxvii
PART I: Introduction to C++ and Qt 4 2
Chapter 1: C++ Introduction 5
1.1 Overview of C++ 6

1.2 A Brief History of C++ 6

1.3 Setup: Open-Source Platforms 7

1.4 Setup: Win32 12

1.5 C++ First Example 12

1.6 Input and Output 16

1.7 Identifiers, Types, and Literals 19

1.8 C++ Simple Types 22

1.9 C++ Standard Library Strings 30

1.10 Streams 31

1.11 The Keyword const 34

1.12 Pointers and Memory Access 36

1.13 const* and *const 40

1.14 Reference Variables 43

Points of Departure 44

Review Questions 45

Chapter 2: Classes 47
2.1 Structs 48

2.2 Class Definitions 49

2.3 Member Access Specifiers 51

2.4 Encapsulation 54

2.5 Introduction to UML 54

2.5.1 UML Relationships 55

2.6 Friends of a Class 55

2.7 Constructors 56

2.8 Subobjects 58

2.9 Destructors 60

2.10 The Keyword static 61

2.11 Copy Constructors and Assignment Operators 64

2.12 Conversions 67

2.13 const Member Functions 68

Review Questions 79

Chapter 3: Introduction to Qt 81
3.1 Example Project: Using QApplication and QLabel 82

3.2 Makefile, qmake, and Project Files 83

3.3 Getting Help Online 89

3.4 Style Guidelines and Naming Conventions 90

3.5 The Qt Core Module 91

3.6 Streams and Dates 91

Points of Departure 93

Review Questions 94

Chapter 4: Lists 95
4.1 Introduction to Containers 96

4.2 Iterators 97

4.3 Relationships 99

Points of Departure 102

Review Questions 103

Chapter 5: Functions 105
5.1 Function Declarations 106

5.2 Overloading Functions 107

5.3 Optional Arguments 109

5.4 Operator Overloading 111

5.5 Parameter Passing by Value 116

5.6 Parameter Passing by Reference 118

5.7 References to const 121

5.8 Function Return Values 122

5.9 Returning References from Functions 122

5.10 Overloading on const-ness 124

5.11 Inline Functions 126

5.12 Inlining versus Macro Expansion 127

Review Questions 133

Chapter 6: Inheritance and Polymorphism 135
6.1 Simple Derivation 136

6.2 Derivation with Polymorphism 142

6.3 Derivation from an Abstract Base Class 148

6.4 Inheritance Design 152

6.5 Overloading, Hiding, and Overriding 154

6.6 Constructors, Destructors, and Copy Assignment Operators 155

6.7 Processing Command-Line Arguments 158

Points of Departure 164

Review Questions 165

PART II: Higher-Level Programming 166
Chapter 7: Libraries 169
7.1 Code Containers 170

7.2 Reusing Other Libraries 171

7.3 Organizing Libraries: Dependency Management 173

7.4 Installing Libraries: A Lab Exercise 176

7.5 Frameworks and Components 178

Review Questions 180

Chapter 8: Introduction to Design Patterns 181
8.1 Iteration and the Visitor Pattern 182

Review Questions 190

Chapter 9: QObject 191
9.1 QObject's Child Managment 194

9.2 Composite Pattern: Parents and Children 196

9.3 QApplication and the Event Loop 200

9.4 Q_OBJECT and moc: A Checklist 209

9.5 Values and Objects 210

9.6 tr() and Internationalization 211

Point of Departure 211

Review Questions 212

Chapter 10: Generics and Containers 213
10.1 Generics and Templates 214

10.2 Containers 219

10.3 Managed Containers, Composites, and Aggregates 221

10.4 Implicitly Shared Classes 224

10.5 Generics, Algorithms, and Operators 225

10.6 Serializer Pattern 227

10.7 Sorted Map Example 229

Review Questions 235

Chapter 11: Qt GUI Widgets 237
11.1 Widget Categories 239

11.2 QMainWindow and QSettings 240

11.3 Dialogs 244

11.4 Images and Resources 248

11.5 Layout of Widgets 251

11.6 QActions, QMenus, and QMenuBars 260

11.7 QActions, QToolbars, and QActionGroups 262

11.8 Regions and QDockWidgets 270

11.9 Views of a QStringList 272

Points of Departure 274

Review Questions 275

Chapter 12: Concurrency 277
12.1 QProcess and Process Control 278

12.2 Threads and QThread 290

12.3 Summary: QProcess and QThread 303

Review Questions 305

Chapter 13: Validation and Regular Expressions 307
13.1 Validators 308

13.2 Regular Expressions 310

13.3 Regular Expression Validation 316

Review Questions 319

Chapter 14: Parsing XML 321
14.1 The Qt XML Module 325

14.2 Event-Driven Parsing 325

14.3 XML, Tree Structures, and DOM 329

Review Questions 340

Chapter 15: Meta Objects, Properties, and Reflective Programming 341
15.1 Anti-patterns 342

15.2 QMetaObject: The MetaObject Pattern 344

15.3 Type Identification and qobject_cast 345

15.4 Q_PROPERTY Macro: Describing QObject Properties 347

15.5 QVariant Class: Accessing Properties 350

15.6 DataObject: An Extension of QObject 353

15.7 Property Containers: PropsMap 355

Review Questions 357

Chapter 16: More Design Patterns 359
16.1 Creational Patterns 360

16.2 Serializer Pattern Revisited 373

16.3 The Facade Pattern 381

Points of Departure 389

Review Questions 390

Chapter 17: Models and Views 391
17.1 M-V-C: What about the Controller? 392

17.2 Dynamic Form Models 393

17.3 Qt 4 Models and Views 409

17.4 Table Models 411

17.5 Tree Models 417

Review Questions 421

Chapter 18: Qt SQL Classes 423
18.1 Introduction to MySQL 424

18.2 Queries and Result Sets 427

18.3 Database Models 429

Review Questions 433

PART III: C++ Language Reference 434
Chapter 19: Types and Expressions 437
19.1 Operators 438

19.2 Evaluation of Logical Expressions 443

19.3 Enumerations 443

19.4 Signed and Unsigned Integral Types 445

19.5 Standard Expression Conversions 447

19.6 Explicit Conversions 449

19.7 Safer Typecasting Using ANSI C++ Typecasts 450

19.8 Run-Time Type Identification (RTTI) 454

19.9 Member Selection Operators 457

Point of Departure 458

Review Questions 461

Chapter 20: Scope and Storage Class 463
20.1 Declarations and Definitions 464

20.2 Identifier Scope 465

20.3 Storage Class 470

20.4 Namespaces 473

Review Questions 478

Chapter 21: Statements and Control Structures 479
21.1 Statements 480

21.2 Selection Statements 480

21.3 Iteration 483

21.4 Exceptions 485

Review Questions 502

Chapter 22: Memory Access 503
22.1 Pointer Pathology 504

22.2 Further Pointer Pathology with Heap Memory 506

22.3 Memory Access Summary 509

22.4 Introduction to Arrays 509

22.5 Pointer Arithmetic 510

22.6 Arrays, Functions, and Return Values 511

22.7 Different Kinds of Arrays 513

22.8 Valid Pointer Operations 513

22.9 What Happens If new Fails? 515

22.10 Chapter Summary 519

Review Questions 521

Chapter 23: Inheritance in Detail 523
23.1 Virtual Pointers and Virtual Tables 524

23.2 Polymorphism and virtual Destructors 526

23.3 Multiple Inheritance 528

Point of Departure 532

23.4 public, protected, and private Derivation 536

Review Questions 539

Chapter 24: Miscellaneous Topics 541
24.1 Functions with Variable-Length Argument Lists 542

24.2 Resource Sharing 543

PART IV: Programming Assignments 548
Chapter 25: MP3 Jukebox Assignments 551
25.1 Data Model: Mp3File 553

25.2 Visitor: Generating Playlists 555

25.3 Preference: An Enumerated Type 556

25.4 Reusing id3lib 559

25.5 PlayListModel Serialization 560

25.6 Testing Mp3File Related Classes 561

25.7 Simple Queries and Filters 561

25.8 Mp3PlayerView 563

25.9 Models and Views: PlayList 565

25.10 Source Selector 566

25.11 Persistent Settings 567

25.12 Edit Form View for FileTagger 568

25.13 Database View 569

Points of Departure 571

PART V: Appendices 572
Appendix A: C++ Reserved Keywords 575
Appendix B: Standard Headers 577
Appendix C: The Development Environment 579
Bibliography 601
Index 603

商品描述(中文翻譯)

描述



學習 C++、設計模式和 Qt 4 跨平台開發


使用全球領先的開源框架 Qt 4,一起掌握 C++ 和設計模式。


使用 Qt 4 的 C++ 設計模式介紹 是一本完整的教程和參考書,假設讀者對 C、C++、物件或設計模式沒有任何先備知識。你將逐步學習每個核心概念,通過大量的 Qt 4.1 測試過的例子和練習來學習。


在完成學習後,你將能夠創建多線程的 GUI 應用程序,訪問數據庫並操作 XML 文件,這些應用程序可以在包括 Windows、Linux、Unix 和 Mac OS X 在內的各種平台上運行。最重要的是,你將寫出高效、可重用和優雅的代碼。



  • 快速學習物件:類、繼承、多態等

  • 掌握強大的設計模式

  • 使用庫、泛型和容器等高級編程技術

  • 使用 Qt 的小部件、模型和視圖構建圖形應用程序

  • 學習從多線程到反射編程等高級技術

  • 使用 Qt 內置的類來訪問 MySQL 數據

  • 包含完整的 C++ 語言參考


 



目錄



前言 xix
致謝 xxiii
本書的理念 xxv
關於作者 xxvii
第一部分:C++ 和 Qt 4 簡介 2
第一章:C++ 簡介 5
1.1 C++ 概述 6


1.2 C++ 的簡要歷史 6


1.3 環境設置:開源平台 7


1.4 環境設置:Win32 12


1.5 C++ 第一個例子 12


1.6 輸入和輸出 16


1.7 識別符、類型和字面值 19


1.8 C++ 簡單類型 22


1.9 C++ 標準庫字符串 30


1.10 流 31


1.11 關鍵字 const 34


1.12 指針和內存訪問 36


1.13 const* 和 *const 40


1.14 引用變量 43


分歧點 44


復習問題 45


第二章:類 47
2.1 結構體 48


2.2 類定義 49


2.3 成員訪問限定符 51


2.4 封裝 54


2.5 UML 簡介 54


2.5.1 UML 關係 55


2.6 類的友元 55


2.7 構造函數 56


2.8 子對象 58


2.9 解構函數 60


2.10 關鍵字 static 61


2.11 複製構造函數 a```