{"title":"Object-oriented programming (OOP) Books","description":"","products":[{"product_id":"python-programming-with-design-patterns-9780137579938","title":"Python Programming with Design Patterns","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cstrong\u003eJames W. Cooper\u003c\/strong\u003e holds a PhD in chemistry and worked in academia, for the scientific instrument industry, and for IBM for 25 years, primarily as a computer scientist at IBM's Thomas J. Watson Research Center. Now retired, he is the author of 20 books, including 3 on design patterns in various languages. His most recent books are \u003cem\u003eFlameout: The Rise and Fall of IBM Instruments\u003c\/em\u003e (2019) and \u003cem\u003eFood Myths Debunked\u003c\/em\u003e (2014).\u003c\/p\u003e \u003cp\u003eJames holds 11 patents and has written 60 columns for \u003cem\u003eJavaPro Magazin\u003c\/em\u003ee. He has also written nearly 1,000 columns for the now vanished Examiner.com on foods and chemistry, and he currently writes his own blog: FoodScienceInstitute.com. Recently, he has written columns on Python for Medium.com and Substack.\u003c\/p\u003e \u003cp\u003eHe is also involved in local theater groups and is the treasurer for Troupers Light Opera, where he performs regularly.\u003c\/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003ePreface xxi\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePART I: INTRODUCTION 1\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eThe tkinter Library 2\u003c\/p\u003e \u003cp\u003eGitHub 2\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 1 Introduction to Objects 5\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eThe Class __init__ Method 6\u003c\/p\u003e \u003cp\u003eVariables Inside a Class 6\u003c\/p\u003e \u003cp\u003eCollections of Classes 7\u003c\/p\u003e \u003cp\u003eInheritance 8\u003c\/p\u003e \u003cp\u003eDerived Classes Created with Revised Methods 8\u003c\/p\u003e \u003cp\u003eMultiple Inheritance 8\u003c\/p\u003e \u003cp\u003eDrawing a Rectangle and a Square 10\u003c\/p\u003e \u003cp\u003eVisibility of Variables 12\u003c\/p\u003e \u003cp\u003e Properties 13\u003c\/p\u003e \u003cp\u003e Local Variables 13\u003c\/p\u003e \u003cp\u003eTypes in Python 13\u003c\/p\u003e \u003cp\u003eSummary 14\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 15\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 2 Visual Programming in Python 17\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eImporting Fewer Names 19\u003c\/p\u003e \u003cp\u003eCreating an Object-Oriented Version 19\u003c\/p\u003e \u003cp\u003eUsing Message Boxes 21\u003c\/p\u003e \u003cp\u003eUsing File Dialogs 22\u003c\/p\u003e \u003cp\u003eUnderstanding Options for the Pack Layout Manager 23\u003c\/p\u003e \u003cp\u003eUsing the ttk Libraries 24\u003c\/p\u003e \u003cp\u003eResponding to User Input 25\u003c\/p\u003e \u003cp\u003e Adding Two Numbers 26\u003c\/p\u003e \u003cp\u003e Catching the Error 26\u003c\/p\u003e \u003cp\u003eApplying Colors in tkinter 27\u003c\/p\u003e \u003cp\u003eCreating Radio Buttons 27\u003c\/p\u003e \u003cp\u003e Using a Class-Level Variable 30\u003c\/p\u003e \u003cp\u003eCommunicating Between Classes 30\u003c\/p\u003e \u003cp\u003eUsing the Grid Layout 30\u003c\/p\u003e \u003cp\u003eCreating Checkbuttons 32\u003c\/p\u003e \u003cp\u003e Disabling Check Boxes 32\u003c\/p\u003e \u003cp\u003eAdding Menus to Windows 35\u003c\/p\u003e \u003cp\u003eUsing the LabelFrame 39\u003c\/p\u003e \u003cp\u003eMoving On 40\u003c\/p\u003e \u003cp\u003eExamples on GitHub 40\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 3 Visual Programming of Tables of Data 41\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eCreating a Listbox 42\u003c\/p\u003e \u003cp\u003e Displaying the State Data 44\u003c\/p\u003e \u003cp\u003eUsing a Combobox 46\u003c\/p\u003e \u003cp\u003eThe Treeview Widget 47\u003c\/p\u003e \u003cp\u003e Inserting Tree Nodes 50\u003c\/p\u003e \u003cp\u003eMoving On 51\u003c\/p\u003e \u003cp\u003eExample Code on GitHub 51\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 4 What Are Design Patterns? 53\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eDefining Design Patterns 54\u003c\/p\u003e \u003cp\u003eThe Learning Process 55\u003c\/p\u003e \u003cp\u003eNotes on Object-Oriented Approaches 56\u003c\/p\u003e \u003cp\u003ePython Design Patterns 57\u003c\/p\u003e \u003cp\u003eReferences 57\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePART II: CREATIONAL PATTERNS 59\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 5 The Factory Pattern 61\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eHow a Factory Works 61\u003c\/p\u003e \u003cp\u003eSample Code 62\u003c\/p\u003e \u003cp\u003eThe Two Subclasses 62\u003c\/p\u003e \u003cp\u003eBuilding the Simple Factory 63\u003c\/p\u003e \u003cp\u003e Using the Factory 63\u003c\/p\u003e \u003cp\u003e A Simple GUI 64\u003c\/p\u003e \u003cp\u003eFactory Patterns in Math Computation 65\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 65\u003c\/p\u003e \u003cp\u003eThought Questions 66\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 6 The Factory Method Pattern 67\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eThe Swimmer Class 68\u003c\/p\u003e \u003cp\u003eThe Event Classes 69\u003c\/p\u003e \u003cp\u003eStraight Seeding 70\u003c\/p\u003e \u003cp\u003e Circle Seeding 71\u003c\/p\u003e \u003cp\u003eOur Seeding Program 72\u003c\/p\u003e \u003cp\u003eOther Factories 74\u003c\/p\u003e \u003cp\u003eWhen to Use a Factory Method 74\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 74\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 7 The Abstract Factory Pattern 75\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eA GardenMaker Factory 75\u003c\/p\u003e \u003cp\u003eHow the User Interface Works 77\u003c\/p\u003e \u003cp\u003eConsequences of the Abstract Factory Pattern 77\u003c\/p\u003e \u003cp\u003eThought Questions 78\u003c\/p\u003e \u003cp\u003eCode on GitHub 78\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 8 The Singleton Pattern 79\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eThrowing the Exception 80\u003c\/p\u003e \u003cp\u003eCreating an Instance of the Class 80\u003c\/p\u003e \u003cp\u003eStatic Classes As Singleton Patterns 81\u003c\/p\u003e \u003cp\u003eFinding the Singletons in a Large Program 81\u003c\/p\u003e \u003cp\u003eOther Consequences of the Singleton Pattern 82\u003c\/p\u003e \u003cp\u003eSample Code on GitHub 82\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 9 The Builder Pattern 83\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eAn Investment Tracker 84\u003c\/p\u003e \u003cp\u003eCalling the Builders 86\u003c\/p\u003e \u003cp\u003e The List Box Builder 87\u003c\/p\u003e \u003cp\u003e The Checkbox Builder 88\u003c\/p\u003e \u003cp\u003eDisplaying the Selected Securities 89\u003c\/p\u003e \u003cp\u003eConsequences of the Builder Pattern 89\u003c\/p\u003e \u003cp\u003eThought Questions 89\u003c\/p\u003e \u003cp\u003eSample Code on GitHub 89\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 10 The Prototype Pattern 91\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eCloning in Python 91\u003c\/p\u003e \u003cp\u003eUsing the Prototype 92\u003c\/p\u003e \u003cp\u003eConsequences of the Prototype Pattern 94\u003c\/p\u003e \u003cp\u003eSample Code on GitHub 94\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 11 Summary of Creational Patterns 95\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePART III: STRUCTURAL PATTERNS 97\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 12 The Adapter Pattern 99\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eMoving Data Between Lists 99\u003c\/p\u003e \u003cp\u003eMaking an Adapter 101\u003c\/p\u003e \u003cp\u003e The Class Adapter 103\u003c\/p\u003e \u003cp\u003e Two-Way Adapters 103\u003c\/p\u003e \u003cp\u003e Pluggable Adapters 103\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 103\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 13 The Bridge Pattern 105\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eCreating the User Interface 107\u003c\/p\u003e \u003cp\u003eExtending the Bridge 108\u003c\/p\u003e \u003cp\u003eConsequences of the Bridge Pattern 109\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 110\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 14 The Composite Pattern 111\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eAn Implementation of a Composite 112\u003c\/p\u003e \u003cp\u003eSalary Computation 112\u003c\/p\u003e \u003cp\u003eThe Employee Classes 112\u003c\/p\u003e \u003cp\u003eThe Boss Class 113\u003c\/p\u003e \u003cp\u003eBuilding the Employee Tree 114\u003c\/p\u003e \u003cp\u003ePrinting the Employee Tree 114\u003c\/p\u003e \u003cp\u003eCreating a Treeview of the Composite 116\u003c\/p\u003e \u003cp\u003eUsing Doubly Linked Lists 117\u003c\/p\u003e \u003cp\u003eConsequences of the Composite Pattern 118\u003c\/p\u003e \u003cp\u003eA Simple Composite 119\u003c\/p\u003e \u003cp\u003eOther Implementation Issues 119\u003c\/p\u003e \u003cp\u003e Dealing with Recursive Calls 119\u003c\/p\u003e \u003cp\u003e Ordering Components 120\u003c\/p\u003e \u003cp\u003e Caching Results 120\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 120\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 15 The Decorator Pattern 121\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eDecorating a Button 121\u003c\/p\u003e \u003cp\u003eUsing a Decorator 122\u003c\/p\u003e \u003cp\u003eUsing Nonvisual Decorators 123\u003c\/p\u003e \u003cp\u003e Decorated Code 124\u003c\/p\u003e \u003cp\u003eThe dataclass Decorator 125\u003c\/p\u003e \u003cp\u003eUsing dataclass with Default Values 126\u003c\/p\u003e \u003cp\u003eDecorators, Adapters, and Composites 126\u003c\/p\u003e \u003cp\u003eConsequences of the Decorator Pattern 126\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 127\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 16 The Facade Pattern 129\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eBuilding the Façade Classes 131\u003c\/p\u003e \u003cp\u003eCreating Databases and Tables 135\u003c\/p\u003e \u003cp\u003eUsing the SQLite Version 136\u003c\/p\u003e \u003cp\u003eConsequences of the Façade 137\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 137\u003c\/p\u003e \u003cp\u003eNotes on MySQL 137\u003c\/p\u003e \u003cp\u003eUsing SQLite 138\u003c\/p\u003e \u003cp\u003eReferences 138\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 17 The Flyweight Pattern 139\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhat Are Flyweights? 139\u003c\/p\u003e \u003cp\u003eExample Code 140\u003c\/p\u003e \u003cp\u003eSelecting a Folder 142\u003c\/p\u003e \u003cp\u003eCopy-on-Write Objects 143\u003c\/p\u003e \u003cp\u003eProgram on GitHub 143\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 18 The Proxy Pattern 145\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eUsing the Pillow Image Library 145\u003c\/p\u003e \u003cp\u003eDisplaying an Image Using PIL 146\u003c\/p\u003e \u003cp\u003eUsing Threads to Handle Image Loading 146\u003c\/p\u003e \u003cp\u003eLogging from Threads 149\u003c\/p\u003e \u003cp\u003eCopy-on-Write 149\u003c\/p\u003e \u003cp\u003eComparing Related Patterns 149\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 150\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 19 Summary of Structural Patterns 151\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePART IV: BEHAVIORAL PATTERNS 153\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 20 Chain of Responsibility Pattern 155\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhen to Use the Chain 156\u003c\/p\u003e \u003cp\u003eSample Code 156\u003c\/p\u003e \u003cp\u003eThe Listboxes 159\u003c\/p\u003e \u003cp\u003eProgramming a Help System 160\u003c\/p\u003e \u003cp\u003eReceiving the Help Command 161\u003c\/p\u003e \u003cp\u003eThe First Case 162\u003c\/p\u003e \u003cp\u003eA Chain or a Tree? 163\u003c\/p\u003e \u003cp\u003eKinds of Requests 164\u003c\/p\u003e \u003cp\u003eConsequences of the Chain of Responsibility 164\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 165\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 21 The Command Pattern 167\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhen to Use the Command Pattern 167\u003c\/p\u003e \u003cp\u003eCommand Objects 168\u003c\/p\u003e \u003cp\u003eA Keyboard Example 168\u003c\/p\u003e \u003cp\u003eCalling the Command Objects 170\u003c\/p\u003e \u003cp\u003eBuilding Command Objects 171\u003c\/p\u003e \u003cp\u003eThe Command Pattern 172\u003c\/p\u003e \u003cp\u003eConsequences of the Command Pattern 172\u003c\/p\u003e \u003cp\u003eProviding the Undo Function 172\u003c\/p\u003e \u003cp\u003e Creating the Red and Blue Buttons 175\u003c\/p\u003e \u003cp\u003e Undoing the Lines 175\u003c\/p\u003e \u003cp\u003eSummary 176\u003c\/p\u003e \u003cp\u003eReferences 176\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 176\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 22 The Interpreter Pattern 177\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhen to Use an Interpreter 177\u003c\/p\u003e \u003cp\u003eWhere the Pattern Can Be Helpful 177\u003c\/p\u003e \u003cp\u003eA Simple Report Example 178\u003c\/p\u003e \u003cp\u003eInterpreting the Language 179\u003c\/p\u003e \u003cp\u003eHow Parsing Works 180\u003c\/p\u003e \u003cp\u003e Sorting Using attrgetter() 181\u003c\/p\u003e \u003cp\u003e The Print Verb 182\u003c\/p\u003e \u003cp\u003eThe Console Interface 182\u003c\/p\u003e \u003cp\u003eThe User Interface 183\u003c\/p\u003e \u003cp\u003eConsequences of the Interpreter Pattern 184\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 185\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 23 The Iterator Pattern 187\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhy We Use Iterators 187\u003c\/p\u003e \u003cp\u003eIterators in Python 187\u003c\/p\u003e \u003cp\u003eA Fibonacci Iterator 188\u003c\/p\u003e \u003cp\u003e Getting the Iterator 189\u003c\/p\u003e \u003cp\u003eFiltered Iterators 189\u003c\/p\u003e \u003cp\u003eThe Iterator Generator 191\u003c\/p\u003e \u003cp\u003eA Fibonacci Iterator 191\u003c\/p\u003e \u003cp\u003eGenerators in Classes 192\u003c\/p\u003e \u003cp\u003eConsequences of the Iterator Pattern 192\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 193\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 24 The Mediator Pattern 195\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eAn Example System 195\u003c\/p\u003e \u003cp\u003eInteractions Between Controls 197\u003c\/p\u003e \u003cp\u003eSample Code 198\u003c\/p\u003e \u003cp\u003eMediators and Command Objects 199\u003c\/p\u003e \u003cp\u003eConsequences of the Mediator Pattern 200\u003c\/p\u003e \u003cp\u003eSingle Interface Mediators 200\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 201\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 25 The Memento Pattern 203\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhen to Use a Memento 203\u003c\/p\u003e \u003cp\u003eSample Code 204\u003c\/p\u003e \u003cp\u003eConsequences of the Memento Pattern 209\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 209\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 26 The Observer Pattern 211\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eExample Program for Watching Colors Change 212\u003c\/p\u003e \u003cp\u003eThe Message to the Media 215\u003c\/p\u003e \u003cp\u003eConsequences of the Observer Pattern 215\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 215\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 27 The State Pattern 217\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eSample Code 217\u003c\/p\u003e \u003cp\u003eSwitching Between States 221\u003c\/p\u003e \u003cp\u003eHow the Mediator Interacts with the State\u003c\/p\u003e \u003cp\u003eState Transitions 224\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 224\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 28 The Strategy Pattern 225\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhy We Use the Strategy Pattern 225\u003c\/p\u003e \u003cp\u003eSample Code 226\u003c\/p\u003e \u003cp\u003eThe Context 227\u003c\/p\u003e \u003cp\u003eThe Program Commands 227\u003c\/p\u003e \u003cp\u003eThe Line and Bar Graph Strategies 228\u003c\/p\u003e \u003cp\u003eConsequences of the Strategy Pattern 230\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 231\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 29 The Template Pattern 233\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhy We Use Template Patterns 233\u003c\/p\u003e \u003cp\u003eKinds of Methods in a Template Class 234\u003c\/p\u003e \u003cp\u003eSample Code 234\u003c\/p\u003e \u003cp\u003e Drawing a Standard Triangle 235\u003c\/p\u003e \u003cp\u003e Drawing an Isosceles Triangle 236\u003c\/p\u003e \u003cp\u003eThe Triangle Drawing Program 237\u003c\/p\u003e \u003cp\u003eTemplates and Callbacks 238\u003c\/p\u003e \u003cp\u003eSummary and Consequences 238\u003c\/p\u003e \u003cp\u003eExample Code on GitHub 238\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 30 The Visitor Pattern 239\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eWhen to Use the Visitor Pattern 239\u003c\/p\u003e \u003cp\u003eWorking with the Visitor Pattern 241\u003c\/p\u003e \u003cp\u003eSample Code 241\u003c\/p\u003e \u003cp\u003eVisiting Each Class 242\u003c\/p\u003e \u003cp\u003eVisiting Several Classes 242\u003c\/p\u003e \u003cp\u003eBosses Are Employees, Too 243\u003c\/p\u003e \u003cp\u003eDouble Dispatching 245\u003c\/p\u003e \u003cp\u003eTraversing a Series of Classes 245\u003c\/p\u003e \u003cp\u003eConsequences of the Visitor Pattern 245\u003c\/p\u003e \u003cp\u003eExample Code on GitHub 245\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePART V: A BRIEF INTRODUCTION TO PYTHON 247\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 31 Variables and Syntax in Python 249\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eData Types 250\u003c\/p\u003e \u003cp\u003eNumeric Constants 250\u003c\/p\u003e \u003cp\u003eStrings 250\u003c\/p\u003e \u003cp\u003eCharacter Constants 251\u003c\/p\u003e \u003cp\u003eVariables 252\u003c\/p\u003e \u003cp\u003eComplex Numbers 253\u003c\/p\u003e \u003cp\u003eInteger Division 253\u003c\/p\u003e \u003cp\u003eMultiple Equal Signs for Initialization 254\u003c\/p\u003e \u003cp\u003eA Simple Python Program 254\u003c\/p\u003e \u003cp\u003eCompiling and Running This Program 255\u003c\/p\u003e \u003cp\u003eArithmetic Operators 255\u003c\/p\u003e \u003cp\u003e Bitwise Operators 255\u003c\/p\u003e \u003cp\u003eCombined Arithmetic and Assignment Statements 256\u003c\/p\u003e \u003cp\u003eComparison Operators 256\u003c\/p\u003e \u003cp\u003eThe input Statement 257\u003c\/p\u003e \u003cp\u003ePEP 8 Standards 258\u003c\/p\u003e \u003cp\u003e Variable and Function Names 258\u003c\/p\u003e \u003cp\u003e Constants 258\u003c\/p\u003e \u003cp\u003e Class Names 258\u003c\/p\u003e \u003cp\u003e Indentation and Spacing 259\u003c\/p\u003e \u003cp\u003e Comments 259\u003c\/p\u003e \u003cp\u003e Docstrings 259\u003c\/p\u003e \u003cp\u003eString Methods 260\u003c\/p\u003e \u003cp\u003eExamples on GitHub 261\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 32 Making Decisions in Python 263\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eelif is “else if” 263\u003c\/p\u003e \u003cp\u003eCombining Conditions 264\u003c\/p\u003e \u003cp\u003eThe Most Common Mistake 264\u003c\/p\u003e \u003cp\u003eLooping Statements in Python 265\u003c\/p\u003e \u003cp\u003e The for Loop and Lists 265\u003c\/p\u003e \u003cp\u003e Using range in if Statements 266\u003c\/p\u003e \u003cp\u003eUsing break and continue 266\u003c\/p\u003e \u003cp\u003e The continue Statement 267\u003c\/p\u003e \u003cp\u003ePython Line Length 267\u003c\/p\u003e \u003cp\u003eThe print Function 267\u003c\/p\u003e \u003cp\u003eFormatting Numbers 268\u003c\/p\u003e \u003cp\u003e C and Java Style Formatting 269\u003c\/p\u003e \u003cp\u003e The format string Function 269\u003c\/p\u003e \u003cp\u003e f-string Formatting 269\u003c\/p\u003e \u003cp\u003e Comma-Separated Numbers 270\u003c\/p\u003e \u003cp\u003e Strings 270\u003c\/p\u003e \u003cp\u003eFormatting Dates 271\u003c\/p\u003e \u003cp\u003eUsing the Python match Function 271\u003c\/p\u003e \u003cp\u003e Pattern Matching 272\u003c\/p\u003e \u003cp\u003eReference 273\u003c\/p\u003e \u003cp\u003eMoving On 273\u003c\/p\u003e \u003cp\u003eSample Code on GitHub 273\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 33 Development Environments 275\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eIDLE 275\u003c\/p\u003e \u003cp\u003eThonny 275\u003c\/p\u003e \u003cp\u003ePyCharm 276\u003c\/p\u003e \u003cp\u003eVisual Studio 276\u003c\/p\u003e \u003cp\u003eOther Development Environments 276\u003c\/p\u003e \u003cp\u003e LiClipse 276\u003c\/p\u003e \u003cp\u003e Jupyter Notebook 277\u003c\/p\u003e \u003cp\u003e Google Colaboratory 277\u003c\/p\u003e \u003cp\u003e Anaconda 277\u003c\/p\u003e \u003cp\u003e Wing 278\u003c\/p\u003e \u003cp\u003eCommand-Line Execution 278\u003c\/p\u003e \u003cp\u003eCPython, IPython, and Jython 278\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 34 Python Collections and Files 279\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eSlicing 279\u003c\/p\u003e \u003cp\u003eSlicing Strings 280\u003c\/p\u003e \u003cp\u003e Negative Indexes 281\u003c\/p\u003e \u003cp\u003e String Prefix and Suffix Removal 281\u003c\/p\u003e \u003cp\u003eChanging List Contents 281\u003c\/p\u003e \u003cp\u003eCopying a List 282\u003c\/p\u003e \u003cp\u003eReading Files 282\u003c\/p\u003e \u003cp\u003e Using the with Loop 283\u003c\/p\u003e \u003cp\u003eHandling Exceptions 284\u003c\/p\u003e \u003cp\u003eUsing Dictionaries 284\u003c\/p\u003e \u003cp\u003e Combining Dictionaries 286\u003c\/p\u003e \u003cp\u003eUsing Tuples 286\u003c\/p\u003e \u003cp\u003eUsing Sets 287\u003c\/p\u003e \u003cp\u003eUsing the map Function 287\u003c\/p\u003e \u003cp\u003eWriting a Complete Program 288\u003c\/p\u003e \u003cp\u003e Impenetrable Coding 288\u003c\/p\u003e \u003cp\u003eUsing List Comprehension 289\u003c\/p\u003e \u003cp\u003eSample Programs on GitHub 290\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 35 Functions 291\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eReturning a Tuple 292\u003c\/p\u003e \u003cp\u003eWhere Does the Program Start? 292\u003c\/p\u003e \u003cp\u003eSummary 293\u003c\/p\u003e \u003cp\u003ePrograms on GitHub 293\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eAppendix A Running Python Programs 295\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eIf You Have Python Installed 295\u003c\/p\u003e \u003cp\u003e Shortcuts 295\u003c\/p\u003e \u003cp\u003eCreating an Executable Python Program 296\u003c\/p\u003e \u003cp\u003eCommand-Line Arguments 297\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eIndex 299\u003c\/strong\u003e\u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48732342157655,"sku":"9780137579938","price":36.09,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780137579938.jpg?v=1719996488"},{"product_id":"design-optimization-using-matlab-and-solidworks-9781108491600","title":"Design Optimization using MATLAB and SOLIDWORKS","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eA unique text integrating numerics, mathematics and applications to provide a hands-on approach to using optimization techniques, this mathematically accessible textbook emphasises conceptual understanding and importance of theorems rather than elaborate proofs. It allows students to develop fundamental optimization methods before delving into MATLAB''s optimization toolbox, and to link MATLAB''s results with the results from their own code. Following a practical approach, the text demonstrates several applications, from error-free analytic examples to truss (size) optimization, and 2D and 3D shape optimization, where numerical errors are inevitable. The principle of minimum potential energy is discussed to highlight the deep relationship between engineering and optimization. MATLAB code in every chapter illustrates key concepts and the text demonstrates the coupling between MATLAB and SOLIDWORKS for design optimization. A wide variety of optimization problems are covered including con\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTrade Review\u003c\/b\u003e\u003cbr\u003e'Design Optimization using MATLAB and SOLIDWORKS by Dr. Suresh provides an excellent review of various optimization methods, especially for structural problems. Its introduction to MATLAB would help students who have had little experience with this software to become familiar with it quickly and apply it to some of the basic optimization problems.' Hamid Torab, Gannon University\u003cbr\u003e'Dr. Suresh's text brings his contributions to shape optimization into the classroom by connecting optimization, MATLAB, SOLIDWORKS, and SOLIDLAB into a single textbook. This text enables the reader to build upon this research accomplishment. I look forward to seeing what my students can achieve with this textbook at their fingertips.' Cameron Turner, Clemson University\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003ePreface; Table of Contents; 1. Introduction; 2. Modeling; 3. Introduction to MATLAB; 4. Unconstrained Optimization: Theory; 5. Unconstrained Optimization: Algorithms; 6. MATLAB Optimization Toolbox; 7. Constrained Optimization; 8. Special Classes of Problems; 9. Truss Analysis; 10. Size Optimization of Trusses; 11. Gradient Computation; 12. Finite Element Analysis in 2D; 13. Shape Optimization in 2D; 14. Finite Element Analysis in 3D; 15. SOLIDLAB: A SOLIDWORKS-MATLAB Interface; 16. Shape Optimization using SOLIDLAB; 17. Appendix; 18. References.","brand":"Cambridge University Press","offers":[{"title":"Default Title","offer_id":48738312028503,"sku":"9781108491600","price":75.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781108491600.jpg?v=1723811916"},{"product_id":"object-design-style-guide-9781617296857","title":"Object Design Style Guide","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003ci\u003eObject Design Style Guide\u003c\/i\u003e captures dozens of techniques for creating pro-quality OO code that can stand the test of time. Examples are in an instantly-familiar pseudocode, teaching techniques you can apply to any OO language, from C++ to PHP. \u003c\/p\u003e\u003cp\u003e \u003c\/p\u003e\u003cli\u003eThe design rules for different types of objects\u003c\/li\u003e\u003cli\u003eBest practices for naming objects\u003c\/li\u003e\u003cli\u003eTesting an object’s behavior instead of its implementation\u003c\/li\u003e\u003cli\u003eExercises for each chapter to test your design skills\u003c\/li\u003e","brand":"Manning Publications","offers":[{"title":"Default Title","offer_id":48740645044567,"sku":"9781617296857","price":38.62,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781617296857.jpg?v=1720055231"},{"product_id":"machine-learning-engineering-in-action-9781617298714","title":"Machine Learning Engineering in Action","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003e\u003ci\u003eMachine Learning Engineering in Action\u003c\/i\u003e\u003c\/b\u003e\u003ci\u003e \u003c\/i\u003elays out an approach to building deployable, maintainable production machine learning systems. You will adopt software development standards that deliver better code management, and make it easier to test, scale, and even reuse your machine learning code!\u003c\/p\u003e \u003cp\u003eYou will learn how to plan and scope your project, manage cross-team logistics that avoid fatal communication failures, and design your code's architecture for improved resilience. You will even discover when not to use machine learning—and the alternative approaches that might be cheaper and more effective. When you're done working through this toolbox guide, you will be able to reliably deliver cost-effective solutions for organizations big and small alike.\u003c\/p\u003e \u003cp\u003e\u003c\/p\u003e \u003cp\u003eFollowing established processes and methodology maximizes the likelihood that your machine learning projects will survive and succeed for the long haul. By adopting standard, reproducible practices, your projects will be maintainable over time and easy for new team members to understand and adapt.   \u003c\/p\u003e \u003cbr\u003e \u003cp\u003e\u003c\/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTrade Review\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e“Anice view on practical data science and machine learning. Great reading fornewbies, some interesting views for seasoned practitioners.” \u003cb\u003eJohannes Verwijnen \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e“Amust read for those looking to balance the planning and experimentationlifecycle.” \u003cb\u003eJesús Antonino Juárez Guerrero\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e“Apractical book to help engineers understand the workflow of machine learningprojects.” \u003cb\u003eXiangbo Mao\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e“Donot implement your ML model into production without reading this book!” \u003cb\u003eLokesh Kumar\u003c\/b\u003e   \u003c\/p\u003e","brand":"Manning Publications","offers":[{"title":"Default Title","offer_id":48740646355287,"sku":"9781617298714","price":43.12,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781617298714.jpg?v=1720055234"},{"product_id":"implementing-design-patterns-in-c-11-and-net-7-9789355517333","title":"Implementing Design Patterns in C# 11 and .NET 7","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e","brand":"BPB Publications","offers":[{"title":"Default Title","offer_id":48743244955991,"sku":"9789355517333","price":29.92,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9789355517333.jpg?v=1720064753"},{"product_id":"refactoring-9780134757599","title":"Refactoring","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp style=\"margin:0px;\"\u003e\u003cb\u003eMartin Fowler\u003c\/b\u003e is Chief Scientist at ThoughtWorks. He describes himself as an author, speaker, consultant and general loud-mouth on software development. Fowler concentrates on designing enterprise software: exploring what makes a good design and what practices are needed to create one.\u003c\/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cul\u003e\n\u003cli\u003ePreface\u003c\/li\u003e\n\u003cli\u003e1. Refactoring, a First Example\u003c\/li\u003e\n\u003cli\u003e2. Principles in Refactoring\u003c\/li\u003e\n\u003cli\u003e3. Bad Smells in Code\u003c\/li\u003e\n\u003cli\u003e4. Building Tests\u003c\/li\u003e\n\u003cli\u003e5. Toward a Catalog of Refactorings\u003c\/li\u003e\n\u003cli\u003e6. Composing Methods\u003c\/li\u003e\n\u003cli\u003e7. Moving Features between Objects\u003c\/li\u003e\n\u003cli\u003e8. Organizing Data\u003c\/li\u003e\n\u003cli\u003e9. Simplifying Conditional Expressions\u003c\/li\u003e\n\u003cli\u003e10. Making Method Calls Simpler\u003c\/li\u003e\n\u003cli\u003e11. Dealing with Generalization\u003c\/li\u003e\n\u003cli\u003e12. Big Refactorings\u003c\/li\u003e\n\u003cli\u003e13. Refactoring, Reuse, and Reality\u003c\/li\u003e\n\u003cli\u003e14. Refactoring Tools\u003c\/li\u003e\n\u003cli\u003e15. Putting It All Together\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48864171721047,"sku":"9780134757599","price":43.19,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780134757599.jpg?v=1722270727"},{"product_id":"tour-of-c-a-9780136816485","title":"Tour of C A","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cstrong\u003eBjarne Stroustrup\u003c\/strong\u003e is the designer and original implementer of C++ and the author of \u003cem\u003eProgramming: Principles and Practice Using C++, Second Edition\u003c\/em\u003e, and \u003cem\u003eThe C++ Programming Language, Fourth Edition\u003c\/em\u003e, among others. Currently a professor at Columbia University, he has previously worked at AT\u0026amp;T Bell Labs, Texas A\u0026amp;M University, and Morgan Stanley. He is the recipient of numerous honors, including The National Academy of Engineering's Charles Stark Draper Prize for Engineering for conceptualizing and developing the C++ programming language. Dr. Stroustrup is a member of the National Academy of Engineering, a fellow of IEEE, ACM, CHM, and Churchill College Cambridge.\u003c\/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cem\u003ePreface xi\u003c\/em\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 1: The Basics 1\u003c\/strong\u003e\u003cbr\u003e1.1 Introduction 1\u003cbr\u003e1.2 Programs 2\u003cbr\u003e1.3 Functions 4\u003cbr\u003e1.4 Types, Variables, and Arithmetic 5\u003cbr\u003e1.5 Scope and Lifetime 9\u003cbr\u003e1.6 Constants 10\u003cbr\u003e1.7 Pointers, Arrays, and References 11\u003cbr\u003e1.8 Tests 14\u003cbr\u003e1.9 Mapping to Hardware 16\u003cbr\u003e1.10 Advice 19\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 2: User-Defined Types 21\u003c\/strong\u003e\u003cbr\u003e2.1 Introduction 21\u003cbr\u003e2.2 Structures 22\u003cbr\u003e2.3 Classes 23\u003cbr\u003e2.4 Enumerations 25\u003cbr\u003e2.5 Unions 27\u003cbr\u003e2.6 Advice 28\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 3: Modularity 29\u003c\/strong\u003e\u003cbr\u003e3.1 Introduction 29\u003cbr\u003e3.2 Separate Compilation 30\u003cbr\u003e3.3 Namespaces 35\u003cbr\u003e3.4 Function Arguments and Return Values 37\u003cbr\u003e3.5 Advice 42\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 4: Error Handling 43\u003c\/strong\u003e\u003cbr\u003e4.1 Introduction 43\u003cbr\u003e4.2 Exceptions 44\u003cbr\u003e4.3 Invariants 45\u003cbr\u003e4.4 Error-Handling Alternatives 47\u003cbr\u003e4.5 Assertions 48\u003cbr\u003e4.6 Advice 51\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 5: Classes 53\u003c\/strong\u003e\u003cbr\u003e5.1 Introduction 53\u003cbr\u003e5.2 Concrete Types 54\u003cbr\u003e5.3 Abstract Types 60\u003cbr\u003e5.4 Virtual Functions 62\u003cbr\u003e5.5 Class Hierarchies 63\u003cbr\u003e5.6 Advice 69\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 6: Essential Operations 71\u003c\/strong\u003e\u003cbr\u003e6.1 Introduction 71\u003cbr\u003e6.2 Copy and Move 74\u003cbr\u003e6.3 Resource Management 78\u003cbr\u003e6.4 Operator Overloading 80\u003cbr\u003e6.5 Conventional Operations 81\u003cbr\u003e6.6 User-Defined Literals 84\u003cbr\u003e6.7 Advice 85\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 7: Templates 87\u003c\/strong\u003e\u003cbr\u003e7.1 Introduction 87\u003cbr\u003e7.2 Parameterized Types 88\u003cbr\u003e7.3 Parameterized Operations 93\u003cbr\u003e7.4 Template Mechanisms 99\u003cbr\u003e7.5 Advice 102\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 8: Concepts and Generic Programming 103\u003c\/strong\u003e\u003cbr\u003e8.1 Introduction 103\u003cbr\u003e8.2 Concepts 104\u003cbr\u003e8.3 Generic Programming 112\u003cbr\u003e8.4 Variadic Templates 114\u003cbr\u003e8.5 Template Compilation Model 117\u003cbr\u003e8.6 Advice 117\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 9: Library Overview 119\u003c\/strong\u003e\u003cbr\u003e9.1 Introduction 119\u003cbr\u003e9.2 Standard-Library Components 120\u003cbr\u003e9.3 Standard-Library Organization 121\u003cbr\u003e9.4 Advice 124\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 10: Strings and Regular Expressions 125\u003c\/strong\u003e\u003cbr\u003e10.1 Introduction 125\u003cbr\u003e10.2 Strings 125\u003cbr\u003e10.3 String Views 128\u003cbr\u003e10.4 Regular Expressions 130\u003cbr\u003e10.5 Advice 136\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 11: Input and Output 137\u003c\/strong\u003e\u003cbr\u003e11.1 Introduction 137\u003cbr\u003e11.2 Output 138\u003cbr\u003e11.3 Input 139\u003cbr\u003e11.4 I\/O State 141\u003cbr\u003e11.5 I\/O of User-Defined Types 141\u003cbr\u003e11.6 Output Formatting 143\u003cbr\u003e11.7 Streams 146\u003cbr\u003e11.8 C-style I\/O 149\u003cbr\u003e11.9 File System 150\u003cbr\u003e11.10 Advice 154\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 12: Containers 157\u003c\/strong\u003e\u003cbr\u003e12.1 Introduction 157\u003cbr\u003e12.2 vector 158\u003cbr\u003e12.3 list 162\u003cbr\u003e12.4 forward_list 164\u003cbr\u003e12.5 map 164\u003cbr\u003e12.6 unordered_map 165\u003cbr\u003e12.7 Allocators 167\u003cbr\u003e12.8 Container Overview 168\u003cbr\u003e12.9 Advice 170\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 13: Algorithms 173\u003c\/strong\u003e\u003cbr\u003e13.1 Introduction 173\u003cbr\u003e13.2 Use of Iterators 175\u003cbr\u003e13.3 Iterator Types 178\u003cbr\u003e13.4 Use of Predicates 181\u003cbr\u003e13.5 Algorithm Overview 181\u003cbr\u003e13.6 Parallel Algorithms 183\u003cbr\u003e13.7 Advice 183\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 14: Ranges 185\u003c\/strong\u003e\u003cbr\u003e14.1 Introduction 185\u003cbr\u003e14.2 Views 186\u003cbr\u003e14.3 Generators 188\u003cbr\u003e14.4 Pipelines 188\u003cbr\u003e14.5 Concepts Overview 190\u003cbr\u003e14.6 Advice 194\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 15: Pointers and Containers 195\u003c\/strong\u003e\u003cbr\u003e15.1 Introduction 195\u003cbr\u003e15.2 Pointers 196\u003cbr\u003e15.3 Containers 201\u003cbr\u003e15.4 Alternatives 208\u003cbr\u003e15.5 Advice 212\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 16: Utilities 213\u003c\/strong\u003e\u003cbr\u003e16.1 Introduction 213\u003cbr\u003e16.2 Time 214\u003cbr\u003e16.3 Function Adaption 216\u003cbr\u003e16.4 Type Functions 217\u003cbr\u003e16.5 source_location 222\u003cbr\u003e16.6 move() and forward() 223\u003cbr\u003e16.7 Bit Manipulation 224\u003cbr\u003e16.8 Exiting a Program 225\u003cbr\u003e16.9 Advice 225\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 17: Numerics 227\u003c\/strong\u003e\u003cbr\u003e17.1 Introduction 227\u003cbr\u003e17.2 Mathematical Functions 228\u003cbr\u003e17.3 Numerical Algorithms 229\u003cbr\u003e17.4 Complex Numbers 230\u003cbr\u003e17.5 Random Numbers 231\u003cbr\u003e17.6 Vector Arithmetic 233\u003cbr\u003e17.7 Numeric Limits 234\u003cbr\u003e17.8 Type Aliases 234\u003cbr\u003e17.9 Mathematical Constants 234\u003cbr\u003e17.10 Advice 235\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 18: Concurrency 237\u003c\/strong\u003e\u003cbr\u003e18.1 Introduction 237\u003cbr\u003e18.2 Tasks and threads 238\u003cbr\u003e18.3 Sharing Data 241\u003cbr\u003e18.4 Waiting for Events 243\u003cbr\u003e18.5 Communicating Tasks 245\u003cbr\u003e18.6 Coroutines 250\u003cbr\u003e18.8 Advice 253\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 19: History and Compatibility 255\u003c\/strong\u003e\u003cbr\u003e19.1 History 255\u003cbr\u003e19.2 C++ Feature Evolution 263\u003cbr\u003e19.3 C\/C++ Compatibility 268\u003cbr\u003e19.4 Bibliography 271\u003cbr\u003e19.5 Advice 274\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eAppendix: Module std 277\u003c\/strong\u003e\u003cbr\u003eA.1 Introduction 277\u003cbr\u003eA.2 Use What Your Implementation Offers 278\u003cbr\u003eA.3 Use Headers 278\u003cbr\u003eA.4 Make Your Own module std 278\u003cbr\u003eA.5 Advice 279\u003c\/p\u003e \u003cp\u003e\u003cem\u003eIndex 281\u003c\/em\u003e\u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48864174178647,"sku":"9780136816485","price":26.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780136816485.jpg?v=1722270738"},{"product_id":"design-patterns-9780201633610","title":"Design Patterns","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003eDr. Erich Gamma \u003c\/b\u003eis technical director at the Software Technology Center of Object Technology International in Zurich, Switzerland. Dr. Richard Helm is a member of the Object Technology Practice Group in the IBM Consulting Group in Sydney, Australia. Dr. Ralph Johnson is a faculty member at the University of Illinois at Urbana-Champaign's Computer Science Department. \u003c\/p\u003e \u003cp\u003e\u003cb\u003eJohn Vlissides\u003c\/b\u003e is a member of the research staff at the IBM T. J. Watson Research Center in Hawthorne, New York. He has practiced object-oriented technology for more than a decade as a designer, implementer, researcher, lecturer, and consultant. In addition to co-authoring \u003cb\u003eDesign Patterns: Elements of Reusable Object-Oriented Software\u003c\/b\u003e, he is co-editor of the book \u003cb\u003ePattern Languages of Program Design 2\u003c\/b\u003e (both from Addison-Wesley). He and the other co-authors of \u003cb\u003eDesign Patterns\u003c\/b\u003e are recipients of the \u003ci\u003e1998 Dr. Dobb's Journal\u003c\/i\u003e Excellence in Programming Award.\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e 020163\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cul\u003e\n\u003cli\u003e1. Introduction. \u003c\/li\u003e\n\u003cli\u003e2. A Case Study: Designing a Document Editor. \u003c\/li\u003e\n\u003cli\u003e3. Creational Patterns. \u003c\/li\u003e\n\u003cli\u003e4. Structural Pattern. \u003c\/li\u003e\n\u003cli\u003e5. Behavioral Patterns. \u003c\/li\u003e\n\u003cli\u003e6. Conclusion. \u003c\/li\u003e\n\u003cli\u003eAppendix A: Glossary. \u003c\/li\u003e\n\u003cli\u003eAppendix B: Guide to Notation. \u003c\/li\u003e\n\u003cli\u003eAppendix C: Foundation Classes. \u003c\/li\u003e\n\u003cli\u003eBibliography. \u003c\/li\u003e\n\u003cli\u003eIndex. \u003cbr\u003e \u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48864224346455,"sku":"9780201633610","price":44.09,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780201633610.jpg?v=1722270971"},{"product_id":"design-patterns-explained-9780321247148","title":"Design Patterns Explained","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cstrong\u003eAlan Shalloway\u003c\/strong\u003e is founder, CEO, and principal consultant of Net Objectives, an object-oriented consulting and training organization. An object-oriented consultant and software developer for over 20 years, he is a frequent speaker at leading development conferences, including SD Expo, Java One, OOP, and OOPSLA. He is a certified Scrum master. He is co-author of \u003cem\u003eAn Introduction to XML and its Family of Technologies\u003c\/em\u003e. Shalloway holds a master's degree in computer science from MIT.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eJames R. Trott\u003c\/strong\u003e currently works as a senior consultant for a large financial institution in the Pacific Northwest. He has used object-oriented and pattern-based analysis techniques throughout his 20-year career in knowledge management and knowledge engineering. He holds a master of science in applied mathematics, an MBA, and a master of arts in intercultural studies.\u003c\/p\u003e \u003cp\u003e Copyright Pearson Education. All rights reserved.\u003c\/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cstrong\u003eI. AN INTRODUCTION TO OBJECT-ORIENTED SOFTWARE DEVELOPMENT. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e1. The Object-Oriented Paradigm. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Before the Object-Oriented Paradigm: Functional Decomposition.\u003c\/p\u003e \u003cp\u003e The Problem of Requirements.\u003c\/p\u003e \u003cp\u003e Dealing with Changes: Using Functional Decomposition.\u003c\/p\u003e \u003cp\u003e Dealing with Changing Requirements.\u003c\/p\u003e \u003cp\u003e The Object-Oriented Paradigm.\u003c\/p\u003e \u003cp\u003e Object-Oriented Programming in Action.\u003c\/p\u003e \u003cp\u003e Special Object Methods.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e2. The UML-The Unified Modeling Language. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e What Is the UML?\u003c\/p\u003e \u003cp\u003e Why Use the UML?\u003c\/p\u003e \u003cp\u003e The Class Diagram.\u003c\/p\u003e \u003cp\u003e Interaction Diagrams.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eII. THE LIMITATIONS OF TRADITIONAL OBJECT-ORIENTED DESIGN. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e3. A Problem That Cries Out for Flexible Code. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Extracting Information from a CAD\/CAM System.\u003c\/p\u003e \u003cp\u003e Understand the Vocabulary.\u003c\/p\u003e \u003cp\u003e Describe the Problem.\u003c\/p\u003e \u003cp\u003e The Essential Challenges and Approaches.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e4. A Standard Object-Oriented Solution. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Solving with Special Cases.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eIII. DESIGN PATTERNS. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e5. An Introduction to Design Patterns. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Design Patterns Arose from Architecture and Anthropology.\u003c\/p\u003e \u003cp\u003e Moving from Architectural to Software Design Patterns.\u003c\/p\u003e \u003cp\u003e Why Study Design Patterns?\u003c\/p\u003e \u003cp\u003e Other Advantages of Studying Design Patterns.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e6. The Facade Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Introducing the Facade Pattern.\u003c\/p\u003e \u003cp\u003e Learning the Facade Pattern.\u003c\/p\u003e \u003cp\u003e Field Notes: The Facade Pattern.\u003c\/p\u003e \u003cp\u003e Relating the Facade Pattern to the CAD\/CAM Problem.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e7. The Adapter Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Introducing the Adapter Pattern.\u003c\/p\u003e \u003cp\u003e Learning the Adapter Pattern.\u003c\/p\u003e \u003cp\u003e Field Notes: The Adapter Pattern.\u003c\/p\u003e \u003cp\u003e Relating the Adapter Pattern to the CAD\/CAM Problem.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e8. Expanding Our Horizons. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Objects: The Traditional View and the New View.\u003c\/p\u003e \u003cp\u003e Encapsulation: The Traditional View and the New View.\u003c\/p\u003e \u003cp\u003e Find What Is Varying and Encapsulate It.\u003c\/p\u003e \u003cp\u003e Commonality and Variability Analysis and Abstract Classes.\u003c\/p\u003e \u003cp\u003e The Qualities of Agile Coding.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e9. The Strategy Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e An Approach to Handling New Requirements.\u003c\/p\u003e \u003cp\u003e The International E-Commerce System Case Study: Initial Requirements.\u003c\/p\u003e \u003cp\u003e Handling New Requirements.\u003c\/p\u003e \u003cp\u003e The Strategy Pattern.\u003c\/p\u003e \u003cp\u003e Field Notes: Using the Strategy Pattern.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e10. The Bridge Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Introducing the Bridge Pattern.\u003c\/p\u003e \u003cp\u003e Learning the Bridge Pattern: An Example.\u003c\/p\u003e \u003cp\u003e An Observation About Using Design Patterns.\u003c\/p\u003e \u003cp\u003e Learning the Bridge Pattern: Deriving It.\u003c\/p\u003e \u003cp\u003e The Bridge Pattern in Retrospect.\u003c\/p\u003e \u003cp\u003e Field Notes: Using the Bridge Pattern.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e11. The Abstract Factory Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Introducing the Abstract Factory Pattern.\u003c\/p\u003e \u003cp\u003e Learning the Abstract Factory Pattern: An Example.\u003c\/p\u003e \u003cp\u003e Learning the Abstract Factory Pattern: Implementing It.\u003c\/p\u003e \u003cp\u003e Field Notes: The Abstract Factory Pattern.\u003c\/p\u003e \u003cp\u003e Relating the Abstract Factory Pattern to the CAD\/CAM Problem.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eIV. PUTTING IT ALL TOGETHER: THINKING IN PATTERNS. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e12. How Do Experts Design? \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Building by Adding Distinctions.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e13. Solving the CAD\/CAM Problem with Patterns. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Review of the CAD\/CAM Problem.\u003c\/p\u003e \u003cp\u003e Thinking in Patterns.\u003c\/p\u003e \u003cp\u003e Thinking in Patterns: Step 1.\u003c\/p\u003e \u003cp\u003e Thinking in Patterns: Step 2a.\u003c\/p\u003e \u003cp\u003e Thinking in Patterns: Step 2b.\u003c\/p\u003e \u003cp\u003e Thinking in Patterns: Step 2c.\u003c\/p\u003e \u003cp\u003e Thinking in Patterns: Steps 2a and 2b Repeated (Facade).\u003c\/p\u003e \u003cp\u003e Thinking in Patterns: Steps 2a and 2b Repeated (Adapter).\u003c\/p\u003e \u003cp\u003e Thinking in Patterns: Steps 2a and 2b Repeated (Abstract Factory).\u003c\/p\u003e \u003cp\u003e Thinking in Patterns: Step 3.\u003c\/p\u003e \u003cp\u003e Comparison with the Previous Solution.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eV. TOWARD A NEW PARADIGM OF DESIGN. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e14. The Principles and Strategies of Design Patterns. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e The Open-Closed Principle.\u003c\/p\u003e \u003cp\u003e The Principle of Designing from Context.\u003c\/p\u003e \u003cp\u003e The Principle of Encapsulating Variation.\u003c\/p\u003e \u003cp\u003e Abstract Classes vs. Interfaces.\u003c\/p\u003e \u003cp\u003e The Principle of Healthy Skepticism.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e15. Commonality and Variability Analysis. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Commonality and Variability Analysis and Application Design.\u003c\/p\u003e \u003cp\u003e Solving the CAD\/CAM Problem with CVA.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e16. The Analysis Matrix. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e In the Real World: Variations.\u003c\/p\u003e \u003cp\u003e The International E-Commerce System Case Study: Handling Variation.\u003c\/p\u003e \u003cp\u003e Field Notes.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e17. The Decorator Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e A Little More Detail.\u003c\/p\u003e \u003cp\u003e The Decorator Pattern.\u003c\/p\u003e \u003cp\u003e Applying the Decorator Pattern to the Case Study.\u003c\/p\u003e \u003cp\u003e Another Example: Input\/Output.\u003c\/p\u003e \u003cp\u003e Field Notes: Using the Decorator Pattern.\u003c\/p\u003e \u003cp\u003e The Essence of the Decorator Pattern.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eVI. OTHER VALUES OF PATTERNS. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e18. The Observer Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Categories of Patterns.\u003c\/p\u003e \u003cp\u003e More Requirements for the International E-Commerce Case Study.\u003c\/p\u003e \u003cp\u003e The Observer Pattern.\u003c\/p\u003e \u003cp\u003e Applying the Observer to the Case Study.\u003c\/p\u003e \u003cp\u003e Field Notes: Using the Observer Pattern.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e19. The Template Method Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e More Requirements for the International E-Commerce Case Study.\u003c\/p\u003e \u003cp\u003e The Template Method Pattern.\u003c\/p\u003e \u003cp\u003e Applying the Template Method to the International E-Commerce Case Study.\u003c\/p\u003e \u003cp\u003e Using the Template Method Pattern to Reduce Redundancy.\u003c\/p\u003e \u003cp\u003e Field Notes: Using the Template Method Pattern.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eVII. FACTORIES. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e20. Lessons from Design Patterns: Factories. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Factories.\u003c\/p\u003e \u003cp\u003e The Universal Context Revisited.\u003c\/p\u003e \u003cp\u003e Factories Follow Our Guidelines.\u003c\/p\u003e \u003cp\u003e Limiting the Vectors of Change.\u003c\/p\u003e \u003cp\u003e Another Way to Think About It.\u003c\/p\u003e \u003cp\u003e Different Roles of Factories.\u003c\/p\u003e \u003cp\u003e Field Notes.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e21. The Singleton Pattern and the Double-Checked Locking Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Introducing the Singleton Pattern.\u003c\/p\u003e \u003cp\u003e Applying the Singleton Pattern to the Case Study.\u003c\/p\u003e \u003cp\u003e A Variant: The Double-Checked Locking Pattern.\u003c\/p\u003e \u003cp\u003e Reflections.\u003c\/p\u003e \u003cp\u003e Field Notes: Using the Singleton and Double-Checked Locking Patterns.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e22. The Object Pool Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e A Problem Requiring the Management of Objects.\u003c\/p\u003e \u003cp\u003e The Object Pool Pattern.\u003c\/p\u003e \u003cp\u003e Observation: Factories Can Do Much More Than Instantiation.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e23. The Factory Method Pattern. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e More Requirements for the Case Study.\u003c\/p\u003e \u003cp\u003e The Factory Method Pattern.\u003c\/p\u003e \u003cp\u003e Factory Method Pattern and Object-Oriented Languages.\u003c\/p\u003e \u003cp\u003e Field Notes: Using the Factory Method Pattern.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e24. Summary of Factories. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e Steps in the Software Process.\u003c\/p\u003e \u003cp\u003e Parallels in Factories and XP Practices.\u003c\/p\u003e \u003cp\u003e Scaling Systems.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eVIII. ENDINGS AND BEGINNINGS. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e25. Design Patterns Reviewed: A Summation and a Beginning. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Overview.\u003c\/p\u003e \u003cp\u003e A Summary of Object-Oriented Principles.\u003c\/p\u003e \u003cp\u003e How Design Patterns Encapsulate Implementations.\u003c\/p\u003e \u003cp\u003e Commonality and Variability Analysis and Design Patterns.\u003c\/p\u003e \u003cp\u003e Decomposing a Problem Domain into Responsibilities.\u003c\/p\u003e \u003cp\u003e Patterns and Contextual Design.\u003c\/p\u003e \u003cp\u003e Relationships Within a Pattern.\u003c\/p\u003e \u003cp\u003e Design Patterns and Agile Coding Practices.\u003c\/p\u003e \u003cp\u003e Field Notes.\u003c\/p\u003e \u003cp\u003e Summary.\u003c\/p\u003e \u003cp\u003e Review Questions.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003e26. Bibliography. \u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e Design Patterns Explained: The Web Site Companion.\u003c\/p\u003e \u003cp\u003e Recommended Reading.\u003c\/p\u003e \u003cp\u003e Recommended Reading for Java Programmers.\u003c\/p\u003e \u003cp\u003e Recommended Reading for C++ Programmers.\u003c\/p\u003e \u003cp\u003e Recommended Reading for COBOL Programmers.\u003c\/p\u003e \u003cp\u003e Recommended Reading on eXtreme Programming.\u003c\/p\u003e \u003cp\u003e Recommended Reading on General Programming.\u003c\/p\u003e \u003cp\u003e Personal Favorites.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eIndex.\u003c\/strong\u003e\u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48864418758999,"sku":"9780321247148","price":42.27,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780321247148.jpg?v=1722271856"},{"product_id":"uml-distilled-9780321193681","title":"UML Distilled","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003eMartin Fowler\u003c\/b\u003e is an independent consultant who has applied objects to pressing business problems for more than a decade. He has consulted on systems in fields such as health care, financial trading, and corporate finance. His clients include Chrysler, Citibank, UK National Health Service, Andersen Consulting, and Netscape Communications. In addition, Fowler is a regular speaker on objects, the Unified Modeling Language, and patterns.\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e \u003cbr\u003e \u003cb\u003ePreface.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Why bother with the UML?  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Structure of the book.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Changes for the Third Edition.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Acknowledgements.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e1. Introduction.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   What Is the UML?  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Ways of Using the UML.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   How We Got to the UML.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Notations and Meta-Models.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   UML Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   What is Legal UML?  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   The Meaning of UML.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   UML is not enough.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Where to Start with the UML.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Looking for More Information.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e2. Development Process.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Iterative and Waterfall Processes.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Predictive and Adaptive Planning.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Agile Processes.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Rational Unified Process.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Fitting a Process to a Project.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Fitting the UML into a process.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Understanding Legacy Code.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Choosing a Development Process.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Where to Find Out More.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e3. Class Diagrams: The Essentials.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Properties.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Attributes.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Associations.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Multiplicity.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Programming Interpretation of Properties.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Bi-directional Associations.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Operations.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Generalization.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Notes and Comments.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Dependency.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Constraint Rules.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   When to Use Class Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Where to Find Out More.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e4. Sequence Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Creating and deleting participants.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Loops, conditionals and the like.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Synchronous and Asynchronous Calls.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   When to use Sequence Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e5. Class Diagrams: Advanced Concepts.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Keywords.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Responsibilities.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Static Operations and Attributes.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Aggregation and Composition.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Derived Properties.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Interfaces and Abstract Classes.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Read Only and Frozen.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Reference Objects and Value Objects.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Qualified Associations.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Classification and Generalization.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Multiple and Dynamic Classification.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Association Class.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Template (Parameterized) Class.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Enumerations.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Active Class.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Visibility.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Messages.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e6. Object Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   When to use Object Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e7. Package Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Packages and Dependencies.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Package Aspects.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Implementing Packages.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Where to Find Out More.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   When to Use Package Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e8. Deployment Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   When to use deployment diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e9. Use Cases.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Content of a Use Case.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Use Case Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Levels of Use Cases.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Use cases and features (or stories).  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   When to Use Use Cases.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Where to Find Out More.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e10. State Machine Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Internal Activities.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Activity States.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Superstates.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Concurrent States.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Implementing State Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   When to Use State Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Where to Find Out More.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e11. Activity Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Decomposing an action.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Partitions.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Signals.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Tokens.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Flows and Edges.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Pins and Transformations.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Expansion Regions.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Flow Final.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Join Specifications.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   And there's more.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   When to Use Activity Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Where to Find Out More.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e12. Communication Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   When to use Communication Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e13. Composite Structures.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   When to Use Composite Structures.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e14. Component Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   When to use Component Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   15. Collaborations.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   When to Use Collaborations.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e16. Interaction Overview Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   When to use Interaction Overview Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003e17. Timing Diagrams.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   When to use Timing Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003eAppendix A Changes between UML Versions.\u003c\/b\u003e \u003cbr\u003e \u003cp\u003e \u003c\/p\u003e   Revisions to the UML.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Changes in UML Distilled.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Changes from UML 1.0 to 1.1.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Type and Implementation Class.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Complete and Incomplete Discriminator Constraints.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Composition.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Immutability and Frozen.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Returns on Sequence Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Use of the Term \"Role\".  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Changes from UML 1.2 (and 1.1) to 1.3 (and 1.5).  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Use Cases.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Activity Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Changes from UML 1.3 to 1.4.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Changes from UML 1.4. to 1.5.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   From UML 1.x to UML 2.0.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Class Diagrams (Basic).  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Interaction Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Class Diagrams (Advanced).  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   State Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e   Activity Diagrams.  \u003cp\u003e\u003c\/p\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003eBibliography.\u003c\/b\u003e \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e \u003cb\u003eIndex.\u003c\/b\u003e \u003cbr\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48864418988375,"sku":"9780321193681","price":33.29,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780321193681.jpg?v=1722271856"},{"product_id":"programming-in-c-9780321776419","title":"Programming in C","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e Introduction 1\u003c\/p\u003e \u003cp\u003e1 Some Fundamentals 5\u003c\/p\u003e \u003cp\u003e Programming 5\u003c\/p\u003e \u003cp\u003e Higher-Level Languages 5\u003c\/p\u003e \u003cp\u003e Operating Systems 6\u003c\/p\u003e \u003cp\u003e Compiling Programs 7\u003c\/p\u003e \u003cp\u003e Integrated Development Environments 10\u003c\/p\u003e \u003cp\u003e Language Interpreters 10\u003c\/p\u003e \u003cp\u003e2 Compiling and Running Your First Program 11\u003c\/p\u003e \u003cp\u003e Compiling Your Program 12\u003c\/p\u003e \u003cp\u003e Running Your Program 12\u003c\/p\u003e \u003cp\u003e Understanding Your First Program 13\u003c\/p\u003e \u003cp\u003e Displaying the Values of Variables 15\u003c\/p\u003e \u003cp\u003e Comments 17\u003c\/p\u003e \u003cp\u003e Exercises 19\u003c\/p\u003e \u003cp\u003e3 Variables, Data Types, and Arithmetic Expressions 21\u003c\/p\u003e \u003cp\u003e Understanding Data Types and Constants 21\u003c\/p\u003e \u003cp\u003e The Integer Type int 22\u003c\/p\u003e \u003cp\u003e The Floating Number Type float 23\u003c\/p\u003e \u003cp\u003e The Extended Precision Type double 23\u003c\/p\u003e \u003cp\u003e The Single Character Type char 24\u003c\/p\u003e \u003cp\u003e The Boolean Data Type _Bool 24\u003c\/p\u003e \u003cp\u003e Type Specifiers: long, long long, short, unsigned, and signed 26\u003c\/p\u003e \u003cp\u003e Working with Variables 29\u003c\/p\u003e \u003cp\u003e Working with Arithmetic Expressions 30\u003c\/p\u003e \u003cp\u003e Integer Arithmetic and the Unary Minus Operator 33\u003c\/p\u003e \u003cp\u003e Combining Operations with Assignment: The Assignment Operators 39\u003c\/p\u003e \u003cp\u003e Types _Complex and _Imaginary 40\u003c\/p\u003e \u003cp\u003e Exercises 40\u003c\/p\u003e \u003cp\u003e4 Program Looping 43\u003c\/p\u003e \u003cp\u003e Triangular Numbers 43\u003c\/p\u003e \u003cp\u003e The for Statement 44\u003c\/p\u003e \u003cp\u003e Relational Operators 46\u003c\/p\u003e \u003cp\u003e Aligning Output 50\u003c\/p\u003e \u003cp\u003e Program Input 51\u003c\/p\u003e \u003cp\u003e Nested for Loops 53\u003c\/p\u003e \u003cp\u003e for Loop Variants 55\u003c\/p\u003e \u003cp\u003e The while Statement 56\u003c\/p\u003e \u003cp\u003e The do Statement 60\u003c\/p\u003e \u003cp\u003e The break Statement 62\u003c\/p\u003e \u003cp\u003e The continue Statement 62\u003c\/p\u003e \u003cp\u003e Exercises 63\u003c\/p\u003e \u003cp\u003e5 Making Decisions 65\u003c\/p\u003e \u003cp\u003e The if Statement 65\u003c\/p\u003e \u003cp\u003e The if-else Construct 69\u003c\/p\u003e \u003cp\u003e Compound Relational Tests 72\u003c\/p\u003e \u003cp\u003e Nested if Statements 74\u003c\/p\u003e \u003cp\u003e The else if Construct 76\u003c\/p\u003e \u003cp\u003e The switch Statement 83\u003c\/p\u003e \u003cp\u003e Boolean Variables 86\u003c\/p\u003e \u003cp\u003e The Conditional Operator 90\u003c\/p\u003e \u003cp\u003e Exercises 92\u003c\/p\u003e \u003cp\u003e6 Working with Arrays 95\u003c\/p\u003e \u003cp\u003e Defining an Array 96\u003c\/p\u003e \u003cp\u003e Using Array Elements as Counters 100\u003c\/p\u003e \u003cp\u003e Generating Fibonacci Numbers 103\u003c\/p\u003e \u003cp\u003e Using an Array to Generate Prime Numbers 104\u003c\/p\u003e \u003cp\u003e Initializing Arrays 106\u003c\/p\u003e \u003cp\u003e Character Arrays 108\u003c\/p\u003e \u003cp\u003e Base Conversion Using Arrays 109\u003c\/p\u003e \u003cp\u003e The const Qualifier 111\u003c\/p\u003e \u003cp\u003e Multidimensional Arrays 113\u003c\/p\u003e \u003cp\u003e Variable Length Arrays 115\u003c\/p\u003e \u003cp\u003e Exercises 117\u003c\/p\u003e \u003cp\u003e7 Working with Functions 119\u003c\/p\u003e \u003cp\u003e Defining a Function 119\u003c\/p\u003e \u003cp\u003e Arguments and Local Variables 123\u003c\/p\u003e \u003cp\u003e Function Prototype Declaration 124\u003c\/p\u003e \u003cp\u003e Automatic Local Variables 124\u003c\/p\u003e \u003cp\u003e Returning Function Results 126\u003c\/p\u003e \u003cp\u003e Functions Calling Functions Calling... 130\u003c\/p\u003e \u003cp\u003e Declaring Return Types and Argument Types 133\u003c\/p\u003e \u003cp\u003e Checking Function Arguments 135\u003c\/p\u003e \u003cp\u003e Top-Down Programming 137\u003c\/p\u003e \u003cp\u003e Functions and Arrays 137\u003c\/p\u003e \u003cp\u003e Assignment Operators 141\u003c\/p\u003e \u003cp\u003e Sorting Arrays 143\u003c\/p\u003e \u003cp\u003e Multidimensional Arrays 146\u003c\/p\u003e \u003cp\u003e Global Variables 151\u003c\/p\u003e \u003cp\u003e Automatic and Static Variables 155\u003c\/p\u003e \u003cp\u003e Recursive Functions 158\u003c\/p\u003e \u003cp\u003e Exercises 161\u003c\/p\u003e \u003cp\u003e8 Working with Structures 163\u003c\/p\u003e \u003cp\u003e The Basics of Structures 163\u003c\/p\u003e \u003cp\u003e A Structure for Storing the Date 164\u003c\/p\u003e \u003cp\u003e Using Structures in Expressions 166\u003c\/p\u003e \u003cp\u003e Functions and Structures 169\u003c\/p\u003e \u003cp\u003e A Structure for Storing the Time 175\u003c\/p\u003e \u003cp\u003e Initializing Structures 178\u003c\/p\u003e \u003cp\u003e Compound Literals 178\u003c\/p\u003e \u003cp\u003e Arrays of Structures 180\u003c\/p\u003e \u003cp\u003e Structures Containing Structures 183\u003c\/p\u003e \u003cp\u003e Structures Containing Arrays 185\u003c\/p\u003e \u003cp\u003e Structure Variants 189\u003c\/p\u003e \u003cp\u003e Exercises 190\u003c\/p\u003e \u003cp\u003e9 Character Strings 193\u003c\/p\u003e \u003cp\u003e Revisiting the Basics of Strings 193\u003c\/p\u003e \u003cp\u003e Arrays of Characters 194\u003c\/p\u003e \u003cp\u003e Variable-Length Character Strings 197\u003c\/p\u003e \u003cp\u003e Initializing and Displaying Character Strings 199\u003c\/p\u003e \u003cp\u003e Testing Two Character Strings for Equality 202\u003c\/p\u003e \u003cp\u003e Inputting Character Strings 204\u003c\/p\u003e \u003cp\u003e Single-Character Input 206\u003c\/p\u003e \u003cp\u003e The Null String 211\u003c\/p\u003e \u003cp\u003e Escape Characters 215\u003c\/p\u003e \u003cp\u003e More on Constant Strings 217\u003c\/p\u003e \u003cp\u003e Character Strings, Structures, and Arrays 218\u003c\/p\u003e \u003cp\u003e A Better Search Method 221\u003c\/p\u003e \u003cp\u003e Character Operations 226\u003c\/p\u003e \u003cp\u003e Exercises 229\u003c\/p\u003e \u003cp\u003e10 Pointers 233\u003c\/p\u003e \u003cp\u003e Pointers and Indirection 233\u003c\/p\u003e \u003cp\u003e Defining a Pointer Variable 234\u003c\/p\u003e \u003cp\u003e Using Pointers in Expressions 237\u003c\/p\u003e \u003cp\u003e Working with Pointers and Structures 239\u003c\/p\u003e \u003cp\u003e Structures Containing Pointers 241\u003c\/p\u003e \u003cp\u003e Linked Lists 243\u003c\/p\u003e \u003cp\u003e The Keyword const and Pointers 251\u003c\/p\u003e \u003cp\u003e Pointers and Functions 252\u003c\/p\u003e \u003cp\u003e Pointers and Arrays 258\u003c\/p\u003e \u003cp\u003e A Slight Digression About Program Optimization 262\u003c\/p\u003e \u003cp\u003e Is It an Array or Is It a Pointer? 262\u003c\/p\u003e \u003cp\u003e Pointers to Character Strings 264\u003c\/p\u003e \u003cp\u003e Constant Character Strings and Pointers 266\u003c\/p\u003e \u003cp\u003e The Increment and Decrement Operators Revisited 267\u003c\/p\u003e \u003cp\u003e Operations on Pointers 271\u003c\/p\u003e \u003cp\u003e Pointers to Functions 272\u003c\/p\u003e \u003cp\u003e Pointers and Memory Addresses 273\u003c\/p\u003e \u003cp\u003e Exercises 275\u003c\/p\u003e \u003cp\u003e11 Operations on Bits 277\u003c\/p\u003e \u003cp\u003e The Basics of Bits 277\u003c\/p\u003e \u003cp\u003e Bit Operators 278\u003c\/p\u003e \u003cp\u003e The Bitwise AND Operator 279\u003c\/p\u003e \u003cp\u003e The Bitwise Inclusive-OR Operator 281\u003c\/p\u003e \u003cp\u003e The Bitwise Exclusive-OR Operator 282\u003c\/p\u003e \u003cp\u003e The Ones Complement Operator 283\u003c\/p\u003e \u003cp\u003e The Left Shift Operator 285\u003c\/p\u003e \u003cp\u003e The Right Shift Operator 286\u003c\/p\u003e \u003cp\u003e A Shift Function 286\u003c\/p\u003e \u003cp\u003e Rotating Bits 288\u003c\/p\u003e \u003cp\u003e Bit Fields 291\u003c\/p\u003e \u003cp\u003e Exercises 295\u003c\/p\u003e \u003cp\u003e12 The Preprocessor 297\u003c\/p\u003e \u003cp\u003e The #define Statement 297\u003c\/p\u003e \u003cp\u003e Program Extendability 301\u003c\/p\u003e \u003cp\u003e Program Portability 302\u003c\/p\u003e \u003cp\u003e More Advanced Types of Definitions 304\u003c\/p\u003e \u003cp\u003e The # Operator 309\u003c\/p\u003e \u003cp\u003e The ## Operator 310\u003c\/p\u003e \u003cp\u003e The #include Statement 311\u003c\/p\u003e \u003cp\u003e System Include Files 313\u003c\/p\u003e \u003cp\u003e Conditional Compilation 314\u003c\/p\u003e \u003cp\u003e The #ifdef, #endif, #else, and #ifndef Statements 314\u003c\/p\u003e \u003cp\u003e The #if and #elif Preprocessor Statements 316\u003c\/p\u003e \u003cp\u003e The #undef Statement 317\u003c\/p\u003e \u003cp\u003e Exercises 318\u003c\/p\u003e \u003cp\u003e13 Extending Data Types with the Enumerated Data Type, Type Definitions, and Data Type Conversions 319\u003c\/p\u003e \u003cp\u003e Enumerated Data Types 319\u003c\/p\u003e \u003cp\u003e The typedef Statement 323\u003c\/p\u003e \u003cp\u003e Data Type Conversions 325\u003c\/p\u003e \u003cp\u003e Sign Extension 327\u003c\/p\u003e \u003cp\u003e Argument Conversion 328\u003c\/p\u003e \u003cp\u003e Exercises 329\u003c\/p\u003e \u003cp\u003e14 Working with Larger Programs 331\u003c\/p\u003e \u003cp\u003e Dividing Your Program into Multiple Files 331\u003c\/p\u003e \u003cp\u003e Compiling Multiple Source Files from the Command Line 332\u003c\/p\u003e \u003cp\u003e Communication Between Modules 334\u003c\/p\u003e \u003cp\u003e External Variables 334\u003c\/p\u003e \u003cp\u003e Static Versus Extern Variables and Functions 337\u003c\/p\u003e \u003cp\u003e Using Header Files Effectively 339\u003c\/p\u003e \u003cp\u003e Other Utilities for Working with Larger Programs 341\u003c\/p\u003e \u003cp\u003e The make Utility 341\u003c\/p\u003e \u003cp\u003e The cvs Utility 343\u003c\/p\u003e \u003cp\u003e Unix Utilities: ar, grep, sed, and so on 343\u003c\/p\u003e \u003cp\u003e15 Input and Output Operations in C 345\u003c\/p\u003e \u003cp\u003e Character I\/O: getchar() and putchar() 346\u003c\/p\u003e \u003cp\u003e Formatted I\/O: printf() and scanf() 346\u003c\/p\u003e \u003cp\u003e The printf() Function 346\u003c\/p\u003e \u003cp\u003e The scanf() Function 353\u003c\/p\u003e \u003cp\u003e Input and Output Operations with Files 358\u003c\/p\u003e \u003cp\u003e Redirecting I\/O to a File 358\u003c\/p\u003e \u003cp\u003e End of File 361\u003c\/p\u003e \u003cp\u003e Special Functions for Working with Files 362\u003c\/p\u003e \u003cp\u003e The fopen Function 362\u003c\/p\u003e \u003cp\u003e The getc() and putc() Functions 364\u003c\/p\u003e \u003cp\u003e The fclose() Function 365\u003c\/p\u003e \u003cp\u003e The feof Function 367\u003c\/p\u003e \u003cp\u003e The fprintf() and fscanf() Functions 367\u003c\/p\u003e \u003cp\u003e The fgets() and fputs() Functions 367\u003c\/p\u003e \u003cp\u003e stdin, stdout, and stderr 368\u003c\/p\u003e \u003cp\u003e The exit() Function 369\u003c\/p\u003e \u003cp\u003e Renaming and Removing Files 370\u003c\/p\u003e \u003cp\u003e Exercises 371\u003c\/p\u003e \u003cp\u003e16 Miscellaneous and Advanced Features 373\u003c\/p\u003e \u003cp\u003e Miscellaneous Language Statements 373\u003c\/p\u003e \u003cp\u003e The goto Statement 373\u003c\/p\u003e \u003cp\u003e The null Statement 374\u003c\/p\u003e \u003cp\u003e Working with Unions 375\u003c\/p\u003e \u003cp\u003e The Comma Operator 378\u003c\/p\u003e \u003cp\u003e Type Qualifiers 379\u003c\/p\u003e \u003cp\u003e The register Qualifier 379\u003c\/p\u003e \u003cp\u003e The volatile Qualifier 379\u003c\/p\u003e \u003cp\u003e The restrict Qualifier 379\u003c\/p\u003e \u003cp\u003e Command-line Arguments 380\u003c\/p\u003e \u003cp\u003e Dynamic Memory Allocation 384\u003c\/p\u003e \u003cp\u003e The calloc() and malloc() Functions 385\u003c\/p\u003e \u003cp\u003e The sizeof Operator 385\u003c\/p\u003e \u003cp\u003e The free Function 387\u003c\/p\u003e \u003cp\u003e Exercises 389\u003c\/p\u003e \u003cp\u003e17 Debugging Programs 391\u003c\/p\u003e \u003cp\u003e Debugging with the Preprocessor 391\u003c\/p\u003e \u003cp\u003e Debugging Programs with gdb 397\u003c\/p\u003e \u003cp\u003e Working with Variables 400\u003c\/p\u003e \u003cp\u003e Source File Display 401\u003c\/p\u003e \u003cp\u003e Controlling Program Execution 402\u003c\/p\u003e \u003cp\u003e Getting a Stack Trace 406\u003c\/p\u003e \u003cp\u003e Calling Functions and Setting Arrays and Structures 407\u003c\/p\u003e \u003cp\u003e Getting Help with gdb Commands 408\u003c\/p\u003e \u003cp\u003e Odds and Ends 410\u003c\/p\u003e \u003cp\u003e18 Object-Oriented Programming 413\u003c\/p\u003e \u003cp\u003e What Is an Object Anyway? 413\u003c\/p\u003e \u003cp\u003e Instances and Methods 414\u003c\/p\u003e \u003cp\u003e Writing a C Program to Work with Fractions 416\u003c\/p\u003e \u003cp\u003e Defining an Objective-C Class to Work with Fractions 417\u003c\/p\u003e \u003cp\u003e Defining a C++ Class to Work with Fractions 421\u003c\/p\u003e \u003cp\u003e Defining a C# Class to Work with Fractions 424\u003c\/p\u003e \u003cp\u003eA C Language Summary 427\u003c\/p\u003e \u003cp\u003eB The Standard C Library 471\u003c\/p\u003e \u003cp\u003eC Compiling Programs with gcc 495\u003c\/p\u003e \u003cp\u003eD Common Programming Mistakes 499\u003c\/p\u003e \u003cp\u003eE Resources 505\u003c\/p\u003e \u003cp\u003eTOC, 9780321776419, 7\/28\/2014\u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48864419742039,"sku":"9780321776419","price":33.29,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780321776419.jpg?v=1722271861"},{"product_id":"c-primer-9780321714114","title":"C Primer","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cstrong\u003eStanley B. Lippman\u003c\/strong\u003e has retired back to the Catalina Foothills where he is working on EEEK!, a computational model of the nervous system of the House Mouse, and An Off By One Error, a speculative novel set in the Northwestern Rain Forest. During his professional career, Stanley served as Distinguished Consultant for the Jet Propulsion Laboratory, Architect for the Visual C++ development group at Microsoft, member of technical staff at Bell Laboratories, two stints in Massive Multiplayer Online Gaming, and a surprisingly long stint in Feature Animation at Disney, DreamWorks, Pixar, and PDI. Stanley will be most remembered for his many years working with Dr. Stroustrup on the implementation of cfront, the standard implementation of C++ until the ISO standard.\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eJosée Lajoie,\u003c\/strong\u003e now at Pixar, was a member of IBM Canada's C\/C++ compiler development team, and chaired the core language working group for the original ANSI\/ISO C++ standardization committee\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003ePreface xxiii\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 1: Getting Started 1\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e1.1 Writing a Simple C++ Program 2\u003c\/p\u003e \u003cp\u003e1.2 A First Look at Input\/Output 5\u003c\/p\u003e \u003cp\u003e1.3 A Word About Comments 9\u003c\/p\u003e \u003cp\u003e1.4 Flow of Control 11\u003c\/p\u003e \u003cp\u003e1.5 Introducing Classes 19\u003c\/p\u003e \u003cp\u003e1.6 The Bookstore Program 24\u003c\/p\u003e \u003cp\u003eChapter Summary 26\u003c\/p\u003e \u003cp\u003eDefined Terms 26\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePart I: The Basics 29\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 2: Variables and Basic Types 31\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e2.1 Primitive Built-in Types 32\u003c\/p\u003e \u003cp\u003e2.2 Variables 41\u003c\/p\u003e \u003cp\u003e2.3 Compound Types 50\u003c\/p\u003e \u003cp\u003e2.4 const Qualifier 59\u003c\/p\u003e \u003cp\u003e2.5 Dealing with Types 67\u003c\/p\u003e \u003cp\u003e2.6 Defining Our Own Data Structures 72\u003c\/p\u003e \u003cp\u003eChapter Summary 78\u003c\/p\u003e \u003cp\u003eDefined Terms 78\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 3: Strings, Vectors, and Arrays 81\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e3.1 Namespace using Declarations 82\u003c\/p\u003e \u003cp\u003e3.2 Library string Type 84\u003c\/p\u003e \u003cp\u003e3.3 Library vector Type 96\u003c\/p\u003e \u003cp\u003e3.4 Introducing Iterators 106\u003c\/p\u003e \u003cp\u003e3.5 Arrays 113\u003c\/p\u003e \u003cp\u003e3.6 Multidimensional Arrays 125\u003c\/p\u003e \u003cp\u003eChapter Summary 131\u003c\/p\u003e \u003cp\u003eDefined Terms 131\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 4: Expressions 133\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e4.1 Fundamentals 134\u003c\/p\u003e \u003cp\u003e4.2 Arithmetic Operators 139\u003c\/p\u003e \u003cp\u003e4.3 Logical and Relational Operators 141\u003c\/p\u003e \u003cp\u003e4.4 Assignment Operators 144\u003c\/p\u003e \u003cp\u003e4.5 Increment and Decrement Operators 147\u003c\/p\u003e \u003cp\u003e4.6 The Member Access Operators 150\u003c\/p\u003e \u003cp\u003e4.7 The Conditional Operator 151\u003c\/p\u003e \u003cp\u003e4.8 The Bitwise Operators 152\u003c\/p\u003e \u003cp\u003e4.9 The sizeof Operator 156\u003c\/p\u003e \u003cp\u003e4.10 Comma Operator 157\u003c\/p\u003e \u003cp\u003e4.11 Type Conversions 159\u003c\/p\u003e \u003cp\u003e4.12 Operator Precedence Table 166\u003c\/p\u003e \u003cp\u003eChapter Summary 168\u003c\/p\u003e \u003cp\u003eDefined Terms 168\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 5: Statements 171\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e5.1 Simple Statements 172\u003c\/p\u003e \u003cp\u003e5.2 Statement Scope 174\u003c\/p\u003e \u003cp\u003e5.3 Conditional Statements 174\u003c\/p\u003e \u003cp\u003e5.4 Iterative Statements 183\u003c\/p\u003e \u003cp\u003e5.5 Jump Statements 190\u003c\/p\u003e \u003cp\u003e5.6 try Blocks and Exception Handling 193\u003c\/p\u003e \u003cp\u003eChapter Summary 199\u003c\/p\u003e \u003cp\u003eDefined Terms 199\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 6: Functions 201\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e6.1 Function Basics 202\u003c\/p\u003e \u003cp\u003e6.2 Argument Passing 208\u003c\/p\u003e \u003cp\u003e6.3 Return Types and the return Statement 222\u003c\/p\u003e \u003cp\u003e6.4 Overloaded Functions 230\u003c\/p\u003e \u003cp\u003e6.5 Features for Specialized Uses 236\u003c\/p\u003e \u003cp\u003e6.6 Function Matching 242\u003c\/p\u003e \u003cp\u003e6.7 Pointers to Functions 247\u003c\/p\u003e \u003cp\u003eChapter Summary 251\u003c\/p\u003e \u003cp\u003eDefined Terms 251\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 7: Classes 253\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e7.1 Defining Abstract Data Types 254\u003c\/p\u003e \u003cp\u003e7.2 Access Control and Encapsulation 268\u003c\/p\u003e \u003cp\u003e7.3 Additional Class Features 271\u003c\/p\u003e \u003cp\u003e7.4 Class Scope 282\u003c\/p\u003e \u003cp\u003e7.5 Constructors Revisited 288\u003c\/p\u003e \u003cp\u003e7.6 static Class Members 300\u003c\/p\u003e \u003cp\u003eChapter Summary 305\u003c\/p\u003e \u003cp\u003eDefined Terms 305\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePart II: The C++ Library 307\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 8: The IO Library 309\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e8.1 The IO Classes 310\u003c\/p\u003e \u003cp\u003e8.2 File Input and Output 316\u003c\/p\u003e \u003cp\u003e8.3 string Streams 321\u003c\/p\u003e \u003cp\u003eChapter Summary 324\u003c\/p\u003e \u003cp\u003eDefined Terms 324\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 9: Sequential Containers 325\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e9.1 Overview of the Sequential Containers 326\u003c\/p\u003e \u003cp\u003e9.2 Container Library Overview 328\u003c\/p\u003e \u003cp\u003e9.3 Sequential Container Operations 341\u003c\/p\u003e \u003cp\u003e9.4 How a vector Grows 355\u003c\/p\u003e \u003cp\u003e9.5 Additional string Operations 360\u003c\/p\u003e \u003cp\u003e9.6 Container Adaptors 368\u003c\/p\u003e \u003cp\u003eChapter Summary 372\u003c\/p\u003e \u003cp\u003eDefined Terms 372\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 10: Generic Algorithms 375\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e10.1 Overview 376\u003c\/p\u003e \u003cp\u003e10.2 A First Look at the Algorithms 378\u003c\/p\u003e \u003cp\u003e10.3 Customizing Operations 385\u003c\/p\u003e \u003cp\u003e10.4 Revisiting Iterators 401\u003c\/p\u003e \u003cp\u003e10.5 Structure of Generic Algorithms 410\u003c\/p\u003e \u003cp\u003e10.6 Container-Specific Algorithms 415\u003c\/p\u003e \u003cp\u003eChapter Summary 417\u003c\/p\u003e \u003cp\u003eDefined Terms 417\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 11: Associative Containers 419\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e11.1 Using an Associative Container 420\u003c\/p\u003e \u003cp\u003e11.2 Overview of the Associative Containers 423\u003c\/p\u003e \u003cp\u003e11.3 Operations on Associative Containers 428\u003c\/p\u003e \u003cp\u003e11.4 The Unordered Containers 443\u003c\/p\u003e \u003cp\u003eChapter Summary 447\u003c\/p\u003e \u003cp\u003eDefined Terms 447\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 12: Dynamic Memory 449\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e12.1 Dynamic Memory and Smart Pointers 450\u003c\/p\u003e \u003cp\u003e12.2 Dynamic Arrays 476\u003c\/p\u003e \u003cp\u003e12.3 Using the Library: A Text-Query Program 484\u003c\/p\u003e \u003cp\u003eChapter Summary 491\u003c\/p\u003e \u003cp\u003eDefined Terms 491\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePart III: Tools for Class Authors 493\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 13: Copy Control 495\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e13.1 Copy, Assign, and Destroy 496\u003c\/p\u003e \u003cp\u003e13.2 Copy Control and Resource Management 510\u003c\/p\u003e \u003cp\u003e13.3 Swap 516\u003c\/p\u003e \u003cp\u003e13.4 A Copy-Control Example 519\u003c\/p\u003e \u003cp\u003e13.5 Classes that Manage Dynamic Memory 524\u003c\/p\u003e \u003cp\u003e13.6 Moving Objects 531\u003c\/p\u003e \u003cp\u003eChapter Summary 549\u003c\/p\u003e \u003cp\u003eDefined Terms 549\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 14: Overloaded Operations and Conversions 551\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e14.1 Basic Concepts 552\u003c\/p\u003e \u003cp\u003e14.2 Input and Output Operators 556\u003c\/p\u003e \u003cp\u003e14.3 Arithmetic and Relational Operators 560\u003c\/p\u003e \u003cp\u003e14.4 Assignment Operators 563\u003c\/p\u003e \u003cp\u003e14.5 Subscript Operator 564\u003c\/p\u003e \u003cp\u003e14.6 Increment and Decrement Operators 566\u003c\/p\u003e \u003cp\u003e14.7 Member Access Operators 569\u003c\/p\u003e \u003cp\u003e14.8 Function-Call Operator 571\u003c\/p\u003e \u003cp\u003e14.9 Overloading, Conversions, and Operators 579\u003c\/p\u003e \u003cp\u003eChapter Summary 590\u003c\/p\u003e \u003cp\u003eDefined Terms 590\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 15: Object-Oriented Programming 591\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e15.1 OOP: An Overview 592\u003c\/p\u003e \u003cp\u003e15.2 Defining Base and Derived Classes 594\u003c\/p\u003e \u003cp\u003e15.3 Virtual Functions 603\u003c\/p\u003e \u003cp\u003e15.4 Abstract Base Classes 608\u003c\/p\u003e \u003cp\u003e15.5 Access Control and Inheritance 511\u003c\/p\u003e \u003cp\u003e15.6 Class Scope under Inheritance 617\u003c\/p\u003e \u003cp\u003e15.7 Constructors and Copy Control 622\u003c\/p\u003e \u003cp\u003e15.8 Containers and Inheritance 630\u003c\/p\u003e \u003cp\u003e15.9 Text Queries Revisited 634\u003c\/p\u003e \u003cp\u003eChapter Summary 649\u003c\/p\u003e \u003cp\u003eDefined Terms 649\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 16: Templates and Generic Programming 651\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e16.1 Defining a Template 652\u003c\/p\u003e \u003cp\u003e16.2 Template Argument Deduction 678\u003c\/p\u003e \u003cp\u003e16.3 Overloading and Templates 694\u003c\/p\u003e \u003cp\u003e16.4 Variadic Templates 699\u003c\/p\u003e \u003cp\u003e16.5 Template Specializations 706\u003c\/p\u003e \u003cp\u003eChapter Summary 713\u003c\/p\u003e \u003cp\u003eDefined Terms 713\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003ePart IV: Advanced Topics 715\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 17: Specialized Library Facilities 717\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e17.1 The tuple Type 718\u003c\/p\u003e \u003cp\u003e17.2 The bitset Type 723\u003c\/p\u003e \u003cp\u003e17.3 Regular Expressions 728\u003c\/p\u003e \u003cp\u003e17.4 Random Numbers 745\u003c\/p\u003e \u003cp\u003e17.5 The IO Library Revisited 752\u003c\/p\u003e \u003cp\u003eChapter Summary 769\u003c\/p\u003e \u003cp\u003eDefined Terms 769\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 18: Tools for Large Programs 771\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e18.1 Exception Handling 772\u003c\/p\u003e \u003cp\u003e18.2 Namespaces 785\u003c\/p\u003e \u003cp\u003e18.3 Multiple and Virtual Inheritance 802\u003c\/p\u003e \u003cp\u003eChapter Summary 816\u003c\/p\u003e \u003cp\u003eDefined Terms 816\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 19: Specialized Tools and Techniques 819\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e19.1 Controlling Memory Allocation 820\u003c\/p\u003e \u003cp\u003e19.2 Run-Time Type Identification 825\u003c\/p\u003e \u003cp\u003e19.3 Enumerations 832\u003c\/p\u003e \u003cp\u003e19.4 Pointer to Class Member 835\u003c\/p\u003e \u003cp\u003e19.5 Nested Classes 843\u003c\/p\u003e \u003cp\u003e19.6 Union: A Space-Saving Class 847\u003c\/p\u003e \u003cp\u003e19.7 Local Classes 852\u003c\/p\u003e \u003cp\u003e19.8 Inherently Nonportable Features 854\u003c\/p\u003e \u003cp\u003eChapter Summary 862\u003c\/p\u003e \u003cp\u003eDefined Terms 862\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eAppendix A: The Library 865\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003eA.1 Library Names and Headers 866\u003c\/p\u003e \u003cp\u003eA.2 A Brief Tour of the Algorithms 870\u003c\/p\u003e \u003cp\u003eA.3 Random Numbers 882\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eIndex 887\u003c\/strong\u003e\u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48864419807575,"sku":"9780321714114","price":44.09,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780321714114.jpg?v=1722271861"},{"product_id":"sysml-distilled-9780321927866","title":"SysML Distilled","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cstrong\u003eLenny Delligatti\u003c\/strong\u003e holds the OMG Certified Systems Modeling Professional (OCSMP): Model Builder Advanced certification. As a senior systems engineer with Lockheed Martin, he created SysML models for NASA's Mission Control Center: 21st Century (MCC-21) project at Johnson Space Center. Lenny is a member of the Object Management Group (OMG) SysML Revision Task Force (RTF). He has delivered hundreds of hours of training to hundreds of systems and software engineers, enabling many to earn certifications and lead MBSE projects.\u003c\/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTrade Review\u003c\/b\u003e\u003cbr\u003e\"In keeping with the outstanding tradition of Addison-Wesley's technical publications, Lenny Delligatti's SysML Distilled does not disappoint. Lenny has done a masterful job of capturing the spirit of OMG SysML as a practical, standards-based modeling language to help systems engineers address growing system complexity. This book is loaded with matter-of-fact insights, starting with basic MBSE concepts to distinguishing the subtle differences between use cases and scenarios to illumination on namespaces and SysML packages, and even speaks to some of the more esoteric SysML semantics such as token flows.\" -Jeff Estefan, Principal Engineer, NASA's Jet Propulsion Laboratory \"The power of a modeling language, such as SysML, is that it facilitates communication not only within systems engineering but across disciplines and across the development life cycle. Many languages have the potential to increase communication, but without an effective guide, they can fall short of that objective. In SysML Distilled, Lenny Delligatti combines just the right amount of technology with a common-sense approach to utilizing SysML toward achieving that communication. Having worked in systems and software engineering across many domains for the last 30 years, and having taught computer languages, UML, and SysML to many organizations and within the college setting, I find Lenny's book an invaluable resource. He presents the concepts clearly and provides useful and pragmatic examples to get you off the ground quickly and enables you to be an effective modeler.\" -Thomas W. Fargnoli, Lead Member of the Engineering Staff, Lockheed Martin \"This book provides an excellent introduction to SysML. Lenny Delligatti's explanations are concise and easy to understand; the examples well thought out and interesting.\" -Susanne Sherba, Senior Lecturer, Department of Computer Science, University of Denver \"Lenny hits the thin line between a reference book for SysML to look up elements and an entertaining book that could be read in its entirety to learn the language. A great book in the tradition of the famous UML Distilled.\" -Tim Weilkiens, CEO, oose \"More informative than a PowerPoint, less pedantic than an OMG Profile Specification, SysML Distilled offers practicing systems engineers just the right level of the motivation, concepts, and notation of pure OMG SysML for them to attain fluency with this graphical language for the specification and analysis of their practical and complex systems.\" -Lonnie VanZandt, chief architect, No Magic, Inc. \"Delligatti's SysML Distilled is a most aptly named book; it represents the distillation of years of experience in teaching and using SysML in industrial settings. The author presents a very clear and highly readable view of this powerful but complex modeling language, illustrating its use via easy-to-follow practical examples. Although intended primarily as an introduction to SysML, I have no doubt that it will also serve as a handy reference for experienced practitioners.\" -Bran Selic, president, Malina Software Corp. \"SysML is a rather intimidating modeling language, but in this book Lenny makes it really easy to understand, and the advice throughout the book will help practitioners avoid numerous pitfalls and help them grasp and apply the core elements and the spirit of SysML. If you are planning on applying SysML, this is the book for you!\" -Celso Gonzalez, senior developer, IBM Rational \"SysML Distilled is a great book for engineers who are starting to delve into model-based systems engineering. The space system examples capture the imagination and express the concepts in a simple but effective way.\" -Matthew C. Hause, chief consulting engineer, Atego and chair, OMG UPDM Group \"I've been deeply involved with OMG since the 1990s, but my professional needs have not often taken me into the SysML realm. So I thought I'd be a good beta tester for Lenny's book. To my delight, I learned a great deal reading through it, and I know you will too.\" -Doug Tolbert, distinguished engineer, Unisys, and member, OMG Board of Directors and Architecture Board \"SysML Distilled provides a clear and comprehensive description of the language component of model-based systems engineering, while offering suggestions for where to find information about the tool and methodology components. There is evidence throughout the book that the author has a deep understanding of SysML and its application in a system development process. I will definitely be using this as a textbook in the MBSE courses I teach.\" -J. D. Baker, OCUP, OCSMP, member of the OMG Architecture Board \"SysML Distilled is the desktop companion that many SysML modelers have needed for their bookshelves. Lenny has the experience and certifications to help you through your day-to-day modeling questions. This book is not a tutorial, nor is it the encyclopedic compendium of all things SysML. If you model using SysML, this will become your daily companion, as it is meant to be used regularly. I believe your copy will soon be dog-eared, with sticky notes throughout.\" -Dr. Robert Cloutier, Stevens Institute of Technology \"SysML is utilized today in a wide range of applications, including deep space robotic spacecraft and down-to-earth agricultural equipment. This book concisely presents SysML in a manner that is both refreshingly accessible for new learners and quite handy for seasoned practitioners.\" -Russell Peak, MBSE branch chief, Aerospace Systems Design Lab, Georgia Tech \"SysML Distilled is a wonderfully written, knowledgeable, and concise addition to systems modeling literature. The lucid explanations lead a newcomer by the hand into modeling reasonably complex systems, and the wealth and depth of the coverage of the most-used aspects of the SysML modeling language stretch to even enabling advanced intermediate depictions of most systems. It also serves as a handy reference. Kudos to Mr. Delligatti for gifting the world with this very approachable view of systems modeling.\" -Bobbin Teegarden, CTO\/chief architect, OntoAge and Board Member, No Magic, Inc.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cem\u003eForeword by Rick Steiner xvii \u003c\/em\u003e\u003c\/p\u003e \u003cp\u003eForeword by Richard Soley xix\u003c\/p\u003e \u003cp\u003ePreface xxv\u003c\/p\u003e \u003cp\u003eAcknowledgments xxxi\u003c\/p\u003e \u003cp\u003eAbout the Author xxxiii\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 1: Overview of Model-Based Systems Engineering 1\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e1.1 What Is MBSE? 2\u003c\/p\u003e \u003cp\u003e1.2 The Three Pillars of MBSE 4\u003c\/p\u003e \u003cp\u003e1.3 The Myth of MBSE 9\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 2: Overview of the Systems Modeling Language 11\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e2.1 What SysML Is–and Isn’t 11\u003c\/p\u003e \u003cp\u003e2.2 Yes, SysML Is Based on UML–but You Can Start with SysML 13\u003c\/p\u003e \u003cp\u003e2.3 SysML Diagram Overview 14\u003c\/p\u003e \u003cp\u003e2.4 General Diagram Concepts 17\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 3: Block Definition Diagrams 23\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e3.1 Purpose 23\u003c\/p\u003e \u003cp\u003e3.2 When Should You Create a BDD? 24\u003c\/p\u003e \u003cp\u003e3.3 The BDD Frame 24\u003c\/p\u003e \u003cp\u003e3.4 Blocks 26\u003c\/p\u003e \u003cp\u003e3.5 Associations: Another Notation for a Property 44\u003c\/p\u003e \u003cp\u003e3.6 Generalizations 49\u003c\/p\u003e \u003cp\u003e3.7 Dependencies 52\u003c\/p\u003e \u003cp\u003e3.8 Actors 53\u003c\/p\u003e \u003cp\u003e3.9 Value Types 55\u003c\/p\u003e \u003cp\u003e3.10 Constraint Blocks 57\u003c\/p\u003e \u003cp\u003e3.11 Comments 59\u003c\/p\u003e \u003cp\u003eChapter 4: Internal Block Diagrams 63\u003c\/p\u003e \u003cp\u003e4.1 Purpose 63\u003c\/p\u003e \u003cp\u003e4.2 When Should You Create an IBD? 64\u003c\/p\u003e \u003cp\u003e4.3 Blocks, Revisited 64\u003c\/p\u003e \u003cp\u003e4.4 The IBD Frame 65\u003c\/p\u003e \u003cp\u003e4.5 BDDs and IBDs: Complementary Views of a Block 66\u003c\/p\u003e \u003cp\u003e4.6 Part Properties 67\u003c\/p\u003e \u003cp\u003e4.7 Reference Properties 67\u003c\/p\u003e \u003cp\u003e4.8 Connectors 68\u003c\/p\u003e \u003cp\u003e4.9 Item Flows 71\u003c\/p\u003e \u003cp\u003e4.10 Nested Parts and References 72\u003c\/p\u003e \u003cp\u003eChapter 5: Use Case Diagrams 77\u003c\/p\u003e \u003cp\u003e5.1 Purpose 77\u003c\/p\u003e \u003cp\u003e5.2 When Should You Create a Use Case Diagram? 77\u003c\/p\u003e \u003cp\u003e5.3 Wait! What’s a Use Case? 78\u003c\/p\u003e \u003cp\u003e5.4 The Use Case Diagram Frame 81\u003c\/p\u003e \u003cp\u003e5.5 Use Cases 82\u003c\/p\u003e \u003cp\u003e5.6 System Boundary 83\u003c\/p\u003e \u003cp\u003e5.7 Actors 83\u003c\/p\u003e \u003cp\u003e5.8 Associating Actors with Use Cases 84\u003c\/p\u003e \u003cp\u003e5.9 Base Use Cases 85\u003c\/p\u003e \u003cp\u003e5.10 Included Use Cases 85\u003c\/p\u003e \u003cp\u003e5.11 Extending Use Cases 87\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 6: Activity Diagrams 89\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e6.1 Purpose 89\u003c\/p\u003e \u003cp\u003e6.2 When Should You Create an Activity Diagram? 90\u003c\/p\u003e \u003cp\u003e6.3 The Activity Diagram Frame 90\u003c\/p\u003e \u003cp\u003e6.4 A Word about Token Flow 92\u003c\/p\u003e \u003cp\u003e6.5 Actions: The Basics 93\u003c\/p\u003e \u003cp\u003e6.6 Object Nodes 95\u003c\/p\u003e \u003cp\u003e6.7 Edges 99\u003c\/p\u003e \u003cp\u003e6.8 Actions, Revisited 102\u003c\/p\u003e \u003cp\u003e6.9 Control Nodes 112\u003c\/p\u003e \u003cp\u003e6.10 Activity Partitions: Allocating Behaviors to Structures 119\u003c\/p\u003e \u003cp\u003eChapter 7: Sequence Diagrams 123\u003c\/p\u003e \u003cp\u003e7.1 Purpose 123\u003c\/p\u003e \u003cp\u003e7.2 When Should You Create a Sequence Diagram? 124\u003c\/p\u003e \u003cp\u003e7.3 The Sequence Diagram Frame 125\u003c\/p\u003e \u003cp\u003e7.4 Lifelines 125\u003c\/p\u003e \u003cp\u003e7.5 Messages 129\u003c\/p\u003e \u003cp\u003e7.6 Destruction Occurrences 138\u003c\/p\u003e \u003cp\u003e7.7 Execution Specifications 139\u003c\/p\u003e \u003cp\u003e7.8 Constraints 141\u003c\/p\u003e \u003cp\u003e7.9 Combined Fragments 144\u003c\/p\u003e \u003cp\u003e7.10 Interaction Uses 151\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 8: State Machine Diagrams 155\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e8.1 Purpose 155\u003c\/p\u003e \u003cp\u003e8.2 When Should You Create a State Machine Diagram? 156\u003c\/p\u003e \u003cp\u003e8.3 The State Machine Diagram Frame 156\u003c\/p\u003e \u003cp\u003e8.4 States 158\u003c\/p\u003e \u003cp\u003e8.5 Transitions 162\u003c\/p\u003e \u003cp\u003e8.6 Pseudostates 171\u003c\/p\u003e \u003cp\u003e8.7 Regions 173\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 9: Parametric Diagrams 177\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e9.1 Purpose 177\u003c\/p\u003e \u003cp\u003e9.2 When Should You Create a Parametric Diagram? 178\u003c\/p\u003e \u003cp\u003e9.3 Blocks, Revisited 179\u003c\/p\u003e \u003cp\u003e9.4 The Parametric Diagram Frame 182\u003c\/p\u003e \u003cp\u003e9.5 Constraint Properties 184\u003c\/p\u003e \u003cp\u003e9.6 Constraint Parameters 185\u003c\/p\u003e \u003cp\u003e9.7 Value Properties 185\u003c\/p\u003e \u003cp\u003e9.8 Binding Connectors 187\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 10: Package Diagrams 189\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e10.1 Purpose 189\u003c\/p\u003e \u003cp\u003e10.2 When Should You Create a Package Diagram? 190\u003c\/p\u003e \u003cp\u003e10.3 The Package Diagram Frame 190\u003c\/p\u003e \u003cp\u003e10.4 Notations for Namespace Containment 191\u003c\/p\u003e \u003cp\u003e10.5 Dependencies between Packages 193\u003c\/p\u003e \u003cp\u003e10.6 Importing Packages 193\u003c\/p\u003e \u003cp\u003e10.7 Specialized Packages 194\u003c\/p\u003e \u003cp\u003e10.8 Shades of Gray: Are You Looking at a Package Diagram or a Block Definition Diagram? 198\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 11: Requirements Diagrams 201\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e11.1 Purpose 201\u003c\/p\u003e \u003cp\u003e11.2 When Should You Create a Requirements Diagram? 202\u003c\/p\u003e \u003cp\u003e11.3 The Requirements Diagram Frame 202\u003c\/p\u003e \u003cp\u003e11.4 Requirements 204\u003c\/p\u003e \u003cp\u003e11.5 Requirements Relationships 205\u003c\/p\u003e \u003cp\u003e11.6 Notations for Requirements Relationships 209\u003c\/p\u003e \u003cp\u003e11.7 Rationale 213\u003c\/p\u003e \u003cp\u003e\u003cstrong\u003eChapter 12: Allocations: Cross-Cutting Relationships 215\u003c\/strong\u003e\u003c\/p\u003e \u003cp\u003e12.1 Purpose 215\u003c\/p\u003e \u003cp\u003e12.2 There’s No Such Thing as an Allocation Diagram 216\u003c\/p\u003e \u003cp\u003e12.3 Uses for Allocation Relationships 216\u003c\/p\u003e \u003cp\u003e12.4 Notations for Allocation Relationships 219\u003c\/p\u003e \u003cp\u003e12.5 Rationale 224\u003c\/p\u003e \u003cp\u003eAppendix A: SysML Notation Desk Reference 227\u003c\/p\u003e \u003cp\u003eAppendix B: Changes between SysML Versions 245\u003c\/p\u003e \u003cp\u003eBibliography 253\u003c\/p\u003e \u003cp\u003e\u003cem\u003eIndex 255\u003c\/em\u003e\u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48864420233559,"sku":"9780321927866","price":30.39,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780321927866.jpg?v=1722271864"},{"product_id":"data-structures-and-algorithms-in-c-9780470383278","title":"Data Structures and Algorithms in C","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eThis second edition of Data Structures and Algorithms in C++ is designed to provide an introduction to data structures and algorithms, including their design, analysis, and implementation. The authors offer an introduction to object-oriented design with C++ and design patterns, including the use of class inheritance and generic programming through class and function templates, and retain a consistent object-oriented viewpoint throughout the book.  \u003cp\u003eThis is a sister book to Goodrich \u0026amp; Tamassia's Data Structures and Algorithms in Java, but uses C++ as the basis language instead of Java. This C++ version retains the same pedagogical approach and general structure as the Java version so schools that teach data structures in both C++ and Java can share the same core syllabus.\u003c\/p\u003e \u003cp\u003eIn terms of curricula based on the IEEE\/ACM 2001 Computing Curriculum, this book is appropriate for use in the courses CS102 (I\/O\/B versions), CS103 (I\/O\/B versions), CS111 (A version), and CS112 (A\/I\/O\/F\/H ve\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cb\u003e1 A \u003c\/b\u003e\u003cb\u003eC++ \u003c\/b\u003e\u003cb\u003ePrimer 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 Basic C++ Programming Elements 2\u003c\/p\u003e \u003cp\u003e1.1.1 A Simple C++ Program 2\u003c\/p\u003e \u003cp\u003e1.1.2 Fundamental Types 4\u003c\/p\u003e \u003cp\u003e1.1.3 Pointers, Arrays, and Structures 7\u003c\/p\u003e \u003cp\u003e1.1.4 Named Constants, Scope, and Namespaces 13\u003c\/p\u003e \u003cp\u003e1.2 Expressions 16\u003c\/p\u003e \u003cp\u003e1.2.1 Changing Types through Casting 20\u003c\/p\u003e \u003cp\u003e1.3 Control Flow 23\u003c\/p\u003e \u003cp\u003e1.4 Functions 26\u003c\/p\u003e \u003cp\u003e1.4.1 Argument Passing 28\u003c\/p\u003e \u003cp\u003e1.4.2 Overloading and Inlining 30\u003c\/p\u003e \u003cp\u003e1.5 Classes 32\u003c\/p\u003e \u003cp\u003e1.5.1 Class Structure 33\u003c\/p\u003e \u003cp\u003e1.5.2 Constructors and Destructors 37\u003c\/p\u003e \u003cp\u003e1.5.3 Classes and Memory Allocation 40\u003c\/p\u003e \u003cp\u003e1.5.4 Class Friends and Class Members 43\u003c\/p\u003e \u003cp\u003e1.5.5 The Standard Template Library 45\u003c\/p\u003e \u003cp\u003e1.6 C++ Program and File Organization 47\u003c\/p\u003e \u003cp\u003e1.6.1 An Example Program 48\u003c\/p\u003e \u003cp\u003e1.7 Writing a C++ Program53\u003c\/p\u003e \u003cp\u003e1.7.1 Design 54\u003c\/p\u003e \u003cp\u003e1.7.2 Pseudo-Code 54\u003c\/p\u003e \u003cp\u003e1.7.3 Coding 55\u003c\/p\u003e \u003cp\u003e1.7.4 Testing and Debugging 57\u003c\/p\u003e \u003cp\u003e1.8 Exercises 60\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Object-Oriented Design 65\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Goals, Principles, and Patterns 66\u003c\/p\u003e \u003cp\u003e2.1.1 Object-Oriented Design Goals 66\u003c\/p\u003e \u003cp\u003e2.1.2 Object-Oriented Design Principles 67\u003c\/p\u003e \u003cp\u003e2.1.3 Design Patterns 70\u003c\/p\u003e \u003cp\u003e2.2 Inheritance and Polymorphism 71\u003c\/p\u003e \u003cp\u003e2.2.1 Inheritance in C++ 71\u003c\/p\u003e \u003cp\u003e2.2.2 Polymorphism 78\u003c\/p\u003e \u003cp\u003e2.2.3 Examples of Inheritance in C++ 79\u003c\/p\u003e \u003cp\u003e2.2.4 Multiple Inheritance and Class Casting 84\u003c\/p\u003e \u003cp\u003e2.2.5 Interfaces and Abstract Classes 87\u003c\/p\u003e \u003cp\u003e2.3 Templates 90\u003c\/p\u003e \u003cp\u003e2.3.1 Function Templates 90\u003c\/p\u003e \u003cp\u003e2.3.2 Class Templates 91\u003c\/p\u003e \u003cp\u003e2.4 Exceptions 93\u003c\/p\u003e \u003cp\u003e2.4.1 Exception Objects 93\u003c\/p\u003e \u003cp\u003e2.4.2 Throwing and Catching Exceptions 94\u003c\/p\u003e \u003cp\u003e2.4.3 Exception Specification 96\u003c\/p\u003e \u003cp\u003e2.5 Exercises 98\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Arrays, Linked Lists, and Recursion 103\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Using Arrays 104\u003c\/p\u003e \u003cp\u003e3.1.1 Storing Game Entries in an Array 104\u003c\/p\u003e \u003cp\u003e3.1.2 Sorting an Array 109\u003c\/p\u003e \u003cp\u003e3.1.3 Two-Dimensional Arrays and Positional Games 111\u003c\/p\u003e \u003cp\u003e3.2 Singly Linked Lists 117\u003c\/p\u003e \u003cp\u003e3.2.1 Implementing a Singly Linked List 117\u003c\/p\u003e \u003cp\u003e3.2.2 Insertion to the Front of a Singly Linked List 119\u003c\/p\u003e \u003cp\u003e3.2.3 Removal from the Front of a Singly Linked List 119\u003c\/p\u003e \u003cp\u003e3.2.4 Implementing a Generic Singly Linked List 121\u003c\/p\u003e \u003cp\u003e3.3 Doubly Linked Lists 123\u003c\/p\u003e \u003cp\u003e3.3.1 Insertion into a Doubly Linked List 123\u003c\/p\u003e \u003cp\u003e3.3.2 Removal from a Doubly Linked List 124\u003c\/p\u003e \u003cp\u003e3.3.3 A C++ Implementation 125\u003c\/p\u003e \u003cp\u003e3.4 Circularly Linked Lists and List Reversal 129\u003c\/p\u003e \u003cp\u003e3.4.1 Circularly Linked Lists 129\u003c\/p\u003e \u003cp\u003e3.4.2 Reversing a Linked List 133\u003c\/p\u003e \u003cp\u003e3.5 Recursion 134\u003c\/p\u003e \u003cp\u003e3.5.1 Linear Recursion 140\u003c\/p\u003e \u003cp\u003e3.5.2 Binary Recursion 144\u003c\/p\u003e \u003cp\u003e3.5.3 Multiple Recursion 147\u003c\/p\u003e \u003cp\u003e3.6 Exercises 149\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Analysis Tools 153\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 The Seven Functions Used in This Book 154\u003c\/p\u003e \u003cp\u003e4.1.1 The Constant Function 154\u003c\/p\u003e \u003cp\u003e4.1.2 The Logarithm Function 154\u003c\/p\u003e \u003cp\u003e4.1.3 The Linear Function 156\u003c\/p\u003e \u003cp\u003e4.1.4 The N-Log-N Function 156\u003c\/p\u003e \u003cp\u003e4.1.5 The Quadratic Function 156\u003c\/p\u003e \u003cp\u003e4.1.6 The Cubic Function and Other Polynomials 158\u003c\/p\u003e \u003cp\u003e4.1.7 The Exponential Function 159\u003c\/p\u003e \u003cp\u003e4.1.8 Comparing Growth Rates 161\u003c\/p\u003e \u003cp\u003e4.2 Analysis of Algorithms 162\u003c\/p\u003e \u003cp\u003e4.2.1 Experimental Studies 163\u003c\/p\u003e \u003cp\u003e4.2.2 Primitive Operations 164\u003c\/p\u003e \u003cp\u003e4.2.3 Asymptotic Notation 166\u003c\/p\u003e \u003cp\u003e4.2.4 Asymptotic Analysis 170\u003c\/p\u003e \u003cp\u003e4.2.5 Using the Big-Oh Notation 172\u003c\/p\u003e \u003cp\u003e4.2.6 A Recursive Algorithm for Computing Powers 176\u003c\/p\u003e \u003cp\u003e4.2.7 Some More Examples of Algorithm Analysis 177\u003c\/p\u003e \u003cp\u003e4.3 Simple Justification Techniques 181\u003c\/p\u003e \u003cp\u003e4.3.1 By Example 181\u003c\/p\u003e \u003cp\u003e4.3.2 The “Contra” Attack 181\u003c\/p\u003e \u003cp\u003e4.3.3 Induction and Loop Invariants 182\u003c\/p\u003e \u003cp\u003e4.4 Exercises 185\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Stacks, Queues, and Deques 193\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Stacks 194\u003c\/p\u003e \u003cp\u003e5.1.1 The Stack Abstract Data Type 195\u003c\/p\u003e \u003cp\u003e5.1.2 The STL Stack 196\u003c\/p\u003e \u003cp\u003e5.1.3 A C++ Stack Interface 196\u003c\/p\u003e \u003cp\u003e5.1.4 A Simple Array-Based Stack Implementation 198\u003c\/p\u003e \u003cp\u003e5.1.5 Implementing a Stack with a Generic Linked List 202\u003c\/p\u003e \u003cp\u003e5.1.6 Reversing a Vector Using a Stack 203\u003c\/p\u003e \u003cp\u003e5.1.7 Matching Parentheses and HTML Tags 204\u003c\/p\u003e \u003cp\u003e5.2 Queues 208\u003c\/p\u003e \u003cp\u003e5.2.1 The Queue Abstract Data Type 208\u003c\/p\u003e \u003cp\u003e5.2.2 The STL Queue 209\u003c\/p\u003e \u003cp\u003e5.2.3 A C++ Queue Interface 210\u003c\/p\u003e \u003cp\u003e5.2.4 A Simple Array-Based Implementation 211\u003c\/p\u003e \u003cp\u003e5.2.5 Implementing a Queue with a Circularly Linked List 213\u003c\/p\u003e \u003cp\u003e5.3 Double-Ended Queues 217\u003c\/p\u003e \u003cp\u003e5.3.1 The Deque Abstract Data Type 217\u003c\/p\u003e \u003cp\u003e5.3.2 The STL Deque 218\u003c\/p\u003e \u003cp\u003e5.3.3 Implementing a Deque with a Doubly Linked List 218\u003c\/p\u003e \u003cp\u003e5.3.4 Adapters and the Adapter Design Pattern 220\u003c\/p\u003e \u003cp\u003e5.4 Exercises 223\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 List and Iterator ADTs 227\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Vectors 228\u003c\/p\u003e \u003cp\u003e6.1.1 The Vector Abstract Data Type 228\u003c\/p\u003e \u003cp\u003e6.1.2 A Simple Array-Based Implementation 229\u003c\/p\u003e \u003cp\u003e6.1.3 An Extendable Array Implementation 231\u003c\/p\u003e \u003cp\u003e6.1.4 STL Vectors 236\u003c\/p\u003e \u003cp\u003e6.2 Lists 238\u003c\/p\u003e \u003cp\u003e6.2.1 Node-Based Operations and Iterators 238\u003c\/p\u003e \u003cp\u003e6.2.2 The List Abstract Data Type 240\u003c\/p\u003e \u003cp\u003e6.2.3 Doubly Linked List Implementation 242\u003c\/p\u003e \u003cp\u003e6.2.4 STL Lists 247\u003c\/p\u003e \u003cp\u003e6.2.5 STL Containers and Iterators 248\u003c\/p\u003e \u003cp\u003e6.3 Sequences 255\u003c\/p\u003e \u003cp\u003e6.3.1 The Sequence Abstract Data Type 255\u003c\/p\u003e \u003cp\u003e6.3.2 Implementing a Sequence with a Doubly Linked List .255\u003c\/p\u003e \u003cp\u003e6.3.3 Implementing a Sequence with an Array 257\u003c\/p\u003e \u003cp\u003e6.4 Case Study: Bubble-Sort on a Sequence 259\u003c\/p\u003e \u003cp\u003e6.4.1 The Bubble-Sort Algorithm 259\u003c\/p\u003e \u003cp\u003e6.4.2 A Sequence-Based Analysis of Bubble-Sort 260\u003c\/p\u003e \u003cp\u003e6.5 Exercises 262\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Trees 267\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 General Trees 268\u003c\/p\u003e \u003cp\u003e7.1.1 Tree Definitions and Properties 269\u003c\/p\u003e \u003cp\u003e7.1.2 Tree Functions 272\u003c\/p\u003e \u003cp\u003e7.1.3 A C++ Tree Interface 273\u003c\/p\u003e \u003cp\u003e7.1.4 A Linked Structure for General Trees 274\u003c\/p\u003e \u003cp\u003e7.2 Tree Traversal Algorithms 275\u003c\/p\u003e \u003cp\u003e7.2.1 Depth and Height 275\u003c\/p\u003e \u003cp\u003e7.2.2 Preorder Traversal 278\u003c\/p\u003e \u003cp\u003e7.2.3 Postorder Traversal 281\u003c\/p\u003e \u003cp\u003e7.3 Binary Trees 284\u003c\/p\u003e \u003cp\u003e7.3.1 The Binary Tree ADT 285\u003c\/p\u003e \u003cp\u003e7.3.2 A C++ Binary Tree Interface 286\u003c\/p\u003e \u003cp\u003e7.3.3 Properties of Binary Trees 287\u003c\/p\u003e \u003cp\u003e7.3.4 A Linked Structure for Binary Trees 289\u003c\/p\u003e \u003cp\u003e7.3.5 A Vector-Based Structure for Binary Trees 295\u003c\/p\u003e \u003cp\u003e7.3.6 Traversals of a Binary Tree 297\u003c\/p\u003e \u003cp\u003e7.3.7 The Template Function Pattern 303\u003c\/p\u003e \u003cp\u003e7.3.8 Representing General Trees with Binary Trees 309\u003c\/p\u003e \u003cp\u003e7.4 Exercises 310\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Heaps and Priority Queues 321\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 The Priority Queue Abstract Data Type 322\u003c\/p\u003e \u003cp\u003e8.1.1 Keys, Priorities, and Total Order Relations 322\u003c\/p\u003e \u003cp\u003e8.1.2 Comparators 324\u003c\/p\u003e \u003cp\u003e8.1.3 The Priority Queue ADT 327\u003c\/p\u003e \u003cp\u003e8.1.4 A C++ Priority Queue Interface 328\u003c\/p\u003e \u003cp\u003e8.1.5 Sorting with a Priority Queue 329\u003c\/p\u003e \u003cp\u003e8.1.6 The STL priority queue Class 330\u003c\/p\u003e \u003cp\u003e8.2 Implementing a Priority Queue with a List 331\u003c\/p\u003e \u003cp\u003e8.2.1 A C++ Priority Queue Implementation using a List 333\u003c\/p\u003e \u003cp\u003e8.2.2 Selection-Sort and Insertion-Sort 335\u003c\/p\u003e \u003cp\u003e8.3 Heaps 337\u003c\/p\u003e \u003cp\u003e8.3.1 The Heap Data Structure 337\u003c\/p\u003e \u003cp\u003e8.3.2 Complete Binary Trees and Their Representation 340\u003c\/p\u003e \u003cp\u003e8.3.3 Implementing a Priority Queue with a Heap 344\u003c\/p\u003e \u003cp\u003e8.3.4 C++ Implementation 349\u003c\/p\u003e \u003cp\u003e8.3.5 Heap-Sort 351\u003c\/p\u003e \u003cp\u003e8.3.6 Bottom-Up Heap Construction ⋆ 353\u003c\/p\u003e \u003cp\u003e8.4 Adaptable Priority Queues 357\u003c\/p\u003e \u003cp\u003e8.4.1 A List-Based Implementation 358\u003c\/p\u003e \u003cp\u003e8.4.2 Location-Aware Entries 360\u003c\/p\u003e \u003cp\u003e8.5 Exercises 361\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Hash Tables, Maps, and Skip Lists 367\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 Maps 368\u003c\/p\u003e \u003cp\u003e9.1.1 The Map ADT 369\u003c\/p\u003e \u003cp\u003e9.1.2 A C++ Map Interface 371\u003c\/p\u003e \u003cp\u003e9.1.3 The STL map Class 372\u003c\/p\u003e \u003cp\u003e9.1.4 A Simple List-Based Map Implementation 374\u003c\/p\u003e \u003cp\u003e9.2 Hash Tables 375\u003c\/p\u003e \u003cp\u003e9.2.1 Bucket Arrays 375\u003c\/p\u003e \u003cp\u003e9.2.2 Hash Functions 376\u003c\/p\u003e \u003cp\u003e9.2.3 Hash Codes 376\u003c\/p\u003e \u003cp\u003e9.2.4 Compression Functions 380\u003c\/p\u003e \u003cp\u003e9.2.5 Collision-Handling Schemes 382\u003c\/p\u003e \u003cp\u003e9.2.6 Load Factors and Rehashing 386\u003c\/p\u003e \u003cp\u003e9.2.7 A C++ Hash Table Implementation 387\u003c\/p\u003e \u003cp\u003e9.3 Ordered Maps 394\u003c\/p\u003e \u003cp\u003e9.3.1 Ordered Search Tables and Binary Search 395\u003c\/p\u003e \u003cp\u003e9.3.2 Two Applications of Ordered Maps 399\u003c\/p\u003e \u003cp\u003e9.4 Skip Lists 402\u003c\/p\u003e \u003cp\u003e9.4.1 Search and Update Operations in a Skip List 404\u003c\/p\u003e \u003cp\u003e9.4.2 A Probabilistic Analysis of Skip Lists ⋆ 408\u003c\/p\u003e \u003cp\u003e9.5 Dictionaries 411\u003c\/p\u003e \u003cp\u003e9.5.1 The Dictionary ADT 411\u003c\/p\u003e \u003cp\u003e9.5.2 A C++ Dictionary Implementation 413\u003c\/p\u003e \u003cp\u003e9.5.3 Implementations with Location-Aware Entries 415\u003c\/p\u003e \u003cp\u003e9.6 Exercises 417\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Search Trees 423\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Binary Search Trees 424\u003c\/p\u003e \u003cp\u003e10.1.1 Searching 426\u003c\/p\u003e \u003cp\u003e10.1.2 Update Operations 428\u003c\/p\u003e \u003cp\u003e10.1.3 C++ Implementation of a Binary Search Tree 432\u003c\/p\u003e \u003cp\u003e10.2 AVL Trees438\u003c\/p\u003e \u003cp\u003e10.2.1 Update Operations 440\u003c\/p\u003e \u003cp\u003e10.2.2 C++ Implementation of an AVL Tree 446\u003c\/p\u003e \u003cp\u003e10.3 Splay Trees 450\u003c\/p\u003e \u003cp\u003e10.3.1 Splaying 450\u003c\/p\u003e \u003cp\u003e10.3.2 When to Splay 454\u003c\/p\u003e \u003cp\u003e10.3.3 Amortized Analysis of Splaying ⋆456\u003c\/p\u003e \u003cp\u003e10.4 (2,4) Trees 461\u003c\/p\u003e \u003cp\u003e10.4.1 Multi-Way Search Trees 461\u003c\/p\u003e \u003cp\u003e10.4.2 Update Operations for (2,4) Trees 467\u003c\/p\u003e \u003cp\u003e10.5 Red-Black Trees473\u003c\/p\u003e \u003cp\u003e10.5.1 Update Operations 475\u003c\/p\u003e \u003cp\u003e10.5.2 C++ Implementation of a Red-Black Tree 488\u003c\/p\u003e \u003cp\u003e10.6 Exercises 492\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Sorting, Sets, and Selection 499\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Merge-Sort500\u003c\/p\u003e \u003cp\u003e11.1.1 Divide-and-Conquer 500\u003c\/p\u003e \u003cp\u003e11.1.2 Merging Arrays and Lists 505\u003c\/p\u003e \u003cp\u003e11.1.3 The Running Time of Merge-Sort 508\u003c\/p\u003e \u003cp\u003e11.1.4 C++ Implementations of Merge-Sort 509\u003c\/p\u003e \u003cp\u003e11.1.5 Merge-Sort and Recurrence Equations ⋆ 511\u003c\/p\u003e \u003cp\u003e11.2 Quick-Sort 513\u003c\/p\u003e \u003cp\u003e11.2.1 Randomized Quick-Sort 521\u003c\/p\u003e \u003cp\u003e11.2.2 C++ Implementations and Optimizations 523\u003c\/p\u003e \u003cp\u003e11.3 Studying Sorting through an Algorithmic Lens 526\u003c\/p\u003e \u003cp\u003e11.3.1 A Lower Bound for Sorting 526\u003c\/p\u003e \u003cp\u003e11.3.2 Linear-Time Sorting: Bucket-Sort and Radix-Sort 528\u003c\/p\u003e \u003cp\u003e11.3.3 Comparing Sorting Algorithms 531\u003c\/p\u003e \u003cp\u003e11.4 Sets and Union\/Find Structures 533\u003c\/p\u003e \u003cp\u003e11.4.1 The Set ADT 533\u003c\/p\u003e \u003cp\u003e11.4.2 Mergable Sets and the Template Method Pattern 534\u003c\/p\u003e \u003cp\u003e11.4.3 Partitions with Union-Find Operations 538\u003c\/p\u003e \u003cp\u003e11.5 Selection 542\u003c\/p\u003e \u003cp\u003e11.5.1 Prune-and-Search 542\u003c\/p\u003e \u003cp\u003e11.5.2 Randomized Quick-Select 543\u003c\/p\u003e \u003cp\u003e11.5.3 Analyzing Randomized Quick-Select 544\u003c\/p\u003e \u003cp\u003e11.6 Exercises 545\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Strings and Dynamic Programming 553\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 String Operations 554\u003c\/p\u003e \u003cp\u003e12.1.1 The STL String Class 555\u003c\/p\u003e \u003cp\u003e12.2 Dynamic Programming 557\u003c\/p\u003e \u003cp\u003e12.2.1 Matrix Chain-Product 557\u003c\/p\u003e \u003cp\u003e12.2.2 DNA and Text Sequence Alignment 560\u003c\/p\u003e \u003cp\u003e12.3 Pattern Matching Algorithms 564\u003c\/p\u003e \u003cp\u003e12.3.1 Brute Force 564\u003c\/p\u003e \u003cp\u003e12.3.2 The Boyer-Moore Algorithm 566\u003c\/p\u003e \u003cp\u003e12.3.3 The Knuth-Morris-Pratt Algorithm 570\u003c\/p\u003e \u003cp\u003e12.4 Text Compression and the Greedy Method 575\u003c\/p\u003e \u003cp\u003e12.4.1 The Huffman-Coding Algorithm 576\u003c\/p\u003e \u003cp\u003e12.4.2 The Greedy Method 577\u003c\/p\u003e \u003cp\u003e12.5 Tries 578\u003c\/p\u003e \u003cp\u003e12.5.1 Standard Tries 578\u003c\/p\u003e \u003cp\u003e12.5.2 Compressed Tries 582\u003c\/p\u003e \u003cp\u003e12.5.3 Suffix Tries 584\u003c\/p\u003e \u003cp\u003e12.5.4 Search Engines 586\u003c\/p\u003e \u003cp\u003e12.6 Exercises 587\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Graph Algorithms 593\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e13.1 Graphs 594\u003c\/p\u003e \u003cp\u003e13.1.1 The Graph ADT 599\u003c\/p\u003e \u003cp\u003e13.2 Data Structures for Graphs 600\u003c\/p\u003e \u003cp\u003e13.2.1 The Edge List Structure 600\u003c\/p\u003e \u003cp\u003e13.2.2 The Adjacency List Structure 603\u003c\/p\u003e \u003cp\u003e13.2.3 The Adjacency Matrix Structure 605\u003c\/p\u003e \u003cp\u003e13.3 Graph Traversals 607\u003c\/p\u003e \u003cp\u003e13.3.1 Depth-First Search 607\u003c\/p\u003e \u003cp\u003e13.3.2 Implementing Depth-First Search 611\u003c\/p\u003e \u003cp\u003e13.3.3 A Generic DFS Implementation in C++ 613\u003c\/p\u003e \u003cp\u003e13.3.4 Polymorphic Objects and Decorator Values ⋆ 621\u003c\/p\u003e \u003cp\u003e13.3.5 Breadth-First Search 623\u003c\/p\u003e \u003cp\u003e13.4 Directed Graphs 626\u003c\/p\u003e \u003cp\u003e13.4.1 Traversing a Digraph 628\u003c\/p\u003e \u003cp\u003e13.4.2 Transitive Closure 630\u003c\/p\u003e \u003cp\u003e13.4.3 Directed Acyclic Graphs 633\u003c\/p\u003e \u003cp\u003e13.5 Shortest Paths 637\u003c\/p\u003e \u003cp\u003e13.5.1 Weighted Graphs 637\u003c\/p\u003e \u003cp\u003e13.5.2 Dijkstra’s Algorithm 639\u003c\/p\u003e \u003cp\u003e13.6 Minimum Spanning Trees 645\u003c\/p\u003e \u003cp\u003e13.6.1 Kruskal’s Algorithm 647\u003c\/p\u003e \u003cp\u003e13.6.2 The Prim-Jarn´ık Algorithm 651\u003c\/p\u003e \u003cp\u003e13.7 Exercises 654\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14 Memory Management and B-Trees 665\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e14.1 Memory Management 666\u003c\/p\u003e \u003cp\u003e14.1.1 Memory Allocation in C++ 669\u003c\/p\u003e \u003cp\u003e14.1.2 Garbage Collection 671\u003c\/p\u003e \u003cp\u003e14.2 External Memory and Caching 673\u003c\/p\u003e \u003cp\u003e14.2.1 The Memory Hierarchy 673\u003c\/p\u003e \u003cp\u003e14.2.2 Caching Strategies 674\u003c\/p\u003e \u003cp\u003e14.3 External Searching and B-Trees679\u003c\/p\u003e \u003cp\u003e14.3.1 (a,b) Trees 680\u003c\/p\u003e \u003cp\u003e14.3.2 B-Trees 682\u003c\/p\u003e \u003cp\u003e14.4 External-Memory Sorting 683\u003c\/p\u003e \u003cp\u003e14.4.1 Multi-Way Merging 684\u003c\/p\u003e \u003cp\u003e14.5 Exercises 685\u003c\/p\u003e \u003cp\u003eA Useful Mathematical Facts 689\u003c\/p\u003e \u003cp\u003eBibliography 697\u003c\/p\u003e \u003cp\u003eIndex 702\u003c\/p\u003e  \u003cp\u003e\u003cb\u003e1 A \u003c\/b\u003e\u003cb\u003eC++ \u003c\/b\u003e\u003cb\u003ePrimer 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 Basic C++ Programming Elements 2\u003c\/p\u003e \u003cp\u003e1.1.1 A Simple C++ Program 2\u003c\/p\u003e \u003cp\u003e1.1.2 Fundamental Types 4\u003c\/p\u003e \u003cp\u003e1.1.3 Pointers, Arrays, and Structures 7\u003c\/p\u003e \u003cp\u003e1.1.4 Named Constants, Scope, and Namespaces 13\u003c\/p\u003e \u003cp\u003e1.2 Expressions 16\u003c\/p\u003e \u003cp\u003e1.2.1 Changing Types through Casting 20\u003c\/p\u003e \u003cp\u003e1.3 Control Flow 23\u003c\/p\u003e \u003cp\u003e1.4 Functions 26\u003c\/p\u003e \u003cp\u003e1.4.1 Argument Passing 28\u003c\/p\u003e \u003cp\u003e1.4.2 Overloading and Inlining 30\u003c\/p\u003e \u003cp\u003e1.5 Classes 32\u003c\/p\u003e \u003cp\u003e1.5.1 Class Structure 33\u003c\/p\u003e \u003cp\u003e1.5.2 Constructors and Destructors 37\u003c\/p\u003e \u003cp\u003e1.5.3 Classes and Memory Allocation 40\u003c\/p\u003e \u003cp\u003e1.5.4 Class Friends and Class Members 43\u003c\/p\u003e \u003cp\u003e1.5.5 The Standard Template Library 45\u003c\/p\u003e \u003cp\u003e1.6 C++ Program and File Organization 47\u003c\/p\u003e \u003cp\u003e1.6.1 An Example Program 48\u003c\/p\u003e \u003cp\u003e1.7 Writing a C++ Program53\u003c\/p\u003e \u003cp\u003e1.7.1 Design 54\u003c\/p\u003e \u003cp\u003e1.7.2 Pseudo-Code 54\u003c\/p\u003e \u003cp\u003e1.7.3 Coding 55\u003c\/p\u003e \u003cp\u003e1.7.4 Testing and Debugging 57\u003c\/p\u003e \u003cp\u003e1.8 Exercises 60\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Object-Oriented Design 65\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Goals, Principles, and Patterns 66\u003c\/p\u003e \u003cp\u003e2.1.1 Object-Oriented Design Goals 66\u003c\/p\u003e \u003cp\u003e2.1.2 Object-Oriented Design Principles 67\u003c\/p\u003e \u003cp\u003e2.1.3 Design Patterns 70\u003c\/p\u003e \u003cp\u003e2.2 Inheritance and Polymorphism 71\u003c\/p\u003e \u003cp\u003e2.2.1 Inheritance in C++ 71\u003c\/p\u003e \u003cp\u003e2.2.2 Polymorphism 78\u003c\/p\u003e \u003cp\u003e2.2.3 Examples of Inheritance in C++ 79\u003c\/p\u003e \u003cp\u003e2.2.4 Multiple Inheritance and Class Casting 84\u003c\/p\u003e \u003cp\u003e2.2.5 Interfaces and Abstract Classes 87\u003c\/p\u003e \u003cp\u003e2.3 Templates 90\u003c\/p\u003e \u003cp\u003e2.3.1 Function Templates 90\u003c\/p\u003e \u003cp\u003e2.3.2 Class Templates 91\u003c\/p\u003e \u003cp\u003e2.4 Exceptions 93\u003c\/p\u003e \u003cp\u003e2.4.1 Exception Objects 93\u003c\/p\u003e \u003cp\u003e2.4.2 Throwing and Catching Exceptions 94\u003c\/p\u003e \u003cp\u003e2.4.3 Exception Specification 96\u003c\/p\u003e \u003cp\u003e2.5 Exercises 98\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Arrays, Linked Lists, and Recursion 103\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Using Arrays 104\u003c\/p\u003e \u003cp\u003e3.1.1 Storing Game Entries in an Array 104\u003c\/p\u003e \u003cp\u003e3.1.2 Sorting an Array 109\u003c\/p\u003e \u003cp\u003e3.1.3 Two-Dimensional Arrays and Positional Games 111\u003c\/p\u003e \u003cp\u003e3.2 Singly Linked Lists 117\u003c\/p\u003e \u003cp\u003e3.2.1 Implementing a Singly Linked List 117\u003c\/p\u003e \u003cp\u003e3.2.2 Insertion to the Front of a Singly Linked List 119\u003c\/p\u003e \u003cp\u003e3.2.3 Removal from the Front of a Singly Linked List 119\u003c\/p\u003e \u003cp\u003e3.2.4 Implementing a Generic Singly Linked List 121\u003c\/p\u003e \u003cp\u003e3.3 Doubly Linked Lists 123\u003c\/p\u003e \u003cp\u003e3.3.1 Insertion into a Doubly Linked List 123\u003c\/p\u003e \u003cp\u003e3.3.2 Removal from a Doubly Linked List 124\u003c\/p\u003e \u003cp\u003e3.3.3 A C++ Implementation 125\u003c\/p\u003e \u003cp\u003e3.4 Circularly Linked Lists and List Reversal 129\u003c\/p\u003e \u003cp\u003e3.4.1 Circularly Linked Lists 129\u003c\/p\u003e \u003cp\u003e3.4.2 Reversing a Linked List 133\u003c\/p\u003e \u003cp\u003e3.5 Recursion 134\u003c\/p\u003e \u003cp\u003e3.5.1 Linear Recursion 140\u003c\/p\u003e \u003cp\u003e3.5.2 Binary Recursion 144\u003c\/p\u003e \u003cp\u003e3.5.3 Multiple Recursion 147\u003c\/p\u003e \u003cp\u003e3.6 Exercises 149\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Analysis Tools 153\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 The Seven Functions Used in This Book 154\u003c\/p\u003e \u003cp\u003e4.1.1 The Constant Function 154\u003c\/p\u003e \u003cp\u003e4.1.2 The Logarithm Function 154\u003c\/p\u003e \u003cp\u003e4.1.3 The Linear Function 156\u003c\/p\u003e \u003cp\u003e4.1.4 The N-Log-N Function 156\u003c\/p\u003e \u003cp\u003e4.1.5 The Quadratic Function 156\u003c\/p\u003e \u003cp\u003e4.1.6 The Cubic Function and Other Polynomials 158\u003c\/p\u003e \u003cp\u003e4.1.7 The Exponential Function 159\u003c\/p\u003e \u003cp\u003e4.1.8 Comparing Growth Rates 161\u003c\/p\u003e \u003cp\u003e4.2 Analysis of Algorithms 162\u003c\/p\u003e \u003cp\u003e4.2.1 Experimental Studies 163\u003c\/p\u003e \u003cp\u003e4.2.2 Primitive Operations 164\u003c\/p\u003e \u003cp\u003e4.2.3 Asymptotic Notation 166\u003c\/p\u003e \u003cp\u003e4.2.4 Asymptotic Analysis 170\u003c\/p\u003e \u003cp\u003e4.2.5 Using the Big-Oh Notation 172\u003c\/p\u003e \u003cp\u003e4.2.6 A Recursive Algorithm for Computing Powers 176\u003c\/p\u003e \u003cp\u003e4.2.7 Some More Examples of Algorithm Analysis 177\u003c\/p\u003e \u003cp\u003e4.3 Simple Justification Techniques 181\u003c\/p\u003e \u003cp\u003e4.3.1 By Example 181\u003c\/p\u003e \u003cp\u003e4.3.2 The “Contra” Attack 181\u003c\/p\u003e \u003cp\u003e4.3.3 Induction and Loop Invariants 182\u003c\/p\u003e \u003cp\u003e4.4 Exercises 185\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Stacks, Queues, and Deques 193\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Stacks 194\u003c\/p\u003e \u003cp\u003e5.1.1 The Stack Abstract Data Type 195\u003c\/p\u003e \u003cp\u003e5.1.2 The STL Stack 196\u003c\/p\u003e \u003cp\u003e5.1.3 A C++ Stack Interface 196\u003c\/p\u003e \u003cp\u003e5.1.4 A Simple Array-Based Stack Implementation 198\u003c\/p\u003e \u003cp\u003e5.1.5 Implementing a Stack with a Generic Linked List 202\u003c\/p\u003e \u003cp\u003e5.1.6 Reversing a Vector Using a Stack 203\u003c\/p\u003e \u003cp\u003e5.1.7 Matching Parentheses and HTML Tags 204\u003c\/p\u003e \u003cp\u003e5.2 Queues 208\u003c\/p\u003e \u003cp\u003e5.2.1 The Queue Abstract Data Type 208\u003c\/p\u003e \u003cp\u003e5.2.2 The STL Queue 209\u003c\/p\u003e \u003cp\u003e5.2.3 A C++ Queue Interface 210\u003c\/p\u003e \u003cp\u003e5.2.4 A Simple Array-Based Implementation 211\u003c\/p\u003e \u003cp\u003e5.2.5 Implementing a Queue with a Circularly Linked List 213\u003c\/p\u003e \u003cp\u003e5.3 Double-Ended Queues 217\u003c\/p\u003e \u003cp\u003e5.3.1 The Deque Abstract Data Type 217\u003c\/p\u003e \u003cp\u003e5.3.2 The STL Deque 218\u003c\/p\u003e \u003cp\u003e5.3.3 Implementing a Deque with a Doubly Linked List 218\u003c\/p\u003e \u003cp\u003e5.3.4 Adapters and the Adapter Design Pattern 220\u003c\/p\u003e \u003cp\u003e5.4 Exercises 223\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 List and Iterator ADTs 227\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Vectors 228\u003c\/p\u003e \u003cp\u003e6.1.1 The Vector Abstract Data Type 228\u003c\/p\u003e \u003cp\u003e6.1.2 A Simple Array-Based Implementation 229\u003c\/p\u003e \u003cp\u003e6.1.3 An Extendable Array Implementation 231\u003c\/p\u003e \u003cp\u003e6.1.4 STL Vectors 236\u003c\/p\u003e \u003cp\u003e6.2 Lists 238\u003c\/p\u003e \u003cp\u003e6.2.1 Node-Based Operations and Iterators 238\u003c\/p\u003e \u003cp\u003e6.2.2 The List Abstract Data Type 240\u003c\/p\u003e \u003cp\u003e6.2.3 Doubly Linked List Implementation 242\u003c\/p\u003e \u003cp\u003e6.2.4 STL Lists 247\u003c\/p\u003e \u003cp\u003e6.2.5 STL Containers and Iterators 248\u003c\/p\u003e \u003cp\u003e6.3 Sequences255\u003c\/p\u003e \u003cp\u003e6.3.1 The Sequence Abstract Data Type 255\u003c\/p\u003e \u003cp\u003e6.3.2 Implementing a Sequence with a Doubly Linked List .255\u003c\/p\u003e \u003cp\u003e6.3.3 Implementing a Sequence with an Array 257\u003c\/p\u003e \u003cp\u003e6.4 Case Study: Bubble-Sort on a Sequence 259\u003c\/p\u003e \u003cp\u003e6.4.1 The Bubble-Sort Algorithm 259\u003c\/p\u003e \u003cp\u003e6.4.2 A Sequence-Based Analysis of Bubble-Sort 260\u003c\/p\u003e \u003cp\u003e6.5 Exercises 262\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Trees 267\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 General Trees 268\u003c\/p\u003e \u003cp\u003e7.1.1 Tree Definitions and Properties 269\u003c\/p\u003e \u003cp\u003e7.1.2 Tree Functions 272\u003c\/p\u003e \u003cp\u003e7.1.3 A C++ Tree Interface 273\u003c\/p\u003e \u003cp\u003e7.1.4 A Linked Structure for General Trees 274\u003c\/p\u003e \u003cp\u003e7.2 Tree Traversal Algorithms 275\u003c\/p\u003e \u003cp\u003e7.2.1 Depth and Height 275\u003c\/p\u003e \u003cp\u003e7.2.2 Preorder Traversal 278\u003c\/p\u003e \u003cp\u003e7.2.3 Postorder Traversal 281\u003c\/p\u003e \u003cp\u003e7.3 Binary Trees 284\u003c\/p\u003e \u003cp\u003e7.3.1 The Binary Tree ADT 285\u003c\/p\u003e \u003cp\u003e7.3.2 A C++ Binary Tree Interface 286\u003c\/p\u003e \u003cp\u003e7.3.3 Properties of Binary Trees 287\u003c\/p\u003e \u003cp\u003e7.3.4 A Linked Structure for Binary Trees 289\u003c\/p\u003e \u003cp\u003e7.3.5 A Vector-Based Structure for Binary Trees 295\u003c\/p\u003e \u003cp\u003e7.3.6 Traversals of a Binary Tree 297\u003c\/p\u003e \u003cp\u003e7.3.7 The Template Function Pattern 303\u003c\/p\u003e \u003cp\u003e7.3.8 Representing General Trees with Binary Trees 309\u003c\/p\u003e \u003cp\u003e7.4 Exercises 310\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Heaps and Priority Queues 321\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 The Priority Queue Abstract Data Type 322\u003c\/p\u003e \u003cp\u003e8.1.1 Keys, Priorities, and Total Order Relations 322\u003c\/p\u003e \u003cp\u003e8.1.2 Comparators 324\u003c\/p\u003e \u003cp\u003e8.1.3 The Priority Queue ADT 327\u003c\/p\u003e \u003cp\u003e8.1.4 A C++ Priority Queue Interface 328\u003c\/p\u003e \u003cp\u003e8.1.5 Sorting with a Priority Queue 329\u003c\/p\u003e \u003cp\u003e8.1.6 The STL priority queue Class 330\u003c\/p\u003e \u003cp\u003e8.2 Implementing a Priority Queue with a List 331\u003c\/p\u003e \u003cp\u003e8.2.1 A C++ Priority Queue Implementation using a List 333\u003c\/p\u003e \u003cp\u003e8.2.2 Selection-Sort and Insertion-Sort 335\u003c\/p\u003e \u003cp\u003e8.3 Heaps 337\u003c\/p\u003e \u003cp\u003e8.3.1 The Heap Data Structure 337\u003c\/p\u003e \u003cp\u003e8.3.2 Complete Binary Trees and Their Representation 340\u003c\/p\u003e \u003cp\u003e8.3.3 Implementing a Priority Queue with a Heap 344\u003c\/p\u003e \u003cp\u003e8.3.4 C++ Implementation 349\u003c\/p\u003e \u003cp\u003e8.3.5 Heap-Sort 351\u003c\/p\u003e \u003cp\u003e8.3.6 Bottom-Up Heap Construction ⋆353\u003c\/p\u003e \u003cp\u003e8.4 Adaptable Priority Queues 357\u003c\/p\u003e \u003cp\u003e8.4.1 A List-Based Implementation 358\u003c\/p\u003e \u003cp\u003e8.4.2 Location-Aware Entries 360\u003c\/p\u003e \u003cp\u003e8.5 Exercises 361\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Hash Tables, Maps, and Skip Lists 367\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 Maps 368\u003c\/p\u003e \u003cp\u003e9.1.1 The Map ADT 369\u003c\/p\u003e \u003cp\u003e9.1.2 A C++ Map Interface 371\u003c\/p\u003e \u003cp\u003e9.1.3 The STL map Class 372\u003c\/p\u003e \u003cp\u003e9.1.4 A Simple List-Based Map Implementation 374\u003c\/p\u003e \u003cp\u003e9.2 Hash Tables 375\u003c\/p\u003e \u003cp\u003e9.2.1 Bucket Arrays 375\u003c\/p\u003e \u003cp\u003e9.2.2 Hash Functions 376\u003c\/p\u003e \u003cp\u003e9.2.3 Hash Codes 376\u003c\/p\u003e \u003cp\u003e9.2.4 Compression Functions 380\u003c\/p\u003e \u003cp\u003e9.2.5 Collision-Handling Schemes 382\u003c\/p\u003e \u003cp\u003e9.2.6 Load Factors and Rehashing 386\u003c\/p\u003e \u003cp\u003e9.2.7 A C++ Hash Table Implementation 387\u003c\/p\u003e \u003cp\u003e9.3 Ordered Maps 394\u003c\/p\u003e \u003cp\u003e9.3.1 Ordered Search Tables and Binary Search 395\u003c\/p\u003e \u003cp\u003e9.3.2 Two Applications of Ordered Maps 399\u003c\/p\u003e \u003cp\u003e9.4 Skip Lists 402\u003c\/p\u003e \u003cp\u003e9.4.1 Search and Update Operations in a Skip List 404\u003c\/p\u003e \u003cp\u003e9.4.2 A Probabilistic Analysis of Skip Lists ⋆408\u003c\/p\u003e \u003cp\u003e9.5 Dictionaries 411\u003c\/p\u003e \u003cp\u003e9.5.1 The Dictionary ADT 411\u003c\/p\u003e \u003cp\u003e9.5.2 A C++ Dictionary Implementation 413\u003c\/p\u003e \u003cp\u003e9.5.3 Implementations with Location-Aware Entries 415\u003c\/p\u003e \u003cp\u003e9.6 Exercises 417\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 Search Trees 423\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Binary Search Trees 424\u003c\/p\u003e \u003cp\u003e10.1.1 Searching 426\u003c\/p\u003e \u003cp\u003e10.1.2 Update Operations 428\u003c\/p\u003e \u003cp\u003e10.1.3 C++ Implementation of a Binary Search Tree 432\u003c\/p\u003e \u003cp\u003e10.2 AVL Trees438\u003c\/p\u003e \u003cp\u003e10.2.1 Update Operations 440\u003c\/p\u003e \u003cp\u003e10.2.2 C++ Implementation of an AVL Tree 446\u003c\/p\u003e \u003cp\u003e10.3 Splay Trees 450\u003c\/p\u003e \u003cp\u003e10.3.1 Splaying 450\u003c\/p\u003e \u003cp\u003e10.3.2 When to Splay 454\u003c\/p\u003e \u003cp\u003e10.3.3 Amortized Analysis of Splaying ⋆456\u003c\/p\u003e \u003cp\u003e10.4 (2,4) Trees 461\u003c\/p\u003e \u003cp\u003e10.4.1 Multi-Way Search Trees 461\u003c\/p\u003e \u003cp\u003e10.4.2 Update Operations for (2,4) Trees 467\u003c\/p\u003e \u003cp\u003e10.5 Red-Black Trees473\u003c\/p\u003e \u003cp\u003e10.5.1 Update Operations 475\u003c\/p\u003e \u003cp\u003e10.5.2 C++ Implementation of a Red-Black Tree 488\u003c\/p\u003e \u003cp\u003e10.6 Exercises 492\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 Sorting, Sets, and Selection 499\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Merge-Sort500\u003c\/p\u003e \u003cp\u003e11.1.1 Divide-and-Conquer 500\u003c\/p\u003e \u003cp\u003e11.1.2 Merging Arrays and Lists 505\u003c\/p\u003e \u003cp\u003e11.1.3 The Running Time of Merge-Sort 508\u003c\/p\u003e \u003cp\u003e11.1.4 C++ Implementations of Merge-Sort 509\u003c\/p\u003e \u003cp\u003e11.1.5 Merge-Sort and Recurrence Equations ⋆511\u003c\/p\u003e \u003cp\u003e11.2 Quick-Sort 513\u003c\/p\u003e \u003cp\u003e11.2.1 Randomized Quick-Sort 521\u003c\/p\u003e \u003cp\u003e11.2.2 C++ Implementations and Optimizations 523\u003c\/p\u003e \u003cp\u003e11.3 Studying Sorting through an Algorithmic Lens 526\u003c\/p\u003e \u003cp\u003e11.3.1 A Lower Bound for Sorting 526\u003c\/p\u003e \u003cp\u003e11.3.2 Linear-Time Sorting: Bucket-Sort and Radix-Sort 528\u003c\/p\u003e \u003cp\u003e11.3.3 Comparing Sorting Algorithms 531\u003c\/p\u003e \u003cp\u003e11.4 Sets and Union\/Find Structures 533\u003c\/p\u003e \u003cp\u003e11.4.1 The Set ADT 533\u003c\/p\u003e \u003cp\u003e11.4.2 Mergable Sets and the Template Method Pattern 534\u003c\/p\u003e \u003cp\u003e11.4.3 Partitions with Union-Find Operations 538\u003c\/p\u003e \u003cp\u003e11.5 Selection 542\u003c\/p\u003e \u003cp\u003e11.5.1 Prune-and-Search 542\u003c\/p\u003e \u003cp\u003e11.5.2 Randomized Quick-Select 543\u003c\/p\u003e \u003cp\u003e11.5.3 Analyzing Randomized Quick-Select 544\u003c\/p\u003e \u003cp\u003e11.6 Exercises 545\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Strings and Dynamic Programming 553\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 String Operations 554\u003c\/p\u003e \u003cp\u003e12.1.1 The STL String Class 555\u003c\/p\u003e \u003cp\u003e12.2 Dynamic Programming 557\u003c\/p\u003e \u003cp\u003e12.2.1 Matrix Chain-Product 557\u003c\/p\u003e \u003cp\u003e12.2.2 DNA and Text Sequence Alignment 560\u003c\/p\u003e \u003cp\u003e12.3 Pattern Matching Algorithms 564\u003c\/p\u003e \u003cp\u003e12.3.1 Brute Force 564\u003c\/p\u003e \u003cp\u003e12.3.2 The Boyer-Moore Algorithm 566\u003c\/p\u003e \u003cp\u003e12.3.3 The Knuth-Morris-Pratt Algorithm 570\u003c\/p\u003e \u003cp\u003e12.4 Text Compression and the Greedy Method 575\u003c\/p\u003e \u003cp\u003e12.4.1 The Huffman-Coding Algorithm 576\u003c\/p\u003e \u003cp\u003e12.4.2 The Greedy Method 577\u003c\/p\u003e \u003cp\u003e12.5 Tries 578\u003c\/p\u003e \u003cp\u003e12.5.1 Standard Tries 578\u003c\/p\u003e \u003cp\u003e12.5.2 Compressed Tries 582\u003c\/p\u003e \u003cp\u003e12.5.3 Suffix Tries 584\u003c\/p\u003e \u003cp\u003e12.5.4 Search Engines 586\u003c\/p\u003e \u003cp\u003e12.6 Exercises 587\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Graph Algorithms 593\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e13.1 Graphs 594\u003c\/p\u003e \u003cp\u003e13.1.1 The Graph ADT 599\u003c\/p\u003e \u003cp\u003e13.2 Data Structures for Graphs 600\u003c\/p\u003e \u003cp\u003e13.2.1 The Edge List Structure 600\u003c\/p\u003e \u003cp\u003e13.2.2 The Adjacency List Structure 603\u003c\/p\u003e \u003cp\u003e13.2.3 The Adjacency Matrix Structure 605\u003c\/p\u003e \u003cp\u003e13.3 Graph Traversals 607\u003c\/p\u003e \u003cp\u003e13.3.1 Depth-First Search 607\u003c\/p\u003e \u003cp\u003e13.3.2 Implementing Depth-First Search 611\u003c\/p\u003e \u003cp\u003e13.3.3 A Generic DFS Implementation in C++ 613\u003c\/p\u003e \u003cp\u003e13.3.4 Polymorphic Objects and Decorator Values ⋆621\u003c\/p\u003e \u003cp\u003e13.3.5 Breadth-First Search 623\u003c\/p\u003e \u003cp\u003e13.4 Directed Graphs 626\u003c\/p\u003e \u003cp\u003e13.4.1 Traversing a Digraph 628\u003c\/p\u003e \u003cp\u003e13.4.2 Transitive Closure 630\u003c\/p\u003e \u003cp\u003e13.4.3 Directed Acyclic Graphs 633\u003c\/p\u003e \u003cp\u003e13.5 Shortest Paths 637\u003c\/p\u003e \u003cp\u003e13.5.1 Weighted Graphs 637\u003c\/p\u003e \u003cp\u003e13.5.2 Dijkstra’s Algorithm 639\u003c\/p\u003e \u003cp\u003e13.6 Minimum Spanning Trees 645\u003c\/p\u003e \u003cp\u003e13.6.1 Kruskal’s Algorithm 647\u003c\/p\u003e \u003cp\u003e13.6.2 The Prim-Jarn´ık Algorithm 651\u003c\/p\u003e \u003cp\u003e13.7 Exercises 654\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14 Memory Management and B-Trees 665\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e14.1 Memory Management 666\u003c\/p\u003e \u003cp\u003e14.1.1 Memory Allocation in C++ 669\u003c\/p\u003e \u003cp\u003e14.1.2 Garbage Collection 671\u003c\/p\u003e \u003cp\u003e14.2 External Memory and Caching 673\u003c\/p\u003e \u003cp\u003e14.2.1 The Memory Hierarchy 673\u003c\/p\u003e \u003cp\u003e14.2.2 Caching Strategies 674\u003c\/p\u003e \u003cp\u003e14.3 External Searching and B-Trees679\u003c\/p\u003e \u003cp\u003e14.3.1 (a,b) Trees 680\u003c\/p\u003e \u003cp\u003e14.3.2 B-Trees 682\u003c\/p\u003e \u003cp\u003e14.4 External-Memory Sorting 683\u003c\/p\u003e \u003cp\u003e14.4.1 Multi-Way Merging 684\u003c\/p\u003e \u003cp\u003e14.5 Exercises 685\u003c\/p\u003e \u003cp\u003eA Useful Mathematical Facts 689\u003c\/p\u003e \u003cp\u003eBibliography 697\u003c\/p\u003e \u003cp\u003eIndex 702\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48864626803031,"sku":"9780470383278","price":159.55,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780470383278.jpg?v=1722272792"},{"product_id":"uml-in-practice-9780470848319","title":"UML in Practice","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eUML is the de facto industry standard modeling language for specifying, visualizing, constructing, and documenting aspects of the design of software systems. UML in Practice offers practical, clear guidance on the real--life usage of UML, mentoring software developers through every aspect of the modeling process.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eForeword ix\u003c\/p\u003e \u003cp\u003eIntroduction xi\u003c\/p\u003e \u003cp\u003eAcknowledgements xv\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART 1 FUNCTIONAL VIEW 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Case study: automatic teller machine 3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 Step 1 – Identifying the actors of the ATM 5\u003c\/p\u003e \u003cp\u003e1.2 Step 2 – Identifying use cases 8\u003c\/p\u003e \u003cp\u003e1.3 Step 3 – Creating use case diagrams 10\u003c\/p\u003e \u003cp\u003e1.4 Step 4 – Textual description of use cases 14\u003c\/p\u003e \u003cp\u003e1.5 Step 5 – Graphical description of use cases 20\u003c\/p\u003e \u003cp\u003e1.6 Step 6 – Organising the use cases 26\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Complementary exercises 37\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Step 1 – Business modelling 53\u003c\/p\u003e \u003cp\u003e2.2 Step 2 – Defining system requirements 57\u003c\/p\u003e \u003cp\u003eAppendix A: Glossary \u0026amp; tips 65\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART 2 STATIC VIEW 71\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Case study: flight booking system 73\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 75\u003c\/p\u003e \u003cp\u003e3.2 Step 2 – Modelling sentences 6, 7 and 10 77\u003c\/p\u003e \u003cp\u003e3.3 Step 3 – Modelling sentences 8 and 9 82\u003c\/p\u003e \u003cp\u003e3.4 Step 4 – Modelling sentences 3, 4 and 5 86\u003c\/p\u003e \u003cp\u003e3.5 Step 5 – Adding attributes, constraints and qualifiers 89\u003c\/p\u003e \u003cp\u003e3.6 Step 6 – Using analysis patterns 94\u003c\/p\u003e \u003cp\u003e3.7 Step 7 – Structuring into packages 98\u003c\/p\u003e \u003cp\u003e3.8 Step 8 – Generalisation and re-use 105\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Complementary exercises 113\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAppendix B: Glossary \u0026amp; tips 149\u003c\/p\u003e \u003cp\u003eStep 1– Modelling sentences 1 and 2\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART 3 DYNAMIC VIEW 157\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Case study: coin-operated pay phone 159\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Step 1 – Identifying the actors and use cases 161\u003c\/p\u003e \u003cp\u003e5.2 Step 2 – Realising the system sequence diagram 164\u003c\/p\u003e \u003cp\u003e5.3 Step 3 – Representing the dynamic context 166\u003c\/p\u003e \u003cp\u003e5.4 Step 4 – In-depth description using a state diagram 168\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Complementary exercises 185\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eApendix C: Glossary \u0026amp; tips 207\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART 4 DESIGN 213\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Case study: training request 215\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Step 1 – Defining iterations 217\u003c\/p\u003e \u003cp\u003e7.2 Step 2 – Defining the system architecture 219\u003c\/p\u003e \u003cp\u003e7.3 Step 3 – Defining system operations (iteration 1) 224\u003c\/p\u003e \u003cp\u003e7.4 Step 4 – Operation contracts (iteration 1) 225\u003c\/p\u003e \u003cp\u003e7.5 Step 5 – Interaction diagrams (iteration 1) 228\u003c\/p\u003e \u003cp\u003e7.6 Step 6 – Design class diagrams (iteration 1) 237\u003c\/p\u003e \u003cp\u003e7.7 Step 7 – Defining the system operations (iteration 2) 245\u003c\/p\u003e \u003cp\u003e7.8 Step 8 – Operation contracts (iteration 2) 247\u003c\/p\u003e \u003cp\u003e7.9 Step 9 – Interaction diagrams (iteration 2) 250\u003c\/p\u003e \u003cp\u003e7.10 Step 10 – Design class diagrams (iteration 2) 252\u003c\/p\u003e \u003cp\u003e7.11 Step 11 – Back to architecture 253\u003c\/p\u003e \u003cp\u003e7.12 Step 12 – Transition to Java code 254\u003c\/p\u003e \u003cp\u003e7.13 Step 13 – Putting the application into action 262\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Complementary exercises 267\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAppendix D: Glossary \u0026amp; tips 283\u003c\/p\u003e \u003cp\u003eIndex 293\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48864640532823,"sku":"9780470848319","price":28.9,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780470848319.jpg?v=1722272851"},{"product_id":"an-introduction-to-functional-programming-through-lambda-calculus-9780486478838","title":"An Introduction to Functional Programming Through","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e","brand":"Dover Publications Inc.","offers":[{"title":"Default Title","offer_id":48864737001815,"sku":"9780486478838","price":25.07,"currency_code":"GBP","in_stock":true}]},{"product_id":"uml-2-for-dummies-9780764526145","title":"UML 2 for Dummies","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eUML 2 For Dummies covers UML 2. 0, the latest version of UML, expected out in March 2003. This book shows how to use UML to model systems. It provides practical advice and examples that enable readers to understand and demystify the standard UML models and extract key information from them.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eIntroduction 1\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart I: UML and System Development 7\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: What’s UML About, Alfie? 9\u003c\/p\u003e \u003cp\u003eChapter 2: Following Best Practices 19\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II: The Basics of Object Modeling 37\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 3: Objects and Classes 39\u003c\/p\u003e \u003cp\u003eChapter 4: Relating Objects That Work Together 61\u003c\/p\u003e \u003cp\u003eChapter 5: Including the Parts with the Whole 83\u003c\/p\u003e \u003cp\u003eChapter 6: Reusing Superclasses: Generalization and Inheritance 93\u003c\/p\u003e \u003cp\u003eChapter 7: Organizing UML Class Diagrams and Packages 111\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart III: The Basics of Use-Case Modeling 129\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 8: Introducing Use-Case Diagrams 131\u003c\/p\u003e \u003cp\u003eChapter 9: Defining the Inside of a Use Case 147\u003c\/p\u003e \u003cp\u003eChapter 10: Relating Use Cases to Each Other 161\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart IV: The Basics of Functional Modeling 175\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 11: Introducing Functional Modeling 177\u003c\/p\u003e \u003cp\u003eChapter 12: Capturing Scenarios with Sequence Diagrams 189\u003c\/p\u003e \u003cp\u003eChapter 13: Specifying Workflows with Activity Diagrams 213\u003c\/p\u003e \u003cp\u003eChapter 14: Capturing How Objects Collaborate 227\u003c\/p\u003e \u003cp\u003eChapter 15: Capturing the Patterns of Behavior 247\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart V: Dynamic Modeling 259\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 16: Defining the Object’s Lives with States 261\u003c\/p\u003e \u003cp\u003eChapter 17: Interrupting the States by Hosting Events 277\u003c\/p\u003e \u003cp\u003eChapter 18: Avoiding States of Confusion 293\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart VI: Modeling the System’s Architecture 313\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 19: Deploying the System’s Components 315\u003c\/p\u003e \u003cp\u003eChapter 20: Breaking the System into Packages\/Subsystems 339\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart VII: The Part of Tens 359\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 21: Ten Common Modeling Mistakes 361\u003c\/p\u003e \u003cp\u003eChapter 22: Ten Useful UML Web Sites 371\u003c\/p\u003e \u003cp\u003eChapter 23: Ten Useful UML Modeling Tools 377\u003c\/p\u003e \u003cp\u003eChapter 24: Ten Diagrams for Quick Development 383\u003c\/p\u003e \u003cp\u003eIndex 393\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48865858945367,"sku":"9780764526145","price":19.54,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780764526145.jpg?v=1722275917"},{"product_id":"c-software-design-9781098113162","title":"C Software Design","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eWith this book, experienced C++ developers will get a thorough, practical, and unparalleled overview of software design with this modern language.","brand":"O'Reilly Media","offers":[{"title":"Default Title","offer_id":48866331230551,"sku":"9781098113162","price":47.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781098113162.jpg?v=1722278167"},{"product_id":"beginning-java-programming-9781118739495","title":"Beginning Java Programming","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cb\u003eA comprehensive Java guide, with samples, exercises, case studies, and step-by-step instruction\u003c\/b\u003e  \u003cp\u003e\u003ci\u003eBeginning Java Programming: The Object Oriented Approach\u003c\/i\u003e is a straightforward resource for getting started with one of the world''s most enduringly popular programming languages. Based on classes taught by the authors, the book starts with the basics and gradually builds into more advanced concepts. The approach utilizes an integrated development environment that allows readers to immediately apply what they learn, and includes step-by-step instruction with plenty of sample programs. Each chapter contains exercises based on real-world business and educational scenarios, and the final chapter uses case studies to combine several concepts and put readers'' new skills to the test.\u003c\/p\u003e \u003cp\u003e\u003ci\u003eBeginning Java Programming: The Object Oriented Approach\u003c\/i\u003e provides both the information and the tools beginners need to develop Java skills, from the general concepts of object-oriented \u003cbr\u003e\u003cbr\u003e\u003cb\u003eTrade Review\u003c\/b\u003e\u003cbr\u003e\"Learning Java is a big subject, and this is a big book to match. I would recommend this book top anyone who is serioys in learning to program in Java.\" (BCS - The Chartered Institute for IT, February 2017)\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003eIntroduction xxii\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: A General Introduction To Programming 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Programming Process 2\u003c\/p\u003e \u003cp\u003eObject-Oriented Programming: A Sneak Preview 5\u003c\/p\u003e \u003cp\u003eProgramming Errors 6\u003c\/p\u003e \u003cp\u003eSyntax\/Compilation Errors 6\u003c\/p\u003e \u003cp\u003eRuntime Errors 6\u003c\/p\u003e \u003cp\u003eLogic\/Semantic Errors 7\u003c\/p\u003e \u003cp\u003ePrinciples of Software Testing 7\u003c\/p\u003e \u003cp\u003eSoftware Maintenance 8\u003c\/p\u003e \u003cp\u003eAdaptive Maintenance 8\u003c\/p\u003e \u003cp\u003ePerfective Maintenance 8\u003c\/p\u003e \u003cp\u003eCorrective Maintenance 8\u003c\/p\u003e \u003cp\u003ePreventive Maintenance 9\u003c\/p\u003e \u003cp\u003ePrinciples of Structured Programming 9\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Getting To Know Java 11\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA Short Java History 12\u003c\/p\u003e \u003cp\u003eFeatures of Java 13\u003c\/p\u003e \u003cp\u003eLooking Under the Hood 13\u003c\/p\u003e \u003cp\u003eBytecode 14\u003c\/p\u003e \u003cp\u003eJava Runtime Environment (JRE) 15\u003c\/p\u003e \u003cp\u003eJava Application Programming Interface (API) 16\u003c\/p\u003e \u003cp\u003eClass Loader 17\u003c\/p\u003e \u003cp\u003eBytecode Verifier 18\u003c\/p\u003e \u003cp\u003eJava Virtual Machine (JVM) 18\u003c\/p\u003e \u003cp\u003eJava Platforms 19\u003c\/p\u003e \u003cp\u003eJava Applications 19\u003c\/p\u003e \u003cp\u003eStandalone Applications 19\u003c\/p\u003e \u003cp\u003eJava Applets 20\u003c\/p\u003e \u003cp\u003eJava Servlets 20\u003c\/p\u003e \u003cp\u003eJava Beans 21\u003c\/p\u003e \u003cp\u003eJava Language Structure 21\u003c\/p\u003e \u003cp\u003eClasses 22\u003c\/p\u003e \u003cp\u003eIdentifiers 22\u003c\/p\u003e \u003cp\u003eJava Keywords 22\u003c\/p\u003e \u003cp\u003eVariables 23\u003c\/p\u003e \u003cp\u003eMethods 23\u003c\/p\u003e \u003cp\u003eComments 24\u003c\/p\u003e \u003cp\u003eNaming Conventions 26\u003c\/p\u003e \u003cp\u003eJava Data Types 27\u003c\/p\u003e \u003cp\u003ePrimitive Data Types 27\u003c\/p\u003e \u003cp\u003eLiterals 28\u003c\/p\u003e \u003cp\u003eOperators 29\u003c\/p\u003e \u003cp\u003eArithmetic Operators 29\u003c\/p\u003e \u003cp\u003eAssignment Operators 30\u003c\/p\u003e \u003cp\u003eBitwise Operators 31\u003c\/p\u003e \u003cp\u003eLogical Operators 32\u003c\/p\u003e \u003cp\u003eRelational Operators 34\u003c\/p\u003e \u003cp\u003eArrays 34\u003c\/p\u003e \u003cp\u003eType Casting 37\u003c\/p\u003e \u003cp\u003eSummary 40\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Setting Up Your Development Environment 41\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntegrated Development Environments 42\u003c\/p\u003e \u003cp\u003eCoding in Text Editors 42\u003c\/p\u003e \u003cp\u003eChoosing an IDE 46\u003c\/p\u003e \u003cp\u003eEclipse 47\u003c\/p\u003e \u003cp\u003eNetBeans 47\u003c\/p\u003e \u003cp\u003eIntelliJ IDEA 47\u003c\/p\u003e \u003cp\u003eContinuing with One IDE 47\u003c\/p\u003e \u003cp\u003eInstalling Eclipse on Your Computer 48\u003c\/p\u003e \u003cp\u003eDownloading and Installing Eclipse 48\u003c\/p\u003e \u003cp\u003eUsing Eclipse 50\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Moving Toward Object‐Oriented Programming 61\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic Concepts of Object‐Oriented Programming 62\u003c\/p\u003e \u003cp\u003eClasses and Objects in Java 63\u003c\/p\u003e \u003cp\u003eDefining Classes in Java 63\u003c\/p\u003e \u003cp\u003eCreating Objects 71\u003c\/p\u003e \u003cp\u003eStoring Data: Variables 76\u003c\/p\u003e \u003cp\u003eInstance Variables 76\u003c\/p\u003e \u003cp\u003eClass Variables 80\u003c\/p\u003e \u003cp\u003eFinal Variables 82\u003c\/p\u003e \u003cp\u003eVariable Scope 87\u003c\/p\u003e \u003cp\u003eDefining Behavior: Methods 91\u003c\/p\u003e \u003cp\u003eInstance Methods 91\u003c\/p\u003e \u003cp\u003eClass Methods 94\u003c\/p\u003e \u003cp\u003eConstructors 95\u003c\/p\u003e \u003cp\u003eThe Main Method 100\u003c\/p\u003e \u003cp\u003eMethod Argument Passing 109\u003c\/p\u003e \u003cp\u003eJava SE Built‐in Classes 115\u003c\/p\u003e \u003cp\u003eClasses in the java.lang Package 115\u003c\/p\u003e \u003cp\u003eClasses in the java.io and java.nio Packages 117\u003c\/p\u003e \u003cp\u003eClasses in the java.math Package 118\u003c\/p\u003e \u003cp\u003eClasses in the java.net, java.rmi, javax.rmi, and org.omg.CORBA Packages 118\u003c\/p\u003e \u003cp\u003eClasses in the java.awt and javax.swing Packages 118\u003c\/p\u003e \u003cp\u003eClasses in the java.util Package 118\u003c\/p\u003e \u003cp\u003eCollections 119\u003c\/p\u003e \u003cp\u003eOther Utility Classes 126\u003c\/p\u003e \u003cp\u003eOther Classes and Custom Libraries 127\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Controlling the Flow of Your Program 129\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eComparisons Using Operators and Methods 130\u003c\/p\u003e \u003cp\u003eComparing Primitive Data Types with Comparison Operators 130\u003c\/p\u003e \u003cp\u003eComparing Composite Data Types with Comparison Methods 132\u003c\/p\u003e \u003cp\u003eUnderstanding Language Control 135\u003c\/p\u003e \u003cp\u003eCreating if-then Statements 135\u003c\/p\u003e \u003cp\u003eNesting if-then Statements 137\u003c\/p\u003e \u003cp\u003eCreating for Loops 138\u003c\/p\u003e \u003cp\u003eWhat is an Enhanced for Loop? 143\u003c\/p\u003e \u003cp\u003eNesting for Loops 146\u003c\/p\u003e \u003cp\u003eCreating while Loops 148\u003c\/p\u003e \u003cp\u003eWhat is a do while Loop? 152\u003c\/p\u003e \u003cp\u003eComparing for and while Loops 156\u003c\/p\u003e \u003cp\u003eCreating Switches 156\u003c\/p\u003e \u003cp\u003eComparing Switches and if-then Statements 161\u003c\/p\u003e \u003cp\u003eReviewing Keywords for Control 162\u003c\/p\u003e \u003cp\u003eControlling with the return Keyword 162\u003c\/p\u003e \u003cp\u003eControlling with the break Keyword 163\u003c\/p\u003e \u003cp\u003eControlling with the continue Keyword 164\u003c\/p\u003e \u003cp\u003eSpecifying a Label for break or continue Control 164\u003c\/p\u003e \u003cp\u003eReviewing Control Structures 168\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Handling Exceptions and Debugging 171\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRecognizing Error Types 172\u003c\/p\u003e \u003cp\u003eIdentifying Syntax Errors 172\u003c\/p\u003e \u003cp\u003eIdentifying Runtime Errors 175\u003c\/p\u003e \u003cp\u003eIdentifying Logical Errors 176\u003c\/p\u003e \u003cp\u003eExceptions 180\u003c\/p\u003e \u003cp\u003eCommon Exceptions 181\u003c\/p\u003e \u003cp\u003eCatching Exceptions 187\u003c\/p\u003e \u003cp\u003eDebugging Your Applications 195\u003c\/p\u003e \u003cp\u003eUsing a Debugger Tool 195\u003c\/p\u003e \u003cp\u003eUsing a Logging API 200\u003c\/p\u003e \u003cp\u003eTesting Your Applications 210\u003c\/p\u003e \u003cp\u003eSummary 219\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: Delving Further Into Object‐Oriented Concepts 221\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAnnotations 222\u003c\/p\u003e \u003cp\u003eOverloading Methods 222\u003c\/p\u003e \u003cp\u003eThe this KeyWord 224\u003c\/p\u003e \u003cp\u003eInformation Hiding 229\u003c\/p\u003e \u003cp\u003eAccess Modifiers 230\u003c\/p\u003e \u003cp\u003eGetters 231\u003c\/p\u003e \u003cp\u003eSetters 232\u003c\/p\u003e \u003cp\u003eClass Inheritance 240\u003c\/p\u003e \u003cp\u003eThe Keyword super 241\u003c\/p\u003e \u003cp\u003eMethod Overriding 243\u003c\/p\u003e \u003cp\u003ePolymorphism 243\u003c\/p\u003e \u003cp\u003eStatic Binding 244\u003c\/p\u003e \u003cp\u003eDynamic Binding 244\u003c\/p\u003e \u003cp\u003eThe Superclass Object 245\u003c\/p\u003e \u003cp\u003eAbstract Classes and Methods 246\u003c\/p\u003e \u003cp\u003ePackages 251\u003c\/p\u003e \u003cp\u003eInterfaces 252\u003c\/p\u003e \u003cp\u003eGarbage Collection 259\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8: Handling Input and Output 261\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGeneral Input and Output 262\u003c\/p\u003e \u003cp\u003eInput and Output in Java 266\u003c\/p\u003e \u003cp\u003eStreams 268\u003c\/p\u003e \u003cp\u003eByte Streams 269\u003c\/p\u003e \u003cp\u003eCharacter Streams 275\u003c\/p\u003e \u003cp\u003eBuffered Streams 276\u003c\/p\u003e \u003cp\u003eData and Object Streams 278\u003c\/p\u003e \u003cp\u003eOther Streams 281\u003c\/p\u003e \u003cp\u003eScanners 281\u003c\/p\u003e \u003cp\u003eInput and Output from the Command-Line 283\u003c\/p\u003e \u003cp\u003eInput and Output from Files 290\u003c\/p\u003e \u003cp\u003eJava NIO2 File Input and Output 291\u003c\/p\u003e \u003cp\u003eThe Path Interface 291\u003c\/p\u003e \u003cp\u003eThe Files Class 293\u003c\/p\u003e \u003cp\u003eChecking Existence 293\u003c\/p\u003e \u003cp\u003eLegacy File Input and Output 304\u003c\/p\u003e \u003cp\u003eA Word on FileUtils 305\u003c\/p\u003e \u003cp\u003eConclusion 305\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9: Working With Databases in Java 307\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCovering the Basics of Relational Databases 308\u003c\/p\u003e \u003cp\u003eAccessing Relational Databases from Java 315\u003c\/p\u003e \u003cp\u003eJava Database Connectivity (JDBC) 315\u003c\/p\u003e \u003cp\u003eSQLJ 321\u003c\/p\u003e \u003cp\u003eEnsuring Object Persistence 324\u003c\/p\u003e \u003cp\u003eHibernate 325\u003c\/p\u003e \u003cp\u003eObject-Oriented Database Access from Java 341\u003c\/p\u003e \u003cp\u003eComparing Java Database Access Technologies 343\u003c\/p\u003e \u003cp\u003eWhat’s Ahead 344\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10: Accessing Web Sources 347\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA Brief Introduction to Networking 348\u003c\/p\u003e \u003cp\u003eWeb Services 360\u003c\/p\u003e \u003cp\u003eRPC and RMI 360\u003c\/p\u003e \u003cp\u003eSOAP 364\u003c\/p\u003e \u003cp\u003eREST 366\u003c\/p\u003e \u003cp\u003eAccessing Web Services and Sources with Java 368\u003c\/p\u003e \u003cp\u003eAccessing SOAP Services 368\u003c\/p\u003e \u003cp\u003eInstalling JAX‐WS 368\u003c\/p\u003e \u003cp\u003eAccessing SOAP Services with JAX‐WS Without WSDL 369\u003c\/p\u003e \u003cp\u003eAccessing SOAP Services with JAX‐WS with WSDL 395\u003c\/p\u003e \u003cp\u003eAccessing REST Services 406\u003c\/p\u003e \u003cp\u003eAccessing REST Services Without Authentication 408\u003c\/p\u003e \u003cp\u003eAccessing REST Services with Authentication 421\u003c\/p\u003e \u003cp\u003eScreen Scraping 449\u003c\/p\u003e \u003cp\u003eScreen Scraping Without Cookies 451\u003c\/p\u003e \u003cp\u003eScreen Scraping with Cookies 453\u003c\/p\u003e \u003cp\u003eCreating Your Own Web Services with Java 457\u003c\/p\u003e \u003cp\u003eSetting Up an HTTP Server 457\u003c\/p\u003e \u003cp\u003eProviding REST Services 461\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11: Designing Graphical Interfaces 463\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCovering the Basics of GUIs in Java 464\u003c\/p\u003e \u003cp\u003eHighlighting the Built‐In GUI Libraries 464\u003c\/p\u003e \u003cp\u003eAbstract Window Toolkit (AWT) 464\u003c\/p\u003e \u003cp\u003eSwing 464\u003c\/p\u003e \u003cp\u003eStandard Widget Toolkit (SWT) 465\u003c\/p\u003e \u003cp\u003eJavaFX 465\u003c\/p\u003e \u003cp\u003eOther Toolkits and Libraries 466\u003c\/p\u003e \u003cp\u003eChoosing a GUI Library 466\u003c\/p\u003e \u003cp\u003eBuilding with Containers and Components 467\u003c\/p\u003e \u003cp\u003eLooking at the Full Picture 472\u003c\/p\u003e \u003cp\u003eComparing Layout Managers 473\u003c\/p\u003e \u003cp\u003eFlowLayout 474\u003c\/p\u003e \u003cp\u003eBorderLayout 476\u003c\/p\u003e \u003cp\u003eGridLayout 478\u003c\/p\u003e \u003cp\u003eGridBagLayout 482\u003c\/p\u003e \u003cp\u003eCardLayout 486\u003c\/p\u003e \u003cp\u003eBoxLayout 489\u003c\/p\u003e \u003cp\u003eGroupLayout and SpringLayout 493\u003c\/p\u003e \u003cp\u003eAbsolute Positioning (No Layout Manager) 494\u003c\/p\u003e \u003cp\u003eUnderstanding Events 496\u003c\/p\u003e \u003cp\u003eIntroduction to Events 496\u003c\/p\u003e \u003cp\u003eEvent Listeners 497\u003c\/p\u003e \u003cp\u003eOn Threading and Swing 514\u003c\/p\u003e \u003cp\u003eClosing Topics 524\u003c\/p\u003e \u003cp\u003eBest Practices: Keeping Looks and Logic Separated 524\u003c\/p\u003e \u003cp\u003eLet’s Draw: Defining Custom Draw Behavior 525\u003c\/p\u003e \u003cp\u003eVisual GUI Designers: Making Life Easy? 540\u003c\/p\u003e \u003cp\u003eJavaFX: The Road Ahead? 545\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12: Using Object‐Oriented Patterns 557\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction to Patterns 558\u003c\/p\u003e \u003cp\u003eObject‐Oriented Patterns 558\u003c\/p\u003e \u003cp\u003eCreational Patterns 559\u003c\/p\u003e \u003cp\u003eSingleton Pattern and Static Utility Class 559\u003c\/p\u003e \u003cp\u003eService Provider Pattern and Null Object Pattern 565\u003c\/p\u003e \u003cp\u003e(Abstract) Factory Pattern 566\u003c\/p\u003e \u003cp\u003eStructural Patterns 568\u003c\/p\u003e \u003cp\u003eAdapter Pattern 568\u003c\/p\u003e \u003cp\u003eBridge Pattern 570\u003c\/p\u003e \u003cp\u003eDecorator Pattern 571\u003c\/p\u003e \u003cp\u003eFacade Pattern 574\u003c\/p\u003e \u003cp\u003eComposite Pattern 575\u003c\/p\u003e \u003cp\u003eType Pattern and Role Pattern 583\u003c\/p\u003e \u003cp\u003eBehavioral Patterns 591\u003c\/p\u003e \u003cp\u003eChain‐of‐Responsibility Pattern 591\u003c\/p\u003e \u003cp\u003eObserver Pattern and Model‐View‐Controller Pattern 592\u003c\/p\u003e \u003cp\u003eIterator Pattern 605\u003c\/p\u003e \u003cp\u003eVisitor Pattern 607\u003c\/p\u003e \u003cp\u003eTemplate Method Pattern 610\u003c\/p\u003e \u003cp\u003eStrategy Pattern 612\u003c\/p\u003e \u003cp\u003eHelpful Libraries 614\u003c\/p\u003e \u003cp\u003eApache Commons 614\u003c\/p\u003e \u003cp\u003eGoogle Guava 615\u003c\/p\u003e \u003cp\u003eTrove 615\u003c\/p\u003e \u003cp\u003eColt 615\u003c\/p\u003e \u003cp\u003eLombok 616\u003c\/p\u003e \u003cp\u003eOpenCSV 616\u003c\/p\u003e \u003cp\u003eHTML and JSON Libraries 616\u003c\/p\u003e \u003cp\u003eHibernate and Other JPA‐Compliant Libraries 617\u003c\/p\u003e \u003cp\u003eJoda‐Time 617\u003c\/p\u003e \u003cp\u003eCharting Libraries 617\u003c\/p\u003e \u003cp\u003e3D Graphics Libraries 617\u003c\/p\u003e \u003cp\u003eFinancial Libraries 618\u003c\/p\u003e \u003cp\u003eIndex 619\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48866376974679,"sku":"9781118739495","price":30.6,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781118739495.jpg?v=1722278359"},{"product_id":"data-structures-and-algorithms-in-java-international-student-version-9781118808573","title":"Data Structures and Algorithms in Java","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eThe design and analysis of efficient data structures has long been recognized as a key component of the Computer Science curriculum. Goodrich and Tomassia's approach to this classic topic is based on the object-oriented paradigm as the framework of choice for the design of data structures.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e1 Java Primer \u003cbr\u003e2 Object-Oriented Design \u003cbr\u003e3 Fundamental Data Structures \u003cbr\u003e4 Algorithm Analysis \u003cbr\u003e5 Recursion \u003cbr\u003e6 Stacks, Queues, and Deques \u003cbr\u003e7 List and Iterator ADTs \u003cbr\u003e8 Trees \u003cbr\u003e9 Priority Queues \u003cbr\u003e10 Maps, Hash Tables, and Skip Lists \u003cbr\u003e11 Search Trees \u003cbr\u003e12 Text Processing\u003cbr\u003e13 Sorting and Selection \u003cbr\u003e14 Graph Algorithms \u003cbr\u003e15 Memory Management and B-Trees","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48866378350935,"sku":"9781118808573","price":47.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781118808573.jpg?v=1722278369"},{"product_id":"job-ready-python-9781119817383","title":"Job Ready Python","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eGet ready to take on Pythonwithapracticaland job-focused guide Job Ready Pythonoffers readers a straightforward and elegant approach to learning Python that emphasizes hands-on and employable skillsyou can apply to real-world environments immediately. Based on therenownedmthreeGlobal Academy and Software Guild training program, this book will get you up to speed in the basics of Python, loops and data structures, object-oriented programming, and data processing.You'll alsoget: Thorough discussions ofExtract, Transform, and Load (ETL) scripting in PythonExplorations of databases, including MySQL, and MongoDBall commonly used database platforms in the fieldSimple, step-by-step approaches to dealing with dates and times, CSV files, and JSON files Ideal forPython newbies looking to make a transition to an exciting new career,Job Ready Pythonalso belongs on the bookshelves of Python developershoping to brush up on the fundamentals with an authoritative and practical new handbook.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eAbout the Authors v\u003c\/p\u003e \u003cp\u003eAbout the Technical Writer v\u003c\/p\u003e \u003cp\u003eAbout the Technical Editor v\u003c\/p\u003e \u003cp\u003eAcknowledgments vi\u003c\/p\u003e \u003cp\u003eIntroduction xvii\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart I: Getting Started with Python 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 1: Setting Up a Python Programming Environment 3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ePython Overview 4\u003c\/p\u003e \u003cp\u003eUsing Replit Online 4\u003c\/p\u003e \u003cp\u003eGetting Started with Jupyter Notebook 14\u003c\/p\u003e \u003cp\u003eA Quick Look at Visual Studio Code 21\u003c\/p\u003e \u003cp\u003eUsing Python from the Command Line 24\u003c\/p\u003e \u003cp\u003eSummary 26\u003c\/p\u003e \u003cp\u003eExercises 26\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 2: Understanding Programming Basics 29\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Future of Computer Programming 30\u003c\/p\u003e \u003cp\u003eProgramming Languages 32\u003c\/p\u003e \u003cp\u003eData Types and Variables 37\u003c\/p\u003e \u003cp\u003eVariables 40\u003c\/p\u003e \u003cp\u003eConstants 44\u003c\/p\u003e \u003cp\u003eSummary 46\u003c\/p\u003e \u003cp\u003eExercises 46\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 3: Exploring Basic Python Syntax 49\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing with Single- Line Commands 51\u003c\/p\u003e \u003cp\u003eUsing Semicolons 52\u003c\/p\u003e \u003cp\u003eContinuing with Backslash 54\u003c\/p\u003e \u003cp\u003eWorking with Case Structure 55\u003c\/p\u003e \u003cp\u003eAdding Comments 56\u003c\/p\u003e \u003cp\u003eUsing the Input Function 57\u003c\/p\u003e \u003cp\u003eStoring Input 59\u003c\/p\u003e \u003cp\u003eUnderstanding Variable Types 61\u003c\/p\u003e \u003cp\u003eDisplaying Variable Values 62\u003c\/p\u003e \u003cp\u003eNaming Variables 64\u003c\/p\u003e \u003cp\u003eSummary 65\u003c\/p\u003e \u003cp\u003eExercises 65\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 4: Working with Basic Python Data Types 69\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eReview of Data Types 70\u003c\/p\u003e \u003cp\u003eNumber Data Types 70\u003c\/p\u003e \u003cp\u003eIdentifying Data Types 72\u003c\/p\u003e \u003cp\u003eMathematical Operations 74\u003c\/p\u003e \u003cp\u003ePemdas 77\u003c\/p\u003e \u003cp\u003eCommon Math Functions 81\u003c\/p\u003e \u003cp\u003eMath Library Functions 83\u003c\/p\u003e \u003cp\u003eUsing Numbers with User Input 86\u003c\/p\u003e \u003cp\u003eBoolean Types and Boolean Operations 89\u003c\/p\u003e \u003cp\u003eLogic Operations 92\u003c\/p\u003e \u003cp\u003eComparative Operators 95\u003c\/p\u003e \u003cp\u003eSummary 96\u003c\/p\u003e \u003cp\u003eExercises 97\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 5: Using Python Control Statements 101\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eControl Structures Review 101\u003c\/p\u003e \u003cp\u003eUnderstanding Sequence Control Structure 102\u003c\/p\u003e \u003cp\u003eUnderstanding Selection Statements 103\u003c\/p\u003e \u003cp\u003eUnderstanding Conditional Statements 106\u003c\/p\u003e \u003cp\u003eIf- Else Statements 108\u003c\/p\u003e \u003cp\u003eWorking with Nested Conditions 109\u003c\/p\u003e \u003cp\u003eEmbedding Conditions 112\u003c\/p\u003e \u003cp\u003eSummary 114\u003c\/p\u003e \u003cp\u003eExercises 114\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 6: Pulling It All Together: Income Tax Calculator 117\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGetting Started 118\u003c\/p\u003e \u003cp\u003eStep 1: Gather Requirements 118\u003c\/p\u003e \u003cp\u003eStep 2: Design the Program 120\u003c\/p\u003e \u003cp\u003eStep 3: Create the Inputs 120\u003c\/p\u003e \u003cp\u003eStep 4: Calculate the Taxable Income 122\u003c\/p\u003e \u003cp\u003eStep 5: Calculate the Tax Rate 124\u003c\/p\u003e \u003cp\u003eStep 6: Update the Application 133\u003c\/p\u003e \u003cp\u003eStep 7: Address the UI 136\u003c\/p\u003e \u003cp\u003eOn Your Own 139\u003c\/p\u003e \u003cp\u003eSummary 139\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II: Loops and Data Structures 141\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 7: Controlling Program Flow with Loops 143\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIterations Overview 144\u003c\/p\u003e \u003cp\u003eThe Anatomy of a Loop 144\u003c\/p\u003e \u003cp\u003eThe for Loop 145\u003c\/p\u003e \u003cp\u003eThe while Loop 146\u003c\/p\u003e \u003cp\u003efor vs. while Loops 149\u003c\/p\u003e \u003cp\u003eStrings and String Operations 151\u003c\/p\u003e \u003cp\u003eIterating through Strings 164\u003c\/p\u003e \u003cp\u003eSummary 167\u003c\/p\u003e \u003cp\u003eExercises 167\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 8: Understanding Basic Data Structures: Lists 173\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eData Structure Overview—Part 1 174\u003c\/p\u003e \u003cp\u003eCreating Lists 175\u003c\/p\u003e \u003cp\u003eDetermining List Length 179\u003c\/p\u003e \u003cp\u003eWorking with List Indexes 179\u003c\/p\u003e \u003cp\u003eNegative Indexing in Lists 182\u003c\/p\u003e \u003cp\u003eSlicing Lists 184\u003c\/p\u003e \u003cp\u003eAdding Items to a List 189\u003c\/p\u003e \u003cp\u003eInserting List Items 190\u003c\/p\u003e \u003cp\u003eRemoving List Items 192\u003c\/p\u003e \u003cp\u003eConcatenating Lists 196\u003c\/p\u003e \u003cp\u003eList Comprehension 197\u003c\/p\u003e \u003cp\u003eSorting Lists 199\u003c\/p\u003e \u003cp\u003eCopying Lists 200\u003c\/p\u003e \u003cp\u003eSummary 202\u003c\/p\u003e \u003cp\u003eExercises 202\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 9: Understanding Basic Data Structures: Tuples 205\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTuples and Tuple Operations 206\u003c\/p\u003e \u003cp\u003eTuple Index Values 209\u003c\/p\u003e \u003cp\u003eNegative Indexing in Tuples 210\u003c\/p\u003e \u003cp\u003eSlicing Tuples 212\u003c\/p\u003e \u003cp\u003eImmutability 213\u003c\/p\u003e \u003cp\u003eConcatenating Tuples 216\u003c\/p\u003e \u003cp\u003eSearching Tuples 217\u003c\/p\u003e \u003cp\u003eSummary 218\u003c\/p\u003e \u003cp\u003eExercises 219\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 10: Diving Deeper into Data Structures: Dictionaries 223\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eData Structure Overview— Part 2 224\u003c\/p\u003e \u003cp\u003eGetting Started with Dictionaries 224\u003c\/p\u003e \u003cp\u003eGenerating a Dictionary 227\u003c\/p\u003e \u003cp\u003eRetrieving Items from a Dictionary 230\u003c\/p\u003e \u003cp\u003eUsing the keys() Method 233\u003c\/p\u003e \u003cp\u003eUsing the items() Method 234\u003c\/p\u003e \u003cp\u003eReviewing the keys(), values(), and items() Methods 236\u003c\/p\u003e \u003cp\u003eUsing the get() Method 239\u003c\/p\u003e \u003cp\u003eUsing the pop() Method 241\u003c\/p\u003e \u003cp\u003eWorking with the in Operator 245\u003c\/p\u003e \u003cp\u003eUpdating a Dictionary 246\u003c\/p\u003e \u003cp\u003eDuplicating a Dictionary 249\u003c\/p\u003e \u003cp\u003eClearing a Dictionary 254\u003c\/p\u003e \u003cp\u003eSummary 255\u003c\/p\u003e \u003cp\u003eExercises 255\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 11: Diving Deeper into Data Structures: Sets 259\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSets 260\u003c\/p\u003e \u003cp\u003eRetrieving Items from a Set 261\u003c\/p\u003e \u003cp\u003eAdding Items to a Set 262\u003c\/p\u003e \u003cp\u003eCreating an Empty Set 262\u003c\/p\u003e \u003cp\u003eUnderstanding Set Uniqueness 263\u003c\/p\u003e \u003cp\u003eSearching Items in a Set 265\u003c\/p\u003e \u003cp\u003eCalculating the Length of a Set 267\u003c\/p\u003e \u003cp\u003eDeleting Items from a Set 268\u003c\/p\u003e \u003cp\u003eClearing a Set 270\u003c\/p\u003e \u003cp\u003ePopping Items in a Set 272\u003c\/p\u003e \u003cp\u003eDeleting a Set 273\u003c\/p\u003e \u003cp\u003eDetermining the Difference Between Sets 274\u003c\/p\u003e \u003cp\u003eIntersecting Sets 277\u003c\/p\u003e \u003cp\u003eCombining Sets 278\u003c\/p\u003e \u003cp\u003eSummary 279\u003c\/p\u003e \u003cp\u003eExercises 279\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 12: Pulling It All Together: Prompting for an Address 283\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStep 1: Getting Started 284\u003c\/p\u003e \u003cp\u003eStep 2: Accept User Input 285\u003c\/p\u003e \u003cp\u003eStep 3: Display the Input Value 286\u003c\/p\u003e \u003cp\u003eStep 4: Modify the Output 287\u003c\/p\u003e \u003cp\u003eStep 5: Split a Text Value 288\u003c\/p\u003e \u003cp\u003eStep 6: Display Only the House Number 290\u003c\/p\u003e \u003cp\u003eStep 7: Display the Street Name 291\u003c\/p\u003e \u003cp\u003eStep 8: Add the Period 292\u003c\/p\u003e \u003cp\u003eSummary 293\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 13: Organizing with Functions 295\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFunctions Overview 295\u003c\/p\u003e \u003cp\u003eDefining Functions in Python 296\u003c\/p\u003e \u003cp\u003eFunction Syntax 300\u003c\/p\u003e \u003cp\u003eDefault Input Values 301\u003c\/p\u003e \u003cp\u003eParameter Syntax 303\u003c\/p\u003e \u003cp\u003eArbitrary Arguments 304\u003c\/p\u003e \u003cp\u003eKeyword Arguments 306\u003c\/p\u003e \u003cp\u003eArbitrary Keyword Arguments 306\u003c\/p\u003e \u003cp\u003eSummary 308\u003c\/p\u003e \u003cp\u003eExercises 309\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart III: Object- Oriented Programming in Python 311\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 14: Incorporating Object- Oriented Programming 313\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eObject- Oriented Programming Overview 314\u003c\/p\u003e \u003cp\u003eDefining Classes 314\u003c\/p\u003e \u003cp\u003eCreating Objects 316\u003c\/p\u003e \u003cp\u003eWorking with Methods 319\u003c\/p\u003e \u003cp\u003eClass Attributes 324\u003c\/p\u003e \u003cp\u003eSummary 330\u003c\/p\u003e \u003cp\u003eExercises 330\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 15: Including\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eInheritance 333\u003c\/p\u003e \u003cp\u003eUnderstanding Inheritance 334\u003c\/p\u003e \u003cp\u003eCreating a Parent Class 335\u003c\/p\u003e \u003cp\u003eCreating a Child Class 335\u003c\/p\u003e \u003cp\u003eInheriting at Multiple Levels 338\u003c\/p\u003e \u003cp\u003eOverriding Methods 340\u003c\/p\u003e \u003cp\u003eSummary 343\u003c\/p\u003e \u003cp\u003eExercises 344\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 16: Pulling It All Together: Building a Burger Shop 349\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRequirements for Our Application 350\u003c\/p\u003e \u003cp\u003ePlan the Code 350\u003c\/p\u003e \u003cp\u003eCreate the Classes 351\u003c\/p\u003e \u003cp\u003eCreate the Food Item Class 352\u003c\/p\u003e \u003cp\u003eCreate the Main File 357\u003c\/p\u003e \u003cp\u003eDisplay the Output 364\u003c\/p\u003e \u003cp\u003eTie the Code Files Together 364\u003c\/p\u003e \u003cp\u003eSummary 368\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart IV: Data Processing with Python 369\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 17: Working with Dates and Times 371\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGetting Started with Dates and Times 372\u003c\/p\u003e \u003cp\u003eGetting the Current Date and Time 376\u003c\/p\u003e \u003cp\u003eSplitting a Date String 377\u003c\/p\u003e \u003cp\u003eUsing datetime Attributes 379\u003c\/p\u003e \u003cp\u003eCreating Custom datetime Objects 380\u003c\/p\u003e \u003cp\u003eCompare datetime Values 381\u003c\/p\u003e \u003cp\u003eWorking with UTC Format 383\u003c\/p\u003e \u003cp\u003eApplying Timestamps 384\u003c\/p\u003e \u003cp\u003eArithmetic and Dates 387\u003c\/p\u003e \u003cp\u003eCalculating the Difference in Days 388\u003c\/p\u003e \u003cp\u003eUsing Date without Time 390\u003c\/p\u003e \u003cp\u003eUsing Time without Date 392\u003c\/p\u003e \u003cp\u003eSummary 394\u003c\/p\u003e \u003cp\u003eExercises 394\u003c\/p\u003e \u003cp\u003eCalculator 1: Time Duration 396\u003c\/p\u003e \u003cp\u003eCalculator 2: Add or Subtract Time from a Date 397\u003c\/p\u003e \u003cp\u003eCalculator 3: Age Calculator 397\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 18: Processing Text Files 399\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFile Processing Overview 401\u003c\/p\u003e \u003cp\u003eIntroduction to File Input\/Output 402\u003c\/p\u003e \u003cp\u003eProcessing Text Files 404\u003c\/p\u003e \u003cp\u003eOpening a File 404\u003c\/p\u003e \u003cp\u003eReading Text from a File 406\u003c\/p\u003e \u003cp\u003eAdd Content to a File 412\u003c\/p\u003e \u003cp\u003eOverwriting the Contents of a File 415\u003c\/p\u003e \u003cp\u003eCreating a New File 417\u003c\/p\u003e \u003cp\u003eUsing the os Module 418\u003c\/p\u003e \u003cp\u003eDeleting a File 419\u003c\/p\u003e \u003cp\u003eSummary 421\u003c\/p\u003e \u003cp\u003eExercises 421\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 19: Processing CSV Files 425\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eReading CSV Files 426\u003c\/p\u003e \u003cp\u003eUsing the DictReader Class 430\u003c\/p\u003e \u003cp\u003eCreating a Dataset List 432\u003c\/p\u003e \u003cp\u003eUsing writerow() 434\u003c\/p\u003e \u003cp\u003eAppending Data 436\u003c\/p\u003e \u003cp\u003eWriting Rows as Lists 439\u003c\/p\u003e \u003cp\u003eWriting Rows from Dictionaries 440\u003c\/p\u003e \u003cp\u003eSummary 444\u003c\/p\u003e \u003cp\u003eExercises 444\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 20: Processing JSON Files 447\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eProcessing JSON Files 448\u003c\/p\u003e \u003cp\u003eCreating a JSON File with dump() 448\u003c\/p\u003e \u003cp\u003eConverting to JSON with dumps() 449\u003c\/p\u003e \u003cp\u003eFormatting JSON Data 450\u003c\/p\u003e \u003cp\u003eUsing json.loads() 452\u003c\/p\u003e \u003cp\u003eIterating through JSON Data 454\u003c\/p\u003e \u003cp\u003eReading and Writing JSON Data 457\u003c\/p\u003e \u003cp\u003eSummary 460\u003c\/p\u003e \u003cp\u003eExercises 461\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart V: Data Analysis and Exception Handling 465\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 21: Using Lambdas 467\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating a Lambda Function 468\u003c\/p\u003e \u003cp\u003eWorking with Multiple Inputs 469\u003c\/p\u003e \u003cp\u003ePlacing Lambda Functions inside a Function 471\u003c\/p\u003e \u003cp\u003eUsing the map() Function 472\u003c\/p\u003e \u003cp\u003eCombining Map and Lambda Functions 475\u003c\/p\u003e \u003cp\u003eUsing the filter() Function 477\u003c\/p\u003e \u003cp\u003eCombining a Filter and a Lambda 479\u003c\/p\u003e \u003cp\u003eUsing the reduce() Function 480\u003c\/p\u003e \u003cp\u003eSummary 486\u003c\/p\u003e \u003cp\u003eExercises 486\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 22: Handling Exceptions 491\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBuilt- In Exceptions 492\u003c\/p\u003e \u003cp\u003eWorking with try and except 493\u003c\/p\u003e \u003cp\u003eWorking with Multiple Excepts 495\u003c\/p\u003e \u003cp\u003eCombining Exception Types 498\u003c\/p\u003e \u003cp\u003eUsing Multiple Operations in a try 500\u003c\/p\u003e \u003cp\u003eUsing the raise Keyword 501\u003c\/p\u003e \u003cp\u003eExploring the General Exception Classes 502\u003c\/p\u003e \u003cp\u003eAdding finally 505\u003c\/p\u003e \u003cp\u003eSummary 506\u003c\/p\u003e \u003cp\u003eExercises 506\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 23: Pulling It All Together: Word Analysis in Python 511\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eExamine the Data 512\u003c\/p\u003e \u003cp\u003eRead the Data 514\u003c\/p\u003e \u003cp\u003eTokenize the Dataset 517\u003c\/p\u003e \u003cp\u003eCount the Words in Each Review 524\u003c\/p\u003e \u003cp\u003eSummary 528\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 24: Extracting, Transforming, and Loading with ETL Scripting 531\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eETL Scripting in Python 532\u003c\/p\u003e \u003cp\u003eDesign and Implement Custom ETL Scripts 532\u003c\/p\u003e \u003cp\u003eThe extract Class 534\u003c\/p\u003e \u003cp\u003eThe transform Class 546\u003c\/p\u003e \u003cp\u003eThe load Class 569\u003c\/p\u003e \u003cp\u003eSummary 582\u003c\/p\u003e \u003cp\u003eExercises 582\u003c\/p\u003e \u003cp\u003e\u003cb\u003eLesson 25: Improving ETL Scripting 585\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eConverting to Static Methods for the extract Class 586\u003c\/p\u003e \u003cp\u003eConverting to Static Methods for the transform Class 588\u003c\/p\u003e \u003cp\u003eSummary 607\u003c\/p\u003e \u003cp\u003eExercises 608\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart VI: Appendices 611\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A: Flowcharts 613\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFlowchart Basics 613\u003c\/p\u003e \u003cp\u003eCommon Flowcharting Shapes 615\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B: Creating Pseudocode 621\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat Is Pseudocode? 621\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix C: Installing MySQL 623\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eMySQL Installation 623\u003c\/p\u003e \u003cp\u003eVerify the Installation 628\u003c\/p\u003e \u003cp\u003eThe MySQL Notifier 630\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix D: Installing Vinyl DB 631\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDatabase Structure 631\u003c\/p\u003e \u003cp\u003eCreate the Database 632\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix E: Installing MongoDB 637\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eInstalling MongoDB Community Server 637\u003c\/p\u003e \u003cp\u003eRunning MongoDB 642\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix F: Importing to MongoDB 643\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIndex 645\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48866418000215,"sku":"9781119817383","price":24.79,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781119817383.jpg?v=1722278548"},{"product_id":"java-allinone-for-dummies-9781119986645","title":"Java AllinOne For Dummies","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eIntroduction 1\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 1: Java Basics 5\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Welcome to Java 7\u003c\/p\u003e \u003cp\u003eChapter 2: Installing and Using Java Tools 17\u003c\/p\u003e \u003cp\u003eChapter 3: Working with TextPad 31\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 2: Programming Basics 37\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Java Programming Basics 39\u003c\/p\u003e \u003cp\u003eChapter 2: Working with Variables and Data Types 59\u003c\/p\u003e \u003cp\u003eChapter 3: Working with Numbers and Expressions 97\u003c\/p\u003e \u003cp\u003eChapter 4: Making Choices 127\u003c\/p\u003e \u003cp\u003eChapter 5: Going Around in Circles (or, Using Loops) 149\u003c\/p\u003e \u003cp\u003eChapter 6: Pulling a Switcheroo 177\u003c\/p\u003e \u003cp\u003eChapter 7: Adding Some Methods to Your Madness 195\u003c\/p\u003e \u003cp\u003eChapter 8: Handling Exceptions 215\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 3: Object-Oriented Programming 237\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Understanding Object-Oriented Programming 239\u003c\/p\u003e \u003cp\u003eChapter 2: Making Your Own Classes 253\u003c\/p\u003e \u003cp\u003eChapter 3: Working with Statics 273\u003c\/p\u003e \u003cp\u003eChapter 4: Using Subclasses and Inheritance 283\u003c\/p\u003e \u003cp\u003eChapter 5: Using Abstract Classes and Interfaces 305\u003c\/p\u003e \u003cp\u003eChapter 6: Using the Object and Class Classes 327\u003c\/p\u003e \u003cp\u003eChapter 7: Using Inner Classes and Anonymous Classes 355\u003c\/p\u003e \u003cp\u003eChapter 8: Working with Packages and the Java Module System 365\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 4: Strings and Other Data Types 387\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Working with Strings 389\u003c\/p\u003e \u003cp\u003eChapter 2: Using Regular Expressions 411\u003c\/p\u003e \u003cp\u003eChapter 3: Working with Dates and Times 429\u003c\/p\u003e \u003cp\u003eChapter 4: Using the BigDecimal Class 451\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 5: Data Structures 471\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Introducing Data Structures 473\u003c\/p\u003e \u003cp\u003eChapter 2: Using Arrays 503\u003c\/p\u003e \u003cp\u003eChapter 3: Using the ArrayList Class 535\u003c\/p\u003e \u003cp\u003eChapter 4: Using the LinkedList Class 549\u003c\/p\u003e \u003cp\u003eChapter 5: Creating Generic Collection Classes 561\u003c\/p\u003e \u003cp\u003eChapter 6: Using Maps and Trees 575\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 6: Algorithms 595\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Introducing Algorithms 597\u003c\/p\u003e \u003cp\u003eChapter 2: Using Recursion 613\u003c\/p\u003e \u003cp\u003eChapter 3: Sorting 625\u003c\/p\u003e \u003cp\u003eChapter 4: Searching 637\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 7: Programming Techniques 657\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Programming Threads 659\u003c\/p\u003e \u003cp\u003eChapter 2: Using Functional Programming and Lambda Expressions 689\u003c\/p\u003e \u003cp\u003eChapter 3: Consuming Web Services with HttpClient 705\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBook 8: JavaFX 727\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChapter 1: Hello, JavaFX! 729\u003c\/p\u003e \u003cp\u003eChapter 2: Handling Events 751\u003c\/p\u003e \u003cp\u003eChapter 3: Setting the Stage and Scene Layout 769\u003c\/p\u003e \u003cp\u003eChapter 4: Using Layout Panes to Arrange Your Scenes 791\u003c\/p\u003e \u003cp\u003eChapter 5: Getting Input from the User 825\u003c\/p\u003e \u003cp\u003eChapter 6: Choosing from a List 841\u003c\/p\u003e \u003cp\u003eIndex 869\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48866427273559,"sku":"9781119986645","price":26.24,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781119986645.jpg?v=1722278596"},{"product_id":"software-engineering-an-agile-unified-methodology-ise-9781265242435","title":"Software Engineering An Agile Unified Methodology","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eThe new edition of \u003ci\u003eSoftware Engineering\u003c\/i\u003e presents a step-by-step methodology that integrates Modeling and Design, UML, Patterns, Test-Driven Development, Quality Assurance, Configuration Management, and Agile Principles throughout the life cycle. The overall approach is casual and easy to follow, with many practical examples that show the theory at work. The author uses his experiences as well as real-world stories to help the reader understand software design principles, patterns, and other software engineering concepts. The book also provides stimulating exercises that go far beyond the type of question that can be answered by simply copying portions of the text.\u003cbr\u003e\u003cbr\u003eThe new edition of \u003ci\u003eSoftware Engineering\u003c\/i\u003e is now available for the first time in McGraw Hill Connect! Connect for this course features the MHeBook, Writing Tool, Proctorio, and the Connect authoring tool that offers the ability to create your own questions.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003ePart 1: Introduction and System Engineering\u003cbr\u003eChapter 1: Introduction\u003cbr\u003eChapter 2: Software Process and Methodology\u003cbr\u003eChapter 3: System Engineering\u003cbr\u003e\u003cbr\u003e\u003cbr\u003ePart 2: Analysis and Architectural Design\u003cbr\u003eChapter 4: Software Requirements Elicitation\u003cbr\u003eChapter 5: Domain Modeling\u003cbr\u003eChapter 6: Architectural Design\u003cbr\u003e\u003cbr\u003e\u003cbr\u003ePart 3: Modeling and Design of Interactive\u003cbr\u003eChapter 7: Deriving Use Cases from Requirements\u003cbr\u003eChapter 8: Actor-System Interaction Modeling\u003cbr\u003eChapter 9: Object Interaction Modeling\u003cbr\u003eChapter 10: Applying Responsibility-Assignment Patterns\u003cbr\u003eChapter 11: Deriving a Design Class Diagram\u003cbr\u003eChapter 12: User Interface Design\u003cbr\u003e\u003cbr\u003e\u003cbr\u003ePart 4: Modeling and Design of Other Types of Systems\u003cbr\u003eChapter 13: Object State Modeling for Event-Driven Systems\u003cbr\u003eChapter 14: Activity Modeling for Transformational\u003cbr\u003eChapter 15: Modeling and Design of Rule-Based Systems\u003cbr\u003e\u003cbr\u003e\u003cbr\u003ePart 5: Applying Situation-Specific Patterns\u003cbr\u003eChapter 16: Applying Patterns to Design a State Diagram Editor\u003cbr\u003eChapter 17: Applying Patterns to Design a Persistence Framework\u003cbr\u003e\u003cbr\u003e\u003cbr\u003ePart 6: Implementation and Quality Assurance\u003cbr\u003eChapter 18: Implementation Considerations\u003cbr\u003eChapter 19: Software Quality Assurance\u003cbr\u003eChapter 20: Software Testing\u003cbr\u003e\u003cbr\u003e\u003cbr\u003ePart 7: Maintenance and Configuration Management\u003cbr\u003eChapter 21: Software Maintenance\u003cbr\u003eChapter 22: Software Configuration Management\u003cbr\u003e\u003cbr\u003e\u003cbr\u003ePart 8: Project Management and Software Software\u003cbr\u003eChapter 23: Software Project Management\u003cbr\u003eChapter 24: Software Security\u003cbr\u003e","brand":"McGraw-Hill Education","offers":[{"title":"Default Title","offer_id":48866503262551,"sku":"9781265242435","price":53.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781265242435.jpg?v=1722278965"},{"product_id":"agile-software-development-principles-patterns-and-practices-9781292025940","title":"Agile Software Development Principles Patterns","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003eI. AGILE DEVELOPMENT. \u003c\/b\u003e\u003c\/p\u003e \u003cb\u003e 1. Agile Practices. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e 2. Overview of Extreme Programming. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e 3. Planning. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e 4. Testing. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e 5. Refactoring. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e 6. A Programming Episode. \u003c\/b\u003e \u003cbr\u003e \u003cp\u003e\u003cb\u003eII. AGILE DESIGN. \u003c\/b\u003e\u003c\/p\u003e \u003cb\u003e 7. What Is Agile Design? \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e 8. SRP: The Single-Responsibility Principle. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e 9. OCP: The Open-Closed Principle. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e10. LSP: The Liskov Substitution Principle. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e11. DIP: The Dependency-Inversion Principle. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e12. ISP: The Interface-Segregation Principle. \u003c\/b\u003e \u003cbr\u003e \u003cp\u003e\u003cb\u003eIII. THE PAYROLL CASE STUDY. \u003c\/b\u003e\u003c\/p\u003e \u003cb\u003e13. Command and Active Object. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e14. Template Method \u0026amp; Strategy: Inheritance vs. Delegation. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e15. Facade and Mediator. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e16. Singleton and Monostate. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e17. Null Object. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e18. The Payroll Case Study: Iteration One Begins. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e19. The Payroll Case Study: Implementation. \u003c\/b\u003e \u003cbr\u003e \u003cp\u003e\u003cb\u003eIV. PACKAGING THE PAYROLL SYSTEM. \u003c\/b\u003e\u003c\/p\u003e \u003cb\u003e20. Principles of Package Design. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e21. Factory. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e22. The Payroll Case Study (Part 2). \u003c\/b\u003e \u003cbr\u003e \u003cp\u003e\u003cb\u003eV. THE WEATHER STATION CASE STUDY. \u003c\/b\u003e\u003c\/p\u003e \u003cb\u003e23. Composite. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e24. Observer—Backing into a Pattern. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e25. Abstract Server, Adapter, and Bridge. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e26. Proxy and Stairway to Heaven: Managing Third Party APIs. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e27. Case Study: Weather Station. \u003c\/b\u003e \u003cbr\u003e \u003cp\u003e\u003cb\u003eVI. THE ETS CASE STUDY. \u003c\/b\u003e\u003c\/p\u003e \u003cb\u003e28. Visitor. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e29. State. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003e30. The ETS Framework. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003eAppendix A. UML Notation I: The CGI Example. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003eAppendix B. UML Notation II: The Statmux. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003eAppendix C. A Satire of Two Companies. \u003c\/b\u003e \u003cbr\u003e \u003cb\u003eIndex. \u003c\/b\u003e \u003cbr\u003e","brand":"Pearson Education Limited","offers":[{"title":"Default Title","offer_id":48866510242135,"sku":"9781292025940","price":999.99,"currency_code":"GBP","in_stock":false}]},{"product_id":"effective-modern-c-9781491903995","title":"Effective Modern C","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eComing to grips with C++11 and C++14 is more than a matter of familiarizing yourself with the features they introduce. The challenge is learning to use those features effectively - so that your software is correct, efficient, maintainable, and portable. That's where this practical book comes in.","brand":"O'Reilly Media","offers":[{"title":"Default Title","offer_id":48867304145239,"sku":"9781491903995","price":35.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781491903995.jpg?v=1722282695"},{"product_id":"head-first-java-3rd-edition-9781491910771","title":"Head First Java 3rd Edition","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eWith this book, you'll learn the Java language with a unique method that goes beyond how-to manuals. Through puzzles, mysteries, and soul-searching interviews with famous Java objects, you'll quickly get up to speed on Java's fundamentals and advanced topics including lambdas, streams, generics, threading, networking, and the dreaded desktop GUI.","brand":"O'Reilly Media","offers":[{"title":"Default Title","offer_id":48867304341847,"sku":"9781491910771","price":47.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781491910771.jpg?v=1722282695"},{"product_id":"introduction-to-javascript-object-notation-9781491929483","title":"Introduction to JavaScript Object Notation","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eThis concise guide helps busy IT professionals get up and running quickly with this popular data interchange format, and provides a deep understanding of how JSON works. Author Lindsay Bassett begins with an overview of JSON syntax, data types, formatting, and security concerns before exploring the many ways you can apply JSON today.","brand":"O'Reilly Media","offers":[{"title":"Default Title","offer_id":48867305029975,"sku":"9781491929483","price":19.19,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781491929483.jpg?v=1722282698"},{"product_id":"head-first-python-9781492051299","title":"Head First Python","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eWant to learn the Python language without slogging your way through how-to manuals? With Head First Python, you'll quickly grasp Python's fundamentals by working with built-in data structures and functions. You'll build your very own web app, which—once it's ready for prime time—runs in the cloud.","brand":"O'Reilly Media","offers":[{"title":"Default Title","offer_id":48867308011863,"sku":"9781492051299","price":39.74,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781492051299.jpg?v=1722282713"},{"product_id":"concurrency-in-c-cookbook-9781492054504","title":"Concurrency in C Cookbook","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eIf you're one of the many developers uncertain about concurrent and multithreaded development, this practical cookbook will change your mind. With more than 75 code-rich recipes, author Stephen Cleary demonstrates parallel processing and asynchronous programming techniques, using libraries and language features in .NET and C#.","brand":"O'Reilly Media","offers":[{"title":"Default Title","offer_id":48867308339543,"sku":"9781492054504","price":33.74,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781492054504.jpg?v=1722282715"},{"product_id":"devops-tools-for-java-developers-9781492084020","title":"DevOps Tools for Java Developers","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eThis practical guide helps you take advantage of microservices, serverless, and cloud native technologies using the latest DevOps techniques to simplify your build process and create hyperproductive teams.","brand":"O'Reilly Media","offers":[{"title":"Default Title","offer_id":48867309879639,"sku":"9781492084020","price":39.74,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781492084020.jpg?v=1722282724"},{"product_id":"building-ethereum-dapps-decentralized-applications-on-the-ethereum-blockchain-9781617295157","title":"Building Ethereum Dapps: Decentralized","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eWith DApps built on the Ethereum blockchain, users can establish persistent, reliable ownership records for actions such as buying a car or a house with smart contracts to enforce blockchain-based verification before a transaction can be completed.\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003e\u003ci\u003eBuilding Ethereum ĐApps \u003c\/i\u003eintroduces readers to decentralized applications based on the Ethereum blockchain platform. They’ll discover how to design smart contracts to enforce transaction rules, and then implement them in Ethereum's JavaScript-like Solidity language.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eKey Features\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e·   Understanding decentralized applications and the underlying technologies\u003c\/p\u003e \u003cp\u003e·   Learning the key components of the Ethereum platform\u003c\/p\u003e \u003cp\u003e·   Implementing smart contracts in Solidity\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAudience\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWritten for developers with intermediate experience in an OO language or in JavaScript. Some understanding and experience with blockchain concepts is helpful.\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003e\u003cb\u003eAuthor Bio\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eRoberto Infante \u003c\/b\u003eis an independent software development consultant who specializes in finance. Throughout his career, he has worked on a variety of innovative projects, such as the first internet mortgage approval system in the UK and one of the first online insurance underwriting systems in London.\u003c\/p\u003e","brand":"Manning Publications","offers":[{"title":"Default Title","offer_id":48867783672151,"sku":"9781617295157","price":28.49,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781617295157.jpg?v=1722284944"},{"product_id":"unity-in-action-9781617299339","title":"Unity in Action","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eCreate your first 2D, 3D, and AR\/VR games with the awesome Unity game platform.  With this hands-on beginner's guide, you'll start building games fast!    \u003cbr\u003e    In  \u003cb\u003eUnity in Action, Third Edition\u003c\/b\u003e, you will learn how to:    \u003cul\u003e\n\u003cli\u003eCreate characters that run, jump, and bump into things\u003c\/li\u003e\n\u003cli\u003eBuild 3D first-person shooters and third-person action games\u003c\/li\u003e\n\u003cli\u003eConstruct 2D card games and side-scrolling platformers\u003c\/li\u003e\n\u003cli\u003eScript enemies with AI\u003c\/li\u003e\n\u003cli\u003eImprove game graphics by importing models and images\u003c\/li\u003e\n\u003cli\u003eDesign an intuitive user interface for your games\u003c\/li\u003e\n\u003cli\u003ePlay music and spatially-aware sound effects\u003c\/li\u003e\n\u003cli\u003eConnect your games to the internet for online play\u003c\/li\u003e\n\u003cli\u003eDeploy your games to desktop, mobile, and the web\u003c\/li\u003e\n\u003c\/ul\u003e    \u003cbr\u003e    Thousands of new game developers have chosen Joe Hocking's Unity in Action as their first step toward Unity mastery. This fully updated third edition comes packed with fully refreshed graphics, Unity's latest features, and coverage of the augmented and virtual reality toolkits. Using your existing coding skills, you'll write custom code instead of just clicking together premade scripts. You'll master the Unity toolset from the ground up, adding the skills you need to go from application coder to game developer.    \u003cbr\u003e    Build your next game without sweating the low-level details. The Unity game engine handles the heavy lifting, so you can focus on game play, graphics, and user experience. With support for C#, a huge ecosystem of production-quality prebuilt assets, and a strong dev community, Unity will get your game idea off the drawing board and onto the screen! You can even use Unity for more than game development, with new tools for VR and augmented reality that are perfect for developing useful apps.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTrade Review\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eThis is the best resource, bar none, for an introduction to Unity and fundamental game programming concepts.   \u003c\/p\u003e \u003cp\u003e\u003cb\u003eErik Hansson    \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThis book is a wonderful introduction to Unity. I believe this book will be very useful to readers from a wide range of backgrounds. Everything is explained very well and is easy to read and understand.   \u003c\/p\u003e \u003cp\u003e\u003cb\u003eKent R. Spillner    \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThis is a great introduction to Unity. I think it could even be used as the foundation for a high school or college course.   \u003c\/p\u003e \u003cp\u003e\u003cb\u003eRobert Walsh    \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIf you want to start building games as a hobby or a profession, this is a good place to start!   \u003c\/p\u003e \u003cp\u003e\u003cb\u003eBradley Irby    \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA great introduction to learning Game development with Unity and C#. The author steps you through all the elements of Unity so if you've never used Unity before, don't worry about it.   \u003c\/p\u003e \u003cp\u003e\u003cb\u003eOwain Williams    \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIf you already have some programming experience, this book on Unity can really help you connect into a new platform and enable you to create a game!   \u003c\/p\u003e \u003cb\u003eJames Matlock\u003c\/b\u003e","brand":"Manning Publications","offers":[{"title":"Default Title","offer_id":48867784982871,"sku":"9781617299339","price":44.69,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781617299339.jpg?v=1722284951"},{"product_id":"programming-ruby-3-2-the-pragmatic-programmers-guide-9781680509823","title":"Programming Ruby 3.2: The Pragmatic Programmers'","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eRuby is one of the most important programming languages in use for web development. It powers the Rails framework, which is the backing of some of the most important sites on the web. The Pickaxe Book, named for the tool on the cover, is the definitive reference on Ruby, a highly-regarded, fully object-oriented programming language. This updated edition is a comprehensive reference on the language itself, with a tutorial on the most important features of Ruby - including pattern matching and Ractors - and describes the language through Ruby 3.2.  Would you like to go from first idea to working code much, much faster? Do you currently spend more time satisfying the compiler instead of your clients or end users? Are you frustrated with demanding languages that seem to get in your way instead of helping you get the work done? Are you using Rails and want to dig deeper into the underlying Ruby language? If so, then we've got a language and book for you!  Ruby is a fully object-oriented language. The combination of the power of a pure object-oriented language with the convenience of a scripting language makes Ruby a favorite tool of programmers that want to get things done quickly and cleanly.  This comprehensive reference manual for Ruby includes a description of the most important standard library modules, built-in classes, and modules. It also includes all the new and changed syntax and semantics introduced through Ruby 3.2, including pattern matching and Ractors, and describes the language through Ruby 3.2.  What You Need:  This book assumes you have a basic understanding of object-oriented programming. In general, Ruby programmers tend to favor the the command line for running their code, and they tend to use text editors rather than IDEs. Ruby runs on Windows, Linux, and MacOS.","brand":"Pragmatic Bookshelf","offers":[{"title":"Default Title","offer_id":48868034412887,"sku":"9781680509823","price":50.34,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781680509823.jpg?v=1722286113"},{"product_id":"murachs-java-programming-6th-edition-9781943872879","title":"Murach's Java Programming (6th Edition)","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e","brand":"Mike Murach \u0026 Associates Inc.","offers":[{"title":"Default Title","offer_id":48869177950551,"sku":"9781943872879","price":51.84,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781943872879.jpg?v=1722291478"},{"product_id":"objectoriented-analysis-and-design-with-applications-9780201895513","title":"ObjectOriented Analysis and Design with","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003cb\u003eGrady Booch\u003c\/b\u003e is an IBM fellow and author of six best-selling books on object-oriented programming. He is world-reknowned as an originator of OO and founder of UML.\u003c\/p\u003e \u003cbr\u003e \u003cp\u003e\u003cb\u003eRobert A. Maksimchuk,\u003c\/b\u003e as Research Director in the Unisys CTO Office, focuses on emerging modeling technologies to advance the strategic direction of the Unisys 3D-Visual Enterprise modeling framework. Bob brings an abundance of systems engineering, modeling, and object-oriented analysis and design expertise, in numerous industries, to this mission. He is the coauthor of the books \u003ci\u003eUML for Mere Mortals\u003c\/i\u003e and \u003ci\u003eUML for Database Design\u003c\/i\u003e, has written various articles, has traveled worldwide as a featured speaker in numerous technology forums, and led workshops and seminars on UML and object-oriented development.\u003c\/p\u003e \u003cbr\u003e \u003cp\u003e\u003cb\u003eMichael W. Engle\u003c\/b\u003e is a principal member of the engineering staff with the Lockheed Martin Corporation. He has extensive technical and management experience across the\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003ci\u003eSidebars   xi\u003cbr\u003ePreface    xiii\u003cbr\u003eAcknowledgments    xix\u003cbr\u003eAbout the Authors    xxi\u003c\/i\u003e Section I: Concepts   1 Chapter 1: Complexity   3 \u003c\/p\u003e\u003cp\u003e1.1      The Structure of Complex Systems    4\u003cbr\u003e1.2      The Inherent Complexity of Software    7\u003cbr\u003e1.3      The Five Attributes of a Complex System    12\u003cbr\u003e1.4      Organized and Disorganized Complexity    14\u003cbr\u003e1.5      Bringing Order to Chaos    18\u003cbr\u003e1.6      On Designing Complex Systems    24\u003c\/p\u003e Chapter 2: The Object Model    29 \u003cp\u003e2.1      The Evolution of the Object Model    29\u003cbr\u003e2.2      Foundations of the Object Model    37\u003cbr\u003e2.3      Elements of the Object Model    43\u003cbr\u003e2.4      Applying the Object Model    71\u003c\/p\u003e Chapter 3: Classes and Objects    75 \u003cp\u003e3.1      The Nature of an Object    75\u003cbr\u003e3.2      Relationships among Objects    88\u003cbr\u003e3.3      The Nature of a Class    92\u003cbr\u003e3.4      Relationships among Classes    96\u003cbr\u003e3.5      The Interplay of Classes and Objects    111\u003cbr\u003e3.6      On Building Quality Classes and Objects    112\u003c\/p\u003e Chapter 4: Classification    121 \u003cp\u003e4.1      The Importance of Proper Classification    121\u003cbr\u003e4.2      Identifying Classes and Objects    126\u003cbr\u003e4.3      Key Abstractions and Mechanisms    138\u003c\/p\u003e Section II: Method    145 Chapter 5: Notation    147 \u003cp\u003e5.1      The Unified Modeling Language    147\u003cbr\u003e5.2      Package Diagrams    155\u003cbr\u003e5.3      Component Diagrams    163\u003cbr\u003e5.4      Deployment Diagrams    171\u003cbr\u003e5.5      Use Case Diagrams    175\u003cbr\u003e5.6      Activity Diagrams    185\u003cbr\u003e5.7      Class Diagrams    192\u003cbr\u003e5.8      Sequence Diagrams    206\u003cbr\u003e5.9      Interaction Overview Diagrams    213\u003cbr\u003e5.10    Composite Structure Diagrams    215\u003cbr\u003e5.11    State Machine Diagrams    218\u003cbr\u003e5.12    Timing Diagrams    231\u003cbr\u003e5.13    Object Diagrams    235\u003cbr\u003e5.14    Communication Diagrams    238\u003c\/p\u003e Chapter 6: Process 247 \u003cp\u003e6.1        First Principles    248\u003cbr\u003e6.2        The Macro Process: The Software Development Lifecycle    256\u003cbr\u003e6.3        The Micro Process: The Analysis and Design Process    272\u003c\/p\u003e Chapter 7: Pragmatics    303 \u003cp\u003e7.1      Management and Planning    304\u003cbr\u003e7.2      Staffing    308\u003cbr\u003e7.3      Release Management    312\u003cbr\u003e7.4      Reuse    314\u003cbr\u003e7.5      Quality Assurance and Metrics    316\u003cbr\u003e7.6      Documentation    320\u003cbr\u003e7.7      Tools    322\u003cbr\u003e7.8      Special Topics    324\u003cbr\u003e7.9      The Benefits and Risks of Object-Oriented Development    326\u003c\/p\u003e Section III: Applications    331 Chapter 8: System Architecture: Satellite-Based Navigation    333 \u003cp\u003e8.1      Inception    334\u003cbr\u003e8.2      Elaboration    347\u003cbr\u003e8.3      Construction    370\u003cbr\u003e8.4      Post-Transition 371\u003c\/p\u003e Chapter 9: Control System: Traffic Management    375 \u003cp\u003e9.1      Inception    376\u003cbr\u003e9.2      Elaboration    385\u003cbr\u003e9.3      Construction    396\u003cbr\u003e9.4      Post-Transition 411\u003c\/p\u003e Chapter 10: Artificial Intelligence: Cryptanalysis    413 \u003cp\u003e10.1      Inception    414\u003cbr\u003e10.2      Elaboration    421\u003cbr\u003e10.3      Construction    427\u003cbr\u003e10.4      Post-Transition 446\u003c\/p\u003e Chapter 11: Data Acquisition: Weather Monitoring Station    449 \u003cp\u003e11.1      Inception    450\u003cbr\u003e11.2      Elaboration    463\u003cbr\u003e11.3      Construction    474\u003cbr\u003e11.4      Post-Transition    487\u003c\/p\u003e Chapter 12: Web Application: Vacation Tracking System    489 \u003cp\u003e12.1      Inception    490\u003cbr\u003e12.2      Elaboration    494\u003cbr\u003e12.3      Construction    506\u003cbr\u003e12.4      Transition and Post-Transition    534\u003c\/p\u003e Appendix A: Object-Oriented Programming Languages    537 \u003cp\u003eA.1      Language Evolution    537\u003cbr\u003eA.2      Smalltalk    541\u003cbr\u003eA.3      C++    546\u003cbr\u003eA.4      Java    551\u003c\/p\u003e Appendix B: Further Reading    557 \u003ci\u003eNotes    567\u003cbr\u003eGlossary    591\u003cbr\u003eClassified Bibliography    603\u003cbr\u003eIndex    677\u003c\/i\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48883866468695,"sku":"9780201895513","price":999.99,"currency_code":"GBP","in_stock":false}]},{"product_id":"objectivec-programming-the-big-nerd-ranch-guide-big-nerd-ranch-guides-9780321942067","title":"ObjectiveC Programming The Big Nerd Ranch Guide","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eWant to write iOS apps or desktop Mac applications? This introduction to programming and the Objective-C language is your first step on the journey from someone who uses apps to someone who writes them.     Based on Big Nerd Ranch's popular Objective-C Bootcamp, Objective-C Programming: The Big Nerd Ranch Guide covers C, Objective-C, and the common programming idioms that enable developers to make the most of Apple technologies. Compatible with Xcode 5, iOS 7, and OS X Mavericks (10.9), this guide features short chapters and an engaging style to keep you motivated and moving forward. At the same time, it encourages you to think critically as a programmer.     Here are some of the topics covered: Using Xcode, Apple's documentation, and other toolsProgramming basics: variables, loops, functions, etc.   Objects, classes, methods, and messagesPointers, addresses, and memory management with ARCProperties and Key-Value Coding (KVC)Class extensionsCategoriesClasses from the Foundation framewo\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e Part I: Getting Started\u003cbr\u003e1. You and This Book\u003cbr\u003e2. Your First Program\u003c\/p\u003e \u003cp\u003ePart II: How Programming Works\u003cbr\u003e3. Variables and Types\u003cbr\u003e4. if\/else\u003cbr\u003e5. Functions\u003cbr\u003e6. Numbers\u003cbr\u003e7. Loops\u003cbr\u003e8. Addresses and Pointers\u003cbr\u003e9. Pass By Reference\u003cbr\u003e10. Structs\u003cbr\u003e11. The Heap\u003c\/p\u003e \u003cp\u003ePart III: Objective-C and Foundation\u003cbr\u003e12. Objects\u003cbr\u003e13. More Messages\u003cbr\u003e14. NSString\u003cbr\u003e15. NSArray\u003cbr\u003e16. Developer Documentation\u003cbr\u003e17. Your First Class\u003cbr\u003e18. Inheritance\u003cbr\u003e19. Object Instance Variables\u003cbr\u003e20. Preventing Memory Leaks\u003cbr\u003e21. Collection Classes\u003cbr\u003e22. Constants\u003cbr\u003e23. Writing Files with NSString and NSData\u003cbr\u003e24. Callbacks\u003cbr\u003e25. Protocols\u003cbr\u003e26. Property Lists\u003c\/p\u003e \u003cp\u003ePart IV: Event-Driven Applications\u003cbr\u003e27. Your First iOS Application\u003cbr\u003e28. Your First Cocoa Application\u003c\/p\u003e \u003cp\u003ePart V: Advanced Objective-C\u003cbr\u003e29. init\u003cbr\u003e30. Properties\u003cbr\u003e31. Categories\u003cbr\u003e32. Blocks\u003c\/p\u003e \u003cp\u003ePart VI: Advanced C\u003cbr\u003e33. Bitwise Operations\u003cbr\u003e34. C Strings\u003cbr\u003e35. C Arrays\u003cbr\u003e36. Command-Line Arguments\u003cbr\u003e37. Switch Statements\u003c\/p\u003e \u003cp\u003ePart VII: Objective-C Runtime\u003cbr\u003e38. How Messaging Works\u003cbr\u003e39. How Classes Work\u003cbr\u003e40. Runtime Attributes\u003cbr\u003e41. Method Swizzling\u003cbr\u003e42. Associated Objects\u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":48883975455063,"sku":"9780321942067","price":999.99,"currency_code":"GBP","in_stock":false}]},{"product_id":"karel-the-robot-a-gentle-introduction-to-the-art-of-object-oriented-programming-2e-sw-mac-9780471107057","title":"Karel the Robot  A Gentle Introduction to the Art","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eUses a creative approach to teach the basic skills and concepts of programming quickly. This edition offers excellent insights into problem solving and program design processes. It will also improve comprehension of such computer science considerations as loop invariants and recursion. Includes 60 color line drawings.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003eThe Robot World.\u003cbr\u003e \u003cbr\u003e Primitive Instructions and Simple Programs.\u003cbr\u003e \u003cbr\u003e Extending Karel's Vocabulary.\u003cbr\u003e \u003cbr\u003e Conditionally Executing Instructions.\u003cbr\u003e \u003cbr\u003e Instructions That Repeat.\u003cbr\u003e \u003cbr\u003e Advanced Techniques for Karel.\u003cbr\u003e \u003cbr\u003e Appendix.\u003cbr\u003e \u003cbr\u003e Indexes.","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":48884145127767,"sku":"9780471107057","price":26.52,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780471107057.jpg?v=1722530649"},{"product_id":"programming-c-12-9781098158361","title":"Programming C 12","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e","brand":"O'Reilly Media","offers":[{"title":"Default Title","offer_id":48885253538135,"sku":"9781098158361","price":999.99,"currency_code":"GBP","in_stock":false}]},{"product_id":"design-of-object-oriented-applications-the-odyssey-approach-9781613249970","title":"Design of Object-Oriented Applications: The","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e","brand":"Nova Science Publishers Inc","offers":[{"title":"Default Title","offer_id":48886847209815,"sku":"9781613249970","price":76.49,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781613249970.jpg?v=1722541851"},{"product_id":"get-programming-with-haskell-9781617293764","title":"Get Programming with Haskell","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eUnlike any other programming language, Haskell is purely functional\u003cbr\u003ewith a strong type system and lazy evaluation. It is arguable the most\u003cbr\u003einteresting language but also has the reputation of being one of the\u003cbr\u003emost challenging to learn. Learning Haskell doesn't have to be\u003cbr\u003edifficult, and this book can help!\u003c\/p\u003e \u003cp\u003e\u003cbr\u003eGet Programming with Haskell introduces you to the Haskell language\u003cbr\u003ewithout drowning you in academic jargon and heavy functional\u003cbr\u003eprogramming theory. By working through 43 easy-to-follow lessons,\u003cbr\u003eyou'll learn Haskell by doing Haskell. This book starts with first\u003cbr\u003econcepts, building your knowledge with concrete examples and\u003cbr\u003eexercises. You'll learn to think the Haskell way, as you start to\u003cbr\u003eunderstand the language and how to use it effectively. And you'll really\u003cbr\u003eappreciate the crystal-clear illustrations, quick-checks, and open-ended\u003cbr\u003etasks that make sure you're solid on each new concept before you move\u003cbr\u003ealong!\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eKEY FEATURES\u003cbr\u003e• Full of interesting examples\u003cbr\u003e• Easy approach to functional programming basics\u003cbr\u003e• Write safe, predictable code with fewer bugs\u003cbr\u003e• Lots of illustrations and exercises\u003c\/p\u003e \u003cp\u003e\u003cbr\u003eReaders should have some experience with JavaScript, Python or\u003cbr\u003eRuby. No functional programming or math skills required.\u003c\/p\u003e \u003cp\u003e\u003cbr\u003eABOUT THE TECHNOLOGY\u003cbr\u003eHaskell is a purely functional programming language. It treats programs as\u003cbr\u003emuch like math as you can, requires you to think more than you type, and\u003cbr\u003ecan express the idea of infinite lists in code! These are just the more obvious\u003cbr\u003efeatures that make Haskell unlike any other programming language\u003cbr\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eAUTHOR BIO\u003cbr\u003eWill Kurt currently works as a Data Scientist at Quick Sprout. With a\u003cbr\u003eformal background in both Computer Science (MS) and English Literature\u003cbr\u003e(BA) he is fascinated with explaining complex technical topics as clearly\u003cbr\u003eand generally as possible. He has taught a course section on Haskell at the\u003cbr\u003eUniversity of Nevada, Reno and given workshops on Functional\u003cbr\u003eProgramming. He also blogs about probability at CountBayesie.com.\u003c\/p\u003e","brand":"Manning Publications","offers":[{"title":"Default Title","offer_id":48886898295127,"sku":"9781617293764","price":34.19,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781617293764.jpg?v=1722542081"},{"product_id":"murachs-c-programming-2018-9781943872275","title":"Murach's C++ Programming: 2018","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eIn the beginning, C++ was a hard language to learn because it required programmers to master low-level techniques to work with memory. Over the years, C++ has evolved to provide higher-level techniques that make it much easier to write effective code. But most C++ books havent evolved with the language. Until now. Now, this book uses modern C++ to get you off to a fast start, and then builds out your coding and OOP skills to the professional level. At that point, it also covers older techniques so youll be able to maintain the vast amount of legacy code thats out there, as well as work with embedded systems that dont support the newer techniques.","brand":"Mike Murach \u0026 Associates Inc.","offers":[{"title":"Default Title","offer_id":48888832852311,"sku":"9781943872275","price":999.99,"currency_code":"GBP","in_stock":false}]},{"product_id":"object-oriented-database-systems-approaches-and-architectures-9788120327894","title":"Object-oriented Database Systems: Approaches and","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eJava's rise led to Java-based OODBMS like Ozone and enhanced ORDBMS like Oracle 9i and DB2. Second Edition discusses these developments, offering insights on object database systems and various approaches. Includes exercises for analytical practice, beneficial for computer pros and postgrad students in database systems.","brand":"PHI Learning","offers":[{"title":"Default Title","offer_id":48889453478231,"sku":"9788120327894","price":8.09,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9788120327894.jpg?v=1722554437"},{"product_id":"programming-in-c-9788120332881","title":"Programming in C++","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eC++ is a high-level programming language, considered a superset of C. It covers structured and object-oriented programming, with programs and exercises for each concept. The book explains language fundamentals and gradually introduces object-oriented programming concepts, making it ideal for computer science and IT students.","brand":"Prentice-Hall of India Pvt.Ltd","offers":[{"title":"Default Title","offer_id":48889454461271,"sku":"9788120332881","price":16.12,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9788120332881.jpg?v=1722554443"},{"product_id":"let-us-java-9788183334679","title":"Let Us Java","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eLet Us Java introduces basic to complex Java concepts in a simple format, aiding beginners with step-by-step solutions. It covers topics like data types, OOP, arrays, interfaces, inheritance, exceptions, I\/O, and more with exercises and examples for practical understanding.","brand":"BPB Publications","offers":[{"title":"Default Title","offer_id":48889704972631,"sku":"9788183334679","price":11.24,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9788183334679.jpg?v=1722555540"},{"product_id":"java-in-two-semesters-featuring-javafx-9783319994192","title":"Java in Two Semesters: Featuring JavaFX","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eThis easy-to-follow textbook teaches Java programming from first principles, as well as covering design and testing methodologies. The text is divided into two parts. Each part supports a one-semester module, the first part addressing fundamental programming concepts, and the second part building on this foundation, teaching the skills required to develop more advanced applications.\u003c\/p\u003e\u003cp\u003eThis fully updated and greatly enhanced fourth edition covers the key developments introduced in Java 8, including material on JavaFX, lambda expressions and the Stream API.\u003c\/p\u003eTopics and features: begins by introducing fundamental programming concepts such as declaration of variables, control structures, methods and arrays; goes on to cover the fundamental object-oriented concepts of classes and objects, inheritance and polymorphism; uses JavaFX throughout for constructing event-driven graphical interfaces; includes advanced topics such as interfaces and lambda expressions, generics, collection classes and exceptions; explains file-handling techniques, packages, multi-threaded programs, socket programming, remote database access and processing collections using streams; includes self-test questions and programming exercises at the end of each chapter, as well as two illuminating case studies; provides additional resources at its associated website (simply go to springer.com and search for \"Java in Two Semesters\"), including a guide on how to install and use the NetBeans™ Java IDE.\u003cp\u003e\u003c\/p\u003e\u003cp\u003e\u003c\/p\u003e\u003cp\u003eOffering a gentle introduction to the field, assuming no prior knowledge of the subject, Java in Two Semesters is the ideal companion to undergraduate modules in software development or programming.\u003c\/p\u003e\u003cp\u003e\u003c\/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003c\/p\u003e\u003cp\u003e\u003cb\u003ePart I: Semester One\u003c\/b\u003e\u003c\/p\u003e  \u003cp\u003eThe First Step\u003c\/p\u003e  \u003cp\u003eBuilding Blocks\u003c\/p\u003e  \u003cp\u003eSelection\u003c\/p\u003e  \u003cp\u003eIteration\u003c\/p\u003e  \u003cp\u003eMethods\u003c\/p\u003e  \u003cp\u003eArrays\u003c\/p\u003e  \u003cp\u003eClasses and Objects\u003c\/p\u003e  \u003cp\u003eImplementing Classes\u003c\/p\u003e  \u003cp\u003eInheritance\u003c\/p\u003e  \u003cp\u003eIntroducing JavaFX\u003c\/p\u003e  \u003cp\u003eCase Study – Part 1\u003c\/p\u003e  \u003cp\u003eCase Study – Part 2\u003c\/p\u003e  \u003cp\u003e\u003cb\u003ePart II: Semester Two\u003c\/b\u003e\u003c\/p\u003e  \u003cp\u003eInterfaces and Lambda Expressions\u003c\/p\u003e  \u003cp\u003eExceptions\u003c\/p\u003e  \u003cp\u003eThe Java Collections Framework\u003c\/p\u003e  \u003cp\u003eAdvanced JavaFX\u003c\/p\u003e  \u003cp\u003eJavaFX: Interacting with the User\u003c\/p\u003e  \u003cp\u003eWorking with Files\u003c\/p\u003e  \u003cp\u003ePackages\u003c\/p\u003e  \u003cp\u003eMulti-Threaded Programs\u003c\/p\u003e  \u003cp\u003eAdvanced Case Study\u003c\/p\u003e  \u003cp\u003eThe Stream API\u003c\/p\u003e  \u003cp\u003eWorking with Sockets\u003c\/p\u003e  \u003cp\u003eJava in Context\u003c\/p\u003e\u003cp\u003e\u003c\/p\u003e","brand":"Springer International Publishing AG","offers":[{"title":"Default Title","offer_id":49084771008855,"sku":"9783319994192","price":49.4,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9783319994192.jpg?v=1725553286"},{"product_id":"agile-software-development-9780321482754","title":"Agile Software Development","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cp style=\"MARGIN:\" sonormal=\"\"\u003e\u003cb\u003eDr. Alistair Cockburn \u003c\/b\u003eis an internationally renowned expert on all aspects of software development, from object-oriented modeling and architecture, to methodology design, to project management and organizational alignment. One of the pioneers who coined the term agile software development, he co-authored the 2001 Agile Software Development Manifesto and the 2005 Declaration of Interdependence. Since 1975, he has led projects and taught in places from Oslo to Cape Town, from Vancouver to Beijing. His work has covered topics from design to management to testing, in research, in government, and in industry. His most recent book is \u003ci\u003eCrystal Clear: A Human-Powered Methodology for Small Teams\u003c\/i\u003e. His books \u003ci\u003eWriting Effective Use Cases\u003c\/i\u003e and \u003ci\u003eAgile Software Development \u003c\/i\u003ewon back-to-back Jolt Productivity Awards in 2001 and 2002.\u003c\/p\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003ci\u003eList of Figures  xi\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e\u003ci\u003eList of Stories  xvii\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e\u003ci\u003ePreface  xxi\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e\u003ci\u003ePreface to Second Edition  xxxi\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003e0          Unknowable and Incommunicable  1\u003c\/p\u003e \u003cp\u003e0.1       Unknowable and Incommunicable: Evolution  21\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eChapter 1        A Cooperative Game of Invention and Communication  27\u003c\/p\u003e \u003cp\u003eChapter 1.1     A Cooperative Game of  Invention and Communication: Evolution  47\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eChapter 2        Individuals  65\u003c\/p\u003e \u003cp\u003eChapter 2.1     Individuals: Evolution  99\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eChapter 3        Communication, Cooperating Teams  105\u003c\/p\u003e \u003cp\u003eChapter 3.1     Teams: Evolution  143\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eChapter 4        Methodologies  147\u003c\/p\u003e \u003cp\u003eChapter 4.1     Methodologies: Evolution  207\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eChapter 5        Agile and Self-Adapting  217\u003c\/p\u003e \u003cp\u003eChapter 5.1     Agile and Self-Adapting: Evolution  241\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eChapter 6        The Crystal Methodologies  335\u003c\/p\u003e \u003cp\u003eChapter 6.1     The Crystal Methodologies: Evolution  351\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003eAppendix A      The Agile Software Development Manifesto  367\u003c\/p\u003e \u003cp\u003eAppendix A.1   The Agile Software Development Manifesto and the Declaration of Interdependence  379\u003c\/p\u003e \u003cp\u003eAppendix B      Naur, Ehn, Musashi  391\u003c\/p\u003e \u003cp\u003eAppendix B.1   Naur, Ehn, Musashi: Evolution  427\u003c\/p\u003e \u003cp\u003eAppendix C      Afterword  431\u003c\/p\u003e \u003cp\u003eAppendix D      Books and References  437\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003e\u003ci\u003eIndex  453\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":49371673231703,"sku":"9780321482754","price":40.04,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780321482754.jpg?v=1730154148"},{"product_id":"growing-objectoriented-software-guided-by-tests-9780321503626","title":"Growing ObjectOriented Software Guided by Tests","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003e\u003ci\u003eForeword     xv\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e\u003ci\u003ePreface     xvii\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e\u003ci\u003eAcknowledgments     xxi\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e\u003ci\u003eAbout the Authors     xxiii\u003c\/i\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART I: INTRODUCTION     1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: What Is the Point of Test-Driven Development?     3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSoftware Development as a Learning Process     3\u003c\/p\u003e \u003cp\u003eFeedback Is the Fundamental Tool     4\u003c\/p\u003e \u003cp\u003ePractices That Support Change     5\u003c\/p\u003e \u003cp\u003eTest-Driven Development in a Nutshell     6\u003c\/p\u003e \u003cp\u003eThe Bigger Picture     7\u003c\/p\u003e \u003cp\u003eTesting End-to-End     8\u003c\/p\u003e \u003cp\u003eLevels of Testing     9\u003c\/p\u003e \u003cp\u003eExternal and Internal Quality     10\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Test-Driven Development with Objects     13\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA Web of Objects     13\u003c\/p\u003e \u003cp\u003eValues and Objects     13\u003c\/p\u003e \u003cp\u003eFollow the Messages     14\u003c\/p\u003e \u003cp\u003eTell, Don’t Ask     17\u003c\/p\u003e \u003cp\u003eBut Sometimes Ask     17\u003c\/p\u003e \u003cp\u003eUnit-Testing the Collaborating Objects     18\u003c\/p\u003e \u003cp\u003eSupport for TDD with Mock     19\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: An Introduction to the Tools     21\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eStop Me If You’ve Heard This One Before     21\u003c\/p\u003e \u003cp\u003eA Minimal Introduction to JUnit 4     21\u003c\/p\u003e \u003cp\u003eHamcrest Matchers and assertThat()     24\u003c\/p\u003e \u003cp\u003ejMock2: Mock Objects     25\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART II: THE PROCESS OF TEST-DRIVEN DEVELOPMENT     29\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Kick-Starting the Test-Driven Cycle     31\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     31\u003c\/p\u003e \u003cp\u003eFirst, Test a Walking Skeleton     32\u003c\/p\u003e \u003cp\u003eDeciding the Shape of the Walking Skeleton     33\u003c\/p\u003e \u003cp\u003eBuild Sources of Feedback     35\u003c\/p\u003e \u003cp\u003eExpose Uncertainty Early     36\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Maintaining the Test-Driven Cycle     39\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     39\u003c\/p\u003e \u003cp\u003eStart Each Feature with an Acceptance Test     39\u003c\/p\u003e \u003cp\u003eSeparate Tests That Measure Progress from Those That Catch Regressions     40\u003c\/p\u003e \u003cp\u003eStart Testing with the Simplest Success Case     41\u003c\/p\u003e \u003cp\u003eWrite the Test That You’d Want to Read     42\u003c\/p\u003e \u003cp\u003eWatch the Test Fail     42\u003c\/p\u003e \u003cp\u003eDevelop from the Inputs to the Outputs     43\u003c\/p\u003e \u003cp\u003eUnit-Test Behavior, Not Methods     43\u003c\/p\u003e \u003cp\u003eListen to the Tests     44\u003c\/p\u003e \u003cp\u003eTuning the Cycle     45\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: Object-Oriented Style     47\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     47\u003c\/p\u003e \u003cp\u003eDesigning for Maintainability     47\u003c\/p\u003e \u003cp\u003eInternals vs. Peers     50\u003c\/p\u003e \u003cp\u003eNo And’s, Or’s, or But’s     51\u003c\/p\u003e \u003cp\u003eObject Peer Stereotypes     52\u003c\/p\u003e \u003cp\u003eComposite Simpler Than the Sum of Its Parts     53\u003c\/p\u003e \u003cp\u003eContext Independence     54\u003c\/p\u003e \u003cp\u003eHiding the Right Information     55\u003c\/p\u003e \u003cp\u003eAn Opinionated View     56\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: Achieving Object-Oriented Design     57\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eHow Writing a Test First Helps the Design     57\u003c\/p\u003e \u003cp\u003eCommunication over Classification     58\u003c\/p\u003e \u003cp\u003eValue Types     59\u003c\/p\u003e \u003cp\u003eWhere Do Objects Come From?     60\u003c\/p\u003e \u003cp\u003eIdentify Relationships with Interfaces     63\u003c\/p\u003e \u003cp\u003eRefactor Interfaces Too     63\u003c\/p\u003e \u003cp\u003eCompose Objects to Describe System Behavior     64\u003c\/p\u003e \u003cp\u003eBuilding Up to Higher-Level Programming     65\u003c\/p\u003e \u003cp\u003eAnd What about Classes?     67\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8: Building on Third-Party Code     69\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     69\u003c\/p\u003e \u003cp\u003eOnly Mock Types That You Own     69\u003c\/p\u003e \u003cp\u003eMock Application Objects in Integration Tests     71\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART III: A WORKED EXAMPLE     73\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9: Commissioning an Auction Sniper     75\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTo Begin at the Beginning     75\u003c\/p\u003e \u003cp\u003eCommunicating with an Auction     78\u003c\/p\u003e \u003cp\u003eGetting There Safely     79\u003c\/p\u003e \u003cp\u003eThis Isn’t Real     81\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10: The Walking Skeleton     83\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGet the Skeleton out of the Closet     83\u003c\/p\u003e \u003cp\u003eOur Very First Test     84\u003c\/p\u003e \u003cp\u003eSome Initial Choices     86\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11: Passing the First Test     89\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBuilding the Test Rig     89\u003c\/p\u003e \u003cp\u003eFailing and Passing the Test     95\u003c\/p\u003e \u003cp\u003eThe Necessary Minimum     102\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12: Getting Ready to Bid     105\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAn Introduction to the Market     105\u003c\/p\u003e \u003cp\u003eA Test for Bidding     106\u003c\/p\u003e \u003cp\u003eThe AuctionMessageTranslator     112\u003c\/p\u003e \u003cp\u003eUnpacking a Price Message     118\u003c\/p\u003e \u003cp\u003eFinish the Job     121\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13: The Sniper Makes a Bid     123\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing AuctionSniper     123\u003c\/p\u003e \u003cp\u003eSending a Bid     126\u003c\/p\u003e \u003cp\u003eTidying Up the Implementation     131\u003c\/p\u003e \u003cp\u003eDefer Decisions     136\u003c\/p\u003e \u003cp\u003eEmergent Design     137\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14: The Sniper Wins the Auction     139\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFirst, a Failing Test     139\u003c\/p\u003e \u003cp\u003eWho Knows about Bidders?     140\u003c\/p\u003e \u003cp\u003eThe Sniper Has More to Say     143\u003c\/p\u003e \u003cp\u003eThe Sniper Acquires Some State     144\u003c\/p\u003e \u003cp\u003eThe Sniper Wins     146\u003c\/p\u003e \u003cp\u003eMaking Steady Progress     148\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 15: Towards a Real User Interface     149\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA More Realistic Implementation     149\u003c\/p\u003e \u003cp\u003eDisplaying Price Details     152\u003c\/p\u003e \u003cp\u003eSimplifying Sniper Events     159\u003c\/p\u003e \u003cp\u003eFollow Through     164\u003c\/p\u003e \u003cp\u003eFinal Polish     168\u003c\/p\u003e \u003cp\u003eObservations     171\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 16: Sniping for Multiple Items     175\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eTesting for Multiple Items     175\u003c\/p\u003e \u003cp\u003eAdding Items through the User Interface     183\u003c\/p\u003e \u003cp\u003eObservations     189\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 17: Teasing Apart Main     191\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eFinding a Role     191\u003c\/p\u003e \u003cp\u003eExtracting the Chat     192\u003c\/p\u003e \u003cp\u003eExtracting the Connection     195\u003c\/p\u003e \u003cp\u003eExtracting the SnipersTableModel     197\u003c\/p\u003e \u003cp\u003eObservations     201\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 18: Filling In the Details     205\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA More Useful Application     205\u003c\/p\u003e \u003cp\u003eStop When We’ve Had Enough     205\u003c\/p\u003e \u003cp\u003eObservations     212\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 19: Handling Failure     215\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat If It Doesn’t Work?     215\u003c\/p\u003e \u003cp\u003eDetecting the Failure     217\u003c\/p\u003e \u003cp\u003eDisplaying the Failure     218\u003c\/p\u003e \u003cp\u003eDisconnecting the Sniper     219\u003c\/p\u003e \u003cp\u003eRecording the Failure     221\u003c\/p\u003e \u003cp\u003eObservations     225\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART IV: SUSTAINABLE TEST-DRIVEN DEVELOPMENT     227\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 20: Listening to the Tests     229\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     229\u003c\/p\u003e \u003cp\u003eI Need to Mock an Object I Can’t Replace (without Magic)     230\u003c\/p\u003e \u003cp\u003eLogging Is a Feature     233\u003c\/p\u003e \u003cp\u003eMocking Concrete Classes     235\u003c\/p\u003e \u003cp\u003eDon’t Mock Values     237\u003c\/p\u003e \u003cp\u003eBloated Constructor     238\u003c\/p\u003e \u003cp\u003eConfused Object     240\u003c\/p\u003e \u003cp\u003eToo Many Dependencies     241\u003c\/p\u003e \u003cp\u003eToo Many Expectations     242\u003c\/p\u003e \u003cp\u003eWhat the Tests Will Tell Us (If We’re Listening)     244\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 21: Test Readability     247\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     247\u003c\/p\u003e \u003cp\u003eTest Names Describe Features     248\u003c\/p\u003e \u003cp\u003eCanonical Test Structure     251\u003c\/p\u003e \u003cp\u003eStreamline the Test Code     252\u003c\/p\u003e \u003cp\u003eAssertions and Expectations     254\u003c\/p\u003e \u003cp\u003eLiterals and Variables     255\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 22: Constructing Complex Test Data     257\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     257\u003c\/p\u003e \u003cp\u003eTest Data Builders     258\u003c\/p\u003e \u003cp\u003eCreating Similar Objects     259\u003c\/p\u003e \u003cp\u003eCombining Builders     261\u003c\/p\u003e \u003cp\u003eEmphasizing the Domain Model with Factory Methods     261\u003c\/p\u003e \u003cp\u003eRemoving Duplication at the Point of Use     262\u003c\/p\u003e \u003cp\u003eCommunication First     264\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 23: Test Diagnostics     267\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDesign to Fail     267\u003c\/p\u003e \u003cp\u003eSmall, Focused, Well-Named Tests     268\u003c\/p\u003e \u003cp\u003eExplanatory Assertion Messages     268\u003c\/p\u003e \u003cp\u003eHighlight Detail with Matchers     268\u003c\/p\u003e \u003cp\u003eSelf-Describing Value     269\u003c\/p\u003e \u003cp\u003eObviously Canned Value     270\u003c\/p\u003e \u003cp\u003eTracer Object     270\u003c\/p\u003e \u003cp\u003eExplicitly Assert That Expectations Were Satisfied     271\u003c\/p\u003e \u003cp\u003eDiagnostics Are a First-Class Feature     271\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 24: Test Flexibility     273\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     273\u003c\/p\u003e \u003cp\u003eTest for Information, Not Representation     274\u003c\/p\u003e \u003cp\u003ePrecise Assertions     275\u003c\/p\u003e \u003cp\u003ePrecise Expectations     277\u003c\/p\u003e \u003cp\u003e“Guinea Pig” Objects     284\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePART V: ADVANCED TOPICS     287\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 25: Testing Persistence     289\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     289\u003c\/p\u003e \u003cp\u003eIsolate Tests That Affect Persistent State     290\u003c\/p\u003e \u003cp\u003eMake Tests Transaction Boundaries Explicit     292\u003c\/p\u003e \u003cp\u003eTesting an Object That Performs Persistence Operations     294\u003c\/p\u003e \u003cp\u003eTesting That Objects Can Be Persisted     297\u003c\/p\u003e \u003cp\u003eBut Database Tests Are S-l-o-w!     300\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 26: Unit Testing and Threads     301\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     301\u003c\/p\u003e \u003cp\u003eSeparating Functionality and Concurrency Policy     302\u003c\/p\u003e \u003cp\u003eUnit-Testing Synchronization     306\u003c\/p\u003e \u003cp\u003eStress-Testing Passive Objects     311\u003c\/p\u003e \u003cp\u003eSynchronizing the Test Thread with Background Threads     312\u003c\/p\u003e \u003cp\u003eThe Limitations of Unit Stress Tests     313\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 27: Testing Asynchronous Code     315\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction     315\u003c\/p\u003e \u003cp\u003eSampling or Listening     316\u003c\/p\u003e \u003cp\u003eTwo Implementations     318\u003c\/p\u003e \u003cp\u003eRunaway Tests     322\u003c\/p\u003e \u003cp\u003eLost Updates     323\u003c\/p\u003e \u003cp\u003eTesting That an Action Has No Effect     325\u003c\/p\u003e \u003cp\u003eDistinguish Synchronizations and Assertions     326\u003c\/p\u003e \u003cp\u003eExternalize Event Sources     326\u003c\/p\u003e \u003cp\u003e\u003cb\u003e \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAfterword: A Brief History of Mock Objects     329\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A: jMock2 Cheat Sheet     335\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B: Writing a Hamcrest Matcher     343\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eBibliography     347\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eIndex     349\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e \u003c\/p\u003e","brand":"Pearson Education (US)","offers":[{"title":"Default Title","offer_id":49401728762199,"sku":"9780321503626","price":40.04,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780321503626.jpg?v=1730478346"},{"product_id":"data-structures-and-algorithms-with-objectoriented-design-patterns-in-c-9780471241348","title":"Data Structures and Algorithms with","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eAn object-oriented learning framework for creating good software design.   Bruno Preiss presents readers with a modern, object-oriented perspective for looking at data structures and algorithms, clearly showing how to use polymorphism and inheritance, and including fragments from working and tested programs.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003eAlgorithm Analysis.\u003cbr\u003e \u003cbr\u003e Asymptotic Notation.\u003cbr\u003e \u003cbr\u003e Foundational Data Structures.\u003cbr\u003e \u003cbr\u003e Data Types and Abstraction.\u003cbr\u003e \u003cbr\u003e Stacks, Queues and Deques.\u003cbr\u003e \u003cbr\u003e Ordered Lists and Sorted Lists.\u003cbr\u003e \u003cbr\u003e Hashing, Hash Tables and Scatter Tables.\u003cbr\u003e \u003cbr\u003e Trees.\u003cbr\u003e \u003cbr\u003e Search Trees.\u003cbr\u003e \u003cbr\u003e Heaps and Priority Queues.\u003cbr\u003e \u003cbr\u003e Sets, Multisets and Partitions.\u003cbr\u003e \u003cbr\u003e Dynamic Storage Allocation.\u003cbr\u003e \u003cbr\u003e Algorithmic Patterns and Problem Solvers.\u003cbr\u003e \u003cbr\u003e Sorting Algorithms and Sorters.\u003cbr\u003e \u003cbr\u003e Graphs and Graph Algorithms.\u003cbr\u003e \u003cbr\u003e Appendices.\u003cbr\u003e \u003cbr\u003e Index.","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":49402533937495,"sku":"9780471241348","price":180.86,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780471241348.jpg?v=1730480699"},{"product_id":"programming-with-objects-9780471268529","title":"Programming with Objects","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cb\u003ePROGRAMMING WITH OBJECTS\u003c\/b\u003e \u003cp\u003e\u003cb\u003eYour essential comparative approach to learning C++ and Java\u003c\/b\u003e \u003c\/p\u003e\u003cp\u003e\u003ci\u003eProgramming with Objects: A Comparative Presentation of Object-Oriented Programming with C++ and Java\u003c\/i\u003e, a comparative presentation of object-oriented programming with two of the most popular programming languages of today, teaches vital skills and techniques for the Internet age. Based on highly successful courses taught by the author, this book answers the need for a comprehensive educational program on the subject of object-oriented programming. In a clear and accessible format, the author compares and contrasts both languages, from basic language constructs to how both languages are used in application-level programming, such as graphics programming, network programming, and database programming. \u003c\/p\u003e\u003cp\u003eSince both C++ and Java were born out of the same language, C, learning these two languages together has several distinct advantages: \u003c\/p\u003e\u003cul\u003e\u003cli\u003eBecause they have much in common a\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTrade Review\u003c\/b\u003e\u003cbr\u003e\"...a wonderful volume...a very worthwhile read...essential...\" (\u003ci\u003eChoice\u003c\/i\u003e, September 2003)\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003eWhy OO Programming - Some Parallels with Things at Large.  \u003cp\u003eBaby Steps.\u003c\/p\u003e \u003cp\u003eThe Notion of a Class and Some Other Key Ideas.\u003c\/p\u003e \u003cp\u003eStrings.\u003c\/p\u003e \u003cp\u003eUsing the Container Classes.\u003c\/p\u003e \u003cp\u003eThe Primitive Types and Their Input\/Output.\u003c\/p\u003e \u003cp\u003eDeclarations, Definitions, and Initializations.\u003c\/p\u003e \u003cp\u003eObject Reference and Memory Allocation.\u003c\/p\u003e \u003cp\u003eFunctions and Methods.\u003c\/p\u003e \u003cp\u003eHandling Exceptions.\u003c\/p\u003e \u003cp\u003eClasses, The Rest of the Story.\u003c\/p\u003e \u003cp\u003eOverloading Operators in C++.\u003c\/p\u003e \u003cp\u003eGenerics and Templates.\u003c\/p\u003e \u003cp\u003eModeling Diagrams for OO Programs.\u003c\/p\u003e \u003cp\u003eExtending Classes.\u003c\/p\u003e \u003cp\u003eMultiple Inheritance in C++.\u003c\/p\u003e \u003cp\u003eOO for Graphical User Interfaces, A Tour of Three Toolkits.\u003c\/p\u003e \u003cp\u003eMultithreaded Object-Oriented Programming.\u003c\/p\u003e \u003cp\u003eNetwork Programming.\u003c\/p\u003e \u003cp\u003eDatabase Programming.\u003c\/p\u003e\n\u003c\/li\u003e\u003c\/ul\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":49402547765591,"sku":"9780471268529","price":99.86,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780471268529.jpg?v=1730480719"},{"product_id":"objectoriented-simulation-9780780310612","title":"ObjectOriented Simulation","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003eThe second part of a yearly series on simulation technology, OBJECT-ORIENTED SIMULATION presents an outstanding variety of the very latest advances in simulation techniques. This leading-edge volume contains a cohesive selection of presentations written by the world-renowned experts in a broad range of topics. OBJECT-ORIENTED SIMULATION is a key resource for anyone involved in computer simulator research and design as well as developers, producers, scholars, and managers. It is an excellent tool for preparing proposals for simulation in commercial and military fields.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003ePreface.\u003cbr\u003e \u003cbr\u003e Object-Oriented Simulation and Operas (G. Yeh, et al.).\u003cbr\u003e \u003cbr\u003e Object-Oriented Simulation Languages and Environments: AFour-Level Architecture (J. Miller, et al.).\u003cbr\u003e \u003cbr\u003e The Object Flow Model for Object-Oriented Simulation andDatabase Application Modeling (L. Pollacia and L. Delcambre).\u003cbr\u003e \u003cbr\u003e Reusable Simulation Models in an Object-Oriented Framework (T. Kim and M. Ahn).\u003cbr\u003e \u003cbr\u003e Object-Oriented Frameworks for Multilevel Simulation Modeling (D. Popken and A. Sinha).\u003cbr\u003e \u003cbr\u003e Design Strategies for Object-Oriented Simulation Testbeds that Support Software Integration (M. Hilton and C. Anken).\u003cbr\u003e \u003cbr\u003e Automation of Transformation Schemas for Object-OrientedSimulations (C. Coomber).\u003cbr\u003e \u003cbr\u003e Steps to an Ecology of Actor Simulation (A. Senteni).\u003cbr\u003e \u003cbr\u003e Key Words.\u003cbr\u003e \u003cbr\u003e About the Editors.","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":49404987375959,"sku":"9780780310612","price":159.26,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9780780310612.jpg?v=1730488293"}],"url":"https:\/\/bookcurl.com\/collections\/object-oriented-programming-oop.oembed?page=5","provider":"Book Curl","version":"1.0","type":"link"}