COURSE OUTLINE - OBJECT ORIENTED PROGRAMMING WITH JAVA

Chapter 1 Introduction to Computers, Programs, and Java 1

1.1 Introduction
1.2 What Is a Computer?
1.3 Programs
1.4 Operating Systems
1.5 Java, World Wide Web, and Beyond
1.6 The Java Language Specification, API, JDK, and IDE
1.7 A Simple Java Program
1.8 Creating, Compiling, and Executing a Java Program
1.9 (GUI) Displaying Text in a Message Dialog Box

Chapter 2 Elementary Programming 23

2.1 Introduction
2.2 Writing Simple Programs
2.3 Reading Input from the Console
2.4 Identifiers
2.5 Variables
2.6 Assignment Statements and Assignment Expressions
2.7 Named Constants
2.8 Numeric Data Types and Operations
2.9 Problem: Displaying the Current Time
2.10 Shorthand Operators
2.11 Numeric Type Conversions
2.12 Problem: Computing Loan Payments
2.13 Character Data Type and Operations
2.14 Problem: Counting Monetary Units
2.15 The String Type
2.16 Programming Style and Documentation
2.17 Programming Errors
2.18 (GUI) Getting Input from Input Dialogs

 

Chapter 3 Selections

3.1 Introduction
3.2 boolean Data Type
3.3 Problem: A Simple Math Learning Tool
3.4 if Statements
3.5 Problem: Guessing Birthdays
3.6 Two-Way if Statements
3.7 Nested if Statements
3.8 Common Errors in Selection Statements
3.9 Problem: An Improved Math Learning Tool
3.10 Problem: Computing Body Mass Index
3.11 Problem: Computing Taxes
3.12 Logical Operators
3.13 Problem: Determining Leap Year
3.14 Problem: Lottery
3.15 switch Statements
3.16 Conditional Expressions
3.17 Formatting Console Output
3.18 Operator Precedence and Associativity
3.19 (GUI) Confirmation Dialogs

Chapter 4 Loops

4.1 Introduction
4.2 The while Loop
4.3 The do-while Loop
4.4 The for Loop
4.5 Which Loop to Use?
4.6 Nested Loops
4.7 Minimizing Numeric Errors
4.8 Case Studies
4.9 Keywords break and continue
4.10 (GUI) Controlling a Loop with a Confirmation Dialog

Chapter 5 Methods

5.1 Introduction
5.2 Defining a Method
5.3 Calling a Method
5.4 void Method Example
5.5 Passing Parameters by Values
5.6 Modularizing Code
5.7 Problem: Converting Decimals to Hexadecimals
5.8 Overloading Methods
5.9 The Scope of Variables
5.10 The Math Class
5.11 Case Study: Generating Random Characters
5.12 Method Abstraction and Stepwise Refinement

Chapter 6 Single-Dimensional Arrays

6.1 Introduction
6.2 Array Basics
6.3 Problem: Lotto Numbers
6.4 Problem: Deck of Cards
6.5 Copying Arrays
6.6 Passing Arrays to Methods
6.7 Returning an Array from a Method
6.8 Variable-Length Argument Lists
6.9 Searching Arrays
6.10 Sorting Arrays
6.11 The Arrays Class

Chapter 7 Multidimensional Arrays

7.1 Introduction
7.2 Two-Dimensional Array Basics
7.3 Processing Two-Dimensional Arrays
7.4 Passing Two-Dimensional Arrays to Methods
7.5 Problem: Grading a Multiple-Choice Test
7.6 Problem: Finding a Closest Pair
7.7 Problem: Sudoku
7.8 Multidimensional Arrays

Chapter 8 Objects and Classes

8.1 Introduction
8.2 Defining Classes for Objects
8.3 Example: Defining Classes and Creating Objects
8.4 Constructing Objects Using Constructors
8.5 Accessing Objects via Reference Variables
8.6 Using Classes from the Java Library
8.7 Static Variables, Constants, and Methods
8.8 Visibility Modifiers
8.9 Data Field Encapsulation
8.10 Passing Objects to Methods
8.11 Array of Objects

