public abstract class Tier { protected int groesse; protected int preis; protected String name; protected boolean gefuettert, gekuschelt, bespielt; private final static String[] namensListe = {"Samos", "Knidos", "Wafa", "Kepler", "Fermat", "Descartes", "Pascal", "Bernoulli", "Leibniz", "Newton", "Euler", "Lagrange", "Laplace", "Legendre", "Fourier", "Gauss", "Bolzano", "Cauchy", "Lobatschewski", "Jacobi", "Weierstrass", "Tschebyschow", "Riemann", "Banach", "Goedel", "Turing", "Erdos", "Schwarz","Einstein"}; public Tier(String name, int size, int preis) { this.name = name; this.groesse = size; this.preis = preis; gefuettert = false; gekuschelt = false; bespielt = false; } public abstract int futterBedarf(); public abstract void kuscheln(int minuten); public abstract void spielen(int minuten); public int getPreis(){ return preis; } public int getSize() { return groesse; } public void schlafen() { gefuettert = false; gekuschelt = false; bespielt = false; } public boolean istGluecklich() { return gefuettert && gekuschelt && bespielt; } private static String zufallsName() { return namensListe[(int)(Math.random()*namensListe.length)]; } // Erzeugt ein Zufallstier: 50% Katze, 30% Hunde, 10% Maine-Coon, 10% Kartaeuser public static Tier erzeugeZufallsTier() { Tier result = null; int w10 = (int) (Math.random()*10); int size = (int) (Math.random()*3+1); int preis = size*50 + (int)(Math.random()*50); String name = zufallsName(); switch (w10) { case 0,1,2,3,4 -> {result = new Katze(name, size, preis);} case 5,6,7 -> {result = new Hund(name, size, preis);} case 8 -> {result = new MaineCoon(name, size, preis*3);} case 9 -> {result = new Kartaeuser(name, size, preis*2);} default-> throw new IllegalArgumentException("Unexpected value in erzeugeZufallsTier: " + w10); } return result; } @Override public String toString() { String groe = ""; switch(groesse) { case 1-> groe = "Klein"; case 2-> groe = "Mittel"; case 3-> groe = "Gross"; default-> throw new IllegalArgumentException("Unexpected value in toString: " + groesse); } return "Name: " + name + " Groesse: " + groe + " Verkauspreis: " + this.getPreis(); } }