Download CS102 OOP_3 slides

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

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

Document related concepts
no text concepts found
Transcript
Java Coding OOP_3
Some important Java interfaces
+ Inner classes
David Davenport
Computer Eng. Dept.,
Bilkent University
Ankara - Turkey.
email: [email protected]
IMPORTANT…

Students…
This presentation is designed to be used in class as
part of a guided discovery sequence. It is not selfexplanatory! Please use it only for revision purposes
after having taken the class. Simply flicking through
the slides will teach you nothing. You must be actively
thinking, doing and questioning to learn!

Instructors…
You are free to use this presentation in your classes
and to make any modifications to it that you wish. All
I ask is an email saying where and when it is/was
used. I would also appreciate any suggestions you
may have for improving it.
thank you,
David.
SOME JAVA INTERFACES…
Java Interfaces

Design by interface gives flexibility

The Java API has a lot of interfaces
Iterator
 Comparable
 Serializable
 & a multitude for
GUI event-handling!

Java’s Iterator Interface



boolean hasNext()
Object next()
void remove()
To iterate (to go)
through a collection,
processing each
element once and once
only
// Scanner class implements Iterator
tokens = new Scanner( “To be or not to be”);
while ( tokens.hasNext() )
System.out.println( tokens.next() );
Java’s Iterator Interface



boolean hasNext()
Object next()
void remove()
Surprisingly, ArrayList
does not implement
Iterator.
// given an ArrayList, list
Iterator x = list.iterator();
while ( x.hasNext() )
System.out.println( x.next() );
It implements
Iterable!
Iterator iterator()
The Enumeration Interface


boolean hasNextElement()
E nextElement()
// StringTokenizer
Similar to, but older
than Iterator.
Has different names &
does not have remove
method.
Examples include
StringTokenizer & Vector
(which also has Iterator!)
tokens = new StringTokenizer(
“To be or not to be”);
while ( tokens.hasMoreElements() )
System.out.println( tokens.nextElement() );
Java’s Comparable Interface

int compareTo( Object o)
compare this object with o
and return negative, zero, positive
to indicate <, =, > respectively!
// Assuming x implements Comparable
//
e.g. String
if ( x.compareTo( y) > 0 )
exchange( x, y);
Java’s Serialization Interface

Allows Java objects to be converted
to/from a stream of bytes!

Rather special since you do not need to
write any methods, merely




Make class implement Serializable
Have a default constructor
Ensure all properties are Serializable
Check the Java API documentation
for details and example code.
Interface notes





Can’t create objects of interface type,
only a type that implements it
Interfaces can extend interfaces
(but not classes) to form a hierarchy
separate from class one
Start design with interfaces!
Java provides “instanceof” operator to test
object type (but use very sparingly)
Cloneable is another common interface.
INNER CLASSES…
Inner Classes
 Nested
or Inner classes
are defined inside other classes
 have direct access to outer class
 can be named or anonymous


Named Inner classes

Simply define one class inside another!
(generates outer$inner.class files)
Inner Classes (cont.)

Anonymous Inner classes



Create in-line (on the fly!)
Useful when only a single object needed
& class not otherwise reusable.
variation of new statement…
className x = new superClass_or_interface() {
// the prop’s & methods
}