Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
INHERITANCE POLYMORPHISM AND INTERFACES
CODE EXAMPLES FROM JAVA AN INTRODUCTION TO PROGRAMMING AND PROBLEM SOLVING (6TH EDITION) BY
WALTER SAVITCH
IQS2 Spring 2013
Objectives
uml Describe polymorphism and inheritance in general
uml Define interfaces to specify methodsuml Describe dynamic bindinguml Define and use derived classes in Javauml Understand how inheritance is used in the JFrame class
2
Inheritance Basics Outline
uml Derived Classesuml Overriding Method Definitionsuml Overriding Versus Overloadinguml The final Modifieruml Private Instance Variables and Private Methods
of a Base Classuml UML Inheritance Diagrams
3
Inheritance Basics
uml Inheritance allows programmer to define a general class
uml Later you define a more specific classcurren Adds new details to general definition
uml New class inherits all properties of initial general class
uml Example the Person class
4
5
Derived Classes
uml An example class hierarchy6
Derived Classes
uml Person class used as a base classcurren Also called superclass
uml Student is a derived classcurren Also called subclasscurren Inherits methods and members from the superclass
7
8
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Objectives
uml Describe polymorphism and inheritance in general
uml Define interfaces to specify methodsuml Describe dynamic bindinguml Define and use derived classes in Javauml Understand how inheritance is used in the JFrame class
2
Inheritance Basics Outline
uml Derived Classesuml Overriding Method Definitionsuml Overriding Versus Overloadinguml The final Modifieruml Private Instance Variables and Private Methods
of a Base Classuml UML Inheritance Diagrams
3
Inheritance Basics
uml Inheritance allows programmer to define a general class
uml Later you define a more specific classcurren Adds new details to general definition
uml New class inherits all properties of initial general class
uml Example the Person class
4
5
Derived Classes
uml An example class hierarchy6
Derived Classes
uml Person class used as a base classcurren Also called superclass
uml Student is a derived classcurren Also called subclasscurren Inherits methods and members from the superclass
7
8
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Inheritance Basics Outline
uml Derived Classesuml Overriding Method Definitionsuml Overriding Versus Overloadinguml The final Modifieruml Private Instance Variables and Private Methods
of a Base Classuml UML Inheritance Diagrams
3
Inheritance Basics
uml Inheritance allows programmer to define a general class
uml Later you define a more specific classcurren Adds new details to general definition
uml New class inherits all properties of initial general class
uml Example the Person class
4
5
Derived Classes
uml An example class hierarchy6
Derived Classes
uml Person class used as a base classcurren Also called superclass
uml Student is a derived classcurren Also called subclasscurren Inherits methods and members from the superclass
7
8
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Inheritance Basics
uml Inheritance allows programmer to define a general class
uml Later you define a more specific classcurren Adds new details to general definition
uml New class inherits all properties of initial general class
uml Example the Person class
4
5
Derived Classes
uml An example class hierarchy6
Derived Classes
uml Person class used as a base classcurren Also called superclass
uml Student is a derived classcurren Also called subclasscurren Inherits methods and members from the superclass
7
8
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
5
Derived Classes
uml An example class hierarchy6
Derived Classes
uml Person class used as a base classcurren Also called superclass
uml Student is a derived classcurren Also called subclasscurren Inherits methods and members from the superclass
7
8
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Derived Classes
uml An example class hierarchy6
Derived Classes
uml Person class used as a base classcurren Also called superclass
uml Student is a derived classcurren Also called subclasscurren Inherits methods and members from the superclass
7
8
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Derived Classes
uml Person class used as a base classcurren Also called superclass
uml Student is a derived classcurren Also called subclasscurren Inherits methods and members from the superclass
7
8
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
8
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
9
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
10
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Donrsquot Recode What Is Already Coded
uml When you implement a subclass you getcurren All of the data members of the base classhellip
n hellipthough you may not be able to access them the way yoursquod like More on that later
curren All of the methods of the base classhellipn hellipwith same caveat as above
uml So donrsquot add or recode them in the subclassuml BUT it may be that you donrsquot like the way some methods
are codedused in the base class In that casehellip
11
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Overriding Method Definitions
uml Note method writeOutput in class Studentcurren Class Person also has method with that name
uml Method in subclass with same signature overrides method from base classcurren When an instance of the Student class calls the writeOutput() method the version of the method that is run is the one shown in the Student class
uml Overriding method must return same type of value
12
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Overriding Versus Overloading
uml Do not confuse overriding with overloadingcurren Overriding takes place in subclass ndash new method
with same signatureuml Overloading
curren New method in same class with different signaturen Example In String class
13
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The final Modifier
uml Possible to specify that a method cannot be overridden in subclass
uml Add modifier final to the headingpublic final void specialMethod()
uml An entire class may be declared finalcurren Thus cannot be used as a base class to derive any
other classuml Included here for completeness Irsquove never
used the final modifier for an entire class
14
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Private Instance Variables Methods
uml private instance variable in a base classcurren Are inherited in subclass (despite what your text
may say) but canrsquot be directly manipulated by you)curren Can only be manipulated by public accessor
modifier methodsuml Similarly private methods in a superclass
cannot be called in your subclass codecurren Which at times is not pleasant But itrsquos almost
always OK Why
15
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Protected Instance Variables Methods
uml protected instance variables and methods in a base classcurren Can be used any way you want in any descendent
class of the base classcurren Can be used any way you want inside any method
in any class in the same packagen See Appendix 5 in your text
16
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Constructors in Derived Classes
uml A derived class does not inherit constructors from base classcurren Constructor in a subclass must invoke constructor
from base classuml Use the reserve word super
curren Must be first action in the constructor
17
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The this Method ndash Again
uml Also possible to use the this keywordsect Use to call any constructor in the class
uml When used in a constructor this calls constructor in same classsect Contrast use of super which invokes constructor of
base classsect Again here for completeness
18
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Calling an Overridden Method
uml Reserved word super can also be used to call method in overridden method
uml Calls method by same name in base class
19
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Programming Example
uml A derived class of a derived class Undergraduate class
uml Has all public members of bothsect Personsect Student
uml This reuses the code in superclasses
20
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
21
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
22
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Type Compatibility
uml In the class hierarchycurren Each Undergraduate is also a Studentcurren Each Student is also a Person
uml An object of a derived class can serve as an object of the base class (that is used wherever the base class is required)curren Ex as input parameters to methodscurren Note this is not typecasting
uml An object of a class can be referenced by a variable of an ancestor typecurren So for example a Person variable can point to (reference)
an Undergraduate object (but not vice versa)
23
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Type Compatibility
uml Be aware of the is-a relationshipcurren An Undergraduate is a PersoncurrenBut a Person is not necessarily an Undergraduate
uml Another relationship is the has-acurren A class can contain (as an instance variable) an
object of another typecurren If we specify a date of birth variable for Person
ndash it has-a Date object
24
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The Class Object
uml Java has a class that is the ultimate ancestor of every classsect The class Object
uml Thus possible to write a method with parameter of type Objectsect Actual parameter in the call can be object of any type
uml Example method println(Object theObject)
25
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The Class Object
uml Class Object has some methods that every Java class inherits
uml Examplessect Method equalssect Method toString
uml Method toString called when println(theObject) invokedsect Best to define your own toString to handle this
26
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
A Better equals Method
uml Programmer of a class should override method equals from Object
uml View code of a better equals methodpublic boolean equals (Object theObject)
27
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
28
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Polymorphismuml Inheritance allows you to define a base class
and derive classes from the base classuml Polymorphism allows you to make changes in
the method definition for the derived classes and have those changes apply to methods written in the base class
29
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Polymorphismuml Consider an array of PersonPerson[] people = new Person[4]
uml Since Student and Undergraduate are types of Person we can assign them to Person variables
people[0] = new Student(DeBanque Robin 8812)
people[1] = new Undergraduate(Cotty Manny 8812 1)
30
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Polymorphismuml GivenPerson[] people = new Person[4]people[0] = new Student(DeBanque Robin 8812)
uml When invokingpeople[0]writeOutput()
uml Which writeOutput() is invoked the one defined for Student or the one defined for Person
uml Answer The one defined for Student
31
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
An Inheritance as a Type
uml The method can substitute one object for anothercurren Called polymorphism
uml This is made possible by mechanism curren Dynamic bindingcurren Also known as late binding
32
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Dynamic Binding and Inheritance
uml When an overridden method invokedsect Action matches method defined in class used to create
object using newsect Not determined by type of variable naming the object
uml Variable of any ancestor class can reference object of descendant classsect Object always remembers which method actions to use
for each method name
33
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Polymorphism Example
uml View sample class listing 86class PolymorphismDemo
uml Output
34
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
35
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
36
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
An Aside Types and Security37
uml Java is a ldquostrongly typedrdquo languagecurren This means that it is very careful about making sure
appropriate typed objects are passed to methods and assigned as references
uml All other factors being equal strong typing makes a language much more secure curren Can anyone guess why this is
uml But it turns out that the Java type system can be fooled via careful (mis)use of the dynamic binding system
n And if you manage to fool it even once you have rendered the type system completely ineffective
n The method researchers discovered for doing this is considered so dangerous that it has never been published
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Class Interfaces
uml Consider a set of behaviors for petscurren Be namedcurren Eatcurren Respond to a command
uml We could specify method headings for these behaviors
uml These method headings can form a class interface
38
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Class Interfaces
uml Now consider different classes that implement this interfacecurren They will each have the same behaviorscurren Nature of the behaviors will be different
uml Each of the classes implements the behaviorsmethods differently
39
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Java Interfaces
uml A program component that contains headings for a number of public methodscurren Will include comments that describe the methods
uml Interface can also define public named constants
40
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
41
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Java Interfaces
uml Interface name begins with uppercase letteruml Stored in a file with suffix javauml Interface does not include
curren Declarations of constructorscurren Instance variablescurren Method bodies
42
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Implementing an Interface
uml To implement a method a class mustsect Include the phrase
implements Interface_namesect Define each specified method
43
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
44
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
45
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
An Inheritance as a Type
uml Possible to write a method that has an Interface type as a parametercurren An interface is a reference type
uml Program invokes the method passing it an object of any class which implements that interface
46
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Example Genetic Algorithm47
uml A Population described by chromosomesuml Crossoveruml Mutationuml Survival of the fittest
curren Fitness function
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Flow Diagram of the Genetic Algorithm Process
Describe Problem
Generate InitialSolutions
Test is initialsolution good enough
Stop
Select parents to reproduce
Apply crossover process and create a set of offspring
Apply random mutation
Step 1
Step 2
Step 3
Step 4
Step 5
Yes
No
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
49
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The Comparator Interface50
uml Required for use in Java Arrays classcurren Arrayssort()
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Extending an Interface
uml Possible to define a new interface which builds on an existing interfacecurren It is said to extend the existing interface
uml A class that implements the new interface must implement all the methods of both interfaces
51
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
(Another) Case Study
uml Java has many predefined interfacesuml One of them the Comparable interface is used to
impose an ordering upon the objects that implement it
uml Requires that the method compareTo be written public int compareTo(Object other)
52
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Sorting an Array of Fruit Objects
uml Initial (non-working) attempt to sort an array of Fruit objects
uml View class definition listing 816class Fruit
uml View test class listing 817class FruitDemo
uml Result Exception in thread ldquomainrdquocurren Sort tries to invoke compareTo method but it
doesnrsquot exist
53
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Sorting an Array of Fruit Objects
uml Working attempt to sort an array of Fruit objects ndash implement Comparable write compareTo method
uml Following slides show Fruit classuml Result Exception in thread ldquomainrdquo
curren Sort tries to invoke method but it doesnrsquot exist
54
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
compareTo Method
uml An alternate definition that will sort by length of the fruit name
59
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Abstract Classes
uml Class ShapeBasics is designed to be a base class for other classescurren Method drawHere will be redefined for each
subclasscurren It should be declared abstract ndash a method that has
no bodyuml This makes the class abstractuml You cannot create an object of an abstract
class ndash thus its role as base class
60
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Abstract Classes
uml Not all methods of an abstract class are abstract methods
uml Abstract class makes it easier to define a base classcurren Specifies the obligation of designer to override the
abstract methods for each subclass
61
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Abstract Classes
uml Cannot have an instance of an abstract classcurren But OK to have a parameter of that type
62
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Dynamic Binding and Inheritanceuml How does Java know which version of a method is to
be runuml Happens with dynamic or late binding
sect Address of correct code to be executed determined at run time
63
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Graphics Supplement Outline
uml The Class JAppletuml The Class JFrameuml Window Events and Window Listenersuml The ActionListener Interface
64
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The Class JApplet
uml Class JApplet is base class for all appletssect Has methods init and paint
uml When you extend JApplet you override (redefine) these methods
uml Parameter shownwill use your versions due topolymorphism
65
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The Class JFrame
uml For GUIs to run as applications (instead of from a web page)sect Use class JFrame as the base class
uml View example program listing 820class ButtonDemo
uml Note method setSizesect Width and height given in number of pixelssect Sets size of window
66
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The Class JFrame
uml View demo program listing 821class ShowButtonDemo
Sample screen output
67
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Window Events and Window Listeners
uml Close-window button fires an event curren Generates a window event handled by a window
listeneruml View class for window events
listing 822 class WindowDestroyeruml Be careful not to confuse JButtons and the
close-window button
68
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
The ActionListener Interface
uml Use of interface ActionListener requires only one method public void actionPerformed (ActionEvent e)
uml Listener that responds to button clickssect Must be an action listenersect Thus must implement ActionListener interface
69
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Summary
uml An interface contains curren Headings of public methodscurren Definitions of named constantscurren No constructors no private instance variables
uml Class which implements an interface mustcurren Define a body for every interface method specified
uml Interface enables designer to specify methods for another programmer
70
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Summary
uml Interface is a reference typecurren Can be used as variable or parameter type
uml Interface can be extended to create another interface
uml Dynamic (late) binding enables objects of different classes to substitute for one anothercurren Must have identical interfacescurren Called polymorphism
71
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Summary
uml Derived class obtained from base class by adding instance variables and methodscurren Derived class inherits all public elements of base
classuml Constructor of derived class must first call a
constructor of base classcurren If not explicitly called Java automatically calls
default constructor
72
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Summary
uml Within constructorsect this calls constructor of same class
sect super invokes constructor of base class
uml Method from base class can be overriddensect Must have same signature
uml If signature is different method is overloaded
73
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Summary
uml Overridden method can be called with preface of super
uml Private elements of base class cannot be accessed directly by name in derived class
uml Object of derived class has type of both base and derived classes
uml Legal to assign object of derived class to variable of any ancestor type
74
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75
Summary
uml Every class is descendant of class Objectuml Class derived from JFrame produces applet
like window in application programuml Method setSize resizes JFrame windowuml Class derived from WindowAdapter defined
to be able to respond to closeWindow button
75