+353-1-416-8900REST OF WORLD
+44-20-3973-8888REST OF WORLD
1-917-300-0470EAST COAST U.S
1-800-526-8630U.S. (TOLL FREE)

Big Java. Early Objects. Edition No. 7

  • Book

  • 832 Pages
  • May 2019
  • John Wiley and Sons Ltd
  • ID: 5226052

Big Java: Early Objects, 7e focuses on the essentials of effective learning and is suitable for a two-semester introduction to programming sequence. The text requires no prior programming experience and only a modest amount of high school algebra. Objects and classes from the standard library are used where appropriate in early sections with coverage on object oriented design starting in Chapter 8. This gradual approach allows students to use objects throughout their study of the core algorithmic topics, without teaching bad habits that must be un-learned later. The second half covers algorithms and data structures at a level suitable for beginning students.

Table of Contents

Preface iii

Special Features xxiv

1 Introduction 1

1.1 Computer Programs 2

1.2 The Anatomy of a Computer 3

1.3 The Java Programming Language 5

1.4 Becoming Familiar with Your Programming Environment 7

1.5 Analyzing Your First Program 11

1.6 Errors 13

1.7 PROBLEM SOLVING Algorithm Design 15

The Algorithm Concept 15

An Algorithm for Solving an Investment Problem 16

Pseudocode 17

From Algorithms to Programs 18

2 Using Objects 23

2.1 Objects and Classes 24

Using Objects 24

Classes 25

2.2 Variables 26

Variable Declarations 26

Types 28

Names 29

Comments 30

Assignment 30

2.3 Calling Methods 33

The Public Interface of a Class 33

Method Arguments 34

Return Values 35

Method Declarations 36

2.4 Constructing Objects 38

2.5 Accessor and Mutator Methods 40

2.6 The API Documentation 41

Browsing the API Documentation 41

Packages 43

2.7 Implementing a Test Program 44

2.8 Object References 46

2.9 Graphical Applications 49

Frame Windows 50

Drawing on a Component 51

Displaying a Component in a Frame 53

2.10 Ellipses, Lines, Text, and Color 54

Ellipses and Circles 54

Lines 55

Drawing Text 56

Colors 56

3 Implementing Classes 61

3.1 Instance Variables and Encapsulation 62

Instance Variables 62

The Methods of the Counter Class 64

Encapsulation 64

3.2 Specifying the Public Interface of a Class 66

Specifying Methods 66

Specifying Constructors 67

Using the Public Interface 69

Commenting the Public Interface 69

3.3 Providing the Class Implementation 72

Providing Instance Variables 72

Providing Constructors 73

Providing Methods 75

3.4 Unit Testing 81

3.5 PROBLEM SOLVING Tracing Objects 84

3.6 Local Variables 86

3.7 The this Reference 88

3.8 Shape Classes 90

4 Fundamental Data Types 99

4.1 Numbers 100

Number Types 100

Constants 102

4.2 Arithmetic 107

Arithmetic Operators 107

Increment and Decrement 107

Integer Division and Remainder 108

Powers and Roots 109

Converting Floating-Point Numbers to Integers 110

4.3 Input and Output 114

Reading Input 114

Formatted Output 115

4.4 PROBLEM SOLVING First Do it By Hand 121

4.5 Strings 122

The String Type 122

Concatenation 123

String Input 124

Escape Sequences 124

Strings and Characters 124

Substrings 125

5 Decisions 131

5.1 The if Statement 132

5.2 Comparing Values 137

Relational Operators 138

Comparing Floating-Point Numbers 139

Comparing Strings 140

Comparing Objects 141

Testing for null 141

5.3 Multiple Alternatives 146

5.4 Nested Branches 149

5.5 PROBLEM SOLVING Flowcharts 156

5.6 PROBLEM SOLVING Selecting Test Cases 159

5.7 Boolean Variables and Operators 161

Operators 165

5.8 APPLICATION Input Validation 166

6 Loops 171

6.1 The while Loop 172

6.2 PROBLEM SOLVING Hand-Tracing 179

6.3 The for Loop 183

Header 189

6.4 The do Loop 190

6.5 APPLICATION Processing Sentinel Values 192

6.6 PROBLEM SOLVING Storyboards 197

6.7 Common Loop Algorithms 199

Sum and Average Value 199

Counting Matches 200

Finding the First Match 200

Prompting Until a Match is Found 201

Maximum and Minimum 201

Comparing Adjacent Values 202

6.8 Nested Loops 206

6.9 APPLICATION Random Numbers and Simulations 209

Generating Random Numbers 210

The Monte Carlo Method 211

6.10 Using a Debugger 213

7 Arrays and Array Lists 221

7.1 Arrays 222

Declaring and Using Arrays 222

Array References 225

Using Arrays with Methods 226

Partially Filled Arrays 226

Arguments 229

7.2 The Enhanced for Loop 230

7.3 Common Array Algorithms 232

Filling 232

Sum and Average Value 232

Maximum and Minimum 232

Element Separators 232

Linear Search 233

Removing an Element 234

Inserting an Element 234

Swapping Elements 236

Copying Arrays 237

Reading Input 238

