2. Podstawowe elementy języka
2.1. Klasa, jej zmienne i metody
Klasa - szablon do tworzenia obiektów (instancji) określonego rodzaju.
Opis klasy:
class < Nazwa > {
[ < deklaracje zmiennych > ]
[ < konstruktory > ]
[ < opisy metod > ]
}
Komentarze:
// komentarz jednowierszowy
/* komentarz
kilkuwierszowy */
/** komentarz wykorzystywany przy automatycznym tworzeniu dokumentacji */
Przykład:
class Osoba {
// pusty opis
}
Zmienna - miejsce na zapisanie pewnej cechy obiektu.
Deklaracja zmiennej:
<typ> <nazwa> ; |
<typ> <nazwa> = <wartość początkowa> ; |
<typ> <nazwa_1> , <nazwa_2> , …… ;
Przykłady:
String imię;
String nazwisko;
String imię, nazwisko;
String imię = „nieznane”;
String nazwisko = „nieznane”;
Zmienna statyczna- miejsce na zapisanie wspólnej cechy obiektów
należących do danej klasy.
Deklaracja zmiennej statycznej:
static < typ > < nazwa > ; |
static < typ > < nazwa > = < wartość początkowa > ; |
static < typ > < nazwa_1 > , < nazwa_ 2> , …… ;
Przykład:
static int liczba = 0;
Stałe w Javie deklarowane są jako ostateczne zmienne statyczne:
final static < typ > <nazwa> = < wartość > ;
Przykład:
final static String NAGŁÓWEK = „Aplikacja Osoba”;
Metoda - miejsce na opisanie określonej czynności, którą obiekt potrafi wykonać.
Opis metody:
[ < modyfikator dostępu >] < typ zwracanej wartości >
< nazwa > ( [ < lista parametrów > ] ) {
[ < deklaracje zmiennych lokalnych > ]
[ < instrukcje >]
}
Przykład:
void jestem ( ) {
System.out.println ( „Jestem ”+ imię + " " + nazwisko );
}
Sygnatura metody:
< typ > < nazwa > ( < lista parametrów > )
Przykład:
void jestem ( )
Metoda statyczna - wspólna dla całej klasy - służy do wykonywania działań na zmiennych statycznych.
Przykład:
static void nagłówek ( ) {
System.out.println ( NAGŁÓWEK );
}
2.2. Tworzenie obiektów
Deklarowanie zmiennej obiektowej:
< Nazwa klasy > < nazwa zmiennej > ;
Przykład:
Osoba os; // wartość referencji null
Utworzenie nowego obiektu:
< referencja > = new < Nazwa klasy >
( [ < lista parametrów > ] );
Przykład:
os = new Osoba ( );
Zapis skrócony:
Osoba os = new Osoba ( );
Przypisanie początkowych wartości zmiennym:
a) za pośrednictwem wyrażeń inicjujących −
class Osoba {
static int liczba = 1;
int nrOsoby = 1;
String imię = "nieznane";
String nazwisko = "nieznane";
b) za pośrednictwem statycznych bloków inicjujących −
class Osoba {
static int liczba = 1;
int nrOsoby;
String imię, nazwisko;
static {
imię = "nieznane";
nazwisko = "nieznane";
nrOsoby = liczba++;
}
c) za pośrednictwem konstruktorów −
class Osoba {
static int liczbaOsób = 1;
int nrOsoby;
String imię, nazwisko;
Osoba ( String imię, String nazwisko ) {
this.imię = imię;
this.nazwisko = nazwisko;
nrOsoby = liczba++;
}
Konstruktor domyślny jest pusty:
Osoba ( ) {
}
Utworzenie nowego obiektu z konstruktorem dwuparametrowym:
Osoba os = new Osoba ( "Jan", "Kowalski" );
Wywołanie metody:
< referencja obiektu >.< nazwa metody >
( [ < parametry > ] )
Przykład:
os.jestem ( ); // metoda bez parametrów
Wywołanie metody statycznej:
< nazwa metody > ( [ < parametry > ] )
Przykład:
nagłówek ( );
podajLiczbęOsób ( liczbaOsób );
2.3. Aplikacja
Aplikacja − klasa posiadająca metodę główną:
public static void main ( String args [ ] ) {
// opis metody
}
Tablica argumentów args służy do przekazywania aplikacji parametrów w wierszu poleceń. Uruchomienie aplikacji Osoba zleceniem
java Osoba Jan Kowalski
jest równoważne instrukcjom przypisania wartości
args[0] = "Jan";
args[1] = "Kowalski";
Pamiętamy, że w C element args[0] przechowuje nazwę programu. W Javie nie jest to konieczne, bo nazwę klasy uruchamianej i tak musimy podać interpreterowi.
Testowanie aplikacji w środowisku JDK przebiega w taki sposób:
Przepisujemy tekst źródłowy korzystając z dowolnego edytora, np. Notatnika (Notepad) i zapisujemy go w katalogu roboczym jako zbiór tekstowy o nazwie zgodnej z nazwą klasy i rozszerzeniu java, czyli jako zbiór <Nazwa>.java;
Otwieramy okno MS-DOS w tym katalogu i dokonujemy kompilacji zbioru źródłowego za pomocą zlecenia
javac <Nazwa>.java
W przypadku bezbłędnego przebiegu kompilacji powstanie zbiór <Nazwa>.class zawierający kod bajtowy;
Uruchamiamy aplikację za pośrednictwem interpretera, czyli wykonujemy zlecenie java <Nazwa>
Aplikacja Osoba
class Osoba {
// zmienne
String imię, nazwisko;
int nrOsoby;
// zmienne statyczne
static int liczbaOsób = 0;
// stałe
final static String NAGŁÓWEK =
"APLIKACJA OSOBA";
final static String JESTEM = "Jestem ";
final static String MAM = ", mam nr ";
// konstruktor
Osoba ( String imię, String nazwisko ) {
this.imię = imię;
this.nazwisko = nazwisko;
nrOsoby = ++liczbaOsób;
}
// metoda
void jestem ( ) {
System.out.println ( JESTEM + imię + " " +
nazwisko + MAM +nrOsoby );
}
// metoda statyczna
static void nagłówek ( ) {
System.out.println ( );
System.out.println ( NAGŁÓWEK );
System.out.println ( );
// metoda główna
public static void main ( String args [ ] ) {
Osoba os1 = new Osoba ( "Adam", "Kowalski");
Osoba os2 = new Osoba ( "Marek", "Cichocki");
nagłówek ( );
os1.jestem ( );
os2.jestem ( );
}
}
Na ekranie komputera powinien pojawić się tekst:
Jestem Adam Kowalski, mam nr 1
Jestem Marek Cichocki , mam nr 2
W zasadzie każda klasa może posiadać własną metodę main, ponieważ uruchamiając aplikację wywołujemy tylko jedną klasę. Metody główne pozostałych klas można wykorzystywać do ich testowania.
Adam Borkowski Język programowania „Java” 2-9