At the end of this course, you should have a working knowledge of the following topics:

Event-Driven Programming

  1. Explain the roles of event sources and event listeners in event-driven programming.

  2. Define a GUI class that is derived from JFrame and implements the ActionListener interface.

  3. Design and implement a graphical user interface (GUI) application programs using the various classes of the Java Swing package.

  4. Explain the role of "event source" objects and give examples of two classes whose instances are "event source" objects

  5. Explain the role of "event listener" objects and give examples of two classes whose instances are "event listener" objects

  6. Create an inner class that implements ActionListener to serve as an event listener for ActionEvents generated by event sources such as JButtons

  7. Subscribe the ActionEvents generated by a event source such as a JButton to be listened to by an event listener

  8. Define the action command string for an event source

  9. Design and implement event handling methods to handle multiple Action Events

  10. Implement code to handle an action event from the JButton or JTextField Java Swing classes

  11. Explain the purpose of the argument passed to the actionPerformed() method

  12. Design and implement an ActionListener class

  13. Determine an event source from within an actionPerformed() method

  14. Determine the specific object that initiated an Action Event

  15. Describe at least two different ways of structuring ActionListener classes and discuss advantages and disadvantages of each

  16. Describe the differences between an inner class and a regular (non-inner) class

  17. Make use of inner classes to implement ActionListener classes

GUI Components

  1. Identify two ways to position GUI components on the content pane of a JFrame object
  2. Modify the content pane of a JFrame object, such as setting the background color, setting the layout, and adding components
  3. Modify the basic properties of a JFrame, such as setting the title, size, visibility...
  4. Design and implement a graphical user interface (GUI) programs using the JLabel, JPanel, JButton, and JTextField classes from the Java Swing package
  5. Differentiate between layout managers such as: FlowLayout, BorderLayout and GridLayout
  6. Use the layout managers listed above to arrange components on a content pane

UML

  1. Read and understand UML class and sequence diagrams.

  2. Implement source that meets the design specified in a UML class and sequence diagram.

  3. Draw a UML class diagram illustrating the relationships between two or more classes, using the appropriate connectors indicating generalization, realization, exclusive composition, shared aggregation, dependency, association, and nesting.

  4. Indicate multiplicity in composition, aggregation, and association relationships.

ArrayLists

  1. Use the Java Collection Framework to create an ArrayList.

  2. Describe the advantages of an ArrayList over an Array.

  3. Populate an ArrayList<E> with objects of a specific type E.

  4. Iterate through an array list examining each object in the list.

  5. Serialize an ArrayList using ObjectOutputStream

Exception Handling

  1. Define the software quality attribute robustness (Robust software behaves “reasonably” even in unforeseen circumstances, such as incorrect input or hardware failure).  Explain how exception handling increases the robustness of software.

  2. Define exception; explain the concepts of “catch” and “throw” as they relate to exceptions.

  3. For a given program and input condition, determine the control flow of a try-catch block, with and without the finally clause.

  4. Implement a method that catches an exception thrown by a class in the Java Standard Library.

  5. Implement a method that uses a try-catch block and a repetition statement (i.e., loop) to validate user input.

  6. Distinguish between checked and unchecked exceptions.

  7. Write a method that throws an exception.

  8. Explain the concept of exception propagation; explain the outcome if an exception is thrown and no catch block for that exception is found on the program stack.

  9. Explain the consequences of not handling a checked exception within a method where the checked exception occurs

  10. Use multiple catch blocks to customize the way different types of exceptions are handled

  11. Use the throws clause to postpone when a checked exception is handled

File Input and Output (I/O)

  1. Create a Java File object and associate it with a file on disk.

  2. Determine if a File object exists.

  3. Determine if a File object is a file or a directory.

  4. Associate a low-level input (i.e., FileInputStream) or output (i.e., FileOutputStream) stream with a File object.

  5. Describe how low-level file I/O works (i.e., reading or writing of byte data, importance of the sequence of data).

  6. Describe how high-level (DataOutputStream and DataInputStream ) file I/O works (i.e., methods for reading and writing of primitive data types, association with low-level stream, the importance of the sequence of data ).

  7. Explain why it is important to close a stream when file operations are complete.

  8. Explain what the PrintWriter class is used for.

  9. Explain the difference between binary and text files.

  10. Describe how Object I/O (ObjectOutputStream and ObjectInputStream) works ( i.e., methods for reading and writing of objects, association with low-level stream, the importance of the sequence of objects and type casting).

Inheritance and Polymorphism

  1. Use inheritance in creating classes.

  2. Use the “protected” modifier in defining an inheritance hierarchy.

  3. Explain why a class with a superclass other than object should make an explicit call to a constructor of the superclass.

  4. Describe when to use an abstract class.

  5. Explain the concept of the Java interface

  6. Create an abstract method; describe the purpose of abstract methods.

  7. Explain the concept of polymorphism.

  8. Read code that uses inheritance and polymorphism and determine its output on execution.

  9. Explain what it means for a class to implement an interface