Download Object Oriented Methods

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
rocket changing state
observers of rocket changing state
Object Oriented Methods
Laboratory Exercise 12
(Observer Pattern)
Acknowledgements: code examples from M Wood and M Roper.
16.11.2003
Dr Andy Brooks
1
Create a Patterns directory...
• Create a Patterns directory on your networked drive.
• In JCreator, create a new workspace called Observer at
location Patterns (in the Patterns directory)
• In JCreator, create three new empty projects in the
Observer workspace called ObsStart, ObsFinish,
ObsSlider
• Download the Java files for the ObsStart project from the
class website and in JCreator add the files to the project.
Compile and execute the project.
– PDemoSwing.java Person.java
• Understand ObsStart project code
16.11.2003
Dr Andy Brooks
2
Java Swing package
• Builds on the AWT classes
• Platform independent look and feel
– AWT is platform dependent
• Swing classes in a package called Javax
import javax.swing.*;
• Many Swing classes are named simply by
putting a J in front of their AWT equivalent
• java.awt.event enables event handling for
GUI components in the AWT
• javax.swing.event enables event handling
for GUI components in Swing
16.11.2003
Dr Andy Brooks
3
Inheritance hierarchy
The getContentPane() method in the
JFrame class returns the content pane
holding the frame´s components.
Different from the AWT Frame.
16.11.2003
Dr Andy Brooks
4
ObsFinish project
• Download the Java files for the ObsFinish
project from the class website and in
Jcreator, add the files to the project.
Compile and execute the project.
– Driver1.java Observer.java PDemoSwing.java
Person.java Subject.java
• Understand ObsFinish project code
16.11.2003
Dr Andy Brooks
5
Observer pattern
Name
– Observer
Problem
– How can a relationship be defined between a group of
objects so that whenever one object is updated all the others
are notified automatically?
Context
– When changes to one object in a group requires changes to
the others in the group and the number of objects in the
group may vary. When there is a need to reduce coupling
i.e. minimise assumptions about the other objects in the
group.
Forces
– Who triggers the updating? The state altering methods in the
observed object or the Client that calls these methods?
16.11.2003
Dr Andy Brooks
6
Documenting…
Solution
– see diagrams provided
Consequences
– A Subject object has limited knowledge of the Observer objects.
• Only that they conform to the Observer interface
– Update notices are automatically broadcast to all interested
objects regardless of number.
– The cost of updating may be greater than you might expect.
– Update notices may occur too frequently.
• Change management might be necessary.
Code example
– see examples provided.
16.11.2003
Dr Andy Brooks
7
Observer pattern participants
• Subject
– knows observers
– mechanism for attaching and detaching observers
• Observer
– interface for objects that should be notified of changes in subject
• ConcreteSubject
– has state
– notifies observers of changes in state
• ConcreteObserver
– implements Observer interface
– has a reference to ConcreteSubject
16.11.2003
Dr Andy Brooks
8
http://www.tml.hut.fi/~pnr/GoF-models/html/Observer.html
16.11.2003
Dr Andy Brooks
9
http://patterndigest.com/
16.11.2003
Dr Andy Brooks
10
Figure 1: Observer Pattern (UML notation)
www.burn-rubber.demon.co.uk/articles/Obs.doc
16.11.2003
Dr Andy Brooks
11
ObsSlider project
• Download the Java files for the ObsSlider
project from the class website and in
JCreator add the files to the project.
Compile and execute the project.
– AgeSlider.java Driver2.java Observer.java
PDemoSwing.java Person.java Subject.java
• Understand ObsSlider project code.
16.11.2003
Dr Andy Brooks
12