Overview
This 5-day, lecture-and-lab course presents object-oriented programming with the Java programming language. Key topics include the Java Development Kit (JDK), Java SE 6, classes, objects, encapsulation, interfaces, inheritance, polymorphism, abstract classes, packages, event-driven programming, graphical user interfaces (GUIs), exception handling, file processing, multithreading, generics and generic collections. Students create Java applications, understand Java object-oriented programming, learn to use various Java Application Programming Interfaces (APIs) and participate in extensive hands-on laboratory assignments. After taking this course, students will be prepared to take Java300—Advanced Java Programming. The course can be customized to the client’s specific needs at no additional charge.
Prerequisites
- Ability to program in C++ or C#
Introduction
Review of Java syntax and concepts presented in the following chapters of Java How to Program, 7/e:
- Chapter 2—Introduction to Java Applications
- Chapter 3—Introduction to Classes and Objects
- Chapter 4—Control Statements: Part 1
- Chapter 5—Control Statements: Part 2
- Chapter 6—Methods: A Deeper Look
- Chapter 7—Arrays
Classes and Objects: A Deeper Look
- Time Class Case Study
- Controlling Access to Members
- Referring to the Current Object's Members with the this Reference
- Time Class Case Study: Overloaded Constructors
- Default and No-Argument Constructors
- Composition
- Enumerations
- Garbage Collection and Method finalize
- static Class Members
- static Import
- final Instance Variables
- Time Class Case Study: Creating Packages
Object-Oriented Programming: Inheritance
- Superclasses and Subclasses
- protected Members
- Relationship between Superclasses and Subclasses
- Creating and Using a CommissionEmployee Class
- Creating a BasePlusCommissionEmployee Class without Using Inheritance
- Creating a CommissionEmployee – BasePlusCommissionEmployee Inheritance Hierarchy
- CommissionEmployee – BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables
- CommissionEmployee – BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables
- Constructors in Subclasses
- Software Engineering with Inheritance
Object-Oriented Programming: Polymorphism
- Polymorphism Examples
- Demonstrating Polymorphic Behavior
- Abstract Classes and Methods
- Case Study: Payroll System Using Polymorphism
- Demonstrating Polymorphic Processing, Operator instanceof and Downcasting
- Summary of the Allowed Assignments Between Superclass and Subclass Variables
- final Methods and Classes
- Case Study: Creating and Using Interfaces
- Developing a Payable Hierarchy
- Declaring Constants with Interfaces
- Common Interfaces of the Java API
GUI Components: Part 1
- Simple GUI-Based Input/Output with JOptionPane
- Overview of Swing Components
- Displaying Text and Images in a Window
- Text Fields and an Introduction to Event Handling with Nested Classes
- Common GUI Event Types and Listener Interfaces
- How Event Handling Works
- JButton component
- Buttons That Maintain State
- JCheckBox component
- JRadioButton component
- JComboBox and Using an Anonymous Inner Class for Event Handling
- JList component
- Mouse Event Handling and Adapter Classes
- JPanel Subclass for Drawing with the Mouse
- Layout Managers
- Using Panels to Manage More Complex Layouts
Exception Handling
- Exception-Handling Overview
- Example: Divide by Zero without Exception Handling
- Example: Handling ArithmeticExceptions and InputMismatchExceptions
- When to Use Exception Handling
- Java Exception Hierarchy
- finally Block
- Stack Unwinding
- printStackTrace , getStackTrace and getMessage
- Chained Exceptions
- Declaring New Exception Types
- Assertions
Files and Streams
- Data Hierarchy
- Files and Streams
- Class File
- Sequential-Access Text Files
- Creating a Sequential-Access Text File
- Reading Data from a Sequential-Access Text File
- Updating Sequential-Access Files
- Object Serialization
- Creating a Sequential-Access File Using Object Serialization
- Reading and Deserializing Data from a Sequential-Access File
- Additional java.io Classes
- Opening Files with JFileChooser
Generics
- Motivation for Generic Methods
- Generic Methods: Implementation and Compile-Time Translation
- Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type
- Overloading Generic Methods
- Generic Classes
- Raw Types
- Wildcards in Methods That Accept Type Parameters
Collections
- Collections Overview
- Class Arrays
- Interface Collection and Class Collections
- ArrayList class and Iterators
- LinkedList class
- Collections Algorithms
- Algorithm sort
- Algorithm shuffle
- Algorithms reverse, fill, copy, max and min
- Algorithm binarySearch
- Stack Class of Package java.util
- Class PriorityQueue and Interface Queue
- Sets
- Maps
Multithreading
- Thread States: Life Cycle of a Thread
- Thread Priorities and Thread Scheduling
- Creating and Executing Threads
- Runnable s and the Thread Class
- Thread Management with the Executor Framework
- Thread Synchronization
- Unsynchronized Data Sharing
- Synchronized Data Sharing—Making Operations Atomic
- Producer/Consumer Relationship without Synchronization
- Producer/Consumer Relationship: ArrayBlockingQueue
- Producer/Consumer Relationship with Synchronization
- Producer/Consumer Relationship: Bounded Buffers
- Producer/Consumer Relationship: The Lock and Condition Interfaces
- Multithreading with GUI: Performing Computations in a Worker Thread
- Multithreading with GUI: Processing Intermediate Results with SwingWorker
Optional Object-Oriented Design (OOD) with the Unified Modeling Language (UML) Case Study
An optional topic for our object-oriented programming classes is our case study on object-oriented design using the UML in which we design and fully implement the software for a simple automated teller machine (ATM). We introduce a subset of the UML 2.0, then guide the reader through an end-to-end first object-oriented design and implementation experience which ends with a walkthrough of the complete code.
Price
- $12,995 lecture fee for up to 20 students maximum.
- Client purchases the books, at its own expense, directly from Pearson (the publisher) at the discounted Deitel rate.
- Instructor Travel Reimbursement (if travel is required).
Courses in the Java Programming Curriculum
