Interfaces A Java interface is a collection of abstract methods and constants An abstract method is...
-
Upload
allyson-nailor -
Category
Documents
-
view
219 -
download
1
Transcript of Interfaces A Java interface is a collection of abstract methods and constants An abstract method is...
Interfaces
A Java interface is a collection
of abstract methods and constants
An abstract method is a method header
without a method body
An abstract method can be declared using the
modifier abstract, but because all methods
in an interface are abstract, usually it is left off
An interface is used to establish a set of methods
that a class will implement
Interfaces
public interface Doable{ public void doThis(); public int doThat(); public void doThis2 (float value, char ch); public boolean doTheOther (int num);}
interface is a reserved wordNone of the methods inan interface are given
a definition (body)
A semicolon immediatelyfollows each method header
Interfaces
An interface cannot be instantiated
Methods in an interface have public visibility by default
A class formally implements an interface by:
stating so in the class header
providing implementations for each abstract method in the interface
If a class asserts that it implements an interface,
it must define all methods in the interface
© 2004 Pearson Addison-Wesley. All rights reserved
6-4
Interfacespublic class CanDo implements Doable{ public void doThis () { // whatever }
public void doThat () { // whatever }
// etc.}
implements is areserved word
Each method listedin Doable is
given a definition
Interfaces A class that implements an interface
can implement other methods as well
See Complexity.java
See Question.java See MiniQuiz.java
In addition to (or instead of) abstract methods,
an interface can contain constants
When a class implements an interface,
it gains access to all its constants
Interfaces
A class can implement multiple interfaces
The interfaces are listed in the implements clause
The class must implement all methods
in all interfaces listed in the header
class ManyThings implements interface1, interface2
{
// all methods of both interfaces
}
Interfaces The Java standard class library contains
many helpful interfaces
The Comparable interface
contains one abstract method called compareTo,
which is used to compare two objects
The String class implements Comparable,
giving us the ability to put strings in lexicographic order
The Comparable Interface Any class can implement Comparable to provide
a mechanism for comparing objects of that type
if (obj1.compareTo(obj2) < 0)
System.out.println ("obj1 is less than obj2");
• The value returned from compareTo should be negative is obj1 is less that obj2, 0 if they are equal, and positive if obj1 is greater than obj2
• When a programmer designs a class that implements the Comparable interface, it should follow this intent
The Comparable Interface It's up to the programmer to determine
what makes one object less than another
For example, you may define the compareTo method
of an Employee class to order employees
by name (alphabetically) or by employee number
The implementation of the method can be
as straightforward or as complex as needed for the situation
The Iterator Interface An iterator is an object that provides a means
of processing a collection of objects one at a time
An iterator is created formally by implementing
the Iterator interface, which contains three methods
The hasNext method returns a boolean result
true if there are items left to process
The next method returns the next object in the iteration
The remove method removes the object most recently
returned by the next method
The Iterator Interface
By implementing the Iterator interface,
a class formally establishes that objects of
that type are iterators
The programmer must decide how best
to implement the iterator functions
Once established, the for-each version of the for loop
can be used to process the items in the iterator
Method Design
An algorithm
is a step-by-step process for solving a problem
Examples: a recipe, travel directions
Every method implements
an algorithm that determines
how the method accomplishes its goals
Method Decomposition
A method should be relatively small,
so that it can be understood as a single entity
A potentially large method should be decomposed
into several smaller methods as needed for clarity
A public service method of an object
may call one or more private support methods
to help it accomplish its goal
Method Decomposition Let's look at an example
that requires method decomposition –
translating English into Pig Latin
Pig Latin is a language in which each word
is modified by moving the initial sound of the word
to the end and adding "ay"
Words that begin with vowels
have the "yay" sound added on the end
book ookbay
table abletay
item itemyay
Method Decomposition The primary objective (translating a sentence)
is too complicated for one method to accomplish
Therefore we look for natural ways t
o decompose the solution into pieces
Translating a sentence can be decomposed into
the process of translating each word
The process of translating a word can be separated
into translating words that:
begin with vowels and begin with single consonants
Method Decomposition
See PigLatin.java (page 325) See PigLatinTranslator.java (page 327)
In a UML class diagram,
the visibility of a variable or method
can be shown using special characters
Public members are preceded by a plus sign
Private members are preceded by a minus sign
Class Diagram for Pig Latin
PigLatin
+ main (args : String[]) : void
+ translate (sentence : String) : String- translateWord (word : String) : String- beginsWithVowel (word : String) : boolean- beginsWithBlend (word : String) : boolean
PigLatinTranslator
Objects as Parameters Another important issue r
elated to method design involves parameter passing
Parameters in a Java method are passed by value
A copy of the actual parameter (the value passed in)
is stored into the formal parameter (in the method header)
Passing parameters is similar
to an assignment statement
When an object is passed to a method,
the actual and the formal parameters aliases of each other
Passing Objects to Methods
What a method does with a parameter
may or may not have a permanent effect
See ParameterTester.java (page 331) See ParameterModifier.java (page 333) See Num.java (page 334)
Note the difference between
changing the internal state of an object versus
changing which object a reference points to
20
Method Overloading
Method overloading is the process
of giving a single method name multiple definitions
The signature of each overloaded method
must be unique
The signature includes
the number, type, and order of the parameters
Method Overloading
The compiler determines
which method is being invoked
by analyzing the parameters
float tryMe(int x){ return x + .375;}
float tryMe(int x, float y){ return x*y;}
result = tryMe(25, 4.32)
Invocation
22
Method Overloading
The println method is overloaded:
println (String s)
println (int i)
println (double d)
and so on...
The following lines invoke different versions of the println method:
System.out.println ("The total is:");
System.out.println (total);
23
Overloading Methods
The return type of the method
is not part of the signature
That is, overloaded methods
cannot differ only by their return type
Constructors can be overloaded
Overloaded constructors provide
multiple ways to initialize a new object