-
1 ObjectOriented Software Development
1.1 Software Development
1.1.1 An Engineering
Perspective
1.1.2 The Desirable
Qualities of Software Systems
1.2 A View of the World
1.3 Principles and Concepts
1.3.1 Classes
and Objects
1.3.2 Modularity
1.3.3 Abstraction
and Encapsulation
1.3.4 Inheritance
1.3.5 Association
1.3.6 Modeling
Dynamic Behavior
1.4 ObjectOriented Development
1.4.1 The Micro
and Macro Processes
1.4.2 Case Study
- An OnLine Bookstore
2 Introduction to Java
2.1 The Architecture of Java
2.2 Simple Programs
2.2.1 A Simple
App
2.2.2 A Simple
Applet
3 Elements of Java
3.1 Lexical Elements
3.1.1 Character
Set
3.1.2 Identifiers
3.1.3 Primitive
Types and Literals
3.1.4 Operators
and Expressions
3.2 Variables and Types
3.2.1 Variable
Declarations
3.2.2 Type Compatibility
and Conversion
3.2.3 Reference
Types
3.2.4 Arrays
3.3 Statements
3.3.1 Statement
Labels
3.3.2 Statement
Blocks
3.3.3 Simple
Statements
3.3.4 Compound
Statements
3.3.5 MultiLevel
Breaking
3.4 Class Declarations
3.4.1 Class
Syntax
3.4.2 Creating
and Initializing Objects
3.4.3 Accessing
Members
3.4.4 Method
Invocation and Parameter Passing
3.4.5 Static
Fields and Methods
3.4.6 Object
Reference this
3.4.7 Interfaces
and Abstract Classes
3.4.8 Strings
3.4.9 Wrapper
Classes
3.5 Packages
3.6 Exceptions
3.7 A Simple Animation Applet
4 Classes and Inheritance
4.1 Overloading
4.2 Inheritance
4.2.1 Constructors
of Extended Classes
4.2.2 Subtypes
and Polymorphism
4.2.3 Overriding
Methods
4.2.4 Restriction
4.3 Extending and Implementing Interfaces
4.4 Hiding Fields and Static Methods
4.5 Designing Classes
4.5.1 Avoiding
Public Fields
4.5.2 Separating
Interface From Implementation
4.5.3 File Organization
4.5.4 The Canonical
Form
4.5.5 Class
Organization
4.5.6 Documentation
4.5.7 Unit Testing
4.6 Applications --- Animation Applets
4.6.1 Getting
Parameters
4.6.2 An Idiom
for Animation
4.6.3 Using
DoubleBuffering
4.6.4 Reading
Files In Applets
5 Design by Abstraction
5.1 Design Patterns
5.2 Designing Generic Components
5.2.1 Factorization
5.2.2 Generalization
5.2.3 Abstract
Coupling
5.3 Design Case Study_ Sorting Animation
5.3.1 The Initial
Implementation
5.3.2 Separating
the Algorithms
5.3.3 Separating
the Display Strategies
6 ObjectOriented Application Frameworks
6.1 Application Frameworks
6.2 The Collections Framework
6.2.1 Abstract
Collections
6.2.2 Interfaces
of Abstract Collections
6.2.3 Concrete
Collections
6.2.4 Iteration
6.2.5 Ordering
and Sorting
6.3 The Graphical User Interface Framework
6.3.1 The Widgets
6.3.2 Layout
Managers
6.3.3 Handling
Events
6.3.4 Frames
and Dialogs
6.4 The Input/Output Framework
6.4.1 The Byte
Streams
6.4.2 The Character
Streams
6.4.3 Random
Access Files
7 Design Case Study: A Drawing Pad
7.1 Iterative Development
7.2 Iteration 1: A Simple Scribbling Pad
7.3 Iteration 2: The Control Panel
7.4 Iteration 3: The Drawing Tools
7.5 Iteration 4: More Tools
7.5.1 Handling
The Keyboard Input
7.5.2 Drawing
Filled Shapes
8 Concurrent Programming
8.1 Threads
8.1.1 Creation
of Threads
8.1.2 Controlling
Threads
8.2 Thread Safety and Liveness
8.2.1 Synchronization
8.2.2 Cooperation
Among Threads
8.2.3 Liveness
Failures
8.3 Design Case Study: TicTacToe Game
9 Distributed Computing
9.1 SocketBased Communication
9.1.1 Design
Case Studies
9.2 Remote Method Invocation
9.2.1 The Architecture
9.2.2 Using
RMI
9.2.3 Design
Case Studies