open class Song(val titel: String, val interpret: String, val spieldauer: Int, _bewertung: Int) { var bewertung = _bewertung set(value) { if (value < 0) field = 0 else if (value > 100) field = 100 else field = value } open fun abspielen() { var decke: Int if (spieldauer % 60 == 0) decke = spieldauer / 60 else decke = spieldauer / 60 + 1 for (i in 1..decke) println("Spiele: $titel von $interpret (Bewertung: $bewertung Punkte)") } fun change(newValue: Int) { bewertung = newValue } open fun search(searchString: String): Boolean = titel.contains(searchString) || interpret.contains(searchString) } class SongMitText(titelParam: String, interpretParam: String, spieldauerParam: Int, bewertungParam: Int, var textzeile: String) : Song(titelParam, interpretParam, spieldauerParam, bewertungParam){ override fun search(searchString: String): Boolean = titel.contains(searchString) || interpret.contains(searchString)|| textzeile.contains(searchString) } class SongMitAutobewertung(titelParam: String, interpretParam: String, spieldauerParam: Int, bewertungParam: Int) : Song(titelParam, interpretParam, spieldauerParam, bewertungParam){ override fun abspielen() { super.change(bewertung + 1) super.abspielen() } }