Java ADVANCED OOP GUIDES / WORK Object Arrays – Interfaces – Inheritance – Polymorphism – Abstract Classes SHORT ANSWER QUESTIONS Interfaces & Polymorphism
(Solutions) Inheritance & Polymorphism
I (Solutions) Inheritance & Polymorphism
II (Solutions) GUIDES / TASKS
POSSIBLE ADDITIONS Delimiters class -Using ArrayLists in classes -Note: Used for 12.17 -Source: 2019 AP Exam Q3 Solutions +++++ PART 1 ·
4
datafields holding the x,y,width and height ·
A
constructor ·
A
draw method to display a rectangle where the building is located (using
NOOPDraw) PART 2
PART 3 Create
a SimpleHouse object that extends Building and will have the following: ·
1
datafield for the roof height (plus the inherited datafields) ·
A
constructor ·
A
draw method that overrides the draw method in Building PART 4 In
the same Tester class as above, create a SimpleHouse object and draw it to
screen. PART 5 Create
a NiceHouse class that extends SimpleHouse and has the following: ·
2
datafields for doorWidth and doorHeight (plus the inherited datafields) ·
A
constructor ·
A
draw method PART 6 In
the same Tester class as above, create a NiceHouse object and draw it to
screen. PART 7
(POLYMORPHISM TIME) In
a new class called Tester2, inside the main, create an array of Building
objects. The array’s size should be
6. You should add 2 Building objects,
2 SimpleHouse objects and 2 NiceHouse objects to the array. Then,
using a for loop, draw each house in the array onto screen. +++++ FORMERLY
12.13’s QUESTION 3 (GROUP WORK) (NEED TO ADD LINKS) Create
the interface called Summable that has the following methods: ·
int
total() – returns the sum of all values in the object ·
int
count() – return the amount of values in the object Consider
the Sequence class here. Make it
implement the Summable interface. Consider
the Budget class here. Make it
implement the Summable interface. Inside
a Tester class, create a Sequence object and a Budget object. Then create a static function called
average that gets a Summable object and outputs the average value in that
object. ++++ Create a
Point class. Make use of the Comparable
interface in order to sort Point objects as they appear from left to right on
a graph. Create an array of Point
objects and sort it to see if your code works. Consider
looking up Comparator as a different interface option for sorting. Get students
to create a map like below using https://fsymbols.com/draw/. Then, create a Map class that gets the
strings from the map. It then draws
the map on the screen. Add the ability
to make an X move around the map. ███████████████████████ ██░░░░░░░░███░░░░░░░░██ ██░██████░███░████░████ ██░██░░░░░░░░░████░░░██ █████░███████░████░████ ██░░░░░░░█████████░░███ ██░░░░░░░██░░░░████░███ ███████████░█████░░░███ ░░░░░░░░░░░░░░░░░░█████ ███████████████████████ Inheritance
& Polymorphism Example idea:
A MonsterCircle that consumes shapes such as Circle, Rectangle and Triangle
objects. All of these inherit from the
Shape superclass with an area() method (or abstract class maybe). MonsterCircle’s area grows based on the
consumed shapes’ area. Need to
calculate the new radius. Could even
add a NOOPDraw part to it. Note that
MonsterCircle could maybe be called BlackHole instead. Interfaces
& Polymorphism Interface
ideas: Incrementable (inc(), dec()), Extremable (getLeft, getRight, getTop,
getBottom), Summable, Java
Interfaces: CharSequence (used by String), Appendable
(used by StringBuilder), Comparable, Iterable Idea: Maybe
make our own Appendable interface with append(Object obj). It can work on my own String class adding
characters, on a Polygon class adding a point, on … BLANKS What is wrong
with the following interface? public
interface SomeInterface { void someMethod(int n) { System.out.println("Hello world"); } } >You can
never implement a method inside an interface. ++++++ OLD INHERITANCE
QUESTIONS In this
question, you will create four different classes that make use of
inheritance. PART
A – THE VEHICLE CLASS Create a
superclass called Vehicle that contains the following 2 datafields, 1
constructor and 2 instance methods:
protected String owner; protected
int registrationNumber; public
Vehicle(String o, int r) public
String getOwner() public
int getRegistrationNumber() You need to implement all parts of the class. PART
B – THE CAR CLASS Create a Car
class that extends the Vehicle class and contains 1 new datafield, 1
constructor and 1 instance method.
protected
int numberOfDoors; public
Car(String o, int r, int n) public
int getNumberOfDoors() Create a
Truck class that extends the Vehicle class and contains the following:
protected
int numberOfAxels; public
Truck(String o, int r, int n) public
int getNumberOfAxels() PART
D – THE MOTORCYCLE CLASS Create a
Motorcycle class that extends the Vehicle class and contains the following:
protected
boolean hasSideCar; public
Motorcycle(String o, int r, boolean c) public
boolean getHasSideCar() PART
E – COSTS METHODS i) Add a public double
costs() method to Vehicle. It always
returns 20000.0. ii) Add a public double
costs() method to Car. If it has 2 or
less doors, the cost is 20000.0. If it
has 3 or 4 doors, the cost is 25000.
If it has 5 or 6 doors, the cost is 35000. If it has more than that, the cost is
50000. iii) Add a public double
costs() method to Truck. It costs 40000
if it has two axels. It then costs an
extra 8000 for each extra axel. iv) Add a public double
costs() method to Motorcycle. It costs
18000 if it has no side car. The side
car costs an extra 6000. v) Make sure
you add @Override on the line of the costs() methods that are in the Car,
Truck and Motorcycle class (but not in the Vehicle class). PART
F – TESTING TIME (WITH POLYMORPHISM) In the main
method of the class called Tester, do the following: a) Create 2 instances of each of the four
classes. b) Still in the Tester class, add the
outputVehicle static method (function) below.
It will output the owner of the vehicle along with the vehicle’s cost. c) Pass each of the 8 instances of our
classes to the outputVehicle function.
This is an example of polymorphism.
Check that the output is as you would expect. Notably, check that the cost is correct. Taken
from the ICS3U test review: QUESTION 6 – PROGRAMMING
INHERITANCE Consider
the class below called BasicBullet that will work for a game similar to Space
Invaders. public
class BasicBullet public double x; public double y;
public String filename;
x = tmpX;
y = tmpY;
filename = tmpFilename;
} } Now
write the class called HomingBullet that extends (inherits from)
BasicBullet. It has the extra data
fields:
You
will also need to add a constructor to the class.
++++++ Taken from
old ICS4U test review QUESTION 6 – INHERITANCE 6.1
– Create the class called Student that will inherit from the Person class
above. Here are the specifications: a)
It has two new datafields representing: -student
number (integer) -current school (String) b)
It has a constructor that gets all five datafields as parameters. c)
It has a changeSchool(String newSchool) method that allows for
access to the corresponding datafield. QUESTION 7 – INTERFACE Consider
the following interface: public interface Executable
public void execute(); } 7.1
– The line below starts a new class (in its own file). What text is needed to make that class use
the interface above? public class NewClass { } 7.2
– Now that NewClass is using the interface, what has to be done for it to be
error-free? 8.1
– Similar to the Student class from above, create a Teacher class that
inherits from Person. (Yes, teachers
are people too!) You decide on the
datafields, constructor(s) and methods. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|