Chapter 9 Strings and Text I/O

9.1 Introduction
9.2 The String Class
9.3 The Character Class
9.4 The StringBuilder/StringBuffer Class
9.5 Command-Line Arguments
9.6 The File Class
9.7 File Input and Output
9.8 (GUI) File Dialogs

Chapter 10 Thinking in Objects

10.1 Introduction
10.2 Immutable Objects and Classes
10.3 The Scope of Variables
10.4 The this Reference
10.5 Class Abstraction and Encapsulation
10.6 Object-Oriented Thinking
10.7 Object Composition
10.8 Designing the Course Class
10.9 Designing a Class for Stacks
10.10 Designing the GuessDate Class
10.11 Class Design Guidelines

 

Chapter 11 Inheritance and Polymorphism

11.1 Introduction
11.2 Superclasses and Subclasses
11.3 Using the super Keyword
11.4 Overriding Methods
11.5 Overriding vs. Overloading
11.6 The Object Class and Its toString() Method
11.7 Polymorphism
11.8 Dynamic Binding
11.9 Casting Objects and the instanceof Operator
11.10 The Object’s equals() Method
11.11 The ArrayList Class
11.12 A Custom Stack Class
11.13 The protected Data and Methods
11.14 Preventing Extending and Overriding

 

Chapter 12 GUI Basics

12.1 Introduction
12.2 Swing vs. AWT
12.3 The Java GUI API
12.4 Frames
12.5 Layout Managers
12.6 Using Panels as Subcontainers
12.7 The Color Class
12.8 The Font Class
12.9 Common Features of Swing GUI Components
12.10 Image Icons

 

Chapter 13 Exception Handling

13.1 Introduction
13.2 Exception-Handling Overview
13.3 Exception-Handling Advantages
13.4 Exception Types
13.5 More on Exception Handling
13.6 The finally Clause
13.7 When to Use Exceptions
13.8 Rethrowing Exceptions
13.9 Chained Exceptions
13.10 Creating Custom Exception Classes

 

Chapter 14 Abstract Classes and Interfaces

14.1 Introduction
14.2 Abstract Classes
14.3 Example: Calendar and GregorianCalendar
14.4 Interfaces
14.5 Example: The Comparable Interface
14.6 Example: The ActionListener Interface
14.7 Example: The Cloneable Interface
14.8 Interfaces vs. Abstract Classes
14.9 Processing Primitive Data Type Values as Objects
14.10 Sorting an Array of Objects
14.11 Automatic Conversion between Primitive Types and Wrapper Class Types 481
14.12 The BigInteger and BigDecimal Classes
14.13 Case Study: The Rational Class

 

Chapter 15 Graphics

15.1 Introduction
15.2 Graphical Coordinate Systems
15.3 The Graphics Class
15.4 Drawing Strings, Lines, Rectangles, and Ovals
15.5 Case Study: The FigurePanel Class
15.6 Drawing Arcs
15.7 Drawing Polygons and Polylines
15.8 Centering a String Using the FontMetrics Class
15.9 Case Study: The MessagePanel Class
15.10 Case Study: The StillClock Class
15.11 Displaying Images
15.12 Case Study: The ImageViewer Class

 

Chapter 16 Event-Driven Programming

16.1 Introduction
16.2 Event and Event Source
16.3 Listeners, Registrations, and Handling Events
16.4 Inner Classes
16.5 Anonymous Class Listeners
16.6 Alternative Ways of Defining Listener Classes
16.7 Problem: Loan Calculator
16.8 Window Events
16.9 Listener Interface Adapters
16.10 Mouse Events
16.11 Key Events
16.12 Animation Using the Timer Class

 

Chapter 17 Creating Graphical User Interfaces

