Java - Programowanie Sieciowe - Dzienne - w2 - Podstawy

Transkrypt

Java - Programowanie Sieciowe - Dzienne - w2 - Podstawy
Programowanie sieciowe
Podstawy Javy
Wyklad 2
opracowal:
mgr inz. Tomasz Gratkowski
e-mail: [email protected]
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
Tradycyjny system kompilacji programów
Programy napisane w Javie
Plik binarny
(Pentium)
Kod Javy
Twój kod
Kompilator
(Pentium)
Kompilator
(PowerPC)
Kompilator
(SPARC)
Plik binarny
(PowerPC)
Plik binarny
(SPARC)
Interpreter Javy
(Pentium)
Kompilator
Javy
Plik bajtowy
Javy
(niezalezny od
systemu)
Interpreter Javy
(Power PC)
Interpreter Javy
(SPARC)
Programowanie Sieciowe
Dzialanie Javy
KOMPILACJA
Zródlo
programu
(*.java)
URUCHOMIENIE
Kod bajtowy
dostarczany
lokalnie lub
poprzez siec
Ladowanie
klas
Biblioteki
Javy
Weryfikacja
kodu
Kompilator
Javy
(javac)
Kod
bajtowy
(*.class)
Java
Virtual
Machine
Generator
kodu (JIT)
Just-in-time
Java
Interpreter
Run-time System
System operacyjny
Sprzet
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
--
Przedrostkowy operator inkrementacji --zmienna
~
Operator uzupelnienia jedynkowego
~wyrazenie
!
Operator negacji logicznej
!wyrazenie
instan
ceof
Operator wystepowania
if(obiekt instanceof nazwa_klasy)
zmienna--
Programowanie Sieciowe
Operatory w Javie i ich priorytety (2)
new
Operator przydzialu pamieci
new typ_zmiennej
*
Operator mnozenia
wyrazenie * wyrazenie
/
Operator dzielenia
wyrazenie / wyrazenie
%
Operator modulo
+
Operator dodawania
wyrazenie + wyrazenie
-
Operator odejmowania
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
wyrazenie % wyrazenie
Programowanie Sieciowe
Operatory w Javie i ich priorytety (3)
<=
Operator mniejszosci lub równosci
wyrazenie <= wyrazenie
>=
Operator wiekszosci lub równosci
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
(wyrazenie_logiczne) ? wyrazenie_true
: wyrazenie_false
= 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
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;
Instrukcja warunkowa if – wykonuje
rózne fragmenty kodu z zaleznosci od
wyniku testu logicznego.
if (boolean)
{
/* instukcje */
}
else
{
/* instrukcje */
}
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”);
}
while (test)
{
/* instrukcje */
}
while (indeks < tab.length &&
tab[index] != 0)
{
/* instrukcje */
}
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.
Programowanie Sieciowe
Myslenie na sposób obiektowy. Klasy oraz obiekty.
Drzewo
Drzewo
Klasa drzewo
(abstrakcyjna)
Drzewo
Drzewo
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
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 {
lMetody
public double x;
–pod wzgledem skladni metody sa
public double y;
implementowane jak funkcje
Punkt () {
ModyfikatoryMetody TypRezultatu NazwaFunkcji (
x = 0.0; y = 0.0; }
Argument1, Argument2, ...)
Punkt (double x, double y) {
this.x = x; this.y = y; }
{
}
... kod zródlowy metody ...
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();
Programowanie Sieciowe
Hierarchia klas
Obiekt
Pojazd
PojazdPoruszanySilaMiesni
PojazdSilnikowy
PojazdSilnikowyDwuKolowy
Motocykl
Skuter
Klasa
Klasa
Klasa
Motorynka
Poczatkowa
definicja metody
Klasa
Definicja metody
Klasa
PojazdSilnikowyCzteroKolowy
Klasa
Obiekt
Wiadomosc
przesylana do
obiektu i
przekazywana
w góre hiererchii klas
az do odnalezienia
definicji metody
Obiekt
Metoda jest
przeslonieta
przez te definicje
Klasa
Klasa
Klasa
Obiekt
Wiadomosc
przesylana do
obiektu i
przekazywana
w góre hiererchii klas
az do odnalezienia
definicji metody
Obiekt

Podobne dokumenty