Computer science

Java, Java, Java: Object-Oriented Problem Solving

Ralph Morelli, Ralph Walde
Ralph Morelli, Ralph Walde · Third edition, open source release (2017) · English · Published 2017

Learn object-oriented programming and problem solving with Java, from fundamental concepts to larger programs.

Learning stage
College introduction
Prerequisites
Introductory computer programming; follow examples in the context of their historical Java version.
PDF pages
856 in this file
Editorial review
2026-10-29

Contents

Choose the section you need. Listening availability is shown for each section.

  • 0 Computers, Objects, and Java
    • 0 Computers, Objects, and Java

      Read the original · Narration availability requires a section review.

    • 0.1 Welcome

      Read the original · Narration availability requires a section review.

    • 0.2 What Is a Computer?

      Read the original · Narration availability requires a section review.

    • 0.3 Networks, the Internet and the World Wide Web

      Read the original · Narration availability requires a section review.

    • 0.4 Why Study Programming?

      Read the original · Narration availability requires a section review.

    • 0.5 Programming Languages

      Read the original · Narration availability requires a section review.

    • 0.6 Why Java?

      Read the original · Narration availability requires a section review.

    • 0.7 What Is Object-Oriented Programming?

      Read the original · Narration availability requires a section review.

  • 1 Java Program Design and Development
    • 1 Java Program Design and Development

      Read the original · Narration availability requires a section review.

    • 1.1 Introduction

      Read the original · Narration availability requires a section review.

    • 1.2 Designing Good Programs

      Read the original · Narration availability requires a section review.

    • 1.3 Designing a Riddle Program

      Read the original · Narration availability requires a section review.

    • 1.4 Java Language Elements

      Read the original · Narration availability requires a section review.

    • 1.5 Editing, Compiling, and Running a Java Program

      Read the original · Narration availability requires a section review.

    • 1.6 From the Java Library: System and PrintStream

      Read the original · Narration availability requires a section review.

  • 2 Objects: Using, Creating, and Defining
    • 2 Objects: Using, Creating, and Defining

      Read the original · Narration availability requires a section review.

    • 2.1 Introduction

      Read the original · Narration availability requires a section review.

    • 2.2 Using String Objects

      Read the original · Narration availability requires a section review.

    • 2.3 Drawing Shapes with a Graphics Object (Optional)

      Read the original · Narration availability requires a section review.

    • 2.4 Class Definition

      Read the original · Narration availability requires a section review.

    • 2.5 CASE STUDY: Simulating a Two-Person Game

      Read the original · Narration availability requires a section review.

    • 2.6 From the Java Library: java.util.Scanner.

      Read the original · Narration availability requires a section review.

  • 3 Methods: Communicating with Objects
    • 3 Methods: Communicating with Objects

      Read the original · Narration availability requires a section review.

    • 3.1 Introduction

      Read the original · Narration availability requires a section review.

    • 3.2 Passing Information to an Object

      Read the original · Narration availability requires a section review.

    • 3.3 Constructor Methods

      Read the original · Narration availability requires a section review.

    • 3.4 Retrieving Information from an Object

      Read the original · Narration availability requires a section review.

    • 3.5 Passing a Value and Passing a Reference

      Read the original · Narration availability requires a section review.

    • 3.6 Flow of Control: Control Structures

      Read the original · Narration availability requires a section review.

    • 3.7 Testing an Improved OneRowNim

      Read the original · Narration availability requires a section review.

    • 3.8 From the Java Library java.lang.Object

      Read the original · Narration availability requires a section review.

    • 3.9 Object-Oriented Design: Inheritance and Polymorphism

      Read the original · Narration availability requires a section review.

    • 3.10 Drawing Lines and Defining Graphical Methods (Optional)

      Read the original · Narration availability requires a section review.

  • 4 Input/Output: Designing the User Interface
    • 4 Input/Output: Designing the User Interface

      Read the original · Narration availability requires a section review.

    • 4.1 Introduction

      Read the original · Narration availability requires a section review.

    • 4.2 The User Interface

      Read the original · Narration availability requires a section review.

    • 4.3 A Command-Line Interface

      Read the original · Narration availability requires a section review.

    • 4.4 A Graphical User Interface (GUI)

      Read the original · Narration availability requires a section review.

    • 4.5 Case Study: The One Row Nim Game

      Read the original · Narration availability requires a section review.

    • 4.6 From the Java Library: java.io.File and File Input (Optional)

      Read the original · Narration availability requires a section review.

  • 5 Java Data and Operators
    • 5 Java Data and Operators

      Read the original · Narration availability requires a section review.

    • 5.1 Introduction

      Read the original · Narration availability requires a section review.

    • 5.2 Boolean Data and Operators

      Read the original · Narration availability requires a section review.

    • 5.3 Numeric Data and Operators

      Read the original · Narration availability requires a section review.

    • 5.4 From the Java Library java.lang.Math

      Read the original · Narration availability requires a section review.

    • 5.5 Numeric Processing Examples

      Read the original · Narration availability requires a section review.

    • 5.6 From the Java Library java.text.NumberFormat

      Read the original · Narration availability requires a section review.

    • 5.7 Character Data and Operators

      Read the original · Narration availability requires a section review.

    • 5.8 Example: Character Conversions

      Read the original · Narration availability requires a section review.

    • 5.9 Problem Solving = Representation + Action

      Read the original · Narration availability requires a section review.

  • 6 Control Structures
    • 6 Control Structures

      Read the original · Narration availability requires a section review.

    • 6.1 Introduction

      Read the original · Narration availability requires a section review.

    • 6.2 Flow of Control: Repetition Structures

      Read the original · Narration availability requires a section review.

    • 6.3 Counting Loops

      Read the original · Narration availability requires a section review.

    • 6.4 Example: Car Loan

      Read the original · Narration availability requires a section review.

    • 6.5 Graphics Example: Drawing a Checkerboard

      Read the original · Narration availability requires a section review.

    • 6.6 Conditional Loops

      Read the original · Narration availability requires a section review.

    • 6.7 Example: Computing Averages

      Read the original · Narration availability requires a section review.

    • 6.8 Example: Data Validation

      Read the original · Narration availability requires a section review.

    • 6.9 Principles of Loop Design

      Read the original · Narration availability requires a section review.

    • 6.10 The switch Multiway Selection Structure

      Read the original · Narration availability requires a section review.

    • 6.11 OBJECT-ORIENTED DESIGN: Structured Programming

      Read the original · Narration availability requires a section review.

  • 7 Strings and String Processing
    • 7 Strings and String Processing

      Read the original · Narration availability requires a section review.

    • 7.1 Introduction

      Read the original · Narration availability requires a section review.

    • 7.2 String Basics

      Read the original · Narration availability requires a section review.

    • 7.3 Finding Things Within a String

      Read the original · Narration availability requires a section review.

    • 7.4 Example: Keyword Search

      Read the original · Narration availability requires a section review.

    • 7.5 From the Java Library: java.lang.StringBuffer

      Read the original · Narration availability requires a section review.

    • 7.6 Retrieving Parts of Strings

      Read the original · Narration availability requires a section review.

    • 7.7 Example: Processing Names and Passwords

      Read the original · Narration availability requires a section review.

    • 7.8 Processing Each Character in a String

      Read the original · Narration availability requires a section review.

    • 7.9 Comparing Strings

      Read the original · Narration availability requires a section review.

    • 7.10 From the Java Library: java.util.StringTokenizer

      Read the original · Narration availability requires a section review.

    • 7.11 Handling Text in a Graphics Context (Optional)

      Read the original · Narration availability requires a section review.

  • 8 Inheritance and Polymorphism
    • 8 Inheritance and Polymorphism

      Read the original · Narration availability requires a section review.

    • 8.1 Introduction

      Read the original · Narration availability requires a section review.

    • 8.2 Java's Inheritance Mechanism

      Read the original · Narration availability requires a section review.

    • 8.3 Abstract Classes, Interfaces, and Polymorphism

      Read the original · Narration availability requires a section review.

    • 8.4 Example: A Toggle Button

      Read the original · Narration availability requires a section review.

    • 8.5 Example: The Cipher Class Hierarchy

      Read the original · Narration availability requires a section review.

    • 8.6 Case Study: A Two Player Game Hierarchy

      Read the original · Narration availability requires a section review.

    • 8.7 Principles Of Object-Oriented Design

      Read the original · Narration availability requires a section review.

  • 9 Arrays and Array Processing
    • 9 Arrays and Array Processing

      Read the original · Narration availability requires a section review.

    • 9.1 Introduction

      Read the original · Narration availability requires a section review.

    • 9.2 One-Dimensional Arrays

      Read the original · Narration availability requires a section review.

    • 9.3 Simple Array Examples

      Read the original · Narration availability requires a section review.

    • 9.4 Example: Counting Frequencies of Letters

      Read the original · Narration availability requires a section review.

    • 9.5 Array Algorithms: Sorting

      Read the original · Narration availability requires a section review.

    • 9.6 Array Algorithms: Searching

      Read the original · Narration availability requires a section review.

    • 9.7 Two-Dimensional Arrays

      Read the original · Narration availability requires a section review.

    • 9.8 Multidimensional Arrays (Optional)

      Read the original · Narration availability requires a section review.

    • 9.9 OBJECT-ORIENTED DESIGN: [2pt]Polymorphic Sorting (Optional)

      Read the original · Narration availability requires a section review.

    • 9.10 From the Java Library: java.util.Vector

      Read the original · Narration availability requires a section review.

    • 9.11 Case Study: An N-Player Computer Game

      Read the original · Narration availability requires a section review.

    • 9.12 A GUI-Based Game (Optional Graphics)

      Read the original · Narration availability requires a section review.

  • 10 Exceptions: When Things Go Wrong
    • 10 Exceptions: When Things Go Wrong

      Read the original · Narration availability requires a section review.

    • 10.1 Introduction

      Read the original · Narration availability requires a section review.

    • 10.2 Handling Exceptional Conditions

      Read the original · Narration availability requires a section review.

    • 10.3 Java's Exception Hierarchy

      Read the original · Narration availability requires a section review.

    • 10.4 Handling Exceptions Within a Program

      Read the original · Narration availability requires a section review.

    • 10.5 Error Handling and Robust Program Design

      Read the original · Narration availability requires a section review.

    • 10.6 Creating and Throwing Your Own Exceptions

      Read the original · Narration availability requires a section review.

    • 10.7 From the Java Library: JOptionPane

      Read the original · Narration availability requires a section review.

  • 11 Files and Streams: Input/Output Techniques
    • 11 Files and Streams: Input/Output Techniques

      Read the original · Narration availability requires a section review.

    • 11.1 Introduction

      Read the original · Narration availability requires a section review.

    • 11.2 Streams and Files

      Read the original · Narration availability requires a section review.

    • 11.3 CASE STUDY: Reading and Writing Text Files

      Read the original · Narration availability requires a section review.

    • 11.4 The File Class

      Read the original · Narration availability requires a section review.

    • 11.5 Example: Reading and Writing Binary Files

      Read the original · Narration availability requires a section review.

    • 11.6 Object Serialization: Reading and Writing Objects

      Read the original · Narration availability requires a section review.

    • 11.7 From the Java Library javax.swing.JFileChooser

      Read the original · Narration availability requires a section review.

    • 11.8 Using File Data in Programs

      Read the original · Narration availability requires a section review.

  • 12 Recursive Problem Solving
    • 12 Recursive Problem Solving

      Read the original · Narration availability requires a section review.

    • 12.1 Introduction

      Read the original · Narration availability requires a section review.

    • 12.2 Recursive Definition

      Read the original · Narration availability requires a section review.

    • 12.3 Recursive String Methods

      Read the original · Narration availability requires a section review.

    • 12.4 Recursive Array Processing

      Read the original · Narration availability requires a section review.

    • 12.5 Example: Drawing (Recursive) Fractals

      Read the original · Narration availability requires a section review.

    • 12.6 OBJECT-ORIENTED DESIGN: Tail Recursion

      Read the original · Narration availability requires a section review.

    • 12.7 OBJECT-ORIENTED DESIGN: Recursion or Iteration?

      Read the original · Narration availability requires a section review.

    • 12.8 From the Java Library: javax.swing.JComboBox

      Read the original · Narration availability requires a section review.

  • 13 Graphical User Interfaces
    • 13 Graphical User Interfaces

      Read the original · Narration availability requires a section review.

    • 13.1 Introduction

      Read the original · Narration availability requires a section review.

    • 13.2 Java GUIs: From AWT to Swing

      Read the original · Narration availability requires a section review.

    • 13.3 The Swing Component Set

      Read the original · Narration availability requires a section review.

    • 13.4 OBJECT-ORIENTED DESIGN: Model-View-Controller Architecture

      Read the original · Narration availability requires a section review.

    • 13.5 The Java Event Model

      Read the original · Narration availability requires a section review.

    • 13.6 CASE STUDY: Designing a Basic GUI

      Read the original · Narration availability requires a section review.

    • 13.7 Containers and Layout Managers

      Read the original · Narration availability requires a section review.

    • 13.8 Checkboxes, Radio Buttons, and Borders

      Read the original · Narration availability requires a section review.

    • 13.9 Menus and Scroll Panes

      Read the original · Narration availability requires a section review.

  • 14 Threads and Concurrent Programming
    • 14 Threads and Concurrent Programming

      Read the original · Narration availability requires a section review.

    • 14.1 Introduction

      Read the original · Narration availability requires a section review.

    • 14.2 What Is a Thread?

      Read the original · Narration availability requires a section review.

    • 14.3 From the Java Library: java.lang.Thread

      Read the original · Narration availability requires a section review.

    • 14.4 Thread States and Life Cycle

      Read the original · Narration availability requires a section review.

    • 14.5 Using Threads to Improve Interface Responsiveness

      Read the original · Narration availability requires a section review.

    • 14.6 CASE STUDY: Cooperating Threads

      Read the original · Narration availability requires a section review.

    • 14.7 CASE STUDY: The Game of Pong

      Read the original · Narration availability requires a section review.

  • 15 Sockets and Networking
    • 15 Sockets and Networking

      Read the original · Narration availability requires a section review.

    • 15.1 Introduction

      Read the original · Narration availability requires a section review.

    • 15.2 An Overview of Networks

      Read the original · Narration availability requires a section review.

    • 15.3 Using Multimedia Network Resources for a Graphical Program

      Read the original · Narration availability requires a section review.

    • 15.4 From the Java Library: java.net.URL

      Read the original · Narration availability requires a section review.

    • 15.5 The Slide Show Program

      Read the original · Narration availability requires a section review.

    • 15.6 Adding Text Network Resources for an Application

      Read the original · Narration availability requires a section review.

    • 15.7 Client/Server Communication via Sockets

      Read the original · Narration availability requires a section review.

    • 15.8 CASE STUDY: Generic Client/Server Classes

      Read the original · Narration availability requires a section review.

    • 15.9 Playing One Row Nim Over the Network

      Read the original · Narration availability requires a section review.

    • 15.10 Java Network Security Restrictions

      Read the original · Narration availability requires a section review.

    • 15.11 Java Servlets and Java Server Pages

      Read the original · Narration availability requires a section review.

  • 16 Data Structures: Lists, Stacks, and Queues
    • 16 Data Structures: Lists, Stacks, and Queues

      Read the original · Narration availability requires a section review.

    • 16.1 Introduction

      Read the original · Narration availability requires a section review.

    • 16.2 The Linked List Data Structure

      Read the original · Narration availability requires a section review.

    • 16.3 OBJECT-ORIENTED DESIGN: The List Abstract Data Type (ADT)

      Read the original · Narration availability requires a section review.

    • 16.4 The Stack ADT

      Read the original · Narration availability requires a section review.

    • 16.5 The Queue ADT

      Read the original · Narration availability requires a section review.

    • 16.6 From the Java Library: The Java Collections Framework and Generic Types

      Read the original · Narration availability requires a section review.

    • 16.7 Using the Set and Map Interfaces

      Read the original · Narration availability requires a section review.

    • 16.8 The Binary Search Tree Data Structure

      Read the original · Narration availability requires a section review.

  • A Coding Conventions

    Read the original · Narration availability requires a section review.

  • B The Java Development Kit

    Read the original · Narration availability requires a section review.

  • C The ASCII and Unicode Character Sets

    Read the original · Narration availability requires a section review.

  • D Java Keywords

    Read the original · Narration availability requires a section review.

  • E Operator Precedence Hierarchy

    Read the original · Narration availability requires a section review.

  • F Java Inner Classes

    Read the original · Narration availability requires a section review.

  • G Java Autoboxing and Enumeration

    Read the original · Narration availability requires a section review.

  • H Java and UML Resources

    Read the original · Narration availability requires a section review.

Sources and permissions

The author and publisher remain the source of this textbook. Permission information applies to the specific files in this edition.

Author, publisher, and discovery sources

Authors: Ralph Morelli, Ralph Walde
Publisher: Ralph Morelli, Ralph Walde

  • Discovered through Open Textbook Library: Source record · Checked 2026-10-27
  • Discovered through Open Textbook Library: Source record · Checked 2026-10-25
CC BY 4.0

Ralph Morelli and Ralph Walde, Java, Java, Java: Object-Oriented Problem Solving, third edition, open source PDF dated June 25, 2017. CC BY 4.0.

Read the license

Original publication

Changes: Original PDF bytes are unchanged. Catalog metadata and page viewing are supplied by iReadAll. No endorsement implied. Structured extraction, audio, translation and independent image redistribution are not approved.

Checked 2026-10-29

More actions
Download original PDF