Testen von Java-Programmen mit BlueJ 1 Programm-Fragment: z.B. // minsquare int i = 1, q = 1; while(q <= n) { i++; q = i*i; } ( bewirkt q = min { i·i | i ≥ 1, i⋅i > n } ) Was ist ein Programm? Abhängig von Sprache und Kontext ! „application“ „applet“ „Klasse“ „Modul“ ... (andere) 2 Integrierte Entwicklungsumgebungen: ein Beispiel von vielen ist BlueJ = integriertes Lernsystem für Java Damit einfacher Test von Programmfragmenten: Wählen Project New Project; Projektname wählen, z.B. Test, dann create (Verzeichnis wird erzeugt, Arbeitsfenster erscheint). Wählen New Class; Klassenname wählen, z.B. Test, dann Ok (Klassen-Symbol erscheint im Arbeitsfenster). Doppelklick auf Klassen-Symbol öffnet vorgegebenen, editierbaren Programmtext. 3 Ersetze den vorgegeben Programmtext durch Ergebnistyp/Name der Methode public class Test { public static int minsquare(int n) { int i = 1, q = 1; while(q <= n) { Typ/Name des Arguments „Methode“ i++; q = i*i; } return q; } } Rückgabe des Ergebnisses Übersetze mit Compile; wenn keine Fehler, Fenster schließen, sonst korrigieren und erneut übersetzen. 4 Beim Klassensymbol aus Kontextmenü (rechte Maustaste) int minsquare(n) wählen und im dann geöffneten Eingabefenster n eingeben, z.B. 17. In einem Ausgabefenster erscheint das Ergebnis: 25. Das Programm kann mit weiteren Fähigkeiten versehen werden, z.B. mit Code zur Berechnung des größten gemeinsamen Teilers: public class Test { public static int minsquare(int n) {...} public static int ggT(int a, int b) {...} } 5 Gegenüberstellung von Haskell script und Java class module Test where public class Test { minsquare :: int -> int minsquare n = ... public static int minsquare(int n) {...} ggT :: int -> int -> int ggT a b = ... public static int ggT(int a, int b) {...} round :: float -> int round x = ... public static int round(float x) {...} ..... ..... } 6