Additional Information
Book Details
Abstract
Intended for use in the Java programming course
Java Software Solutions teaches a foundation of programming techniques to foster well-designed object-oriented software. Heralded for its integration of small and large realistic examples, this worldwide best-selling text emphasizes building solid problem-solving and design skills to write high-quality programs.
Teaching and Learning Experience
To provide a better teaching and learning experience, for both instructors and students, this program will:
- Personalize Learning: Through the power of practice and immediate personalized feedback, MyProgrammingLab helps students fully grasp the logic, semantics, and syntax of programming.
- Help Students Build Sound Program-Development Skills: A software methodology is introduced early and revisited throughout the text to ensure that students build sound program-development skills.
- Enhance Learning with In-text Features: A variety of features in each chapter help motivate learning.
- Provide Opportunities to Practice Design Skills and Implement Java Programs: A wealth of end-of-chapter programming projects and chapter review features help reinforce key concepts.
- Support Instructors and Students: Resources to support learning are available on the Companion website and Instructor Resource Center.
Table of Contents
| Section Title | Page | Action | Price |
|---|---|---|---|
| Cover | Cover | ||
| Dedication | 3 | ||
| Preface | 5 | ||
| Contents | 13 | ||
| Credits | 25 | ||
| Chapter 1 : Introduction | 27 | ||
| 1.1 Computer Processing | 28 | ||
| Software Categories | 29 | ||
| Digital Computers | 31 | ||
| Binary Numbers | 33 | ||
| 1.2 Hardware Components | 36 | ||
| Computer Architecture | 37 | ||
| Input/Output Devices | 38 | ||
| Main Memory and Secondary Memory | 39 | ||
| The Central Processing Unit | 43 | ||
| 1.3 Networks | 46 | ||
| Network Connections | 46 | ||
| Local-Area Networks and Wide-Area Networks | 48 | ||
| The Internet | 49 | ||
| The World Wide Web | 50 | ||
| Uniform Resource Locators | 51 | ||
| 1.4 The Java Programming Language | 52 | ||
| A Java Program | 54 | ||
| Comments | 56 | ||
| Identifiers and Reserved Words | 57 | ||
| White Space | 60 | ||
| 1.5 Program Development | 62 | ||
| Programming Language Levels | 62 | ||
| Editors, Compilers, and Interpreters | 65 | ||
| Development Environments | 66 | ||
| Syntax and Semantics | 67 | ||
| Errors | 68 | ||
| 1.6 Object-Oriented Programming | 70 | ||
| Problem Solving | 71 | ||
| Object-Oriented Software Principles | 72 | ||
| Summary of Key Concepts | 76 | ||
| Exercises | 78 | ||
| Programming Projects | 80 | ||
| Chapter 2 : Data and Expressions | 83 | ||
| 2.1 Character Strings | 84 | ||
| The print and println Methods | 84 | ||
| String Concatenation | 86 | ||
| Escape Sequences | 89 | ||
| 2.2 Variables and Assignment | 91 | ||
| Variables | 91 | ||
| The Assignment Statement | 93 | ||
| Constants | 95 | ||
| 2.3 Primitive Data Types | 97 | ||
| Integers and Floating Points | 97 | ||
| Characters | 99 | ||
| Booleans | 100 | ||
| 2.4 Expressions | 101 | ||
| Arithmetic Operators | 101 | ||
| Operator Precedence | 102 | ||
| Increment and Decrement Operators | 106 | ||
| Assignment Operators | 107 | ||
| 2.5 Data Conversion | 109 | ||
| Conversion Techniques | 111 | ||
| 2.6 Interactive Programs | 113 | ||
| The Scanner Class | 113 | ||
| 2.7 Graphics | 118 | ||
| Coordinate Systems | 118 | ||
| Representing Color | 120 | ||
| 2.8 Applets | 121 | ||
| Executing Applets Using the Web | 124 | ||
| 2.9 Drawing Shapes | 125 | ||
| The Graphics Class | 125 | ||
| Summary of Key Concepts | 131 | ||
| Exercises | 132 | ||
| Programming Projects | 134 | ||
| Software Failure : NASA Mars Climate Orbiter and Polar Lander | 137 | ||
| What Happened? | 137 | ||
| What Caused It? | 137 | ||
| Lessons Learned | 138 | ||
| Chapter 3 : Using Classes and Objects | 139 | ||
| 3.1 Creating Objects | 140 | ||
| Aliases | 142 | ||
| 3.2 The String Class | 144 | ||
| 3.3 Packages | 148 | ||
| The import Declaration | 150 | ||
| 3.4 The Random Class | 152 | ||
| 3.5 The Math Class | 155 | ||
| 3.6 Formatting Output | 158 | ||
| The NumberFormat Class | 158 | ||
| The DecimalFormat Class | 160 | ||
| The printf Method | 161 | ||
| 3.7 Enumerated Types | 164 | ||
| 3.8 Wrapper Classes | 167 | ||
| Autoboxing | 169 | ||
| 3.9 Components and Containers | 169 | ||
| Frames and Panels | 170 | ||
| 3.10 Nested Panels | 174 | ||
| 3.11 Images | 177 | ||
| Summary of Key Concepts | 181 | ||
| Exercises | 181 | ||
| Programming Projects | 183 | ||
| Chapter 4 : Writing Classes | 185 | ||
| 4.1 Classes and Objects Revisited | 186 | ||
| 4.2 Anatomy of a Class | 188 | ||
| Instance Data | 193 | ||
| UMl Class Diagrams | 193 | ||
| 4.3 Encapsulation | 195 | ||
| Visibility Modifiers | 196 | ||
| Accessors and Mutators | 197 | ||
| 4.4 Anatomy of a Method | 198 | ||
| The return Statement | 200 | ||
| Parameters | 201 | ||
| Local Data | 201 | ||
| Bank Account Example | 202 | ||
| 4.5 Constructors Revisited | 207 | ||
| 4.6 Graphical Objects | 208 | ||
| 4.7 Graphical User Interfaces | 217 | ||
| 4.8 Buttons | 218 | ||
| 4.9 Text Fields | 222 | ||
| Summary of Key Concepts | 226 | ||
| Exercises | 226 | ||
| Programming Projects | 228 | ||
| Software Failure : Denver Airport Baggage Handling System | 231 | ||
| What Happened? | 231 | ||
| What Caused It? | 232 | ||
| Lessons Learned | 232 | ||
| Chapter 5 : Conditionals and Loops | 233 | ||
| 5.1 Boolean Expressions | 234 | ||
| Equality and Relational Operators | 235 | ||
| Logical Operators | 236 | ||
| 5.2 The if Statement | 239 | ||
| The if-else Statement | 242 | ||
| Using Block Statements | 245 | ||
| Nested if Statements | 249 | ||
| 5.3 Comparing Data | 252 | ||
| Comparing Floats | 252 | ||
| Comparing Characters | 253 | ||
| Comparing Objects | 254 | ||
| 5.4 The while Statement | 256 | ||
| Infinite Loops | 260 | ||
| Nested Loops | 262 | ||
| The break and Continue Statements | 265 | ||
| 5.5 Iterators | 267 | ||
| Reading Text Files | 268 | ||
| 5.6 The ArrayList Class | 271 | ||
| 5.7 Determining Event Sources | 274 | ||
| 5.8 Check Boxes and Radio Buttons | 277 | ||
| Check Boxes | 277 | ||
| Radio Buttons | 281 | ||
| Summary of Key Concepts | 286 | ||
| Exercises | 286 | ||
| Programming Projects | 289 | ||
| Software Failure : Therac-25 | 293 | ||
| What Happened? | 293 | ||
| What Caused It? | 293 | ||
| Lessons Learned | 294 | ||
| Chapter 6 : More Conditionals and Loops | 295 | ||
| 6.1 The switch Statement | 296 | ||
| 6.2 The Conditional Operator | 300 | ||
| 6.3 The do Statement | 301 | ||
| 6.4 The for Statement | 305 | ||
| The for-each Loop | 308 | ||
| Comparing Loops | 310 | ||
| 6.5 Drawing with Loops and Conditionals | 311 | ||
| 6.6 Dialog Boxes | 317 | ||
| Summary of Key Concepts | 320 | ||
| Exercises | 320 | ||
| Programming Projects | 322 | ||
| Chapter 7 : Object-Oriented Design | 327 | ||
| 7.1 Software Development Activities | 328 | ||
| 7.2 Identifying Classes and Objects | 329 | ||
| Assigning Responsibilities | 331 | ||
| 7.3 Static Class Members | 331 | ||
| Static Variables | 332 | ||
| Static Methods | 332 | ||
| 7.4 Class Relationships | 336 | ||
| Dependency | 336 | ||
| Dependencies Among Objects of the Same Class | 336 | ||
| Aggregation | 342 | ||
| The this Reference | 346 | ||
| 7.5 Interfaces | 348 | ||
| The Comparable Interface | 353 | ||
| The Iterator Interface | 354 | ||
| 7.6 Enumerated Types Revisited | 355 | ||
| 7.7 Method Design | 358 | ||
| Method Decomposition | 359 | ||
| Method Parameters Revisited | 364 | ||
| 7.8 Method Overloading | 369 | ||
| 7.9 Testing | 371 | ||
| Reviews | 372 | ||
| Defect Testing | 372 | ||
| 7.10 GUI Design | 375 | ||
| 7.11 Layout Managers | 376 | ||
| Flow Layout | 378 | ||
| Border Layout | 382 | ||
| Grid Layout | 385 | ||
| Box Layout | 387 | ||
| 7.12 Borders | 391 | ||
| 7.13 Containment Hierarchies | 395 | ||
| Summary of Key Concepts | 398 | ||
| Exercises | 399 | ||
| Programming Projects | 400 | ||
| Software Failure : 2003 Northeast Blackout | 403 | ||
| What Happened? | 403 | ||
| What Caused It? | 403 | ||
| Lessons Learned | 404 | ||
| Chapter 8 : Arrays | 405 | ||
| 8.1 Array Elements | 406 | ||
| 8.2 Declaring and Using Arrays | 407 | ||
| Bounds Checking | 410 | ||
| Alternate Array Syntax | 415 | ||
| Initializer Lists | 415 | ||
| Arrays as Parameters | 416 | ||
| 8.3 Arrays of Objects | 418 | ||
| 8.4 Command-Line Arguments | 428 | ||
| 8.5 Variable Length Parameter Lists | 430 | ||
| 8.6 Two-Dimensional Arrays | 434 | ||
| Multidimensional Arrays | 438 | ||
| 8.7 Polygons and Polylines | 439 | ||
| The Polygon Class | 442 | ||
| 8.8 Mouse Events | 444 | ||
| 8.9 Key Events | 453 | ||
| Summary of Key Concepts | 459 | ||
| Exercises | 459 | ||
| Programming Projects | 461 | ||
| Software Failure : LA Air Traffic Control | 467 | ||
| What Happened? | 467 | ||
| What Caused It? | 467 | ||
| Lessons Learned | 468 | ||
| Chapter 9 : Inheritance | 469 | ||
| 9.1 Creating Subclasses | 470 | ||
| The protected Modifier | 473 | ||
| The super Reference | 476 | ||
| Multiple Inheritance | 479 | ||
| 9.2 Overriding Methods | 481 | ||
| Shadowing Variables | 483 | ||
| 9.3 Class Hierarchies | 484 | ||
| The Object Class | 486 | ||
| Abstract Classes | 487 | ||
| Interface Hierarchies | 489 | ||
| 9.4 Visibility | 489 | ||
| 9.5 Designing for Inheritance | 492 | ||
| Restricting Inheritance | 493 | ||
| 9.6 The Component Class Hierarchy | 494 | ||
| 9.7 Extending Adapter Classes | 497 | ||
| 9.8 The Timer Class | 501 | ||
| Summary of Key Concepts | 506 | ||
| Exercises | 507 | ||
| Programming Projects | 508 | ||
| Software Failure : Ariane 5 Flight 501 | 511 | ||
| What Happened? | 511 | ||
| What Caused It? | 511 | ||
| Lessons Learned | 511 | ||
| Chapter 10 : Polymorphism | 513 | ||
| 10.1 Late Binding | 514 | ||
| 10.2 Polymorphism via Inheritance | 515 | ||
| 10.3 Polymorphism via Interfaces | 528 | ||
| 10.4 Sorting | 530 | ||
| Selection Sort | 531 | ||
| Insertion Sort | 537 | ||
| Comparing Sorts | 538 | ||
| 10.5 Searching | 539 | ||
| Linear Search | 539 | ||
| Binary Search | 541 | ||
| Comparing Searches | 545 | ||
| 10.6 Designing for Polymorphism | 545 | ||
| 10.7 Event Processing | 547 | ||
| 10.8 File Choosers | 548 | ||
| 10.9 Color Choosers | 551 | ||
| 10.10 Sliders | 553 | ||
| Summary of Key Concepts | 559 | ||
| Exercises | 559 | ||
| Programming Projects | 560 | ||
| Chapter 11 : Exceptions | 563 | ||
| 11.1 Exception Handling | 564 | ||
| 11.2 Uncaught Exceptions | 565 | ||
| 11.3 The try-catch Statement | 566 | ||
| The finally Clause | 570 | ||
| 11.4 Exception Propagation | 571 | ||
| 11.5 The Exception Class Hierarchy | 575 | ||
| Checked and Unchecked Exceptions | 578 | ||
| 11.6 I/O Exceptions | 579 | ||
| 11.7 Tool Tips and Mnemonics | 583 | ||
| 11.8 Combo Boxes | 590 | ||
| 11.9 Scroll Panes | 595 | ||
| 11.10 Split Panes | 598 | ||
| Summary of Key Concepts | 605 | ||
| Exercises | 606 | ||
| Programming Projects | 606 | ||
| Chapter 12 : Recursion | 609 | ||
| 12.1 Recursive Thinking | 610 | ||
| Infinite Recursion | 610 | ||
| Recursion in Math | 611 | ||
| 12.2 Recursive Programming | 612 | ||
| Recursion vs. Iteration | 615 | ||
| Direct vs. Indirect Recursion | 615 | ||
| 12.3 Using Recursion | 616 | ||
| Traversing a Maze | 617 | ||
| The Towers of Hanoi | 622 | ||
| 12.4 Recursion in Graphics | 627 | ||
| Tiled Pictures | 627 | ||
| Fractals | 630 | ||
| Summary of Key Concepts | 638 | ||
| Exercises | 638 | ||
| Programming Projects | 639 | ||
| Chapter 13 : Collections | 643 | ||
| 13.1 Collections and Data Structures | 644 | ||
| Separating Interface from Implementation | 644 | ||
| 13.2 Dynamic Representations | 645 | ||
| Dynamic Structures | 645 | ||
| A Dynamically Linked List | 646 | ||
| Other Dynamic List Representations | 651 | ||
| 13.3 Linear Data Structures | 653 | ||
| Queues | 653 | ||
| Stacks | 654 | ||
| 13.4 Non-Linear Data Structures | 657 | ||
| Trees | 657 | ||
| Graphs | 658 | ||
| 13.5 The Java Collections API | 660 | ||
| Generics | 660 | ||
| Summary of Key Concepts | 662 | ||
| Exercises | 662 | ||
| Programming Projects | 664 | ||
| Appendix | 667 | ||
| Appendix A : Glossary | 667 | ||
| Appendix B : Number Systems | 691 | ||
| Place Value | 691 | ||
| Bases Higher Than 10 | 693 | ||
| Conversions | 695 | ||
| Shortcut Conversions | 696 | ||
| Appendix C : The Unicode Character Set | 699 | ||
| Appendix D : Java Operators | 703 | ||
| Java Bitwise Operators | 703 | ||
| Appendix E : Java Modifiers | 709 | ||
| Java Visibility Modifiers | 709 | ||
| A Visibility Example | 710 | ||
| Other Java Modifiers | 711 | ||
| Appendix F : Java Coding Guidelines | 713 | ||
| Design Guidelines | 714 | ||
| Style Guidelines | 715 | ||
| Documentation Guidelines | 716 | ||
| Appendix G : Java Applets | 719 | ||
| Appendix H : Regular Expressions | 721 | ||
| Appendix I : Javadoc Documentation Generator | 723 | ||
| Doc Comments | 724 | ||
| Tags | 724 | ||
| Files Generated | 726 | ||
| Appendix J : The PaintBox Project | 729 | ||
| PaintBox Requirements | 729 | ||
| PaintBox Architectural Design | 731 | ||
| PaintBox Refinements | 732 | ||
| PaintBox Refinement | 732 | ||
| PaintBox Refinement | 735 | ||
| Remaining PaintBox Refinements | 737 | ||
| Appendix K : GUI Events | 741 | ||
| Appendix L : Java Syntax | 745 | ||
| Appendix M : The Java Class Library | 759 | ||
| Appendix N : Answers to Self-Review Questions | 761 | ||
| Chapter 1 : Introduction | 761 | ||
| 1.1 Computer Processing | 761 | ||
| 1.2 Hardware Components | 761 | ||
| 1.3 Networks | 762 | ||
| 1.4 The Java Programming Language | 763 | ||
| 1.5 Program Development | 764 | ||
| 1.6 Object-Oriented Programming | 765 | ||
| Chapter 2 : Data and Expressions | 765 | ||
| 2.1 Character Strings | 765 | ||
| 2.2 Variables and Assignment | 766 | ||
| 2.3 Primitive Data Types | 767 | ||
| 2.4 Expressions | 767 | ||
| 2.5 Data Conversion | 768 | ||
| 2.6 Interactive Programs | 769 | ||
| 2.7 Graphics | 769 | ||
| 2.8 Applets | 770 | ||
| 2.9 Drawing Shapes | 770 | ||
| Chapter 3 : Using Classes and Objects | 771 | ||
| 3.1 Creating Objects | 771 | ||
| 3.2 The String Class | 771 | ||
| 3.3 Packages | 772 | ||
| 3.4 The Random Class | 772 | ||
| 3.5 The Math Class | 773 | ||
| 3.6 Formatting Output | 773 | ||
| 3.7 Enumerated Types | 774 | ||
| 3.8 Wrapper Classes | 775 | ||
| 3.9 Components and Containers | 775 | ||
| 3.10 Nested Panels | 776 | ||
| 3.11 Images | 776 | ||
| Chapter 4 : Writing Classes | 777 | ||
| 4.1 Classes and Objects Revisited | 777 | ||
| 4.2 Anatomy of a Class | 778 | ||
| 4.3 Encapsulation | 778 | ||
| 4.4 Anatomy of a Method | 779 | ||
| 4.5 Constructors Revisited | 780 | ||
| 4.6 Graphical Objects | 780 | ||
| 4.7 Graphical User Interfaces | 781 | ||
| 4.8 Buttons | 781 | ||
| 4.9 Text Fields | 782 | ||
| Chapter 5 : Conditionals and Loops | 782 | ||
| 5.1 Boolean Expressions | 782 | ||
| 5.2 The if Statement | 783 | ||
| 5.3 Comparing Data | 784 | ||
| 5.4 The while Statement | 785 | ||
| 5.5 Iterators | 786 | ||
| 5.6 The ArrayList Class | 786 | ||
| Chapter 6 : More Conditionals and Loops | 787 | ||
| 6.1 The switch Statement | 787 | ||
| 6.2 The Conditional Operator | 787 | ||
| 6.3 The do Statement | 788 | ||
| 6.4 The for Statement | 788 | ||
| Chapter 7 : Object-Oriented Design | 789 | ||
| 7.1 Software Development Activities | 789 | ||
| 7.2 Identifying Classes and Objects | 789 | ||
| 7.3 Static Class Members | 790 | ||
| 7.4 Class Relationships | 790 | ||
| 7.5 Interfaces | 790 | ||
| 7.6 Enumerated Types Revisited | 791 | ||
| 7.7 Method Design | 791 | ||
| 7.8 Method Overloading | 792 | ||
| 7.9 Testing | 792 | ||
| 7.10 GUI Design | 792 | ||
| 7.11 Layout Managers | 793 | ||
| 7.12 Borders | 793 | ||
| 7.13 Containment Hierarchies | 793 | ||
| Chapter 8 : Arrays | 794 | ||
| 8.1 Array Elements | 794 | ||
| 8.2 Declaring and Using Arrays | 794 | ||
| 8.3 Arrays of Objects | 795 | ||
| 8.4 Command-Line Arguments | 796 | ||
| 8.5 Variable Length Parameter Lists | 796 | ||
| 8.6 Two-Dimensional Arrays | 797 | ||
| 8.7 Polygons and Polylines | 797 | ||
| 8.8 Mouse Events | 798 | ||
| 8.9 Key Events | 798 | ||
| Chapter 9 : Inheritance | 799 | ||
| 9.1 Creating Subclasses | 799 | ||
| 9.2 Overriding Methods | 800 | ||
| 9.3 Class Hierarchies | 800 | ||
| 9.4 Visibility | 801 | ||
| 9.5 Designing for Inheritance | 801 | ||
| 9.6 The Component Class Hierarchy | 802 | ||
| 9.7 Extending Adapter Classes | 802 | ||
| 9.8 The Timer Class | 802 | ||
| Chapter 10 : Polymorphism | 803 | ||
| 10.1 Late Binding | 803 | ||
| 10.2 Polymorphism via Inheritance | 803 | ||
| 10.3 Polymorphism via Interfaces | 804 | ||
| 10.4 Sorting | 804 | ||
| 10.5 Searching | 805 | ||
| 10.6 Designing for Polymorphism | 806 | ||
| Chapter 11 : Exceptions | 806 | ||
| 11.1 Exception Handling | 806 | ||
| 11.2 Uncaught Exceptions | 806 | ||
| 11.3 The try-catch Statement | 806 | ||
| 11.4 Exception Propagation | 807 | ||
| 11.5 The Exception Class Hierarchy | 807 | ||
| 11.6 I/O Exceptions | 808 | ||
| 11.7 Tool Tips and Mnemonics | 808 | ||
| 11.8 Combo Boxes | 809 | ||
| 11.9 Scroll Panes | 809 | ||
| 11.10 Split Panes | 810 | ||
| Chapter 12 : Recursion | 810 | ||
| 12.1 Recursive Thinking | 810 | ||
| 12.2 Recursive Programming | 810 | ||
| 12.3 Using Recursion | 811 | ||
| 12.4 Recursion in Graphics | 812 | ||
| Chapter 13 : Collections | 812 | ||
| 13.1 Collections and Data Structures | 812 | ||
| 13.2 Dynamic Representations | 813 | ||
| 13.3 Linear Data Structures | 813 | ||
| 13.4 Non-Linear Data Structures | 814 | ||
| 13.5 The Java Collections API | 814 | ||
| Index | 815 |