CoolFace
Apppublic

KaiquanMah/TurkuBasicOOPinJava

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
09B. Oldest Fairy Tale Character180 linesDownload Raw Back to Week 6: Methods of OO Programming
1In the program, a class named 'FairyTaleCharacter' and several other classes inheriting from it have been defined.2 3Write a method:4public static FairyTaleCharacter oldestCharacter(ArrayList<FairyTaleCharacter> characters)5which takes a 'list of descendants' of the fairy tale character as a 'parameter'.6The method finds and returns the oldest character in the list.7 8Note that the classes do not currently implement the Comparable interface, so the oldest character must be found in some other way.9 10 11 12 13 14 15 16import java.util.ArrayList;17import java.util.Collections;18import java.util.Random;19 20public class Test{21    public static void main(String[] args){22        final Random r = new Random();23        24        int age = r.nextInt(5) + 5;25        ArrayList<Integer> ages = new ArrayList<>();26        for (int i=0; i<20; i++) {27            ages.add(age);28            age += r.nextInt(10) + 1;29        }30        31        ArrayList<FairyTaleCharacter> characters = new ArrayList<>();32        String[] colors = "blue yellow red black brown white green".split(" ");33        34        for (String name : new String[] {"Buddy", "Bunny", "Rudy"}) {35            String color = colors[r.nextInt(colors.length)];36            characters.add(new Nephew(name, ages.remove(r.nextInt(ages.size())), color));37        }38        39        String[] wands = "oak licorice birch alder walnut plastic".split(" ");40        for (String name : new String[] {"Harry", "Hermione", "Ron"}) {41            String wand = wands[r.nextInt(wands.length)];42            characters.add(new Wizard(name, ages.remove(r.nextInt(ages.size())), wand));43        }44    45        String[] superpowers = "supervision flight superstrength literacy super sneeze".split(" ");46        for (String name : new String[] {"Batguy", "Mouseman", "Bulk"}) {47            String power = superpowers[r.nextInt(superpowers.length)];48            characters.add(new Superhero(name, ages.remove(r.nextInt(ages.size())), power));49        }50        51        System.out.println("All fairy tale characters: ");52        characters.stream().forEach(c -> System.out.println("" + c));53        System.out.println("Oldest: " + oldestCharacter(characters));54    }55 56 57 58 59    //add60    public static FairyTaleCharacter oldestCharacter(ArrayList<FairyTaleCharacter> characters) {61    62    // INITIALISE OLDEST AS 1ST CHARACTER63    FairyTaleCharacter oldest = characters.get(0);64    65    for (FairyTaleCharacter character : characters) {66        if (character.getAge() > oldest.getAge()) {67            oldest = character;68        }69    }70    return oldest;71 72 73 74 75 76}77 78 79 80 81 82 83 84 85 86}87 88 89 90 91class FairyTaleCharacter {92    private String name;93    private int age;94    95    public FairyTaleCharacter(String name, int age) {96        this.name = name;97        this.age = age;98    }99    100    public String getName() {101        return name;102    }103    104    public int getAge() {105        return age;106    }107    108    @Override109    public String toString() {110        return name + ", " + age + " years old";111    }112}113 114class Nephew extends FairyTaleCharacter {115    private String hatColor;116 117    public Nephew(String name, int age, String hatColor) {118        super(name, age);119        this.hatColor = hatColor;120    }121 122    @Override123    public String toString() {124        return super.toString() + ", " + hatColor + " hat";125    }126}127 128class Wizard extends FairyTaleCharacter {129    private String wand;130 131    public Wizard(String name, int age, String wand) {132        super(name, age);133        this.wand = wand;134    }135    136    @Override137    public String toString() {138        return super.toString() + ", " + wand + " wand";139    }140}141 142class Superhero extends FairyTaleCharacter {143    private String superpower;144 145    public Superhero(String name, int age, String superpower) {146        super(name, age);147        this.superpower = superpower;148    }149    150    @Override151    public String toString() {152        return super.toString() + ", superpower: " + superpower;153    }154}155 156 157 158 159 160 161 162 163All fairy tale characters: 164Buddy, 46 years old, black hat165Bunny, 69 years old, yellow hat166Rudy, 111 years old, yellow hat167Harry, 65 years old, birch wand168Hermione, 11 years old, birch wand169Ron, 71 years old, birch wand170Batguy, 88 years old, superpower: flight171Mouseman, 55 years old, superpower: superstrength172Bulk, 6 years old, superpower: literacy173 174 175Oldest: Rudy, 111 years old, yellow hat176 177 178 179 180