Laboratorium 1
Cel:
Zapoznanie się ze środowiskiem programowania zgodnym z JDK 1.2
Pierwsza aplikacja Javy - kompilacja i uruchamianie
Korzystanie z dokumentacji Java API
Budowanie obiektów; wywoływanie metod; przekazywanie argumentów do metod
Pierwsza samodzielna aplikacja
Java Development Kit
Środowisko programowania JDK stanowi zestaw narzędzi do tworzenia aplikacji w języku Java. W jego skład wchodzi: wirtualna maszyna, kompilator, debugger, generator dokumentacji i inne. Narzędzia są wywoływane z linii poleceń konsoli DOS.
Poza narzędziami JDK, elementem wykorzystywanym w laboratorium będzie dokumentacja do Java API dostępna w formacie HTML. Jest ona dostępna w katalogu zawierającym JDK i można z niej korzystać posługując się dowolną przeglądarką internetową.
Pierwsza aplikacja
Aby zapoznać się ze środowiskiem JDK, procesem kompilacji i uruchamiania aplikacji napisanych w Javie, pierwszym zadaniem w ramach laboratorium będzie napisanie, skompilowanie i uruchomienie prostej aplikacji.
// kod źródłowy powinien być zapisany w pliku Hello.java
public class Hello {
public static void main(String args[]) {
System.out.println("Hello world!");
}
}
Kod może być napisany przy użyciu dowolnego edytora tekstowego (np. Notepad, WordPad) i zapisany na dysku pod nazwą zgodną z nazwą klasy i rozszerzeniem .java.
Po kompilacji kodu źródłowego, poleceniem:
javac Hello.java
otrzymujemy plik wynikowy z rozszerzeniem .class (Hello.class). W celu uruchomienia kodu należy wykonać polecenie:
java Hello
Korzystanie z dokumentacji Java API
Dokumentacja jest dostępna w katalogi, w którym jest zainstalowany pakiet JDK. W podkatalogu docs znajduje się plik index.html, który należy otworzyć w przeglądarce. Na wyświetlonej stronie znajdują się odnośniki do dokumentów dotyczących różnych aspektów technologii Javy. Między innymi znajduje się odnośnik do Java Core API. Studenci powinni się zapoznać ze sposobem odnajdywania informacji dotyczących wybranych klas, metod i atrybutów obiektów.
Jako przykład można zaproponować odszukanie informacji na temat klasy System znajdującej się w pakiecie java.lang. W przykładowej aplikacji wykorzystywany był atrybut out z tejże klasy, który był typu PrintStream z pakietu java.io.
Należy zwrócić uwagę na standard opisu poszczególnych klas i jej elementów. Całość dokumentacji została wygenerowana w sposób automatyczny na podstawie specjalnego sposobu komentowania kodu i narzędzia javadoc.
Przekazywanie argumentów do metod
Przedstawiona aplikacja ilustruje mechanizm przekazywania argumentów przy wywoływaniu metod na rzecz obiektów:
public class PassTest {
float ptValue;
public static void main (String args[]) {
String str;
int val;
// Utworzenie instancji klasy
PassTest pt = new PassTest ();
// przypisanie wartości zmiennej int
val = 11;
// próba zmiany wartości
pt.changeInt (val);
System.out.println ("Int value is: " + val);
// przypisanie wartości zmiennej String
str = new String ("hello");
// próba zmiany wartości
pt.changeStr (str);
System.out.println ("Str value is: " + str);
// przypisanie wartości składnikowi obiektu
pt.ptValue = 101f;
// próba zmiany wartości poprzez referencję do obiektu
pt.changeObjValue (pt);
System.out.println ("Current ptValue is: " +
pt.ptValue);
}
public void changeInt (int value) {
value = 55;
}
public void changeStr (String value) {
value = new String ("different");
}
public void changeObjValue (PassTest ref) {
ref.ptValue = 99f;
}
}
Przykładowy kod powinien być przepisany przez studentów, skompilowany i uruchomiony. Następnie powinno zostać omówione zachowanie się poszczególnych metod, z wyjaśnieniem różnic w zachowaniu się przekazywania zmiennych podstawowych i referencyjnych.
Samodzielna aplikacja
Jako samodzielną pracę trwającą do końca zajęć można zaproponować stworzenie klasy zawierającej metodę liczącą silnię dla zadanego argumentu. W funkcji main należy utworzyć tablicę typu int, a następnie w pętli wypełnić elementy tej tablicy wartościami funkcji silnia z argumentem równym indeksowi tablicy.
Przykładowy program może wyglądać następująco:
public class Factorial {
public int calculate(int n) {
int result = 1;
for (int i=2; i<=n; i++) {
result *= i;
}
return result;
}
public static void main(String arg[]) {
int values [] = new int[10];
Factorial fact = new Factorial();
for (int i=0; i<values.length; i++) {
values[i] = fact.calculate(i);
}
for (int i=0; i<values.length; i++) {
System.out.println("Factorial of "+i+
" equals "+values[i]);
}
}
}
Osobom, które szybciej skończyły ćwiczenie można zaproponować wersję rekurencyjną.
Studenci zaawansowani
Często zdarza się, że część studentów wykazuje pewne zaawansowanie w stosowaniu Javy. Aby zapewnić im zajęcie można zaproponować stworzenie wersji interaktywnej pobierającej wartość argumentu z linii poleceń jako argument wywołania programu lub z klawiatury (materiał wykraczający poza zakres wykładu).