17.1 Introduction
17.2 Buttons
17.3 Check Boxes
17.4 Radio Buttons
17.5 Labels
17.6 Text Fields
17.7 Text Areas
17.8 Combo Boxes
17.9 Lists
17.10 Scroll Bars
17.11 Sliders
17.12 Creating Multiple Windows

 

Chapter 18 Applets and Multimedia

18.1 Introduction
18.2 Developing Applets
18.3 The HTML File and the <applet> Tag
18.4 Applet Security Restrictions
18.5 Enabling Applets to Run as Applications
18.6 Applet Life-Cycle Methods
18.7 Passing Strings to Applets
18.8 Case Study: Bouncing Ball
18.9 Case Study: TicTacToe
18.10 Locating Resources Using the URL Class
18.11 Playing Audio in Any Java Program
18.12 Case Study: Multimedia Animations

 

Chapter 19 Binary I/O

19.1 Introduction
19.2 How is I/O Handled in Java?
19.3 Text I/O vs. Binary I/O
19.4 Binary I/O Classes
19.5 Problem: Copying Files
19.6 Object I/O
19.7 Random-Access Files


Chapter 20 Recursion

20.1 Introduction
20.2 Problem: Computing Factorials
20.3 Problem: Computing Fibonacci Numbers
20.4 Problem Solving Using Recursion
20.5 Recursive Helper Methods
20.6 Problem: Finding the Directory Size
20.7 Problem: Towers of Hanoi
20.8 Problem: Fractals
20.9 Problem: Eight Queens
20.10 Recursion vs. Iteration
20.11 Tail Recursion


Chapter 21 Generics

21.1 Introduction
21.2 Motivations and Benefits
21.3 Defining Generic Classes and Interfaces
21.4 Generic Methods
21.5 Raw Type and Backward Compatibility
21.6 Wildcard Generic Types
21.7 Erasure and Restrictions on Generics
21.8 Case Study: Generic Matrix Class


Chapter 22 Java Collections Framework

22.1 Introduction
22.2 Collections
22.3 The Collection Interface and the AbstractCollection Class
22.4 Sets
22.5 The Comparator Interface
22.6 Lists
22.7 Static Methods for Lists and Collections
22.8 Performance of Sets and Lists
22.9 The Vector and Stack Classes
22.10 Queues and Priority Queues
22.11 Maps
22.12 Singleton and Unmodifiable Collections and Maps

 

Chapter 23 Algorithm Efficiency

23.1 Introduction
23.2 Big O Notation
23.3 Examples: Determining Big O
23.4 Analyzing Algorithm Time Complexity
23.5 Case Studies: Finding Fibonacci Numbers
23.6 Case Studies: Finding Greatest Common Divisors
23.7 Case Studies: Finding Prime Numbers
23.8 Case Studies: Closest Pair of Points
23.9 Preview of Other Algorithms

 

Chapter 24 Sorting

24.1 Introduction
24.2 Bubble Sort
24.3 Merge Sort
24.4 Quick Sort
24.5 Heap Sort
24.6 Bucket Sort and Radix Sort
24.7 External Sort

 

Chapter 25 Lists, Stacks, Queues, and Priority Queues

25.1 Introduction
25.2 Common Features for Lists
25.3 Array Lists
25.4 Linked Lists
25.5 Variations of Linked Lists
25.6 Stacks and Queues
25.7 Priority Queues
25.8 Case Study: Evaluating Expressions


Chapter 26 Binary Search Trees

26.1 Introduction
26.2 Binary Search Trees
26.3 Deleting Elements in a BST
26.4 Tree Visualization
26.5 Iterators
26.6 Case Study: Data Compression


Chapter 27 Graphs and Applications

