{"product_id":"developing-java-software-isbn-9780470090251","title":"Developing Java Software","description":"This significantly updated new edition of Developing Java Software is a thorough presentation of object-oriented design and programming concepts using the Java 5 programming language. The book takes the reader from the basics of using Java 5 to the creation of complete, object-oriented programs. Following an ‘objects early’ approach, the core elements of the Java language are covered, including the use of recently added features such as generics.  \u003cp\u003eThe encouragement of the proper creation and use of classes, and the demonstration of the strategies used to create good quality code are at the core of this book. You will learn how Java programs work and how they can be designed and implemented in an organized and systematic way. In addition, the book addresses how a Java programming project should be managed and introduces the Ant build tool and the Subversion version control system.\u003c\/p\u003e \u003cp\u003eTesting has always been an important part of Developing Java Software. This edition provides new chapters which give a detailed introduction to Test-driven Development (TDD). This approach to programming introduces more rigor to writing programs by placing emphasis on writing high quality testable and tested code from the outset. A series of examples and case studies shows how TDD works and highlights the strategies for testing code.\u003c\/p\u003e \u003cp\u003eReflecting recent changes to the Java programming language and newly focused on first courses in programming, this excellent primer is ideal for classroom use or self-study. The many motivating examples and larger case studies show how core ideas can be applied when creating real applications, and show how to use object-oriented methods effectively to create robust, reliable, and fully-tested Java applications.\u003c\/p\u003e  Preface.  \u003cp\u003e\u003cb\u003ePart 1 Programming with Objects and Classes.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1 Introduction.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e1.1 The Start.\u003c\/p\u003e \u003cp\u003e1.2 A (Very!) Short History of Java.\u003c\/p\u003e \u003cp\u003e1.3 Being at the Right Place at the Right Time.\u003c\/p\u003e \u003cp\u003e1.4 What is Java?\u003c\/p\u003e \u003cp\u003e1.5 Abstraction: The Critical Core of Programming.\u003c\/p\u003e \u003cp\u003e1.6 The Java 2 Platform.\u003c\/p\u003e \u003cp\u003e1.7 Java is Architecture Neutral.\u003c\/p\u003e \u003cp\u003e1.8 Java and its Jokes.\u003c\/p\u003e \u003cp\u003e1.9 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2 Programming Fundamentals.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Introduction.\u003c\/p\u003e \u003cp\u003e2.2 Abstraction and the Big Picture.\u003c\/p\u003e \u003cp\u003e2.3 Statement Sequences.\u003c\/p\u003e \u003cp\u003e2.4 Iteration.\u003c\/p\u003e \u003cp\u003e2.5 Selection.\u003c\/p\u003e \u003cp\u003e2.6 State.\u003c\/p\u003e \u003cp\u003e2.7 Writing a Simple Java Program.\u003c\/p\u003e \u003cp\u003e2.8 Comments.\u003c\/p\u003e \u003cp\u003e2.9 Output Statements.\u003c\/p\u003e \u003cp\u003e2.10 Input Statements.\u003c\/p\u003e \u003cp\u003e2.11 Interactive Programs.\u003c\/p\u003e \u003cp\u003e2.12 Summary.\u003c\/p\u003e \u003cp\u003eSelf-review Questions.\u003c\/p\u003e \u003cp\u003eProgramming Exercises.\u003c\/p\u003e \u003cp\u003eChallenges.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3 Adding Structure.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Introduction.\u003c\/p\u003e \u003cp\u003e3.2 Abstraction and Encapsulation.\u003c\/p\u003e \u003cp\u003e3.3 Methods.\u003c\/p\u003e \u003cp\u003e3.4 Writing Programs with Methods.\u003c\/p\u003e \u003cp\u003e3.5 Procedural Decomposition.\u003c\/p\u003e \u003cp\u003e3.6 Encapsulation.\u003c\/p\u003e \u003cp\u003e3.7 Some More Operators.\u003c\/p\u003e \u003cp\u003e3.8 Some More Control Statements.\u003c\/p\u003e \u003cp\u003e3.9 Some More Example Programs.\u003c\/p\u003e \u003cp\u003e3.10 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4 Introducing Containers.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e4.1 Introduction.\u003c\/p\u003e \u003cp\u003e4.2 Arrays.\u003c\/p\u003e \u003cp\u003e4.3 Container Classes.\u003c\/p\u003e \u003cp\u003e4.4 Data Files.\u003c\/p\u003e \u003cp\u003e4.5 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5 Drawing Pictures.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e5.1 Introduction.\u003c\/p\u003e \u003cp\u003e5.2 Creating Drawings.\u003c\/p\u003e \u003cp\u003e5.3 Properties of Drawings.\u003c\/p\u003e \u003cp\u003e5.4 Drawing Text.\u003c\/p\u003e \u003cp\u003e5.5 Example Programs.\u003c\/p\u003e \u003cp\u003e5.6 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6 Classes and Objects.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Introduction.\u003c\/p\u003e \u003cp\u003e6.2 Creating New Data Types.\u003c\/p\u003e \u003cp\u003e6.3 Generic Classes.\u003c\/p\u003e \u003cp\u003e6.4 Method Names and Scope.\u003c\/p\u003e \u003cp\u003e6.5 Object Initialization.\u003c\/p\u003e \u003cp\u003e6.6 Objects and References.\u003c\/p\u003e \u003cp\u003e6.7 Static Variables and Methods.\u003c\/p\u003e \u003cp\u003e6.8 Example Classes.\u003c\/p\u003e \u003cp\u003e6.9 Programming with Classes and Objects.\u003c\/p\u003e \u003cp\u003e6.10 Enumerated Types.\u003c\/p\u003e \u003cp\u003e6.11 An Example—Creating Bridge Hands.\u003c\/p\u003e \u003cp\u003e6.12 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7 Class Relationships.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Introduction.\u003c\/p\u003e \u003cp\u003e7.2 Association.\u003c\/p\u003e \u003cp\u003e7.3 Inheritance.\u003c\/p\u003e \u003cp\u003e7.4 Reuse: Inheritance vs. Association.\u003c\/p\u003e \u003cp\u003e7.5 Inheritance Hierarchies.\u003c\/p\u003e \u003cp\u003e7.6 Interfaces and Type Conformance.\u003c\/p\u003e \u003cp\u003e7.7 Comparing Objects for Equality.\u003c\/p\u003e \u003cp\u003e7.8 Nested Classes.\u003c\/p\u003e \u003cp\u003e7.9 Packages.\u003c\/p\u003e \u003cp\u003e7.10 Class Matrix Revisited.\u003c\/p\u003e \u003cp\u003e7.11 Reusability and Components.\u003c\/p\u003e \u003cp\u003e7.12 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8 Exceptions.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 What’s the Problem?\u003c\/p\u003e \u003cp\u003e8.2 Kinds of Errors.\u003c\/p\u003e \u003cp\u003e8.3 Representing Exceptions.\u003c\/p\u003e \u003cp\u003e8.4 Throwing an Exception.\u003c\/p\u003e \u003cp\u003e8.5 Catching Exceptions.\u003c\/p\u003e \u003cp\u003e8.6 The Finally Block.\u003c\/p\u003e \u003cp\u003e8.7 Plan to Use Exceptions.\u003c\/p\u003e \u003cp\u003e8.8 Some Examples.\u003c\/p\u003e \u003cp\u003e8.9 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9 Introducing Concurrency with Threads.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e9.1 Doing More Than One Thing At Once.\u003c\/p\u003e \u003cp\u003e9.2 Threads.\u003c\/p\u003e \u003cp\u003e9.3 Using Threads.\u003c\/p\u003e \u003cp\u003e9.4 Thread Synchronization.\u003c\/p\u003e \u003cp\u003e9.5 Thread Scheduling.\u003c\/p\u003e \u003cp\u003e9.6 Example Programs.\u003c\/p\u003e \u003cp\u003e9.7 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10 User Interfaces.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Introduction.\u003c\/p\u003e \u003cp\u003e10.2 Core GUI Concepts.\u003c\/p\u003e \u003cp\u003e10.3 Text Input with a GUI.\u003c\/p\u003e \u003cp\u003e10.4 A Very Simple Text Editor.\u003c\/p\u003e \u003cp\u003e10.5 Menus.\u003c\/p\u003e \u003cp\u003e10.6 Painting.\u003c\/p\u003e \u003cp\u003e10.7 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 2 The Process of Programming.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11 The Programming Process.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Introduction.\u003c\/p\u003e \u003cp\u003e11.2 Why Object-oriented?\u003c\/p\u003e \u003cp\u003e11.3 Development Tasks.\u003c\/p\u003e \u003cp\u003e11.4 Testing Strategies.\u003c\/p\u003e \u003cp\u003e11.5 UML Class, Object and Sequence Diagrams.\u003c\/p\u003e \u003cp\u003e11.6 Practice and Experience.\u003c\/p\u003e \u003cp\u003e11.7 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12 Unit Testing.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e12.1 Introduction.\u003c\/p\u003e \u003cp\u003e12.2 Unit Testing—A First Example.\u003c\/p\u003e \u003cp\u003e12.3 The Core Principles of Unit Testing.\u003c\/p\u003e \u003cp\u003e12.4 Test-driven Development.\u003c\/p\u003e \u003cp\u003e12.5 The TestNG Framework.\u003c\/p\u003e \u003cp\u003e12.6 Extending the Person Class.\u003c\/p\u003e \u003cp\u003e12.7 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13 Test-driven Programming Strategies.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e13.1 Introduction.\u003c\/p\u003e \u003cp\u003e13.2 Getting Started—Searching for Files.\u003c\/p\u003e \u003cp\u003e13.3 The GUI.\u003c\/p\u003e \u003cp\u003e13.4 The Complete Searcher.\u003c\/p\u003e \u003cp\u003e13.5 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14 Programming Tools.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e14.1 Introduction.\u003c\/p\u003e \u003cp\u003e14.2 Project Structure.\u003c\/p\u003e \u003cp\u003e14.3 Ant—The Build Tool.\u003c\/p\u003e \u003cp\u003e14.4 Version Control.\u003c\/p\u003e \u003cp\u003e14.5 Integrated Development Environments.\u003c\/p\u003e \u003cp\u003e14.6 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 3 Case Studies in Developing Programs.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e15 Introducing the Case Studies.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e15.1 Introduction.\u003c\/p\u003e \u003cp\u003e15.2 The Case Studies.\u003c\/p\u003e \u003cp\u003e15.3 The Presentations of the Case Studies.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e16 Contacts Book.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e16.1 Introduction.\u003c\/p\u003e \u003cp\u003e16.2 Wading In.\u003c\/p\u003e \u003cp\u003e16.3 Stepping Back—Some Research.\u003c\/p\u003e \u003cp\u003e16.4 Data Storage.\u003c\/p\u003e \u003cp\u003e16.5 A GUI Design.\u003c\/p\u003e \u003cp\u003e16.6 Displaying the List of Contacts.\u003c\/p\u003e \u003cp\u003e16.7 Menus and Action.\u003c\/p\u003e \u003cp\u003e16.8 More to Do.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e17 Pedestrian Crossing Simulation.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e17.1 Introduction.\u003c\/p\u003e \u003cp\u003e17.2 The Initial Problem Specification.\u003c\/p\u003e \u003cp\u003e17.3 The Initial Thinking.\u003c\/p\u003e \u003cp\u003e17.4 A First Pass.\u003c\/p\u003e \u003cp\u003e17.5 Getting GUI.\u003c\/p\u003e \u003cp\u003e17.6 GUIer and GUIer.\u003c\/p\u003e \u003cp\u003e17.7 Control… We Have a Problem.\u003c\/p\u003e \u003cp\u003e17.8 Onward.\u003c\/p\u003e \u003cp\u003e17.9 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 4 The Java Programming Language in Detail.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e18 A Java Language Reference.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e18.1 Introduction.\u003c\/p\u003e \u003cp\u003e18.2 Syntax and Semantics.\u003c\/p\u003e \u003cp\u003e18.3 The Presentation.\u003c\/p\u003e \u003cp\u003e18.4 The Example Programs.\u003c\/p\u003e \u003cp\u003e18.5 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e19 Variables, Types and Expressions.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e19.1 Introduction.\u003c\/p\u003e \u003cp\u003e19.2 Comments.\u003c\/p\u003e \u003cp\u003e19.3 Identifiers.\u003c\/p\u003e \u003cp\u003e19.4 Unicode Escapes.\u003c\/p\u003e \u003cp\u003e19.5 Literals.\u003c\/p\u003e \u003cp\u003e19.6 Types.\u003c\/p\u003e \u003cp\u003e19.7 Scope.\u003c\/p\u003e \u003cp\u003e19.8 Variables.\u003c\/p\u003e \u003cp\u003e19.9 Expressions and Operators.\u003c\/p\u003e \u003cp\u003e19.10 Source Files.\u003c\/p\u003e \u003cp\u003e19.11 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e20 Flow Control.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e20.1 Introduction.\u003c\/p\u003e \u003cp\u003e20.2 Selection.\u003c\/p\u003e \u003cp\u003e20.3 Iteration.\u003c\/p\u003e \u003cp\u003e20.4 Transfer Statements.\u003c\/p\u003e \u003cp\u003e20.5 Recursion.\u003c\/p\u003e \u003cp\u003e20.6 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e21 Classes and Packages.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e21.1 Introduction.\u003c\/p\u003e \u003cp\u003e21.2 Classes.\u003c\/p\u003e \u003cp\u003e21.3 Top-Level Classes.\u003c\/p\u003e \u003cp\u003e21.4 Nested Classes.\u003c\/p\u003e \u003cp\u003e21.5 Enumerated Types.\u003c\/p\u003e \u003cp\u003e21.6 Packages.\u003c\/p\u003e \u003cp\u003e21.7 Static Import.\u003c\/p\u003e \u003cp\u003e21.8 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e22 Inheritance and Interfaces.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e22.1 Introduction.\u003c\/p\u003e \u003cp\u003e22.2 Inheritance.\u003c\/p\u003e \u003cp\u003e22.3 Interfaces.\u003c\/p\u003e \u003cp\u003e22.4 Annotations.\u003c\/p\u003e \u003cp\u003e22.5 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e23 Exception Handling.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e23.1 Introduction.\u003c\/p\u003e \u003cp\u003e23.2 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003e24 Threads and Concurrency.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e24.1 Introduction.\u003c\/p\u003e \u003cp\u003e24.2 Class Thread.\u003c\/p\u003e \u003cp\u003e24.3 Synchronized Methods.\u003c\/p\u003e \u003cp\u003e24.4 Synchronized Statement.\u003c\/p\u003e \u003cp\u003e24.5 Summary.\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart 5 Endmatter.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix A Glossary.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix B The CRC Method.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix C The Online Documentation.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix D Running Java Programs.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix E Class Input.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix F Class FileInput.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix G Class FileOutput.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix H Class DrawFrame.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix I Class DrawPanel.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix J Bibliography.\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eIndex.\u003c\/b\u003e\u003c\/p\u003e  \u003cb\u003eRussel Winder\u003c\/b\u003e was previously Professor of Computer Science and Head of Department at Kings College London.  \u003cp\u003e\u003cb\u003eGraham Roberts\u003c\/b\u003e lectures at Department of Computer Science, University College London, UK.\u003c\/p\u003e  This significantly updated new edition of \u003ci\u003eDeveloping Java Software\u003c\/i\u003e is a thorough presentation of object-oriented design and programming concepts using the Java 5 programming language. The book takes the reader from the basics of using Java 5 to the creation of complete, object-oriented programs. Following an ‘objects early’ approach, the core elements of the Java language are covered, including the use of recently added features such as \u003ci\u003egenerics\u003c\/i\u003e.  \u003cp\u003eThe encouragement of the proper creation and use of classes, and the demonstration of the strategies used to create good quality code are at the core of this book. You will learn how Java programs work and how they can be designed and implemented in an organized and systematic way. In addition, the book addresses how a Java programming project should be managed and introduces the \u003ci\u003eAnt\u003c\/i\u003e build tool and the \u003ci\u003eSubversion\u003c\/i\u003e version control system.\u003c\/p\u003e \u003cp\u003eTesting has always been an important part of \u003ci\u003eDeveloping Java Software\u003c\/i\u003e. This edition provides new chapters which give a detailed introduction to Test-driven Development (TDD). This approach to programming introduces more rigor to writing programs by placing emphasis on writing high quality testable and tested code from the outset. A series of examples and case studies shows how TDD works and highlights the strategies for testing code.\u003c\/p\u003e \u003cp\u003eReflecting recent changes to the Java programming language and newly focused on first courses in programming, this excellent primer is ideal for classroom use or self-study. The many motivating examples and larger case studies show how core ideas can be applied when creating real applications, and show how to use object-oriented methods effectively to create robust, reliable, and fully-tested Java applications.\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47989052768485,"sku":"NP9780470090251","price":65.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9780470090251.jpg?v=1761782597","url":"https:\/\/k12savings.com\/products\/developing-java-software-isbn-9780470090251","provider":"K12savings","version":"1.0","type":"link"}