{"product_id":"brief-java-9781119740193","title":"Brief Java","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003ePreface v\u003c\/p\u003e \u003cp\u003eSpecial Features xxvi\u003c\/p\u003e \u003cp\u003e\u003cb\u003eIntroduction 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 Computer Programs 2\u003c\/p\u003e \u003cp\u003e1.2 The Anatomy of a Computer 3\u003c\/p\u003e \u003cp\u003e1.3 The Java Programming Language 5\u003c\/p\u003e \u003cp\u003e1.4 Becoming Familiar with Your Programming Environment 7\u003c\/p\u003e \u003cp\u003e1.5 Analyzing Your First Program 11\u003c\/p\u003e \u003cp\u003e1.6 Errors 13\u003c\/p\u003e \u003cp\u003e1.7 PROBLEM SOLVING Algorithm Design 15\u003c\/p\u003e \u003cp\u003eThe Algorithm Concept 15\u003c\/p\u003e \u003cp\u003eAn Algorithm for Solving an Investment Problem 16\u003c\/p\u003e \u003cp\u003ePseudocode 17\u003c\/p\u003e \u003cp\u003eFrom Algorithms to Programs 18\u003c\/p\u003e \u003cp\u003eHT 1 Describing an Algorithm with Pseudocode 18\u003c\/p\u003e \u003cp\u003eWE 1 Writing an Algorithm for Tiling a Floor 20\u003c\/p\u003e \u003cp\u003eUsing Objects 23\u003c\/p\u003e \u003cp\u003e2.1 Objects and Classes 24\u003c\/p\u003e \u003cp\u003eUsing Objects 24\u003c\/p\u003e \u003cp\u003eClasses 25\u003c\/p\u003e \u003cp\u003e2.2 Variables 26\u003c\/p\u003e \u003cp\u003eVariable Declarations 26\u003c\/p\u003e \u003cp\u003eTypes 28\u003c\/p\u003e \u003cp\u003eNames 29\u003c\/p\u003e \u003cp\u003eComments 30\u003c\/p\u003e \u003cp\u003eAssignment 30\u003c\/p\u003e \u003cp\u003eST 1 Variable Type Inference 33\u003c\/p\u003e \u003cp\u003e2.3 Calling Methods 33\u003c\/p\u003e \u003cp\u003eThe Public Interface of a Class 33\u003c\/p\u003e \u003cp\u003eMethod Arguments 34\u003c\/p\u003e \u003cp\u003eReturn Values 35\u003c\/p\u003e \u003cp\u003eMethod Declarations 36\u003c\/p\u003e \u003cp\u003e2.4 Constructing Objects 38\u003c\/p\u003e \u003cp\u003e2.5 Accessor and Mutator Methods 40\u003c\/p\u003e \u003cp\u003e2.6 The API Documentation 41\u003c\/p\u003e \u003cp\u003eBrowsing the API Documentation 41\u003c\/p\u003e \u003cp\u003ePackages 43\u003c\/p\u003e \u003cp\u003e2.7 Implementing a Test Program 44\u003c\/p\u003e \u003cp\u003eST 2 Testing Classes in an Interactive Environment 45\u003c\/p\u003e \u003cp\u003eWE 1 How Many Days Have You Been Alive? 46\u003c\/p\u003e \u003cp\u003eWE 2 Working with Pictures 46\u003c\/p\u003e \u003cp\u003e2.8 Object References 46\u003c\/p\u003e \u003cp\u003e2.9 Graphical Applications 49\u003c\/p\u003e \u003cp\u003eFrame Windows 50\u003c\/p\u003e \u003cp\u003eDrawing on a Component 51\u003c\/p\u003e \u003cp\u003eDisplaying a Component in a Frame 53\u003c\/p\u003e \u003cp\u003e2.10 Ellipses, Lines, Text, and Color 54\u003c\/p\u003e \u003cp\u003eEllipses and Circles 54\u003c\/p\u003e \u003cp\u003eLines 55\u003c\/p\u003e \u003cp\u003eDrawing Text 56\u003c\/p\u003e \u003cp\u003eColors 56\u003c\/p\u003e \u003cp\u003eImplementing Classes 61\u003c\/p\u003e \u003cp\u003e3.1 Instance Variables and Encapsulation 62\u003c\/p\u003e \u003cp\u003eInstance Variables 62\u003c\/p\u003e \u003cp\u003eThe Methods of the Counter Class 64\u003c\/p\u003e \u003cp\u003eEncapsulation 64\u003c\/p\u003e \u003cp\u003e3.2 Specifying the Public Interface of a Class 66\u003c\/p\u003e \u003cp\u003eSpecifying Methods 66\u003c\/p\u003e \u003cp\u003eSpecifying Constructors 67\u003c\/p\u003e \u003cp\u003eUsing the Public Interface 69\u003c\/p\u003e \u003cp\u003eCommenting the Public Interface 69\u003c\/p\u003e \u003cp\u003e3.3 Providing the Class Implementation 72\u003c\/p\u003e \u003cp\u003eProviding Instance Variables 72\u003c\/p\u003e \u003cp\u003eProviding Constructors 73\u003c\/p\u003e \u003cp\u003eProviding Methods 75\u003c\/p\u003e \u003cp\u003eHT 1 Implementing a Class 78\u003c\/p\u003e \u003cp\u003eWE 1 Making a Simple Menu 81\u003c\/p\u003e \u003cp\u003e3.4 Unit Testing 81\u003c\/p\u003e \u003cp\u003e3.5 PROBLEM SOLVING Tracing Objects 84\u003c\/p\u003e \u003cp\u003e3.6 Local Variables 86\u003c\/p\u003e \u003cp\u003e3.7 The this Reference 88\u003c\/p\u003e \u003cp\u003eST 1 Calling One Constructor from Another 90\u003c\/p\u003e \u003cp\u003e3.8 Shape Classes 90\u003c\/p\u003e \u003cp\u003eHT 2 Drawing Graphical Shapes 94\u003c\/p\u003e \u003cp\u003eFundamental Data Types 99\u003c\/p\u003e \u003cp\u003e4.1 Numbers 100\u003c\/p\u003e \u003cp\u003eNumber Types 100\u003c\/p\u003e \u003cp\u003eConstants 102\u003c\/p\u003e \u003cp\u003eST 1 Big Numbers 106\u003c\/p\u003e \u003cp\u003e4.2 Arithmetic 107\u003c\/p\u003e \u003cp\u003eArithmetic Operators 107\u003c\/p\u003e \u003cp\u003eIncrement and Decrement 107\u003c\/p\u003e \u003cp\u003eInteger Division and Remainder 108\u003c\/p\u003e \u003cp\u003ePowers and Roots 109\u003c\/p\u003e \u003cp\u003eConverting Floating-Point Numbers to Integers 110\u003c\/p\u003e \u003cp\u003eST 2 Avoiding Negative Remainders 112\u003c\/p\u003e \u003cp\u003eST 3 Combining Assignment and Arithmetic 113\u003c\/p\u003e \u003cp\u003eST 4 Instance Methods and Static Methods 113\u003c\/p\u003e \u003cp\u003e4.3 Input and Output 114\u003c\/p\u003e \u003cp\u003eReading Input 114\u003c\/p\u003e \u003cp\u003eFormatted Output 115\u003c\/p\u003e \u003cp\u003eHT 1 Carrying Out Computations 118\u003c\/p\u003e \u003cp\u003eWE 1 Computing the Volume and Surface Area of a Pyramid 121\u003c\/p\u003e \u003cp\u003e4.4 PROBLEM SOLVING First Do it By Hand 121\u003c\/p\u003e \u003cp\u003eWE 2 Computing Travel Time 122\u003c\/p\u003e \u003cp\u003e4.5 Strings 122\u003c\/p\u003e \u003cp\u003eThe String Type 122\u003c\/p\u003e \u003cp\u003eConcatenation 123\u003c\/p\u003e \u003cp\u003eString Input 124\u003c\/p\u003e \u003cp\u003eEscape Sequences 124\u003c\/p\u003e \u003cp\u003eStrings and Characters 124\u003c\/p\u003e \u003cp\u003eSubstrings 125\u003c\/p\u003e \u003cp\u003eST 5 Using Dialog Boxes for Input and Output 128\u003c\/p\u003e \u003cp\u003eDecisions 131\u003c\/p\u003e \u003cp\u003e5.1 The if Statement 132\u003c\/p\u003e \u003cp\u003eST 1 The Conditional Operator 137\u003c\/p\u003e \u003cp\u003e5.2 Comparing Values 137\u003c\/p\u003e \u003cp\u003eRelational Operators 138\u003c\/p\u003e \u003cp\u003eComparing Floating-Point Numbers 139\u003c\/p\u003e \u003cp\u003eComparing Strings 140\u003c\/p\u003e \u003cp\u003eComparing Objects 141\u003c\/p\u003e \u003cp\u003eTesting for null 141\u003c\/p\u003e \u003cp\u003eHT 1 Implementing an if Statement 143\u003c\/p\u003e \u003cp\u003eWE 1 Extracting the Middle 146\u003c\/p\u003e \u003cp\u003e5.3 Multiple Alternatives 146\u003c\/p\u003e \u003cp\u003eST 2 The switch Statement 148\u003c\/p\u003e \u003cp\u003e5.4 Nested Branches 149\u003c\/p\u003e \u003cp\u003eST 3 Block Scope 154\u003c\/p\u003e \u003cp\u003eST 4 Enumeration Types 155\u003c\/p\u003e \u003cp\u003e5.5 PROBLEM SOLVING Flowcharts 156\u003c\/p\u003e \u003cp\u003e5.6 PROBLEM SOLVING Selecting Test Cases 159\u003c\/p\u003e \u003cp\u003eST 5 Logging 161\u003c\/p\u003e \u003cp\u003e5.7 Boolean Variables and Operators 161\u003c\/p\u003e \u003cp\u003eST 6 Short-Circuit Evaluation of Boolean Operators 165\u003c\/p\u003e \u003cp\u003eST 7 De Morgan’s Law 165\u003c\/p\u003e \u003cp\u003e5.8 APPLICATION Input Validation 166\u003c\/p\u003e \u003cp\u003eLoops 171\u003c\/p\u003e \u003cp\u003e6.1 The while Loop 172\u003c\/p\u003e \u003cp\u003e6.2 PROBLEM SOLVING Hand-Tracing 179\u003c\/p\u003e \u003cp\u003e6.3 The for Loop 183\u003c\/p\u003e \u003cp\u003eST 1 Variables Declared in a for Loop Header 189\u003c\/p\u003e \u003cp\u003e6.4 The do Loop 190\u003c\/p\u003e \u003cp\u003e6.5 APPLICATION Processing Sentinel Values 192\u003c\/p\u003e \u003cp\u003eST 2 Redirection of Input and Output 194\u003c\/p\u003e \u003cp\u003eST 3 The “Loop and a Half” Problem 194\u003c\/p\u003e \u003cp\u003eST 4 The break and continue Statements 195\u003c\/p\u003e \u003cp\u003e6.6 PROBLEM SOLVING Storyboards 197\u003c\/p\u003e \u003cp\u003e6.7 Common Loop Algorithms 199\u003c\/p\u003e \u003cp\u003eSum and Average Value 199\u003c\/p\u003e \u003cp\u003eCounting Matches 200\u003c\/p\u003e \u003cp\u003eFinding the First Match 200\u003c\/p\u003e \u003cp\u003ePrompting Until a Match is Found 201\u003c\/p\u003e \u003cp\u003eMaximum and Minimum 201\u003c\/p\u003e \u003cp\u003eComparing Adjacent Values 202\u003c\/p\u003e \u003cp\u003eHT 1 Writing a Loop 203\u003c\/p\u003e \u003cp\u003eWE 1 Credit Card Processing 206\u003c\/p\u003e \u003cp\u003e6.8 Nested Loops 206\u003c\/p\u003e \u003cp\u003eWE 2 Manipulating the Pixels in an Image 209\u003c\/p\u003e \u003cp\u003e6.9 APPLICATION Random Numbers and Simulations 209\u003c\/p\u003e \u003cp\u003eGenerating Random Numbers 210\u003c\/p\u003e \u003cp\u003eThe Monte Carlo Method 211\u003c\/p\u003e \u003cp\u003e6.10 Using a Debugger 213\u003c\/p\u003e \u003cp\u003eHT 2 Debugging 215\u003c\/p\u003e \u003cp\u003eWE 3 A Sample Debugging Session 217\u003c\/p\u003e \u003cp\u003eArrays and Array Lists 221\u003c\/p\u003e \u003cp\u003e7.1 Arrays 222\u003c\/p\u003e \u003cp\u003eDeclaring and Using Arrays 222\u003c\/p\u003e \u003cp\u003eArray References 225\u003c\/p\u003e \u003cp\u003eUsing Arrays with Methods 226\u003c\/p\u003e \u003cp\u003ePartially Filled Arrays 226\u003c\/p\u003e \u003cp\u003eST 1 Methods with a Variable Number of Arguments 229\u003c\/p\u003e \u003cp\u003e7.2 The Enhanced for Loop 230\u003c\/p\u003e \u003cp\u003e7.3 Common Array Algorithms 232\u003c\/p\u003e \u003cp\u003eFilling 232\u003c\/p\u003e \u003cp\u003eSum and Average Value 232\u003c\/p\u003e \u003cp\u003eMaximum and Minimum 232\u003c\/p\u003e \u003cp\u003eElement Separators 232\u003c\/p\u003e \u003cp\u003eLinear Search 233\u003c\/p\u003e \u003cp\u003eRemoving an Element 234\u003c\/p\u003e \u003cp\u003eInserting an Element 234\u003c\/p\u003e \u003cp\u003eSwapping Elements 236\u003c\/p\u003e \u003cp\u003eCopying Arrays 237\u003c\/p\u003e \u003cp\u003eReading Input 238\u003c\/p\u003e \u003cp\u003eST 2 Sorting with the Java Library 240\u003c\/p\u003e \u003cp\u003e7.4 PROBLEM SOLVING Adapting Algorithms 240\u003c\/p\u003e \u003cp\u003eHT 1 Working with Arrays 242\u003c\/p\u003e \u003cp\u003eWE 1 Rolling the Dice 245\u003c\/p\u003e \u003cp\u003e7.5 PROBLEM SOLVING Discovering Algorithms by Manipulating Physical Objects 245\u003c\/p\u003e \u003cp\u003e7.6 Two-Dimensional Arrays 248\u003c\/p\u003e \u003cp\u003eDeclaring Two-Dimensional Arrays 248\u003c\/p\u003e \u003cp\u003eAccessing Elements 249\u003c\/p\u003e \u003cp\u003eLocating Neighboring Elements 250\u003c\/p\u003e \u003cp\u003eAccessing Rows and Columns 251\u003c\/p\u003e \u003cp\u003eTwo-Dimensional Array Parameters 252\u003c\/p\u003e \u003cp\u003eWE 2 A World Population Table 253\u003c\/p\u003e \u003cp\u003eST 3 Two-Dimensional Arrays with Variable Row Lengths 254\u003c\/p\u003e \u003cp\u003eST 4 Multidimensional Arrays 255\u003c\/p\u003e \u003cp\u003e7.7 Array Lists 255\u003c\/p\u003e \u003cp\u003eDeclaring and Using Array Lists 255\u003c\/p\u003e \u003cp\u003eUsing the Enhanced for Loop with Array Lists 258\u003c\/p\u003e \u003cp\u003eCopying Array Lists 259\u003c\/p\u003e \u003cp\u003eWrappers and Auto-boxing 259\u003c\/p\u003e \u003cp\u003eUsing Array Algorithms with Array Lists 260\u003c\/p\u003e \u003cp\u003eStoring Input Values in an Array List 261\u003c\/p\u003e \u003cp\u003eRemoving Matches 261\u003c\/p\u003e \u003cp\u003eChoosing Between Array Lists and Arrays 262\u003c\/p\u003e \u003cp\u003eST 5 The Diamond Syntax 264\u003c\/p\u003e \u003cp\u003e7.8 Regression Testing 264\u003c\/p\u003e \u003cp\u003eDesigning Classes 271\u003c\/p\u003e \u003cp\u003e8.1 Discovering Classes 272\u003c\/p\u003e \u003cp\u003e8.2 Designing Good Methods 273\u003c\/p\u003e \u003cp\u003eProviding a Cohesive Public Interface 273\u003c\/p\u003e \u003cp\u003eMinimizing Dependencies 274\u003c\/p\u003e \u003cp\u003eSeparating Accessors and Mutators 275\u003c\/p\u003e \u003cp\u003eMinimizing Side Effects 276\u003c\/p\u003e \u003cp\u003eST 1 Call by Value and Call by Reference 278\u003c\/p\u003e \u003cp\u003e8.3 PROBLEM SOLVING Patterns for Object Data 282\u003c\/p\u003e \u003cp\u003eKeeping a Total 282\u003c\/p\u003e \u003cp\u003eCounting Events 283\u003c\/p\u003e \u003cp\u003eCollecting Values 283\u003c\/p\u003e \u003cp\u003eManaging Properties of an Object 284\u003c\/p\u003e \u003cp\u003eModeling Objects with Distinct States 284\u003c\/p\u003e \u003cp\u003eDescribing the Position of an Object 285\u003c\/p\u003e \u003cp\u003e8.4 Static Variables and Methods 286\u003c\/p\u003e \u003cp\u003eST 2 Alternative Forms of Instance and Static Variable Initialization 289\u003c\/p\u003e \u003cp\u003eST 3 Static Imports 290\u003c\/p\u003e \u003cp\u003e8.5 PROBLEM SOLVING Solve a Simpler Problem First 291\u003c\/p\u003e \u003cp\u003e8.6 Packages 295\u003c\/p\u003e \u003cp\u003eOrganizing Related Classes into Packages 295\u003c\/p\u003e \u003cp\u003eImporting Packages 296\u003c\/p\u003e \u003cp\u003ePackage Names 297\u003c\/p\u003e \u003cp\u003ePackages and Source Files 297\u003c\/p\u003e \u003cp\u003eST 4 Package Access 298\u003c\/p\u003e \u003cp\u003eHT 1 Programming with Packages 299\u003c\/p\u003e \u003cp\u003e8.7 Unit Test Frameworks 300\u003c\/p\u003e \u003cp\u003eInheritance 305\u003c\/p\u003e \u003cp\u003e9.1 Inheritance Hierarchies 306\u003c\/p\u003e \u003cp\u003e9.2 Implementing Subclasses 310\u003c\/p\u003e \u003cp\u003e9.3 Overriding Methods 314\u003c\/p\u003e \u003cp\u003eST 1 Calling the Superclass Constructor 318\u003c\/p\u003e \u003cp\u003e9.4 Polymorphism 319\u003c\/p\u003e \u003cp\u003eST 2 Dynamic Method Lookup and the Implicit Parameter 322\u003c\/p\u003e \u003cp\u003eST 3 Abstract Classes 323\u003c\/p\u003e \u003cp\u003eST 4 Final Methods and Classes 324\u003c\/p\u003e \u003cp\u003eST 5 Protected Access 324\u003c\/p\u003e \u003cp\u003eHT 1 Developing an Inheritance Hierarchy 325\u003c\/p\u003e \u003cp\u003eWE 1 Implementing an Employee Hierarchy for Payroll Processing 330\u003c\/p\u003e \u003cp\u003e9.5 Object: The Cosmic Superclass 330\u003c\/p\u003e \u003cp\u003eOverriding the toString Method 330\u003c\/p\u003e \u003cp\u003eThe equals Method 332\u003c\/p\u003e \u003cp\u003eThe instanceof Operator 333\u003c\/p\u003e \u003cp\u003eST 6 Inheritance and the toString Method 335\u003c\/p\u003e \u003cp\u003eST 7 Inheritance and the equals Method 336\u003c\/p\u003e \u003cp\u003eInterfaces 339\u003c\/p\u003e \u003cp\u003e10.1 Using Interfaces for Algorithm Reuse 340\u003c\/p\u003e \u003cp\u003eDiscovering an Interface Type 340\u003c\/p\u003e \u003cp\u003eDeclaring an Interface Type 341\u003c\/p\u003e \u003cp\u003eImplementing an Interface Type 343\u003c\/p\u003e \u003cp\u003eComparing Interfaces and Inheritance 345\u003c\/p\u003e \u003cp\u003eST 1 Constants in Interfaces 346\u003c\/p\u003e \u003cp\u003eST 2 Nonabstract Interface Methods 347\u003c\/p\u003e \u003cp\u003e10.2 Working with Interface Variables 348\u003c\/p\u003e \u003cp\u003eConverting from Classes to Interfaces 348\u003c\/p\u003e \u003cp\u003eInvoking Methods on Interface Variables 349\u003c\/p\u003e \u003cp\u003eCasting from Interfaces to Classes 349\u003c\/p\u003e \u003cp\u003eWE 1 Investigating Number Sequences 350\u003c\/p\u003e \u003cp\u003e10.3 The Comparable Interface 350\u003c\/p\u003e \u003cp\u003eST 3 The clone Method and the Cloneable Interface 352\u003c\/p\u003e \u003cp\u003e10.4 Using Interfaces for Callbacks 355\u003c\/p\u003e \u003cp\u003eST 4 Lambda Expressions 358\u003c\/p\u003e \u003cp\u003eST 5 Generic Interface Types 360\u003c\/p\u003e \u003cp\u003e10.5 Inner Classes 360\u003c\/p\u003e \u003cp\u003e10.6 Mock Objects 361\u003c\/p\u003e \u003cp\u003e10.7 Event Handling 363\u003c\/p\u003e \u003cp\u003eListening to Events 363\u003c\/p\u003e \u003cp\u003eUsing Inner Classes for Listeners 365\u003c\/p\u003e \u003cp\u003e10.8 Building Applications with Buttons 368\u003c\/p\u003e \u003cp\u003e10.9 Processing Timer Events 371\u003c\/p\u003e \u003cp\u003e10.10 Mouse Events 374\u003c\/p\u003e \u003cp\u003eST 6 Keyboard Events 377\u003c\/p\u003e \u003cp\u003eST 7 Event Adapters 378\u003c\/p\u003e \u003cp\u003eInput\/Output and Exception Handling 383\u003c\/p\u003e \u003cp\u003e11.1 Reading and Writing Text Files 384\u003c\/p\u003e \u003cp\u003eST 1 Reading Web Pages 387\u003c\/p\u003e \u003cp\u003eST 2 File Dialog Boxes 387\u003c\/p\u003e \u003cp\u003eST 3 Character Encodings 388\u003c\/p\u003e \u003cp\u003e11.2 Text Input and Output 389\u003c\/p\u003e \u003cp\u003eReading Words 389\u003c\/p\u003e \u003cp\u003eReading Characters 390\u003c\/p\u003e \u003cp\u003eClassifying Characters 390\u003c\/p\u003e \u003cp\u003eReading Lines 390\u003c\/p\u003e \u003cp\u003eScanning a String 392\u003c\/p\u003e \u003cp\u003eConverting Strings to Numbers 392\u003c\/p\u003e \u003cp\u003eAvoiding Errors When Reading Numbers 392\u003c\/p\u003e \u003cp\u003eMixing Number, Word, and Line Input 393\u003c\/p\u003e \u003cp\u003eFormatting Output 394\u003c\/p\u003e \u003cp\u003eST 4 Regular Expressions 395\u003c\/p\u003e \u003cp\u003eST 5 Reading an Entire File 396\u003c\/p\u003e \u003cp\u003e11.3 Command Line Arguments 396\u003c\/p\u003e \u003cp\u003eHT 1 Processing Text Files 399\u003c\/p\u003e \u003cp\u003eWE 1 Analyzing Baby Names 403\u003c\/p\u003e \u003cp\u003e11.4 Exception Handling 403\u003c\/p\u003e \u003cp\u003eThrowing Exceptions 403\u003c\/p\u003e \u003cp\u003eCatching Exceptions 405\u003c\/p\u003e \u003cp\u003eChecked Exceptions 407\u003c\/p\u003e \u003cp\u003eClosing Resources 409\u003c\/p\u003e \u003cp\u003eDesigning Your Own Exception Types 410\u003c\/p\u003e \u003cp\u003eST 6 Assertions 411\u003c\/p\u003e \u003cp\u003eST 7 The try\/finally Statement 412\u003c\/p\u003e \u003cp\u003e11.5 APPLICATION Handling Input Errors 412\u003c\/p\u003e \u003cp\u003eObject-Oriented Design \u003cb\u003e419\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 Classes and Their Responsibilities 420\u003c\/p\u003e \u003cp\u003eDiscovering Classes 420\u003c\/p\u003e \u003cp\u003eThe CRC Card Method 421\u003c\/p\u003e \u003cp\u003e12.2 Relationships Between Classes 423\u003c\/p\u003e \u003cp\u003eDependency 423\u003c\/p\u003e \u003cp\u003eAggregation 424\u003c\/p\u003e \u003cp\u003eInheritance 425\u003c\/p\u003e \u003cp\u003eHT 1 Using CRC Cards and UML Diagrams in Program Design 426\u003c\/p\u003e \u003cp\u003eST 1 Attributes and Methods in UML Diagrams 426\u003c\/p\u003e \u003cp\u003eST 2 Multiplicities 427\u003c\/p\u003e \u003cp\u003eST 3 Aggregation, Association, and Composition 427\u003c\/p\u003e \u003cp\u003e12.3 APPLICATION Printing an Invoice 428\u003c\/p\u003e \u003cp\u003eRequirements 429\u003c\/p\u003e \u003cp\u003eCRC Cards 429\u003c\/p\u003e \u003cp\u003eUML Diagrams 432\u003c\/p\u003e \u003cp\u003eMethod Documentation 432\u003c\/p\u003e \u003cp\u003eImplementation 434\u003c\/p\u003e \u003cp\u003eWE 1 Simulating an Automatic Teller Machine 439\u003c\/p\u003e \u003cp\u003eRECURSION*(ETEXT ONLY) 443\u003c\/p\u003e \u003cp\u003e13.1 Triangle Numbers 444\u003c\/p\u003e \u003cp\u003eHT 1 Thinking Recursively 448\u003c\/p\u003e \u003cp\u003eWE 1 Finding Files 452\u003c\/p\u003e \u003cp\u003e13.2 Recursive Helper Methods 452\u003c\/p\u003e \u003cp\u003e13.3 The Efficiency of Recursion 453\u003c\/p\u003e \u003cp\u003e13.4 Permutations 459\u003c\/p\u003e \u003cp\u003e13.5 Mutual Recursion 463\u003c\/p\u003e \u003cp\u003e13.6 Backtracking 469\u003c\/p\u003e \u003cp\u003eWE 2 Towers of Hanoi 475\u003c\/p\u003e \u003cp\u003eSORTING AND SEARCHING*(ETEXT ONLY) 477\u003c\/p\u003e \u003cp\u003e14.1 Selection Sort 478\u003c\/p\u003e \u003cp\u003e14.2 Profiling the Selection Sort Algorithm 481\u003c\/p\u003e \u003cp\u003e14.3 Analyzing the Performance of the Selection Sort Algorithm 484\u003c\/p\u003e \u003cp\u003eST 1 Oh, Omega, and Theta 486\u003c\/p\u003e \u003cp\u003eST 2 Insertion Sort 487\u003c\/p\u003e \u003cp\u003e14.4 Merge Sort 488\u003c\/p\u003e \u003cp\u003e14.5 Analyzing the Merge Sort Algorithm 491\u003c\/p\u003e \u003cp\u003eST 3 The Quicksort Algorithm 493\u003c\/p\u003e \u003cp\u003e14.6 Searching 495\u003c\/p\u003e \u003cp\u003eLinear Search 495\u003c\/p\u003e \u003cp\u003eBinary Search 497\u003c\/p\u003e \u003cp\u003e14.7 PROBLEM SOLVING Estimating the Running Time of an Algorithm 500\u003c\/p\u003e \u003cp\u003eLinear Time 500\u003c\/p\u003e \u003cp\u003eQuadratic Time 501\u003c\/p\u003e \u003cp\u003eThe Triangle Pattern 502\u003c\/p\u003e \u003cp\u003eLogarithmic Time 503\u003c\/p\u003e \u003cp\u003e14.8 Sorting and Searching in the Java Library 504\u003c\/p\u003e \u003cp\u003eSorting 504\u003c\/p\u003e \u003cp\u003eBinary Search 505\u003c\/p\u003e \u003cp\u003eComparing Objects 505\u003c\/p\u003e \u003cp\u003eST 4 The Comparator Interface 506\u003c\/p\u003e \u003cp\u003eST 5 Comparators with Lambda Expressions 507\u003c\/p\u003e \u003cp\u003eWE 1 Enhancing the Insertion Sort Algorithm 507\u003c\/p\u003e \u003cp\u003eThe Java Collections Framework*(ETEXT ONLY) 511\u003c\/p\u003e \u003cp\u003e15.1 An Overview of the Collections Framework 512\u003c\/p\u003e \u003cp\u003e15.2 Linked Lists 514\u003c\/p\u003e \u003cp\u003eThe Structure of Linked Lists 515\u003c\/p\u003e \u003cp\u003eThe LinkedList Class of the Java Collections Framework 516\u003c\/p\u003e \u003cp\u003eList Iterators 516\u003c\/p\u003e \u003cp\u003e15.3 Sets 520\u003c\/p\u003e \u003cp\u003eChoosing a Set Implementation 520\u003c\/p\u003e \u003cp\u003eWorking with Sets 522\u003c\/p\u003e \u003cp\u003e15.4 Maps 525\u003c\/p\u003e \u003cp\u003eST 1 Updating Map Entries 527\u003c\/p\u003e \u003cp\u003eHT 1 Choosing a Collection 527\u003c\/p\u003e \u003cp\u003eWE 1 Word Frequency 528\u003c\/p\u003e \u003cp\u003eST 2 Hash Functions 529\u003c\/p\u003e \u003cp\u003e15.5 Stacks, Queues, and Priority Queues 531\u003c\/p\u003e \u003cp\u003eStacks 531\u003c\/p\u003e \u003cp\u003eQueues 532\u003c\/p\u003e \u003cp\u003ePriority Queues 533\u003c\/p\u003e \u003cp\u003e15.6 Stack and Queue Applications 534\u003c\/p\u003e \u003cp\u003eBalancing Parentheses 534\u003c\/p\u003e \u003cp\u003eEvaluating Reverse Polish Expressions 535\u003c\/p\u003e \u003cp\u003eEvaluating Algebraic Expressions 537\u003c\/p\u003e \u003cp\u003eBacktracking 540\u003c\/p\u003e \u003cp\u003eST 3 Reverse Polish Notation 542\u003c\/p\u003e \u003cp\u003eWE 2 Simulating a Queue of Waiting Customers 543\u003c\/p\u003e \u003cp\u003eAppendix A The Basic Latin and Latin-1 Subsets of Unicode A-1\u003c\/p\u003e \u003cp\u003eAppendix B Java Operator Summary A-5\u003c\/p\u003e \u003cp\u003eAppendix C Java Reserved Word Summary A-7\u003c\/p\u003e \u003cp\u003eAppendix D The Java Library A-9\u003c\/p\u003e \u003cp\u003eAppendix E Java Language Coding Guidelines A-29\u003c\/p\u003e \u003cp\u003eAppendix F Tool Summary (ETEXT ONLY)\u003c\/p\u003e \u003cp\u003eAppendix G Number Systems (ETEXT ONLY)\u003c\/p\u003e \u003cp\u003eAppendix H UML Summary (ETEXT ONLY)\u003c\/p\u003e \u003cp\u003eAppendix I Java Syntax Summary (ETEXT ONLY)\u003c\/p\u003e \u003cp\u003eAppendix J Html Summary (ETEXT ONLY)\u003c\/p\u003e \u003cp\u003eGlossary G-1\u003c\/p\u003e \u003cp\u003eIndex I-1\u003c\/p\u003e \u003cp\u003eCredits C-1\u003c\/p\u003e \u003cp\u003eQuick Reference C-3\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":49528863064407,"sku":"9781119740193","price":128.66,"currency_code":"GBP","in_stock":true}],"url":"https:\/\/bookcurl.com\/products\/brief-java-9781119740193","provider":"Book Curl","version":"1.0","type":"link"}