7.4 PROBLEM SOLVING Adapting Algorithms 240

7.5 PROBLEM SOLVING Discovering Algorithms by Manipulating Physical Objects 245

7.6 Two-Dimensional Arrays 248

Declaring Two-Dimensional Arrays 248

Accessing Elements 249

Locating Neighboring Elements 250

Accessing Rows and Columns 251

Two-Dimensional Array Parameters 252

7.7 Array Lists 255

Declaring and Using Array Lists 255

Using the Enhanced for Loop with Array Lists 258

Copying Array Lists 259

Wrappers and Auto-boxing 259

Using Array Algorithms with Array Lists 260

Storing Input Values in an Array List 261

Removing Matches 261

Choosing Between Array Lists and Arrays 262

7.8 Regression Testing 264

8 Designing Classes 271

8.1 Discovering Classes 272

8.2 Designing Good Methods 273

Providing a Cohesive Public Interface 273

Minimizing Dependencies 274

Separating Accessors and Mutators 275

Minimizing Side Effects 276

8.3 PROBLEM SOLVING Patterns for Object Data 282

Keeping a Total 282

Counting Events 283

Collecting Values 283

Managing Properties of an Object 284

Modeling Objects with Distinct States 284

Describing the Position of an Object 285

8.4 Static Variables and Methods 286

8.5 PROBLEM SOLVING Solve a Simpler Problem First 291

8.6 Packages 295

Organizing Related Classes into Packages 295

Importing Packages 296

Package Names 297

Packages and Source Files 297

8.7 Unit Test Frameworks 300

9 Inheritance 305

9.1 Inheritance Hierarchies 306

9.2 Implementing Subclasses 310

9.3 Overriding Methods 314

9.4 Polymorphism 319

9.5 Object: The Cosmic Superclass 330

Overriding the toString Method 330

The equals Method 332

The instanceof Operator 333

10 Interfaces 339

10.1 Using Interfaces for Algorithm Reuse 340

Discovering an Interface Type 340

Declaring an Interface Type 341

Implementing an Interface Type 343

Comparing Interfaces and Inheritance 345

10.2 Working with Interface Variables 348

Converting from Classes to Interfaces 348

Invoking Methods on Interface Variables 349

Casting from Interfaces to Classes 349

10.3 The Comparable Interface 350

Interface 352

10.4 Using Interfaces for Callbacks 355

10.5 Inner Classes 360

10.6 Mock Objects 361

10.7 Event Handling 363

Listening to Events 363

Using Inner Classes for Listeners 365

10.8 Building Applications with Buttons 368

10.9 Processing Timer Events 371

10.10 Mouse Events 374

11 Input/Output and Exception Handling 383

11.1 Reading and Writing Text Files 384

11.2 Text Input and Output 389

Reading Words 389

Reading Characters 390

Classifying Characters 390

Reading Lines 390

Scanning a String 392

Converting Strings to Numbers 392

Avoiding Errors When Reading Numbers 392

Mixing Number, Word, and Line Input 393

Formatting Output 394

11.3 Command Line Arguments 396

11.4 Exception Handling 403

Throwing Exceptions 403

Catching Exceptions 405

Checked Exceptions 407

Closing Resources 409

Designing Your Own Exception Types 410

11.5 APPLICATION Handling Input Errors 412

12 Object-Oriented Design 419

12.1 Classes and Their Responsibilities 420

Discovering Classes 420

The CRC Card Method 421

12.2 Relationships Between Classes 423

Dependency 423

Aggregation 424

Inheritance 425

12.3 APPLICATION Printing an Invoice 428

Requirements 429

CRC Cards 429

UML Diagrams 432

Method Documentation 432

Implementation 434

13 Recursion 443

13.1 Triangle Numbers 444

13.2 Recursive Helper Methods 452

13.3 The Efficiency of Recursion 453

13.4 Permutations 459

13.5 Mutual Recursion 463

13.6 Backtracking 469

14 Sorting and Searching 477

14.1 Selection Sort 478

14.2 Profiling the Selection Sort Algorithm 481

14.3 Analyzing the Performance of the Selection Sort Algorithm 484

14.4 Merge Sort 488

14.5 Analyzing the Merge Sort Algorithm 491

14.6 Searching 495

Linear Search 495

Binary Search 497

14.7 PROBLEM SOLVING Estimating the Running Time of an Algorithm 500

Linear Time 500

Quadratic Time 501

The Triangle Pattern 502

Logarithmic Time 503

14.8 Sorting and Searching in the Java Library 504

Sorting 504

Binary Search 505

Comparing Objects 505

15 The Java Collections Framework 511

15.1 An Overview of the Collections Framework 512

15.2 Linked Lists 514

The Structure of Linked Lists 515

The LinkedList Class of the Java Collections Framework 516

List Iterators 516

15.3 Sets 520

Choosing a Set Implementation 520

Working with Sets 522

15.4 Maps 525

15.5 Stacks, Queues, and Priority Queues 531

Stacks 531

Queues 532

Priority Queues 533

15.6 Stack and Queue Applications 534

Balancing Parentheses 534

Evaluating Reverse Polish Expressions 535

