Seminar Scala, Vortrag 2: Klassen, Objekte und Methoden - Aufgabenblatt 1) Frage zu Klassen, Objekte und Methoden: Konstruktor Was wurde hier falsch gemacht? class YellBot(text: String){ println(text) def YellBot(){ YellBot("Dummy text!") } } Assoziativität In welcher Reihenfolge werden die Methoden ausgeführt? X ++ Y -* Z *** 5 …...............................…...............................…................................................................ Prefixes Werden zuerst Prefixes oder Operatoren die höher in der Priorität stehen ausgeführt? O O Prefixes Operatoren Objekte Wann wird ein object initialisiert? Hilfsmittel: System.currentTimeMillis() und Thread.sleep(1000) …...................…...................…...................…...................…...................…................... …...................…...................…...................…...................…...................…................... Rich Wrapper Was muss man importieren um die Rich Wrapper Methoden der Standard Typen benützen zu können? ….....................….....................….....................….....................…................................. 30.03.2010 - Simon Lerch Seminar Scala, Vortrag 2: Klassen, Objekte und Methoden - Aufgabenblatt 2) Übungsaufgabe Sie haben hier eine leicht abgeänderte Version der Rational Klasse von letzter Woche: class Rational(numer: Int, denom: Int){ private def gcd(a: Int, b: Int): Int = if(a == b) a else gcd(a min b, a - b abs) override def toString = numer + "/" + denom def reduce = { val g = gcd(numer, denom) new Rational(numer/g, denom/g) } def getNumer() = numer def getDenom() = denom } Aufgaben: 1. Fügen sie alle Mathematischen Grundfunktionen in die Klasse ein, ( +, -, *, / ) 2. Bauen sie einen sekundären Konstruktor für ganze Zahlen ein. 3. Erstellen sie zu der Klasse ein passendes Objekt. Dieses soll eine .createRandomRational() Funktion beinhalten, die einen Bruch mit Zufallszahlen von 1 bis 10 initialisiert und zurück gibt. (Random Beispiel siehe unten) 4. Anschließend soll man mit einer ~ als Prefix denom und numer vertauschen können. 5. Erstellen sie nun eine zweite Datei mit einer Main-Methode, die zwei Argumente von der Kommandozeile einließt. Daraus wird ein Bruch erstellt und mit einem zweiten aus der createRandomRational() Methode addiert, die Lösung soll anschließend ausgegeben werden. Beispiel für ein kleines Randomskript in Scala: import java.util.Random val rand = new Random(System.currentTimeMillis()); val x = rand.nextInt(10); println(x) String in Int verwandeln: "5" toInt 30.03.2010 - Simon Lerch