Next:
From Scheme to Java
Notes on
Object-Oriented Program Design
Robert ``Corky'' Cartwright
From Scheme to Java
Introduction
What is an Object?
Java Mechanics
Notation and Syntax
Java Expressions
Precedence of Operations
Java Statements
The Structure of Java Programs
Static Members
Java Programs
A Sample Java Program
Variations on the Sample Program
Defining Static Methods
Capitalization and Commenting Conventions
Java Data Types
Primitive Types
Numeric Constants
Conversions Between Types
Object Types
Java Class Definitions
Defining Classes to Represent Compound Data
Constructors
Defining Instance Methods
Printing Objects
The Union and Composite Patterns
Member Hoisting
The Composite Pattern
The Composite Pattern
Defining Instance Methods for a Composite Class
Conditional Statements
Basic Program Design
The Design Recipe
Data Analysis and Design
Contract and Header
Examples
Template
Body
Test
An Extended Example: Lists
Type Predicates and Type Casts in Java
Maintaining Sample Test Data
A Sample Program
Inheritance and the Composite Pattern
Overriding
equals
Help Methods, Packages, and Visibility
Using Classes to Enforce Invariants
Interfaces
Multiple Inheritance
Implicit Polymorphism
Interface Types
The Command Pattern
Exercises:
Static Members of Classes
Singleton Pattern
Other Uses of Static Members
Loose Ends
Local variables
Casts and Static Type Checking
Exceptions as Errors
Name and Method Overloading
The Visitor Pattern
Interpreting Arithmetic Expressions
Openness in Data Design
Polymorphic Visitors
Polymorphic Visitors with Arguments
Unusual Situations versus Runtime Errors
A Motivating Example
Using Java Exceptions
Exception Handling
Object-Oriented Data Structures
Sequences
Arrays
Recipes for Processing Arrays
Lists
Immutable Sequences
Mutable Sequences
Singly-linked Mutable List Representation
Extended Mutable Lists: Nested Classes
Nested Classes vs. Inner Classes
Spaghetti References (akin to spaghetti code)
The Iterator Pattern
An Implementation
BiLists and Their Iterators
Alternate Representations of Lists
Arrays
Hybrid Representations of Sequences
Graphical User Interfaces
GUI Programming
Model-View-controller Pattern
How to Write a View
Warning
Coding the View Class
How to Write a Trivial Model
How to Write a Controller
What is Concurrent Programming?
Synchronized methods and statements
Deadlock
About this document ...
Corky Cartwright
1999-09-07