Professional Documents
Culture Documents
Topics
Basic Java
Abstract Classes
Basic Java
}}
voidregulateEngineTemp()
regulateEngineTemp()
void
{.........}
{.........}
voidstart()
start(){ {} }
void
voidstop()
stop(){ {} }
void
classAbstractDemo
AbstractDemo
class
{{
publicstatic
staticvoid
voidmain(String[]
main(String[]args)
args)
public
{{
Vehiclevv==new
newVehicle();
Vehicle();
Vehicle
ErrorAbstract
Abstractclass
classcannot
cannot
Error
beinstantiated
instantiated
be
}}
}}
How do we
then use the
functionality
offered by this
abstract
class ?
Basic Java
Vehicle
e: Engine
tank: FuelTank
temperature: int
pullFuelFromTank()
regulateEngineTemp()
Bus
busStops: ArrayList
getBusStopList()
Car
Truck
ac: AirConditioner
maxGoodsWt: int
switchOnAC()
loadGoods()
Basic Java
Abstract Classes
publicabstract
abstractclass
classVehicle
Vehicle
public
{{
Enginee;e;
Engine
FuelTanktank;
tank;
FuelTank
voidpullFuelFromTank(){..........}
pullFuelFromTank(){..........}
void
voidregulateEngineTemperature(){.........}
regulateEngineTemperature(){.........}
void
voidstart(){...........}
start(){...........}
void
voidstop(){...............}
stop(){...............}
void
}}
publicclass
classCar
Carextends
extendsVehicle
Vehicle
public
{{
switchOnAC(){.}
switchOnAC(){.}
}}
Basic Java
publicclass
classTruck
Truck extends
extendsVehicle
Vehicle
public
{{
loadGoods(){.}
loadGoods(){.}
unloadGoods(){.}
unloadGoods(){.}
}}
Basic Java
Abstract Methods
What is the
implementation
of methods
open() and
close() in
Account ?
open()
close()
withdraw()
depos it()
Savings
open()
close()
Current
Corporate
open()
close()
open()
close()
Basic Java
Abstract Methods
abstractclass
classAccount
Account
abstract
{{
privateString
StringdateOfOpening;
dateOfOpening;
private
privateCustomer
CustomercustDetails;
custDetails;
private
privatedouble
doublebalance;
balance;
private
A class with
one or more
abstract
methods has to
be marked as
abstract.
publicvoid
voidwithdraw(double
withdraw(doubleamt)
amt)
public
{{
Implementation
////Implementation
}}
publicvoid
voiddeposit(double
deposit(doubleamt)
amt)
public
{{
Implementation
////Implementation
}}
}}
publicabstract
abstractvoid
voidopen();
open();
public
publicabstract
abstractvoid
voidclose();
close();
public
Basic Java
classSavings
Savingsextends
extendsAccount
Account
class
{{
publicvoid
voidopen()
open()
public
Implementation
{{
////Implementation
}}
publicvoid
voidopen()
open()
public
Implementation
{{
////Implementation
}}
}}
classCurrent
Currentextends
extendsAccount
Account
class
{{
publicvoid
voidopen()
open()
public
Implementation
{{
////Implementation
}}
publicvoid
voidopen()
open()
public
Implementation
{{
////Implementation
}}
}}
Abstract methods
implementation
serve
as
contract
between
Message
dateReceived : String
timeReceived : String
senderName : String
senderId : String
prompt()
showMessage()
TextMessage
FileMessage
showMessage()
showMessage()
Basic Java
VoiceMessage
showMessage()
design
and
////logic
}}
}}
publicabstract
abstractvoid
voidshowMessage();
showMessage();
public
Basic Java
classTextMessage
TextMessageextends
extendsMessage
Message
class
{{
publicvoid
voidshowMessage()
showMessage()
public
{{
Implementation
////Implementation
}}
}}
classFileMessage
FileMessageextends
extendsMessage
Message
class
{{
publicvoid
voidgetFileFormat()
getFileFormat()
public
{{
Implementation
////Implementation
}}
publicvoid
voidlaunchApplication()
launchApplication()
public
{{
Implementation
////Implementation
}}
}}
FileMessage is
required to
override the
method
showMessage()
Basic Java
Polymorphism revisited
classMessageReceiver
MessageReceiver
type
class
reference
{{
publicvoid
voidonMessage(Message
onMessage(Messagemsg
msg) )
public
{{
msg.prompt();
msg.prompt();
msg.showMessage();
msg.showMessage();
}}
}}
Basic Java
classMessageDemo
MessageDemo
class
{{
privateMessageReceiver
MessageReceivermr
mr==new
new
private
MessageReceiver();
MessageReceiver();
publicstatic
staticvoid
voidmain(String[]
main(String[]s)s)
public
{{
TextMessaget t==new
new
TextMessage
TextMessage();
TextMessage();
FileMessagef f==new
new
FileMessage
FileMessage();
FileMessage();
}}
mr.onMessage(t);
mr.onMessage(t);
mr.onMessage(f);
mr.onMessage(f);
Derived
type
object
Exercise
Write an
an abstract
abstract class
class Shape
Shape with
with method
method
Write
double area().
area(). Different
Different sub
sub classes
classes of
of
double
Shape namely
namely Circle,
Circle, Rectangle,
Rectangle, Triangle
Triangle
Shape
override the
the area()
area() method.
method.
override
Write aa class
class AreaFinder
AreaFinder that
that has
has aa method
method
Write
showArea, that
that takes
takes any
any Shape
Shape object
object and
and
showArea,
displays its
its area.
area.
displays
Write aa Demo
Demo class
class and
and test
test the
the code
code
Write
Basic Java
Summarizing
Basic Java
Interfaces
Basic Java
Defining an Interface
Basic Java
Abstract Methods
Implementing an interface
}}
publicint
intlength()
length()
public
{{
Theimplementation
implementationofofthis
thismethod
method
////The
}}
Basic Java
Interface as a type
Basic Java
Interface as a contract
Basic Java
Interface as a contract
Basic Java
Basic Java
StringBRONZE
BRONZE=="Bronze";
"Bronze";
String
}}
Basic Java
Basic Java
Class Creator
publicinterface
interfaceItemList
ItemList
public
{{
voidaddItem
addItem(Object
(Objectobj);
obj);
void
Object[]getItems();
getItems();
Object[]
defines
}}
publicclass
class
public
SequentialItemList
SequentialItemList
implements
implements
ItemList
ItemList
{{
publicclass
class
public
RandomItemList
RandomItemList
implements
implements
ItemList
ItemList
{{
publicvoid
void
public
addItem(Object
(Object
addItem
obj) { {.
.} }
obj)
publicObject[]
Object[]
public
getItems() { {.
.} }
getItems()
publicvoid
void
public
addItem(Object
(Object
addItem
obj) { {.
.} }
obj)
publicObject
Object[][]
public
getItems() { {.
.} }
getItems()
}}
}}
publicclass
classClient
Client{ {
public
ItemListi1i1==new
newSequentialItemList();
SequentialItemList();
ItemList
i1.addItem(newSale());
Sale());
i1.addItem(new
Sale[]sales
sales==(Sale[])
(Sale[])i1.getItems();
i1.getItems();
Sale[]
ItemListi2i2==new
newRandomItemList();
RandomItemList();
ItemList
i2.addItem(newBook());
Book());
i2.addItem(new
Book[]books
books==(Book[])
(Book[])
Book[]
i2.getItems();
i2.getItems();
}}
Basic Java
uses
Programming to Interface
Basic Java
Programming to interface
publicinterface
interfaceStdTaxCalc
StdTaxCalc
public
{{
What if Taxation
rules change and
we write a new
class TaxCalc2011
?
doublegetIncomeTax(salaryDetails
getIncomeTax(salaryDetailsdetails);
details);
double
doublegetFBT(InvestmentDetails
getFBT(InvestmentDetailsdetails);
details);
double
}}
publicclass
classTaxCalc2006
TaxCalc2006implements
implements
public
StdTaxCalc
StdTaxCalc
{{
publicclass
classSalaryCalculator
SalaryCalculator
public
{{
voidcomputeSalary()
computeSalary()
void
..
{{
..
doublegetIncomeTax(salaryDetails
getIncomeTax(salaryDetails
double
details)
details)
.} }
{ {.
TaxCalc2006tctc==new
new
TaxCalc2006
TaxCalc2006();
TaxCalc2006();
tc.getIncomeTax(sd);
tc.getIncomeTax(sd);
doublegetFBT(InvestmentDetails
getFBT(InvestmentDetails
double
details)
details)
.} }
{ {.
}}
Copyright 2008 Pratian Technologies
www.pratian.com
tc.getFBT(id);
tc.getFBT(id);
}}
}}
Basic Java
Basic Java
Basic Java
<<Interface>>
StdTaxCalc
<<Interface>>
Comparable
getIncomeTax()
getFBT()
lesserThan()
greaterThan()
equalTo()
implements
implements
StdTaxCalc2006
getIncomeTax()
getFBT()
lesserThan()
greaterThan()
equalTo()
Basic Java
wholePart : int
decimalPart : int
setWholePart()
getWholePart()
setDecimalPart()
getDecimalPart()
printNumber()
extends
<<Interface>>
Comparable
lesserThan()
greaterThan()
equalTo()
Class Integer
therefore extends
the abstract class
Number and
implements the
Comparable
interface
implements
Integer
maxValue : long
minValue : long
printNumber()
Basic Java
Scenario 1
We have to define an interface
that exposes some functionality.
We realize that a few of those
methods are already defined in
another interface.
Should we
redundantly define
those methods in
the new interface
as well ?
Scenario 2
We have defined an interface
with five method declarations. A
few classes implement this
interface
and
provide
implementation
for
all
the
methods defined.
Let us suppose that we have
received
new
requirements,
because of which we are
required to include two additional
methods to the interface.
Basic Java
If we change the
existing interface
to include two
methods, what
happens to the
existing classes
that implement the
interface?
extends
<<Interface>>
GraphicalComponent
draw()
draw()
fill()
rotate()
extends
<<Interface>>
GraphicaCardDealer
Basic Java
Summarizing
Basic Java
Question time
Please try to limit the questions to the topics discussed during the session. Thank you.
Basic Java