This document discusses object-oriented programming concepts like abstraction, inheritance, and polymorphism in Java. It provides examples using a Dance Studio application with classes like Dancer, Foot, and MaleDancer/FemaleDancer to illustrate the concepts. Abstraction allows ignoring irrelevant details and focusing on relevant features. Encapsulation keeps data private within classes and exposes public interfaces. Inheritance creates parent-child class relationships and code reuse. Polymorphism ensures the right method is called based on an object's actual type.
2. Object Orientation involving encapsulation,
inheritance, polymorphism, and abstraction, is an
important approach in programming and program
design. It is widely accepted and used in industry and
is growing in popularity in the first and second
college-level programming courses.
3. Some other reasons to move on
to Java:
Platform-independent software
Relatively easy graphics and GUI
programming
Lots of library packages
Free compiler and IDEs
4. Some other reasons to move on
to Java:
Colleges are teaching it
Companies are using it
Students want it
(Teachers welcome it... ;)
(Programmers drink it... :)
5. What are OOPs claims to fame?
Better suited for team development
Facilitates utilizing and creating reusable
software components
Easier GUI programming
Easier program maintenance
6. OOP in a Nutshell:
A program models a
world of interacting
objects
Objects create other
objects and send
messages to each other
(in Java, call each
others methods)
Each object belongs to a
class; a class defines
properties of its objects
A class implements an
ADT; the data type of an
object is its class
Programmers write classes
(and reuse existing classes)
11. Good news:
The classes are fairly short
DanceStudio 92 lines MaleDancer 10 lines
DanceModel 50 lines FemaleDancer 10 lines
DanceFloor 30 lines Foot 100 lines
Music 52 lines MaleFoot 42 lines
Dancer 80 lines FemaleFoot 42 lines
In OOP, the number of classes is not
considered a problem
13. Abstraction
... relevant to the given project (with an
eye to future reuse in similar projects).
Abstraction means ignoring irrelevant
features, properties, or functions and
emphasizing the relevant ones...
Relevant to what?
15. Encapsulation
Encapsulation means that all data members
(fields) of a class are declared private. Some
methods may be private, too.
The class interacts with other classes (called
the clients of this class) only through the
classs constructors and public methods.
Constructors and public methods of a class
serve as the interface to classs clients.
17. public abstract class Foot
{
private static final int footWidth = 24;
private boolean amLeft;
private int myX, myY;
private int myDir;
private boolean myWeight;
// Constructor:
protected Foot(String side, int x, int y, int dir)
{
amLeft = side.equals("left");
myX = x;
myY = y;
myDir = dir;
myWeight = true;
}
Continued
All fields are
private
18. Encapsulation ensures that
structural changes remain local
Changes in the code create software
maintenance problems
Usually, the structure of a class (as defined
by its fields) changes more often than the
classs constructors and methods
Encapsulation ensures that when fields
change, no changes are needed in other
classes (a principle known as locality)
19. True or False? Abstraction and
encapsulation are helpful for the
following:
Team development ________
Reusable software ________
GUI programming ________
Easier program maintenance ________
20. Answer:
Team development ________
Reusable software ________
GUI programming ________
Easier program maintenance ________
T
T
T
(True if you are working on system
packages, such as Swing)
F
21. Inheritance
A class can extend another class,
inheriting all its data members and
methods while redefining some of them
and/or adding its own.
Inheritance represents the is a
relationship between data types. For
example: a FemaleDancer is a
Dancer.
24. Inheritance (contd)
public class FemaleDancer extends Dancer
{
public FemaleDancer(String steps[],
int x, int y, int dir)
{
leftFoot = new FemaleFoot("left", x, y, dir);
rightFoot = new FemaleFoot("right", x, y, dir);
leftFoot.move(-Foot.getWidth() / 2, 0);
rightFoot.move(Foot.getWidth() / 2, 0);
}
}
Constructors are not inherited. The
FemaleDancer class only adds a constructor:
26. public class FemaleFoot extends Foot
{
public FemaleFoot(String side, int x, int y, int dir)
{
super(side, x, y, dir); // calls Foot's constructor
}
//
public void drawLeft(Graphics g)
{
...
}
public void drawRight(Graphics g)
{
...
}
}
Supplies methods
that are abstract
in Foot:
27. Inheritance may be used to define a
hierarchy of classes in an application:
MaleFoot FemaleFoot
Foot
MaleLeftFoot MaleRightFoot FemaleLeftFoot FemaleRightFoot
Object
28. You dont need to have the source code of
a class to extend it
All methods of the base library
class are available in your
derived class
29. True or False? Inheritance is helpful for
the following:
Team development ________
Reusable software ________
GUI programming ________
Easier program maintenance ________
30. Answer:
Team development ________
Reusable software ________
GUI programming ________
Easier program maintenance ________
F
T
???
T
31. Polymorphism
Polymorphism ensures that the
appropriate method is called for an
object of a specific type when the object
is disguised as a more general type.
Good news: polymorphism is already
supported in Java all you have to do
is use it properly.
32. Polymorphism (contd)
Situation 1:
A collection (array, list, etc.) contains
objects of different but related types, all
derived from the same common base
class.
33. public abstract class Foot
{
...
public void draw(Graphics g)
{
...
if (isLeft())
drawLeft(g);
else
drawRight(g);
...
}
}
Polymorphism replaces old-fashioned use
of explicit object attributes and if-else
(or switch) statements, as in:
34. These slides and the Dance Studio code are
posted at:
http://www.skylit.com/oop/