1) Frage zu Klassen, Objekte und Methoden:

Werbung
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
Herunterladen