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
Troche historii jezyka Java 1990 - Bill Joy w raporcie Further sugerujesunowi stworzenie srodowiska obiektowego na bazie C++, 1991 - W ramach projektu Green powstaje jezyk OAK - Object Application Kernel (James Gosling), przeznaczony dla aplikacji w elektronice powszechnego uzytku, 1995 - zmiana nazwy na JAVA ze wzgledu na zastrzezenie nazwy OAK, 1996 - Pojawia sie Netscape zgodny z Java 1.0, Sun propaguje darmowe srodowisko JDK 1.0, 1999 - Java 2 Nowe oblicze Javy.
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.
Systemy kompilacji programów Programowanie Sieciowe Tradycyjny system kompilacji programów Programy napisane w Javie Plik binarny (Pentium) Twój kod Kompilator (Pentium) Plik binarny (PowerPC) Kod Javy Kompilator Javy Interpreter Javy (Pentium) Kompilator (PowerPC) Plik binarny (SPARC) Plik bajtowy Javy (niezalezny od systemu) Interpreter Javy (Power PC) Kompilator (SPARC) Interpreter Javy (SPARC)
Dzialanie Javy Programowanie Sieciowe KOMPILACJA Zródlo programu (*.java) Kompilator Javy (javac) Kod bajtowy (*.class) Kod bajtowy dostarczany lokalnie lub poprzez siec Java Virtual Machine URUCHOMIENIE Java Interpreter Ladowanie klas Weryfikacja kodu Run-time System Generator kodu (JIT) Just-in-time Biblioteki Javy 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
Literaly Programowanie Sieciowe 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) 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) \t \' \udddd
Podstawowe typy danych Programowanie Sieciowe Typ danych Rozmiar (w bitach) Opis 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
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)
Operatory w Javie i ich priorytety (2) new Operator przydzialu pamieci new typ_zmiennej * Operator mnozenia wyrazenie * wyrazenie / Operator dzielenia wyrazenie / wyrazenie % Operator modulo wyrazenie % wyrazenie + 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
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: ( '+', '-', '*', '/', '%', '&', ' ', '^', '<<', '>>', '>>>')
Tablice. Programowanie Sieciowe 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[ ]; Sting[ ] trudneslowa; int temp[ ]; int[ ] temp; stworzyc nowy obiekt i zapisac go w zadeklarowanej zmiennej; uzycie operatora new trudneslowa = new String[10]; int[ ] tmp = new int[99]; 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 */
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 : case Wartosc2 : default : /*... */ break; /*... */ break; /*... */ break;
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.
Myslenie na sposób obiektowy. Klasy oraz obiekty. Drzewo drzewo (abstrakcyjna) Drzewo Drzewo Drzewo 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
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)
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(); Metody pod wzgledem skladni metody sa implementowane jak funkcje ModyfikatoryMetody TypRezultatu NazwaFunkcji ( Argument1, Argument2,...)... kod zródlowy metody...
Hierarchia klas Programowanie Sieciowe Obiekt Pojazd PojazdPoruszanySilaMiesni PojazdSilnikowy PojazdSilnikowyDwuKolowy PojazdSilnikowyCzteroKolowy Motocykl Skuter Motorynka Definicja metody Poczatkowa definicja metody Metoda jest przeslonieta przez te definicje Wiadomosc przesylana do obiektu i przekazywana w góre hiererchii klas az do odnalezienia definicji metody Wiadomosc przesylana do obiektu i przekazywana w góre hiererchii klas az do odnalezienia definicji metody Obiekt Obiekt Obiekt Obiekt