background image

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

background image

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.

background image

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.

background image

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

background image

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

background image

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 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

background image

Programowanie Sieciowe

Podstawowe typy danych

Typ danych

Rozmiar (w 
bitach)

boolean

przyjmuje wartosci logiczne true lub false.

byte

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

background image

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)

background image

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

background image

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: ( '+', '-', '*', '/', '%', '&', '|', '^', '<<', '>>', '>>>')

background image

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;

background image

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

}

background image

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 */

}

background image

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)

background image

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 ... 

}

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;

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)

background image

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; }

}

Slowo kluczowe this

– do odwolywania sie do wlasnych pól

– stosowana dla jasnosci

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 ... 

}

background image

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