Inheritance - KSU Web Home

advertisement
Inheritance
CS 2302 SPRING 2015
Inheritance
In this part we introduce a new relationship between classes: inheritance. This is the
fundamental feature of object-oriented programming.
The basic concepts of inheritance are discussed, and the first example from the book is
recreated.
1/12/2015
CS 2302-SPRING 2015
2
Motivation
When modeling objects, we group similar objects into *classes*
We may notice that some classes of objects have common features
Or, we may decide that it would be useful to subdivide and existing class into smaller groups
with more specific characteristics
In either case we have the idea of *subclasses*: classes that are contained in larger classes
1/12/2015
CS 2302-SPRING 2015
3
Taxonomy
"the branch of science concerned with classification, especially of organisms; systematics."
(Google)
Most of us have studied taxonomy in biology: phyla, genera, species and other groups of living
things
The various levels of biological taxonomy show the subclass relationship
1/12/2015
CS 2302-SPRING 2015
4
Classification of Humans
Here are the various levels of biological classes/taxa to which we human beings are assigned.
Animalia (Kingdom)
◦
◦
◦
◦
◦
◦
◦
Chordata (Phylum)
Mammalia (Class)
Primates (Order)
Hominidae (Family)
Hominini (Tribe)
Homo (Genus)
Sapiens (Species)
The parenthesized names are the names for that level of classification in biological taxonomy.
1/12/2015
CS 2302-SPRING 2015
5
Subclass Relationships
All mammals (those in class mammalia) are also chordates (members of the phylum chordata)
◦ Chordates have, among other features, a hollow dorsal nerve cord, at least at some stage of
development
◦ Mammals all have a hollow dorsal nerve cord, early in embryonic development
◦ Mammals have other characteristics that are not shared by all chordates, such as three middle ear
bones and mammary glands
◦ There are chordates that are not mammals. For example, bony fish
All primates (those in order primate) are also mammals (those in class mammalia)
◦ Primates share all the characteristics that mammals have
◦ Primates have other characteristics, not shared by non-primate mammals, such as nails instead of claws
1/12/2015
CS 2302-SPRING 2015
6
Remarks on Human Taxonomy
We belong to various groups based on common anatomical characteristics
We humans are mammals, along with bears, dogs, elephants and whales.
◦ Hair, three middle ear bones, mammary glands
We are primates, along with lemurs and monkeys
◦ Forward facing eyes, keratin nails, domed cranium
We are hominidae, along with chimpanzees and gorillas
◦ Genetic similarities are the most recent basis for classification
1/12/2015
CS 2302-SPRING 2015
7
GeometricObject Example
One important and flexible way to create pictures is as a composition of simple figures
◦ One scheme, SVG, is used to create sophisticated images from simple components.
◦ The clock is a nice example:http://tavmjong.free.fr/INKSCAPE/DRAWINGS/clock2.svg
The GeometricObject example in this chapter shows how inheritance can be used to
organize a 'family' of related classes.
This example will be elaborated upon in later chapters and, eventually, used to create actual
pictures.
1/12/2015
CS 2302-SPRING 2015
8
Implementation Setup
We will change the book example in a couple of ways
◦ The example will use packages
◦ Because the packages take care of 'name collision', the names of the classes will be simplified
Create package cs2302sp15.chap11
Create the basic class files
1/12/2015
CS 2302-SPRING 2015
9
Analyzing Geometry
Circles and rectangles make an easy first step
Common characteristics of these two are
◦ Color to use
◦ Whether to fill in the figure or just an outline
◦ The date on which the object was created
Characteristics unique to the figures are
◦ Circle
◦ radius
◦ Rectangle
◦ height
◦ width
1/12/2015
CS 2302-SPRING 2015
10
Design
Three classes will be created in Java
◦ GeometricObject
◦ Rectangle
◦ Circle
GeometricObject represents the common features of Rectangle and Circle
The Rectangle and Circle classes represent the features specific to those shapes
1/12/2015
CS 2302-SPRING 2015
11
UML Diagram
12
UML Diagram Explained
Each class is a rectangle
◦ Name at the top
◦ Instance variables in the middle
◦ Instance methods at the bottom
+ indicates public, - indicates private
The arrows with open triangular heads represent the inheritance relationships
◦ All circles are geometric objects: the circle class is a subclass of the geometric object class
◦ All rectangles are geometric objects: the rectangle class is a subclass of the geometric object class
1/12/2015
CS 2302-SPRING 2015
13
Other Terminology
The circle class extends the geometric object class
The geometric object class is a superclass of the circle class
The geometric object class generalizes the circle class
1/12/2015
CS 2302-SPRING 2015
14
Representing Inheritance in Java
public class Circle extends GeometricObject
The extends keyword indicates that the class being defined is a subclass of another class
The name of the other class follows the keyword
A class may extend only one other class
If no explicit superclass is designated, then Object is the implicit superclass
1/12/2015
CS 2302-SPRING 2015
15
Filling in the Classes
Attributes
◦ GeometricObject: color, filled, dateCreated
◦ Circle: radius
◦ Rectangle: width, height
Methods
◦
◦
◦
◦
◦
Getters and setters (note isFilled rather than getFilled)
Get area and perimeter in Circle and Rectangle
printcircle
toString in GeometricObject
Various constructors
1/12/2015
CS 2302-SPRING 2015
16
A Program
We see that we can use the methods defined in GeometricObject in classes Circle and
Rectangle
Create a Circle, print some attributes
Create a Rectangle, print some attributes
1/12/2015
CS 2302-SPRING 2015
17
Download