Suppose you want to keep track of Xmas trees. All trees have a species and a price. Real trees have a date cut and a height. Artificial trees have the manufacturer�s name. You do not want to change the price of a tree outside of the class. You will need to read the price of this tree outside the class. Write 3 classes including constructors and (only) needed get/set methods.
abstract class Trees { private float price; // could be Double String species;
public Trees (String s, float p) { species = s; price = p; }
public float getPrice() { return price; }
}
class Artificial extends Trees { String name;
public Artificial ( String a, float b, String n) { super(a,b); name = n; } }
class Real extends Trees { String date; int height;
public Real (String a, float b, String d, int h) { super(a,b); date = d; height = h; } }
How would you make an array of 40 Real trees in the Driver class? 2 lines: define it and make it.
1. Real r[];
2. r = new Real[40];
Show how you would call the constructor to make a now Real tree with species Fir, price 12.75, Nov 11 cut date, and height of 6.
r[6] = new Real(�Fir�,12.75,�Nov 11�,6);
Suppose you have a filled array of Real trees up to a counter called rtcount. Write a Java method to find the most expensive tree, and change this tree�s cut date to the same date as the tree with the biggest height.
(one of many solutions..)
static void FindMethod() {
String g,d; float p; highP=0.0; int h, highPpos,highH, highHpos = 0;
for (int 1=0; i<rtcount; i++) { p = r[i].getPrice(); h = r[i].height;
if (p > highP) { highP = p; highPpos = i; //remember where the most expensive one was }
if (h > highH) { HighH = h; highHpos = i; }
d = r[highPpos].date; r[highPpos].date = d;
}
}
|