Understanding object-oriented programming with Java
By: Timothy Budd.
Edition: Updated ed, [International ed].
Publisher: Addison-Wesley
Published: 2003
Place of publication: Reading, Mass
Language: eng
Subjects: Java (Computer program language); Object-oriented programming (Computer science)
Notes: With new Java 2 coverage.
Table of contents: title: Preface
pagenum: v; label: I
title: Understanding the Object-Oriented Worldview
pagenum: 1; label: 1
title: Object-Oriented Thinking
pagenum: 3; label: 1.1
title: A Way of Viewing the World
pagenum: 3; label: 1.1.1
title: Agents and Communities
pagenum: 4; label: 1.1.2
title: Messages and Methods
pagenum: 5; label: 1.1.3
title: Responsibilities
pagenum: 6; label: 1.1.4
title: Classes and Instances
pagenum: 6; label: 1.1.5
title: Class Hierarchies: Inheritance
pagenum: 7; label: 1.1.6
title: Method Binding, Overriding, and Exceptions
pagenum: 8; label: 1.1.7
title: Summary of Object-Oriented Concepts
pagenum: 9; label: 1.2
title: Computation as Simulation
pagenum: 10; label: 1.2.1
title: The Power of Metaphor
pagenum: 11; label: 1.3
title: Chapter Summary
pagenum: 12; title: Further Reading
pagenum: 13; title: Study Questions
pagenum: 14; title: Exercises
pagenum: 14; label: 2
title: A Brief History of Object-Oriented Programming
pagenum: 17; label: 2.1
title: The History of Java
pagenum: 18; label: 2.2
title: Client-Side Computing
pagenum: 19; label: 2.2.1
title: Bytecode Interpreters and Just-In-Time Compilers
pagenum: 21; label: 2.2.2
title: Security Issues
pagenum: 21; label: 2.2.3
title: Specialization of Interfaces
pagenum: 22; label: 2.3
title: The White Paper Description
pagenum: 22; label: 2.3.1
title: Java Is Simple
pagenum: 22; label: 2.3.2
title: Java Is Object-Oriented
pagenum: 23; label: 2.3.3
title: Java Is Network Savvy
pagenum: 23; label: 2.3.4
title: Java Is Interpreted
pagenum: 23; label: 2.3.5
title: Java Is Robust
pagenum: 24; label: 2.3.6
title: Java Is Secure
pagenum: 25; label: 2.3.7
title: Java Is Architecture Neutral
pagenum: 25; label: 2.3.8
title: Java Is Portable
pagenum: 25; label: 2.3.9
title: Java Is High-Performance
pagenum: 26; label: 2.3.10
title: Java Is Multithreaded
pagenum: 26; label: 2.3.11
title: Java Is Dynamic
pagenum: 26; label: 2.4
title: Chapter Summary
pagenum: 26; title: Study Questions
pagenum: 26; title: Exercises
pagenum: 27; label: 3
title: Object-Oriented Design
pagenum: 29; label: 3.1
title: Responsibility Implies Noninterference
pagenum: 29; label: 3.2
title: Programming in the Small and in the Large
pagenum: 30; label: 3.3
title: Why Begin with Behavior?
pagenum: 31; label: 3.4
title: A Case Study in RDD
pagenum: 32; label: 3.4.1
title: The Interactive Intelligent Kitchen Helper
pagenum: 32; label: 3.4.2
title: Working With Components
pagenum: 33; label: 3.4.3
title: Identification of Components
pagenum: 33; label: 3.5
title: CRC Cards—Recording Responsibility
pagenum: 34; label: 3.5.1
title: Giving Components a Physical Representation
pagenum: 34; label: 3.5.2
title: The What/Who Cycle
pagenum: 35; label: 3.5.3
title: Documentation
pagenum: 35; label: 3.6
title: Components and Behavior
pagenum: 36; label: 3.6.1
title: Postponing Decisions
pagenum: 37; label: 3.6.2
title: Preparing for Change
pagenum: 37; label: 3.6.3
title: Continuing the Scenario
pagenum: 38; label: 3.6.4
title: Interaction Diagrams
pagenum: 40; label: 3.7
title: Software Components
pagenum: 41; label: 3.7.1
title: Behavior and State
pagenum: 41; label: 3.7.2
title: Instances and Classes
pagenum: 42; label: 3.7.3
title: Coupling and Cohesion
pagenum: 42; label: 3.7.4
title: Interface and Implementation: Parnas's Principles
pagenum: 43; label: 3.8
title: Formalizing the Interface
pagenum: 44; label: 3.8.1
title: Coming Up with Names
pagenum: 44; label: 3.9
title: Designing the Representation
pagenum: 46; label: 3.10
title: Implementing Components
pagenum: 46; label: 3.11
title: Integration of Components
pagenum: 47; label: 3.12
title: Maintenance and Evolution
pagenum: 48; label: 3.13
title: Chapter Summary
pagenum: 48; title: Study Questions
pagenum: 49; title: Exercises
pagenum: 50; label: II
title: Understanding Paradigms
pagenum: 51; label: 4
title: A Paradigm
pagenum: 53; label: 4.1
title: Program Structure
pagenum: 54; label: 4.2
title: The Connection to the Java World
pagenum: 56; label: 4.3
title: Types
pagenum: 57; label: 4.4
title: Access Modifiers
pagenum: 59; label: 4.5
title: Lifetime Modifiers
pagenum: 61; label: 4.6
title: Chapter Summary
pagenum: 61; title: Cross References
pagenum: 62; title: Study Questions
pagenum: 63; title: Exercises
pagenum: 63; label: 5
title: Ball Worlds
pagenum: 67; label: 5.1
title: Data Fields
pagenum: 70; label: 5.2
title: Constructors
pagenum: 71; label: 5.2.1
title: Constructing the Application
pagenum: 74; label: 5.3
title: Inheritance
pagenum: 74; label: 5.4
title: The Java Graphics Model
pagenum: 76; label: 5.5
title: The Class Ball
pagenum: 77; label: 5.6
title: Multiple Objects of the Same Class
pagenum: 78; label: 5.7
title: Chapter Summary
pagenum: 80; title: Cross References
pagenum: 81; title: Study Questions
pagenum: 81; title: Exercises
pagenum: 82; label: 6
title: A Cannon Game
pagenum: 83; label: 6.1
title: The Simple Cannon Game
pagenum: 84; label: 6.1.1
title: Balls That Respond to Gravity
pagenum: 88; label: 6.1.2
title: Integers and ints
pagenum: 89; label: 6.2
title: Adding User Interaction
pagenum: 89; label: 6.2.1
title: Inner Classes
pagenum: 90; label: 6.2.2
title: Interfaces
pagenum: 91; label: 6.2.3
title: The Java Event Model
pagenum: 93; label: 6.2.4
title: Window Layout
pagenum: 94; label: 6.3
title: Chapter Summary
pagenum: 95; title: Cross References
pagenum: 96; title: Study Questions
pagenum: 97; title: Exercises
pagenum: 97; label: 7
title: Pinball Game Construction Kit
pagenum: 99; label: 7.1
title: First Version of Game
pagenum: 99; label: 7.1.1
title: Collection Classes
pagenum: 100; label: 7.1.2
title: Mouse Listeners
pagenum: 103; label: 7.1.3
title: Multiple Threads of Execution
pagenum: 104; label: 7.1.4
title: Exception Handling
pagenum: 106; label: 7.2
title: Adding Targets: Inheritance and Interfaces
pagenum: 107; label: 7.2.1
title: The Pinball Target Interface
pagenum: 107; label: 7.2.2
title: Adding a Label to Our Pinball Game
pagenum: 112; label: 7.3
title: Pinball Game Construction Kit: Mouse Events Reconsidered
pagenum: 116; label: 7.4
title: Chapter Summary
pagenum: 118; title: Cross References
pagenum: 118; title: Study Questions
pagenum: 119; title: Exercises
pagenum: 119; label: III
title: Understanding Inheritance
pagenum: 121; label: 8
title: Understanding Inheritance
pagenum: 123; label: 8.1
title: An Intuitive Description of Inheritance
pagenum: 123; label: 8.2
title: The Base Class Object
pagenum: 124; label: 8.3
title: Subclass, Subtype, and Substitutability
pagenum: 125; label: 8.4
title: Forms of Inheritance
pagenum: 126; label: 8.4.1
title: Inheritance for Specialization
pagenum: 127; label: 8.4.2
title: Inheritance for Specification
pagenum: 127; label: 8.4.3
title: Inheritance for Construction
pagenum: 129; label: 8.4.4
title: Inheritance for Extension
pagenum: 131; label: 8.4.5
title: Inheritance for Limitation
pagenum: 131; label: 8.4.6
title: Inheritance for Combination
pagenum: 132; label: 8.4.7
title: Summary of the Forms of Inheritance
pagenum: 133; label: 8.5
title: Modifiers and Inheritance
pagenum: 134; label: 8.6
title: Programming as a Multiperson Activity
pagenum: 135; label: 8.7
title: The Benefits of Inheritance
pagenum: 135; label: 8.7.1
title: Software Reusability
pagenum: 135; label: 8.7.2
title: Increased Reliability
pagenum: 135; label: 8.7.3
title: Code Sharing
pagenum: 136; label: 8.7.4
title: Consistency of Interface
pagenum: 136; label: 8.7.5
title: Software Components
pagenum: 136; label: 8.7.6
title: Rapid Prototyping
pagenum: 136; label: 8.7.7
title: Polymorphism and Frameworks
pagenum: 137; label: 8.7.8
title: Information Hiding
pagenum: 137; label: 8.8
title: The Costs of Inheritance
pagenum: 137; label: 8.8.1
title: Execution Speed
pagenum: 137; label: 8.8.2
title: Program Size
pagenum: 138; label: 8.8.3
title: Message-Passing Overhead
pagenum: 138; label: 8.8.4
title: Program Complexity
pagenum: 138; label: 8.9
title: Chapter Summary
pagenum: 138; title: Study Questions
pagenum: 139; title: Exercises
pagenum: 140; label: 9
title: A Case Study: Solitaire
pagenum: 141; label: 9.1
title: The Class Card
pagenum: 141; label: 9.2
title: The Game
pagenum: 143; label: 9.3
title: Card Piles—Inheritance in Action
pagenum: 146; label: 9.3.1
title: The Suit Piles
pagenum: 149; label: 9.3.2
title: The Deck Pile
pagenum: 149; label: 9.3.3
title: The Discard Pile
pagenum: 151; label: 9.3.4
title: The Tableau Piles
pagenum: 151; label: 9.4
title: The Application Class
pagenum: 155; label: 9.5
title: Playing the Polymorphic Game
pagenum: 156; label: 9.6
title: Building a More Complete Game
pagenum: 158; label: 9.7
title: Chapter Summary
pagenum: 158; title: Study Questions
pagenum: 159; title: Exercises
pagenum: 159; label: 10
title: Mechanisms for Software Reuse
pagenum: 161; label: 10.1
title: Substitutability
pagenum: 161; label: 10.1.1
title: The Is-a Rule and the Has-a Rule
pagenum: 163; label: 10.1.2
title: Inheritance of Code and Inheritance of Behavior
pagenum: 163; label: 10.2
title: Composition and Inheritance Described
pagenum: 164; label: 10.2.1
title: Using Composition
pagenum: 166; label: 10.2.2
title: Using Inheritance
pagenum: 167; label: 10.3
title: Composition and Inheritance Contrasted
pagenum: 168; label: 10.4
title: Combining Inheritance and Composition
pagenum: 170; label: 10.5
title: Novel Forms of Software Reuse
pagenum: 171; label: 10.5.1
title: Dynamic Composition
pagenum: 172; label: 10.5.2
title: Inheritance of Inner Classes
pagenum: 173; label: 10.5.3
title: Unnamed Classes
pagenum: 174; label: 10.6
title: Chapter Summary
pagenum: 175; title: Study Questions
pagenum: 176; title: Exercises
pagenum: 176; label: 11
title: Implications of Inheritance
pagenum: 177; label: 11.1
title: The Polymorphic Variable
pagenum: 178; label: 11.2
title: Memory Layout
pagenum: 179; label: 11.2.1
title: An Alternative Technique
pagenum: 181; label: 11.3
title: Assignment
pagenum: 182; label: 11.3.1
title: Clones
pagenum: 183; label: 11.3.2
title: Parameters as a Form of Assignment
pagenum: 185; label: 11.4
title: Equality Test
pagenum: 186; label: 11.5
title: Garbage Collection
pagenum: 189; label: 11.6
title: Chapter Summary
pagenum: 190; title: Study Questions
pagenum: 190; title: Exercises
pagenum: 191; label: IV
title: Understanding Polymorphism
pagenum: 193; label: 12
title: Polymorphism
pagenum: 195; label: 12.1
title: Varieties of Polymorphism
pagenum: 195; label: 12.2
title: Polymorphic Variables
pagenum: 196; label: 12.3
title: Overloading
pagenum: 197; label: 12.3.1
title: Overloading Messages in Real Life
pagenum: 197; label: 12.3.2
title: Overloading and Coercion
pagenum: 197; label: 12.3.3
title: Overloading from Separate Classes
pagenum: 198; label: 12.3.4
title: Parametric Overloading
pagenum: 199; label: 12.4
title: Overriding
pagenum: 200; label: 12.4.1
title: Replacement and Refinement
pagenum: 200; label: 12.5
title: Abstract Methods
pagenum: 201; label: 12.6
title: Pure Polymorphism
pagenum: 202; label: 12.7
title: Efficiency and Polymorphism
pagenum: 203; label: 12.8
title: Chapter Summary
pagenum: 204; title: Further Reading
pagenum: 204; title: Study Questions
pagenum: 205; title: Exercises
pagenum: 205; label: 13
title: The AWT
pagenum: 207; label: 13.1
title: The AWT Class Hierarchy
pagenum: 207; label: 13.2
title: The Layout Manager
pagenum: 210; label: 13.2.1
title: Layout Manager Types
pagenum: 211; label: 13.3
title: User Interface Components
pagenum: 213; label: 13.3.1
title: Labels
pagenum: 213; label: 13.3.2
title: Button
pagenum: 214; label: 13.3.3
title: Canvas
pagenum: 215; label: 13.3.4
title: Scroll Bars
pagenum: 215; label: 13.3.5
title: Text Components
pagenum: 216; label: 13.3.6
title: Checkbox
pagenum: 217; label: 13.3.7
title: Checkbox Groups, Choices, and Lists
pagenum: 218; label: 13.4
title: Panels
pagenum: 220; label: 13.4.1
title: ScrollPane
pagenum: 221; label: 13.5
title: Case Study: A Color Display
pagenum: 222; label: 13.6
title: Dialogs
pagenum: 226; label: 13.6.1
title: Example Program for Dialogs
pagenum: 226; label: 13.7
title: The Menu Bar
pagenum: 227; label: 13.7.1
title: A Quit Menu Facility
pagenum: 229; label: 13.8
title: Chapter Summary
pagenum: 231; title: Study Questions
pagenum: 231; title: Exercises
pagenum: 232; label: 14
title: Input and Output Streams
pagenum: 233; label: 14.1
title: Streams versus Readers and Writers
pagenum: 233; label: 14.2
title: Input Streams
pagenum: 234; label: 14.2.1
title: Physical Input Streams
pagenum: 235; label: 14.2.2
title: Virtual Input Streams
pagenum: 235; label: 14.3
title: Stream Tokenizer
pagenum: 238; label: 14.4
title: Output Streams
pagenum: 239; label: 14.5
title: Object Serialization
pagenum: 242; label: 14.6
title: Piped Input and Output
pagenum: 244; label: 14.7
title: Readers and Writers
pagenum: 249; label: 14.8
title: Chapter Summary
pagenum: 251; title: Study Questions
pagenum: 252; title: Exercises
pagenum: 252; label: 15
title: Design Patterns
pagenum: 255; label: 15.1
title: Adapter
pagenum: 255; label: 15.2
title: Composite
pagenum: 256; label: 15.3
title: Strategy
pagenum: 258; label: 15.4
title: Observer
pagenum: 259; label: 15.5
title: Flyweight
pagenum: 260; label: 15.6
title: Abstract Factory
pagenum: 260; label: 15.7
title: Factory Method
pagenum: 261; label: 15.8
title: Iterator
pagenum: 261; label: 15.9
title: Decorator (Filter or Wrapper)
pagenum: 263; label: 15.10
title: Proxy
pagenum: 264; label: 15.11
title: Bridge
pagenum: 264; label: 15.12
title: Chapter Summary
pagenum: 265; title: Further Reading
pagenum: 265; title: Study Questions
pagenum: 265; title: Exercise
pagenum: 266; label: V
title: Understanding the Java World
pagenum: 267; label: 16
title: Exception Handling
pagenum: 269; label: 16.1
title: Information Transmitted to the Catch Block
pagenum: 271; label: 16.2
title: Catching Multiple Errors
pagenum: 271; label: 16.3
title: The Finally Clause
pagenum: 272; label: 16.4
title: Termination or Resumptive Models
pagenum: 272; label: 16.5
title: Exceptions Thrown in the Standard Library
pagenum: 273; label: 16.6
title: Throwing Exceptions
pagenum: 274; label: 16.7
title: Passing On Exceptions
pagenum: 275; label: 16.8
title: Chapter Summary
pagenum: 276; title: Study Questions
pagenum: 276; title: Exercises
pagenum: 276; label: 17
title: Utility Classes
pagenum: 277; label: 17.1
title: Point
pagenum: 277; label: 17.2
title: Dimension
pagenum: 278; label: 17.3
title: Date
pagenum: 278; label: 17.3.1
title: After the Epoch
pagenum: 279; label: 17.4
title: Math
pagenum: 280; label: 17.5
title: Random
pagenum: 281; label: 17.6
title: Toolkit
pagenum: 282; label: 17.7
title: System
pagenum: 283; label: 17.8
title: Strings and Related Classes
pagenum: 283; label: 17.8.1
title: Operations on Strings
pagenum: 284; label: 17.8.2
title: String Buffers
pagenum: 287; label: 17.8.3
title: String Tokenizers
pagenum: 288; label: 17.8.4
title: Parsing String Values
pagenum: 289; label: 17.9
title: Chapter Summary
pagenum: 289; title: Study Questions
pagenum: 290; label: 18
title: Understanding Graphics
pagenum: 291; label: 18.1
title: Color
pagenum: 291; label: 18.2
title: Rectangles
pagenum: 292; label: 18.2.1
title: Rectangle Sample Program
pagenum: 293; label: 18.3
title: Fonts
pagenum: 295; label: 18.3.1
title: Font Metrics
pagenum: 297; label: 18.3.2
title: Font Example Program
pagenum: 297; label: 18.4
title: Images
pagenum: 300; label: 18.4.1
title: Animation
pagenum: 301; label: 18.5
title: Graphics Contexts
pagenum: 302; label: 18.6
title: A Simple Painting Program
pagenum: 304; label: 18.7
title: Chapter Summary
pagenum: 306; title: Study Questions
pagenum: 309; title: Exercises
pagenum: 309; label: 19
title: Collection Classes
pagenum: 311; label: 19.1
title: Element Types and Primitive Value Wrappers
pagenum: 311; label: 19.2
title: Enumerators
pagenum: 313; label: 19.3
title: The Array
pagenum: 314; label: 19.4
title: The Vector Collection
pagenum: 315; label: 19.4.1
title: Using a Vector as an Array
pagenum: 315; label: 19.4.2
title: Using a Vector as a Stack
pagenum: 317; label: 19.4.3
title: Using a Vector as a Queue
pagenum: 317; label: 19.4.4
title: Using a Vector as a Set
pagenum: 318; label: 19.4.5
title: Using a Vector as a List
pagenum: 319; label: 19.5
title: The Stack Collection
pagenum: 319; label: 19.6
title: The BitSet Collection
pagenum: 320; label: 19.6.1
title: Example Program: Prime Sieve
pagenum: 321; label: 19.7
title: The Dictionary Interface and the Hashtable Collection
pagenum: 321; label: 19.7.1
title: Example Program: A Concordance
pagenum: 323; label: 19.7.2
title: Properties
pagenum: 325; label: 19.8
title: Why Are There No Ordered Collections?
pagenum: 326; label: 19.9
title: Building Your Own Containers
pagenum: 328; label: 19.10
title: Chapter Summary
pagenum: 331; title: Study Questions
pagenum: 331; title: Exercises
pagenum: 332; label: 20
title: Multiple Threads of Execution
pagenum: 333; label: 20.1
title: Creating Threads
pagenum: 333; label: 20.1.1
title: Synchronizing Threads
pagenum: 337; label: 20.2
title: Case Study: A Tetris Game
pagenum: 338; label: 20.2.1
title: The Tetris Game Class
pagenum: 339; label: 20.2.2
title: The PieceMover Thread
pagenum: 342; label: 20.2.3
title: The Game Piece Class
pagenum: 345; label: 20.3
title: Chapter Summary
pagenum: 348; title: Cross References
pagenum: 348; title: Study Questions
pagenum: 348; title: Exercises
pagenum: 349; label: 21
title: Applets and Web Programming
pagenum: 351; label: 21.1
title: Applets and HTML
pagenum: 351; label: 21.2
title: Security Issues
pagenum: 352; label: 21.3
title: Applets and Applications
pagenum: 352; label: 21.4
title: Obtaining Resources Using an Applet
pagenum: 354; label: 21.4.1
title: Universal Resource Locators
pagenum: 355; label: 21.4.2
title: Loading a New Web Page
pagenum: 356; label: 21.5
title: Combining Applications and Applets
pagenum: 356; label: 21.6
title: Chapter Summary
pagenum: 357; title: Study Questions
pagenum: 358; title: Exercises
pagenum: 358; label: 22
title: Network Programming
pagenum: 359; label: 22.1
title: Addresses, Ports, and Sockets
pagenum: 359; label: 22.2
title: A Simple Client/Server Program
pagenum: 361; label: 22.3
title: Multiple Clients
pagenum: 364; label: 22.4
title: Transmitting Objects over a Network
pagenum: 369; label: 22.5
title: Providing More Complexity
pagenum: 372; label: 22.6
title: Chapter Summary
pagenum: 373; title: Study Questions
pagenum: 373; title: Exercises
pagenum: 374; label: 23
title: What's New in 1.2
pagenum: 375; label: 23.1
title: Collection Classes
pagenum: 376; label: 23.2
title: Swing User Interface Components
pagenum: 376; label: 23.3
title: Improvements to the Graphics Library
pagenum: 376; label: 23.4
title: Internationalization
pagenum: 377; label: 23.5
title: Java Beans
pagenum: 377; label: 23.6
title: Sound
pagenum: 377; label: 23.7
title: Databases
pagenum: 377; label: 23.8
title: Remote Method Invocation
pagenum: 378; label: 23.9
title: Servlets
pagenum: 378; label: 23.10
title: Chapter Summary
pagenum: 378; title: Further Reading
pagenum: 378; label: A
title: Java Syntax
pagenum: 379; label: A.1
title: Program Structure
pagenum: 379; label: A.1.1
title: Import Declaration
pagenum: 379; label: A.1.2
title: Class Declaration
pagenum: 380; label: A.1.3
title: Interface Declaration
pagenum: 381; label: A.1.4
title: Method Declaration
pagenum: 381; label: A.1.5
title: Constructors
pagenum: 382; label: A.1.6
title: Data Field Declaration
pagenum: 383; label: A.2
title: Statements
pagenum: 383; label: A.2.1
title: Declaration Statement
pagenum: 383; label: A.2.2
title: Assignment Statement
pagenum: 384; label: A.2.3
title: Procedure Calls
pagenum: 384; label: A.2.4
title: If Statement
pagenum: 384; label: A.2.5
title: Switch Statement
pagenum: 385; label: A.2.6
title: While Statement
pagenum: 385; label: A.2.7
title: For Statement
pagenum: 386; label: A.2.8
title: Return Statement
pagenum: 386; label: A.2.9
title: Throw Statement
pagenum: 386; label: A.2.10
title: Try Statement
pagenum: 387; label: A.3
title: Expressions
pagenum: 387; label: A.3.1
title: Literal
pagenum: 387; label: A.3.2
title: Variable
pagenum: 388; label: A.3.3
title: Data Field and Method Access
pagenum: 389; label: A.3.4
title: Operators
pagenum: 389; label: A.3.5
title: Object Creation
pagenum: 390; label: A.3.6
title: Arrays
pagenum: 390; label: B
title: Packages in the Java API
pagenum: 393; title: Glossary
pagenum: 395; title: Bibliography
pagenum: 409; title: Index
pagenum: 413