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