Programowanie sieciowe
Podstawy Javy
Wyklad 2
opracowal:
mgr inz. Tomasz Gratkowski
e-mail:
T.Gratkowskie@iie.pz.zgora.pl
sala: 408
tel. (068) 32-82-526
Programowanie Sieciowe
Troche historii jezyka Java
l 1990 - Bill Joy w raporcie “Further” sugeruje SUNowi
stworzenie srodowiska obiektowego na bazie C++,
l 1991 - W ramach projektu “Green” powstaje jezyk OAK -
“Object Application Kernel” (James Gosling), przeznaczony
dla aplikacji w elektronice powszechnego uzytku,
l 1995 - zmiana nazwy na JAVA ze wzgledu na zastrzezenie
nazwy OAK,
l 1996 - Pojawia sie Netscape zgodny z Java 1.0, Sun
propaguje darmowe srodowisko JDK 1.0,
l 1999 - Java 2 Nowe oblicze Javy.
Programowanie Sieciowe
Java platforma tworzenia i wykonywania aplikacji
Platforma (platforma programowo-sprzetowa) -
nazywa sie przewaznie pewna kombinacje sprzetu i
oprogramowania umozliwiajaca tworzenie i
wykonywanie programów. Platforme stanowi wiec
komputer o danej konfiguracji oraz system
operacyjny w srodowisku którego uruchamiana jest
dowolna aplikacja np.:
Intel PC + Windows NT; Sun Ultra + Solaris; SGI O2
+ Irix 6.4, itp.
Platforma Javy jest podobna, jest to zbiór dwóch
elementów: Java API (Application Programming
Interfaces) - interfejsy tworzenia aplikacji oraz
JavaVM (Virtual Machine) - maszyna wirtualna,
zwane czesto srodowiskiem uruchomieniowym
aplikacji - Java Runtime Engine (JRE).
Niezaleznosc systemowa – oznacza, ze program moze byc wykonany na dowolnym
systemie komputerowym. Programy napisane w Javie moga dzialac na kazdym
komputerze dla którego stworzona zostala wirtualna maszyna Javy.
Kod bajtowy Javy – jest grupa instrukcji, które nie sa charakterystyczne dla zadnego
konkretnego procesora ani systemu komputerowego. Kody te sa wykonywane
przez specjalny interpreter (wirtualna maszyna Javy) , który jest zalezny od
systemu operacyjnego i procesora na którym dziala.
Programowanie Sieciowe
Systemy kompilacji programów
Kompilator
(Pentium)
Kompilator
(PowerPC)
Kompilator
(SPARC)
Plik binarny
(PowerPC)
Plik binarny
(Pentium)
Plik binarny
(SPARC)
Twój kod
Interpreter Javy
(Pentium)
Plik bajtowy
Javy
(niezalezny od
systemu)
Kompilator
Javy
Kod Javy
Interpreter Javy
(Power PC)
Interpreter Javy
(SPARC)
Tradycyjny system kompilacji programów
Programy napisane w Javie
Programowanie Sieciowe
Dzialanie Javy
Zródlo
programu
(*.java)
Kompilator
Javy
(javac)
Kod
bajtowy
(*.class)
Kod bajtowy
dostarczany
lokalnie lub
poprzez siec
Ladowanie
klas
Weryfikacja
kodu
Biblioteki
Javy
Java
Interpreter
Generator
kodu (JIT)
Just-in-time
Run-time System
System operacyjny
Sprzet
Java
Virtual
Machine
KOMPILACJA
URUCHOMIENIE
Komentarze – trzy rodzaje
–/* text */ – kompilator ignoruje tekst miedzy /* i */.
–/** dokumentacja */ – wskazuje komentarz dla potrzeb dokumentacji (doc comment),
wykorzystywany przez narzedzie javadoc
–// text – kompilator ignoruje wszystko do konca linii
Programowanie Sieciowe
Literaly
Literal
–
to dokladnie ta sama
wartosc, która wpisano w kodzie
programu.
Literaly liczbowe
Ponizej prezentujemy literaly
numeryczne: calkowite i
rzeczywiste:
169, 0251, 0xA9, 0XA9, 0xa9 -
literaly calkowite typu int i long
4.565556, 0.2, 50.0, 30.5E-11 - literaly
rzeczywiste typu double
4.565556f, 0.2F, 50.0f, 30.5E-11f -
literaly rzeczywiste typu float
4.565556d, 0.2D, 50.0d, 30.5E-11d -
literaly rzeczywiste typu double
Literaly logiczne i znakowe
true, false – literaly logiczne
‘a’,’#’,3’ – literaly znakowe
Literaly lancuchowe
Opis
Literal
New line (znak nowej linii)
\n
Horizontal tab (tabulacja
pionowa)
\t
Backspace
\b
Carriage return (powrót karetki)
\r
From feed (znak nowej strony)
\f
Single quote (apostrof)
\'
Double quote (cudzyslów)
\"
Backslash (lewy ukosnik)
\\
Unicode (kod znaku z zbioru
Unicode)
\
udddd
Programowanie Sieciowe
Podstawowe typy danych
Typ danych
Rozmiar (w
bitach)
boolean
8
przyjmuje wartosci logiczne true lub false.
byte
8
wartosc calkowita ze znakiem.
char
16
kod znaku w kodzie Unicode.
short
16
wartosc calkowita ze znakiem.
int
32
wartosc calkowita
long
64
wartosc calkowita
float
32
wartosc zmiennoprzecinkowa
double
64
wartosc zmiennoprzecinkowa
Opis
Programowanie Sieciowe
Operatory w Javie i ich priorytety
(1)
Opera
tor
Nazwa
Przyklad
.
Selektor obiektu
obiekt.nazwa_elementu
[]
Indeks tablicy
tablica[nuner_elementu]
()
Wywolanie funkcji
nazwa_funkcji(lista_elementów)
++
Przyrostkowy operator inkrementacji
zmienna++
++
Przedrostkowy operator inkrementacji
++zmienna
--
Przyrostkowy operator dekrementacji
zmienna--
--
Przedrostkowy operator inkrementacji
--zmienna
~
Operator uzupelnienia jedynkowego
~wyrazenie
!
Operator negacji logicznej
!wyrazenie
instan
ceof
Operator wystepowania
if(obiekt instanceof nazwa_klasy)
Programowanie Sieciowe
Operatory w Javie i ich priorytety
(2)
Operator odejmowania
new
Operator przydzialu pamieci
new typ_zmiennej
*
Operator mnozenia
wyrazenie * wyrazenie
/
Operator dzielenia
wyrazenie / wyrazenie
%
Operator modulo
wyrazenie % wyrazenie
+
Operator dodawania
wyrazenie + wyrazenie
-
wyrazenie - wyrazenie
<<
Operator prszesuniecia w lewo
wyrazeniie << wyrazenie
>>
Operator przesuniecia w prawo
wyrazenie >> wyrazenie
>>>
Operator przesuniecia w prawo z
wypelnieniem zerami
wyrazenie >>> wyrazenie
<
Operator mniejszosci
wyrazenie < wyrazenie
>
Operator wiekszosci
wyrazenie > wyrazenie
Programowanie Sieciowe
Operatory w Javie i ich priorytety
(3)
Operator wiekszosci lub równosci
(wyrazenie_logiczne) ? wyrazenie_true
: wyrazenie_false
<=
Operator mniejszosci lub równosci
wyrazenie <= wyrazenie
>=
wyrazenie >= wyrazenie
= =
Operator równosci
wyrazenie = = wyrazenie
!=
Operator nierównosci
wyrazenie != wyrazenie
&
Operator iloczynu bitowego
wyrazenie & wyrazenie
^
Operator bitowej róznicy
symetrycznej (XOR)
wyrazenie ^ wyrazenie
|
Operator sumy bitowej
wyrazenie | wyrazenie
&&
Operator iloczynu logicznego (AND)
wyrazenie && wyrazenie
||
Operator sumy logicznej (OR)
wyrazenie || wyrazenie
?:
Operator if - else
= op
Operator przypisania
zmienna = op wyrazenie;
gdzie 'op' jest jednym z operatorów: ( '+', '-', '*', '/', '%', '&', '|', '^', '<<', '>>', '>>>')
Programowanie Sieciowe
Tablice.
Instrukcja warunkowa if.
Tablica –
jest zbiorem elementów. Kazda
komórka tablicy moze zawierac obiekt
lub dana jednego z typów
podstawowych. Tablice sa normalnymi
obiektami i moga byc traktowane w
sposób obiektowy.
Aby stworzyc tablice nalezy:
– zadeklarowac zmienna, w której
zostanie umieszczona tablica;
String trudneSlowa[ ]; çc
Sting[ ] trudneSlowa;
int temp[ ]; çc int[ ] temp;
– stworzyc nowy obiekt i zapisac go w
zadeklarowanej zmiennej;
l uzycie operatora new
trudneSlowa = new String[10];
int[ ] tmp = new int[99];
l jawne okreslenie zawartosci
tablicy
Instrukcja warunkowa if –
wykonuje
rózne fragmenty kodu z zaleznosci od
wyniku testu logicznego.
if (boolean)
{
/* instukcje */
}
else
{
/* instrukcje */
}
String[ ] przyprawy = {”chili”,
”papryka”, ”pieprz”, ”bazylia”};
– zapisac elementy do komórek
tablicy;
przyprawy[2] = ”oregano”;
int tab_dwuwymiarowa = new
int[20][10];
int dlugosc = przyprawy.length;
Programowanie Sieciowe
Instrukcje warunkowe if
(cd) oraz switch i
operator warunkowy ?:
if(stanSilnika == true )
{
System.out.println("Silnik jest juz
wlaczony.");
}
else
{
System.out.println("Wlaczam sielnik!");
if (poziomPaliwa > 1) stanPaliwa = true;
else System.out.println("Zbyt malo paliwa!
Nie mozna uruchomic silnika");
}
if(stanSilnika == true )
System.out.println("Silnik jest juz
wlaczony.");
else
System.out.println("Wlaczam sielnik!");
Operator warunkowy ma postac:
warunek ? wynik_true : wynik_false;
int warunek = x < y ? x : y;
W instrukcji switch Test porównywany jest
kolejno ze wszystkimi wartosciami
podanymi z prawej strony slów
kluczowych case. Jezeli Test i Wartosc
sa równe to zostanie wykonana
instrukcja umieszczona po dwukropku.
switch ( Test)
{
case Wartosc1 :
/* ... */
break;
case Wartosc2 :
/* ... */
break;
default :
/* ... */
break;
}
Programowanie Sieciowe
Petle for, while, do. Instrukcje break oraz continue.
for (inicjalizacja;test;inkrementacja)
{
/* instrukcje */
}
for (int i = 1; i < 10 ; i++)
{
System.out.println(„Petla wykonuje
sie „ + i + „ raz”);
}
do {
/* instrukcje */
} while ( test );
Instrukcja:
break – powoduje natychmiastowe
przerwanie wykonania aktualnej
petli, jezeli break umieszczona jest
wewnatrz zagniezdzonych petli,
przerywana jest jedynie petla
wewnatrz której znajduje sie
instrukcja break;
continue – powoduje przejscie do
kolejnej iteracji. Dla petli while oraz
do oznacza kolejne wykonanie
bloku instrukcji, dla petli for –
zmodyfikowanie zmiennych
sterujacych, przeprowadzenie testu
oraz ponowne wykonanie instrukcji
umieszczonych wewnatrz petli.
while (test)
{
/* instrukcje */
}
while (indeks < tab.length &&
tab[index] != 0)
{
/* instrukcje */
}
Programowanie Sieciowe
Myslenie na sposób obiektowy. Klasy oraz obiekty.
Klasa – jest ogólnym szablonem grupy obiektów
posiadajacych te same wlasciwosci.
Instancja – jest konkretna reprezentacja okreslonej klasy.
Instancje oraz obiekty sa tym samym.
Biblioteka klas – jest zbiorem klas stworzonych w celu ich
ponownego uzycia w wielu róznych programach.
Atrybuty – zmienne.
Atrybuty sa elementami, które moga róznic poszczególne
obiekty tej samej klasy. Np. klasa Motocykl moze zawierac
nastepujace atrybuty:
–Kolor: czerwony, zielony,srebrny
–Typ: sportowy,rajdowy, terenowy
–Produkcja: Honda, BMW, Yamaha
Zmienna instancyjna – definiuje atrybuty obiektu.
Typy oraz nazwy zmiennych instancyjnych okreslone
sa w klasie, jednakze ich wartosci sa ustawiane i
modyfikowane w obiektach.
Zachowania – metody.
Zachowania klasy definiuja sposób, w jaki dzialac beda
poszczególne jej instancje. Np. klasa Motocykl moze
Drzewo
Drzewo
Drzewo
Drzewo
Klasa drzewo
(abstrakcyjna)
Programowanie Sieciowe
Klasy.
(2)
instancje. Np. klasa Motocykl moze
zawierac nastepujace zachowania:
– Wlaczanie silnika
– Wylaczanie silnika
– Zablokowanie silnika
– Przyspieszenie
– Zmiana biegu
Metody sa funkcjami zdefiniowanymi
wewnatrz klasy, które operuja na jej
instancjach.
Definicja klasy:
ModyfikatoryKlasy class NazwaKlasy
[extends klasa_bazowa]
[implements interfejs]
{
... definicja metod i pól danych ...
}
l Klasy – przyklady
– deklaracja klasy
class Punkt extends Object {
public double x;
public double y;
}
– deklaracja zmiennej przypisanej do
obiektu klasy Punkt i alokacja
wystapienia obiektu
Punkt mojPunkt;
mojPunkt = new Punkt();
– dostep do zmiennych obiektu Punkt:
mojPunkt.x = 5.2;
mojPunkt.y = 26.9;
l Konstruktory
– w definicji klasy mozna podac
konstruktory sluzace do inicjowania
obiektu tej klasy
– konstruktor ma nazwe klasy
– name overloading – dopuszcza sie
dowolna ilosc konstruktorów o
róznych parametrach (ilosc i typ)
Programowanie Sieciowe
Klasy.
(3)
class Punkt extends Object {
public double x;
public double y;
Punkt () {
x = 0.0; y = 0.0; }
Punkt (double x, double y) {
this.x = x; this.y = y; }
}
l Slowo kluczowe this
– do odwolywania sie do wlasnych pól
– stosowana dla jasnosci
l Slowo kluczowe super
– odwolanie do ukrytej w biezacej
klasie zmiennej lub metody klasy
nadrzednej
super.avar, super.amethod();
lMetody
–pod wzgledem skladni metody sa
implementowane jak funkcje
ModyfikatoryMetody TypRezultatu NazwaFunkcji (
Argument1, Argument2, ...)
{
... kod zródlowy metody ...
}
Programowanie Sieciowe
Hierarchia klas
Obiekt
Pojazd
PojazdPoruszanySilaMiesni
PojazdSilnikowy
PojazdSilnikowyDwuKolowy
PojazdSilnikowyCzteroKolowy
Motocykl
Skuter
Motorynka
Klasa
Klasa
Klasa
Klasa
Klasa
Obiekt
Obiekt
Definicja metody
Wiadomosc
przesylana do
obiektu i
przekazywana
w góre hiererchii klas
az do odnalezienia
definicji metody
Klasa
Klasa
Klasa
Obiekt
Obiekt
Poczatkowa
definicja metody
Wiadomosc
przesylana do
obiektu i
przekazywana
w góre hiererchii klas
az do odnalezienia
definicji metody
Klasa
Metoda jest
przeslonieta
przez te definicje