Evaluating Algebraic Expressions 537

Backtracking 540

Customers 543

16 Basic Data Structures 545

16.1 Implementing Linked Lists 546

The Node Class 546

Adding and Removing the First Element 547

The Iterator Class 548

Advancing an Iterator 549

Removing an Element 550

Adding an Element 552

Setting an Element to a Different Value 553

Efficiency of Linked List Operations 553

16.2 Implementing Array Lists 560

Getting and Setting Elements 560

Removing or Adding Elements 562

Growing the Internal Array 563

16.3 Implementing Stacks and Queues 564

Stacks as Linked Lists 565

Stacks as Arrays 566

Queues as Linked Lists 567

Queues as Circular Arrays 568

16.4 Implementing a Hash Table 570

Hash Codes 570

Hash Tables 570

Finding an Element 572

Adding and Removing Elements 572

Iterating over a Hash Table 573

17 Tree Structures 581

17.1 Basic Tree Concepts 582

17.2 Binary Trees 585

Binary Tree Examples 586

Balanced Trees 588

A Binary Tree Implementation 589

17.3 Binary Search Trees 590

The Binary Search Property 591

Insertion 592

Removal 594

Efficiency of the Operations 595

17.4 Tree Traversal 599

Inorder Traversal 599

Preorder and Postorder Traversals 601

The Visitor Pattern 602

Depth-First and Breadth-First Search 603

Tree Iterators 604

17.5 Red-Black Trees 605

Basic Properties of Red-Black Trees 605

Insertion 607

Removal 608

17.6 Heaps 612

17.7 The Heapsort Algorithm 622

18 Generic Classes 629

18.1 Generic Classes and Type Parameters 630

18.2 Implementing Generic Types 631

18.3 Generic Methods 634

18.4 Constraining Type Parameters 636

18.5 Type Erasure 639

19 Stream Processing 645

19.1 The Stream Concept 646

19.2 Producing Streams 648

19.3 Collecting Results 649

19.4 Transforming Streams 652

19.5 Lambda Expressions 654

19.6 The Optional Type 659

19.7 Other Terminal Operations 661

19.8 Primitive-Type Streams 663

Creating Primitive-Type Streams 663

Mapping a Primitive-Type Stream 663

Processing Primitive-Type Streams 664

19.9 Grouping Results 665

19.10 Common Algorithms Revisited 667

Filling 667

Sum, Average, Maximum, and Minimum 668

Counting Matches 668

Element Separators 668

Linear Search 669

Comparing Adjacent Values 669

20 Graphical User Interfaces 675

20.1 Layout Management 676

Using Layout Managers 676

Achieving Complex Layouts 677

Using Inheritance to Customize Frames 678

20.2 Processing Text Input 680

Text Fields 680

Text Areas 682

20.3 Choices 685

Radio Buttons 685

Check Boxes 687

Combo Boxes 687

20.4 Menus 695

20.5 Exploring the Swing Documentation 702

21 Advanced Input/Output* (Etext Only)

21.1 Readers, Writers, and Input/Output Streams

21.2 Binary Input and Output

21.3 Random Access

21.4 Object Input and Output Streams

21.5 File and Directory Operations Paths

Creating and Deleting Files and Directories

Useful File Operations

Visiting Directories

22 Multithreading* (Etext Only)

22.1 Running Threads

22.2 Terminating Threads

22.3 Race Conditions

22.4 Synchronizing Object Access

22.5 Avoiding Deadlocks

22.6 APPLICATION Algorithm Animation

23 Internet Networking* (Etext Only)

23.1 The Internet Protocol

23.2 Application Level Protocols

23.3 A Client Program

23.4 A Server Program

23.5 URL Connections

24 Relational Databases* (Etext Only)

24.1 Organizing Database Information

Database Tables

Linking Tables

Implementing Multi-Valued Relationships

24.2 Queries

Simple Queries

Selecting Columns

Selecting Subsets

Calculations

Joins

Updating and Deleting Data

24.3 Installing a Database

24.4 Database Programming in Java

Connecting to the Database

Executing SQL Statements

Analyzing Query Results

Result Set Metadata

24.5 APPLICATION Entering an Invoice

25 XML* (Etext Only)

25.1 XML Tags and Documents

Advantages of XML

Differences Between XML and HTML

The Structure of an XML Document

25.2 Parsing XML Documents

25.3 Creating XML Documents

25.4 Validating XML Documents

Document Type Definitions

Specifying a DTD in an XML Document

Parsing and Validation

Appendix A The Basic Latin and Latin-1 Subsets of Unicode A-1

Appendix B JAVA Operator Summary A-5

Appendix C JAVA Reserved Word Summary A-7

Appendix D The Java Library A-9

Appendix E JAVA Language Coding Guidelines A-38

Appendix F Tool Summary (Etext Only)

Appendix G Number Systems (Etext Only)

Appendix H UML Summary (Etext Only)

Appendix I JAVA Syntax Summary (Etext Only)

Appendix J Html Summary (Etext Only)

Glossary G-1

Index I-1

Credits C-1

Quick Reference C-3

Authors

Cay S. Horstmann San Jose State University.