18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
1
Programowanie w Java 4
Tablice
Kontrola kolejności wykonania instrukcji
Klasy i metody
Porównanie z Pascalem Delphi
Dla Specjalizacji Systemy Informacyjne w
Gospodarce
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
2
Tablice
Java
int[] Ar= new
int[10];
Index zaczyna się
od zera
Tablica
deklarowana
dynamicznie (new)
Int[] [] =Ar2 =
new int[10] [2];
Delphi
Ar: Array[1..10] of
integer;
Kontrola zakresu
indeksu
Tablica
deklarowana
statycznie
Ar2:
array[1..10,0..1];
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
3
Tablice - użycie
Java
Deklarowanie i
Inicjowanie:
Int [] [] Ar = {{1,2} ,
{3,4,5}};
Odczyt:
X= ar[0];
Zapis:
Ar[1] = 10;
Uwaga
Int [] b, c[]; deklaruje
jednowymiarową macierz
b i dwuwymiarową c
Czytelniej: int b[], c[] [];
Delphi
Deklarowanie i
Inicjowanie:
Ar: array[1..2, 1..3] = ((1,2) ,
(3,4,5));
Odczyt:
X:= ar[1];
Zapis:
Ar[1] := 10;
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
4
Tablice - kopiowanie
Java
Przed kopiowaniem trzeba dynamicznie
zarezerwować pamięć – operator new
Funkcja void System.arrycopy(ArSource,
StartPoz, ArDestin, StartPozDest,
Number);
Przykład kopiowania całej tablicy:
A2 = new int[a1.length];
System.arraycopy(A1,0,A2,0,A1.length);
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
5
Kontrola przepływu - if
Java
Pojedyncze instrukcje:
if (warunek)
instrukcja1
else
instrukcja2;
Blok instrukcji:
if (warunek)
{ instrukcje 1 }
else
{ instrukcje 2 };
Delphi
Pojedyncze instrukcje:
if (warunek) then
instrukcja1
else
instrukcja2;
Blok instrukcji:
if (warunek) then
begin instrukcje 1 end
else
begin instrukcje 2 end;
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
6
Sprawdzanie wartości
Java
Instrukcja switch
sprawdza kolejno każdy
przypadek
Należy użyć break aby
zakończyć sprawdzanie
Przykład:
switch (ch) {
case ‘!’: wykrzyknik=true;
case ‘1’: case ’2’: cyfry=true;
break;
default: x=0; }
Delphi
Instrukcja case
zatrzymuje się po
znalezieniu pierwszego
pasującego wzoru
Przykład:
case (ch) of
‘!’: wykrzyknik=true;
‘1’, ’2’: cyfry=true;
default: x=0;
end;
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
7
Pętle – o znanej liczbie
powtórzeń
Java
Budowa:
for (instrukcja_początkowa;
warunek;
instrukcja_iterująca) Blok
Przykład:
for (int i=0; i<ar.length; i+
+) { s=s+ar[i];}
Delphi
Budowa
for
zmienna:=wart_początkowa
to wart_koń do Block
Przykład:
for i:=1 to length(ar) do
begin
s:=s+ar[i];
end;
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
8
Pętle – sprawdzenie przed
iteracją
Java
Budowa:
Nadanie wartości
zmiennej kontrolnej
While (warunek)
Block
Przykład
i=1; s=0;
while i<ar.lenght)
{
s:=s+ar[i];
i++;
};
Delphi
Budowa:
Nadanie wartości
zmiennej kontrolnej
While (warunek)
Block
Przykład
i:=1; s:=0;
while i<length (ar) do
begin
s:=s+ar[i];
Inc(i);
end;
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
9
Pętle – sprawdzenie po
iteracji
Java
Budowa:
do
Block
while (warunek);
Przykład:
String buffer;
DataInputStream my_inp = new
DataInputStream(System.in);
do {
buffer=my_inp.readLine(); }
while (! buffer.equals(„exit”));
Delphi
Budowa:
repeat
Block
until (warunek);
Przykład:
repeat
read(x);
until (x=0);
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
10
Kontrola pętli
Break – przerywa wykonywanie pętli
Przykład:
for (int i=0; i<ar.length; i++)
{ if ar[i]==0 beak;
s=fun(ar[i]);
.....
}
Continue –”przeskakuje” pozostałe instrukcje w bloku
Przykład:
for (int i=0; i<ar.length; i++)
{ if ar[i]==0 continue;
s=fun(ar[i]);
.....
}
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
11
Powrót z metody
Java
Instrukcja return (powrot)
przekazuje kontrolę
programu do metody
„wołającej”. Jeżeli metoda
zwraca wartość (jest
funkcją) to trzeba podać
wartość lub wyrażenie.
Budowa:
return wyrażenie;
Przykład:
int x2(int x)
{
return x*x;
}
Delphi
Instrukcja break lub
dojście do końca bloku
powoduje powrót z funkcji
Zwracaną wartość nadaje
się przypisuje się nazwie
funkcji lub pseudo
zmiennej Result;
Przykład:
function x2(x: integer);
begin
x2:=x*x;
// result:=x*x;
end;
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
12
Klasy - deklaracja
Java
Budowa:
class nazwaKlasy
extends klasaPrzodek
implements
interfacaName {
Deklaracje zmiennych
Deklaracje funkcji
(metod)
Inicjalizator klasy
}
Delphi
Budowa
nazwaKlasy= class
(klasaPrzodek )
ZakresWidoczności
Deklaracje
zmiennych
Deklaracje funkcji
Konstruktor klasy
end;
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
13
Metody i zmienne -
deklaracja
Deklaracja zmiennych
Modyfikator(y) typ nazwa = wartość_ początkowa
Deklaracja metody (funkcji w klasie)
Modyfikator(y) typ nazwa (lista_argumentów) {
instrukcje; ...
}
Budowa listy argumentów
(typ identyfikator, typ identyfikator, ....)
Deklaracja inicjalizatora
static { instrukcje; ... }
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
14
Klasy - przykład
Class MyClass {
int i; // zmienna klasy
int Metoda1() {
int j; //zmienna lokalna
j=1;
return j;
}
int Metoda2() {
int j; //zmienna lokalna ale inna niż powyżej
j=2;
return j;
}
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
15
Modyfikatory - static
Static
Zmienne należą do typu a nie są kopiowane do obiektu danej klasy
Przykład:
public class MyClass {
// zmienna typu klasy
public static int instanceCount;
// konstruktor obiektu
public MyClass() {instanceCount++; }
// metoda typu klasy
public static void resetCounter() {instanceCount=0; }
// inicjalizator typu klasy
static { instanceCount=0; }
}
Metoda statyczne może być wywoływana z użyciem identyfikatora
typu klasy:
MyClass.resetCounter;
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
16
Modyfikatory
abstract
klasa nie jest w pełni zaimplementowana
Można dziedziczyć z tej klasy
Nie można tworzyć obiektów (nie używać new)
synchronised
Synchronizacja wątków (threads)
native
Zaimplementowane w innym języku (n.p. C)
volative
Zmienna może się zmienić niezależnie od programu
(n.p. I/O)
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
17
Modyfikatory - final
Zmienna nie może zmieniać
wartości (po prostu stała)
Musi być nadana wartość w deklaracji
Przykład;
final int MAX_NUMBER = 1000;
Klasa lub metoda
Nie można nadpisać w klasie potomnej
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
18
Modyfikatory dostępu
Java
Określamy dla
każdej metody lub
zmiennej
Typy
public
protected
private protected
private
Delphi
Definiujemy sekcje
o danym dostępie i
tam wpisujemy
deklaracje
zmiennych lub
metod
Typy
public
protected
private
published
18/04/02
Programowanie Java 4 Copyri
ght Marek A. Chmielowski
19
Wskaźnik obiektu i klasy
„rodzicielskiej”
this
Wskazuje na obiekt z którego wywołano
metodę
super
Wskazuje na klasę „rodzicielską”
Przykład
this.x = 0; // nadaje wartość zmiennej obiektu
super.x = 0; // nadaje wartość zmiennej w
klasie „rodzicielskiej”