27.1 Introduction
27.2 Basic Graph Terminologies
27.3 Representing Graphs
27.4 Modeling Graphs
27.5 Graph Visualization
27.6 Graph Traversals
27.7 Depth-First Search (DFS)
27.8 Breadth-First Search (BFS)
27.9 Case Study: The Nine Tail Problem
27.10 Case Study: The Knight’s Tour Problem

 

Chapter 28 Weighted Graphs and Applications

28.1 Introduction
28.2 Representing Weighted Graphs
28.3 The WeightedGraph Class
28.4 Minimum Spanning Trees
28.5 Finding Shortest Paths
28.6 Case Study: The Weighted Nine Tail Problem

 

Chapter 29 Multithreading

29.1 Introduction
29.2 Thread Concepts
29.3 Creating Tasks and Threads
29.4 The Thread Class
29.5 Example: Flashing Text
29.6 GUI Event Dispatch Thread
29.7 Case Study: Clock with Audio
29.8 Thread Pools
29.9 Thread Synchronization
29.10 Synchronization Using Locks
29.11 Cooperation among Threads
29.12 Case Study: Producer/Consumer
29.13 Blocking Queues
29.14 Semaphores
29.15 Avoiding Deadlocks
29.16 Thread States
29.17 Synchronized Collections
29.18 SwingWorker
29.19 Displaying Progress Using JProgressBar

 

Chapter 30 Networking

30.1 Introduction 
30.2 Client/Server Computing
30.3 The InetAddress Class
30.4 Serving Multiple Clients
30.5 Applet Clients
30.6 Sending and Receiving Objects
30.7 Retrieving Files from Web Servers
30.8 JEditorPane
30.9 Case Studies: Distributed TicTacToe Games

 

Chapter 31 Internationalization

31.1 Introduction
31.2 The Locale Class
31.3 Displaying Date and Time
31.4 Formatting Numbers
31.5 Resource Bundles
31.6 Character Encoding

 

Chapter 32 JavaBeans and Bean Events

32.1 Introduction
32.2 JavaBeans
32.3 Bean Properties
32.4 Java Event Model Review
32.5 Creating Custom Source Components
32.6 Creating Custom Event Sets

 

Chapter 33 Containers, Layout Managers, and Borders

33.1 Introduction
33.2 Swing Container Structures
33.3 Layout Managers
33.4 Creating Custom Layout Managers
33.5 JScrollPane
33.6 JTabbedPane
33.7 JSplitPane
33.8 Swing Borders

 

Chapter 34 Menus, Toolbars, and Dialogs

34.1 Introduction
34.2 Menus
34.3 Popup Menus
34.4 JToolBar
34.5 Processing Actions Using the Action Interface
34.6 JOptionPane Dialogs
34.7 Creating Custom Dialogs
34.8 JColorChooser
34.9 JFileChooser

 

Chapter 35 MVC and Swing Models

35.1 Introduction
35.2 MVC
35.3 MVC Variations
35.4 Swing Model-View-Controller Architecture
35.5 JSpinner
35.6 Spinner Models and Editors
35.7 JList and its Models
35.8 List Models
35.9 List Cell Renderer
35.10 JComboBox and its Models

 

Chapter 36 JTable and JTree

36.1 Introduction
36.2 JTable
36.3 Table Models and Table Column Models
36.4 Auto Sort and Filtering
36.5 Case Study: Modifying Rows and Columns
36.6 Table Renderers and Editors
36.7 Custom Table Renderers and Editors
36.8 Table Model Events
36.9 JTree
36.10 TreeModel and DefaultTreeModel
36.11 TreeNode, MutableTreeNode, and DefaultMutableTreeNode
36.12 TreePath and TreeSelectionModel
36.13 Case Study: Modifying Trees
36.14 Tree Node Rendering and Editing
36.15 Tree Events


Chapter 37 Java Database Programming

37.1 Introduction
37.2 Relational Database Systems
37.3 SQL
37.4 JDBC
37.5 PreparedStatement
37.6 CallableStatement
37.7 Retrieving Metadata