Written as a sophomore-level computer science textbook, Object-Oriented Software Design and Construction with Java introduces key concepts in advanced object-oriented design, UML, and introductory Swing programming. Ideally suited to the classroom, this title delivers an engaging mix of theory and practice that will help students take their basic Java skills to the next level. The best thing about this textbook is its thorough treatment of more advanced object-oriented design concepts such as inheritance, polymorphism, aggregation, and even an introduction to software patterns. Better yet, the author incorporates basic UML diagrams (including class, sequence, and state diagrams) to bolster the software engineering material presented here. One standout feature is a table of about two dozen key OO buzzwords, along with handy definitions. Many of the code examples make use of an "ecological" life simulation (which include predators and prey classes). Besides a guide to doing more with objects, this book also zeroes in on several key Java APIs, including an introduction to Swing programming, and an excellent chapter on using Java's (often mysterious) stream classes for both file and console I/O. (Much of this text makes use of the author's own UI classes, though, instead of Swing.) For any student who is serious about Java, this book is an excellent mix of cutting-edge thinking about objects and engaging code examples that will let you master today's hottest programming language while gaining some new insights on proper class design. --Richard Dragan Topics covered: Object-oriented design concepts (abstraction, separation, composition, generalization); Java classes; method overloading; arrays; object communication; associations; interfaces; static and dynamic aggregation; designing class hierarchies with inheritance; introduction to software patterns; Swing user interfaces (overview of features and basic controls) layout managers; Java I/O with binary, text, and object data; file and console I/O; threads and synchronization basics; distributed concurrency; UML basics (class, sequence, and state diagrams); simulations; sample programming exercises.