Learn Object-Oriented Java the Hard Way
Table of Contents
Preface: Learning by Doing
Introduction: Object-Oriented Java
Exercise 0: The Setup
Exercise 1: Working With Objects
Exercise 2: Creating Your Own Single Objects
Exercise 3: Defining Objects in Separate Files
Exercise 4: Fields in an Object
Exercise 5: Programming Paradigms
Exercise 6: Accessing Fields in Methods
Exercise 7: Encapsulation and Automated Testing
Exercise 8: Failure to Encapsulate
Exercise 9: Private Fields and Constructors
Exercise 10: Automated Testing with Arrays
Exercise 11: Public vs Private vs Unspecified
Exercise 12: Reviewing Constructors
Exercise 13: Default Values for Fields
Exercise 14: toString and this
Exercise 15: Noughts and Crosses / Extreme Testing
Exercise 16: Introduction to ArrayLists
Exercise 17: Word Counter Using an ArrayList
Exercise 18: Primitive Variables in Memory
Exercise 19: Reference Variables in Memory
Exercise 20: Lists of Primitive Values
Exercise 21: Generics vs. Casts
Exercise 22: Object-Oriented Design and Efficiency
Exercise 23: Writing a Silly Class with Generics
Exercise 24: Writing a Useful Class with Generics
Exercise 25: Sorting and Complexity
Exercise 26: Sorting Speeds - Primitives vs Objects
Exercise 27: Static Variables and Static Methods
Exercise 28: Popular Static Methods in Java
Exercise 29: Importing Static Class Members
Exercise 30: References as Parameters
Exercise 31: Java Strings Are Immutable
Exercise 32: Parameters vs Properties
Exercise 33: Basic Inheritance
Exercise 34: How Fields Are Inherited
Exercise 35: “Useful” Inheritance - A Game Board
Exercise 36: A Game Called Breakthrough
Exercise 37: Two Kinds of Equality
Exercise 38: Implementing Interfaces
Exercise 39: The Comparable Interface
Exercise 40: List and Map
Exercise 41: Implementing Several Interfaces
Exercise 42: DropGame and Assertions
Exercise 43: Abstract Classes and Final Methods
Exercise 44: Packages
Exercise 45: Creating a JAR File
Exercise 46: A Simple Graphical Window
Exercise 47: An Interactive Window
Exercise 48: Using (F)XML to Define Your Interface
Exercise 49: Canvas Basics
Exercise 50: Getting Mouse Input
Exercise 51: More Complex Mouse Interaction
Exercise 52: Animation
Exercise 53: Handling Keypress Events
Exercise 54: Graphical Noughts and Crosses
Exercise 55: Graphical Drop Game
Next Steps