Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania Java Linki Boone oprogramowania Barry Java SDK1.4.2 Java dla programistów C i C++ Środowiska Java http://java.sun.com/j2se/1.4.2/download.html 2 Software Development Kit, Standard Edition, version 1.4.2 programistyczne np: (wersja Borland Jbuilder Help Symantec Jcreator ( http://www.allimant.org/javadoc/jdk14e.html) free Visual http://www.jcreator.com/download.htm) Café Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 1
1. 1) Charakterystyka Obiektowy język Java języka składnia Java 2) Pliki gdzie źródłowe: nazwa musi nazwa_klasy_publicznej.java, być nazwą publicznej, języka podobna zdefiniowanej do języka w C++. Pliki Kompilator przetwarza program nazwa_klasy_publicznej.java tym na pliku. B-kod zwany po moŝe B-kod kompilacji: być (bytecode, zinterpretowana nazwa_klasy_publicznej.class J-code) i wykonywana przez maszynę wirtualną kod binarny 3) (JVM Maszyna jest Java abstrakcyjnym wirtualna Virtual Machine), Java komputerem, (JVM czyli urządzenie Java który Virtual wykonuje logiczne Machine). programy nazwa.class: Java a. b. c. oddzielny Just-In-Time interpretator program wbudowany (przetworzenie w przeglądarkę nazwa.class WWW, 4) Biblioteka specyficzny Javy dla danej pakiety maszyny) z oprogramowaniem wspomagającym na program wykonalny 2. programów interfejsu Tworzenie uŝytkownika, działających programu ogólnego w sieci w przeznaczenia Javie np. Internet, umoŝliwiającym tworzenie uruchamiany Aplikacja (application) w systemie operacyjnym - program (java.exe) interpretujący aplikacje jest przeglądarkę Program zawiera Aplet public (applet) publiczną zawierający static void metodę program między main(string klasową innymi interpretujący o args[]) jeden nagłówku moduł aplety źródłowy, jest którego wbudowany klasa publiczna np. w applet Uwaga: Program zawiera i jako miedzy zawierający moŝliwe aplikacja. www innymi jest między podstawowe napisanie innymi programu metody: jeden moduł init(), w Javie, źródłowy, start(), który stop(), którego będzie paint(), klasa pracował destroy() publiczna jako Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 2
2.1. { public System.out.print("Dzien Tekst class static źródłowy Witaj void main(string w dobry, Javie args[]) 2.2. } Kompilacja nazywam javac Witaj.java się Jan Kowalski\n"); gdzie systemowi Witaj.java. 2.3. Interpretacja połoŝenie operacyjnemu, Zostanie (katalog) wygenerowany programu a katalog javac plik bieŝący (kompilator Witaj.class powinien Javy) z zawierać instrukcjami powinno plik być dla źródłowy znane java Witaj JVM Interpretator wyszuka plik java o nazwie (połoŝenie Witaj.class znane w katalogu systemowi bieŝącym operacyjnemu) Uwagi: sprawdzi, czy klasa Witaj posiada publiczną metodę statyczną main wszystkie wykona i instrukcje zawarte Dzien w bloku dobry, funkcji nazywam main, czyli się wyświetli Jan Kowalski na ekranie napis nie przejdzie do stałe, następnego zmienne wiersza i funkcje są elementami składowymi klas do ma wielkości globalnych, definiowanych poza klasą args kaŝda standardowa deklaruje się metod rozwijalnych (inline) o tym decyduje sam kompilator metody obiektów main (łańcuchów) z wiersza klasy rozkazowego String - w jako klasie parametr Witaj jest jest ona przekazywana pomijana tablica instrukcja kończy się średnikiem wywołanie przeciąŝona zawiera statyczny klasa System: main standardowego metoda System.out.print strumienia obiekt składowy generuje wyjściowego, oznacza typu jeden PrintStream w wiersz pisanie tym wypadku wyjściowy łańcucha o nazwie ekranu i powraca out typu String do metody do Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 3
3.1. Java definicja implementowanie jako klasy, język dziedziczenie, obiektowy { class }//ciało nazwa_klasy metod interfejsów Klasa: przed public final Klasa - abstrakcyjna słowem klasa klasy class dostępna nie te moŝe nie moŝe mają zawierać publicznie wystąpić mieć wystąpień następcy metody jeden ze abstrakcyjne, specyfikatorów: abstract; podawać nie implementuje, implementacje w miejscu staje ciała się tych klasą metody metod. abstrakcyjną abstrakcyjnej KaŜda klasa, która występuje odziedziczy poprzedzone średnik; metodę kaŝda abstrakcyjną, słowem jej podklasa kluczowym ale musi public przed brak specyfikatora słowem abstract, class public mogą klasa final wystąpić dostępna dwa tylko specyfikatory: dla klas zdefiniowanych w tym samym jej pakiecie dziedziczenie (czyli klasa dziedziczy - po zawsze nazwie publicznie klasy wystąpią i tylko słowa: od jednej extends od klasy występuje definicji KaŜda klasa słów słowo dziedziczy extends extends, Object od predefiniowanej to oznacza to równowaŝne klasy Object. niejawne nazwa_superklasy) JeŜeli wystąpienie definicji klasy w nie interfejsach. (czyli implementowanie- w danej JeŜeli klasie dana zostaną po klasa nazwie implementuje zdefiniowane klasy wystąpią więcej metody, słowa: niŝ jeden implements zadeklarowane interfejs, wtedy nazwy_interfejsów w implementowanych kolejnych tej interfejsów dziedziczenie oddziela wielobazowe się przecinkami. Implementowanie metod kilku oznacza w C++ Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 4
Ciało zamknięte klasy: moŝe zawierać w nawiasy zmienne klamrowe zmienne konstruktory (metody (statyczne, o nazwie składowe tj. klasy poprzedzone (to bez jest zwracanego pola słowem lub zmienne kluczowym typu) wystąpienia) metody klasowe zwykłe (nagłówek moŝna je wywołać, poprzedzony gdy słowem utworzono kluczowym obiekt static) static) private być float, nazwa przed poprzedzona nazwą char, kaŝdej boolean, typu zmiennej tylko moŝe nazwą dla void) wystąpić składowej, elementów typu lub podstawowego jeden klasowego zmiennej klasy ze specyfikatorów - private klasy, (byte, metody int short, d;), dostępu: lub int, funkcji long, klasy double, musi protected dotyczy dla słowo public klas final w zmiennych (dostęp tym (dostęp po samym specyfikatorze publiczny). klasy) pakiecie tylko w podklasie, Brak dostępu specyfikatora nawet przed jeśli oznacza, nazwą podklasa Ŝe typu dany naleŝy zmiennej element innego jest wystąpienia dostępny pakietu; tylko lub nie np. zmiennej public klasy static deklaruje final int jej stala1 nie modyfikowalność np. słowo final final int po stala2= specyfikatorze 10; dostępu = 10; koncowa_wersja ona być public redefiniowana final moŝe void wystąpić w koncowa_wersja klasie tylko dziedziczącej raz w rodzinie przed (){/* klas nazwą...*/ metody } definicja oznacza, publicznej Ŝe nie metody moŝe Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 5
3.2. Dostęp obiektów Tworzenie do tej zmiennych klasy obiektu składowych klasy (statycznych) jest moŝliwy bez tworzenia Wartościami zbiorów np. Klasy System.out.println("Dzien i interfejsy zmiennych są typami tych referencyjnymi. dobry, typów nazywam są referencje się Jan Kowalski\n"); (odnośniki) do wartości lub p, np. instrukcja wartości Punkt reprezentowanych p; jedynie powiadamia przez te kompilator, zmienne. za Do której pomocą zmiennej typem new p moŝna jest Punkt przypisać (brak przydzielonego dowolny obiekt miejsca typu Punkt w Ŝe pamięci będzie przydzielając uŝywana taki mu obiekt) zmienna pamięć referencję który Argumentem np. Punkt p1 = operatora new Punkt(); p2 inicjuje = do new tego obiekt Punkt(1, obiektu, utworzony new 7); po jest czym generowany przez przypisuje operator przez go do kompilator new. zmiennej Operator p. konstruktor new Punkt(), zwraca Punkt(int Argumentem Dostęp new zwraca do a, elementów referencję int operatora b), który klasy do new tego inicjuje uzyskuje obiektu, jest się definiowany za po utworzony pomocą czym przypisuje operatora przez programistę operator go kropkowego do zmiennej new. konstruktor Operator p. Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 6
1) tworzenia public Drukowanie na ekranie Przykłady { static class int obiektu ile; Napis //składowa klasowa //klasa w (istnieje pętli publiczna wartości niezaleŝnie niefinalna, od nie typu istnienia abstrakcyjna całkowitego obiektu tej klasy) bez public { for ile=10; static void main(string args[]) }{ System.out.println(j); (int j=0; j<ile; j++) //i //definicja //ile //konwersja przejście musi być do zmiennej składową następnej sterującej typu typu linii całkowitego static! w bloku instrukcji na łańcuch for tworzeniem } 2) } public { int Drukowanie ile; class Napis_ obiektu na ekranie w pętli //zmienna wartości składowa typu klasy całkowitego z public { p.ile=10; for Napis_ {System.out.println("petla (int static p j=0; = void new j<p.ile; main(string Napis_(); j++) "+j);} args[]) //przydziału //znaków //dodawanie //wywołanie //odwołanie jest referencją (cyfry) pamięci domyślnego łańcucha obiektu na uzyskanego obiektu pętla p konstruktora do klasy łańcucha za Napis_ podczas }} //konwersji z wartości typu całkowitego j pomocą Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 7
3) Wywołanie programu z java listą argi parametrów { public class argi // klasa Jan publiczna, Kowalski public static { int static ile; void main(string args[]) //składowa klasowa nie abstrakcyjna i niefinalna { ile=args.length; for System.out.println(args[j]);} (int j=0; j<ile; j++) //pobranie //args[1] //args[0] ile musi - być liczby Kowalski Jan składową (łańcuch parametrów typu bez białych (w static przykładzie! znaków) 2) } 4) } Wywołanie programu java z listą argi_ parametrów public { class argi_ Jan Kowalski public int argi_ ile; p.ile=args.length; for (int p static = j=0; new void j<p.ile; argi_(); main(string j++) args[]) }}{ System.out.println(args[j]);} Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 8
Dodatek Pliki źródłowych, Program źródłowe języka do w wykładu których Java i pakiety moŝe umieszcza się składać się definicje z wielu klas niezaleŝnie oraz interfejsów kompilowanych modułów tego Nazwa_klasy Moduły źródłowe jest nazwą są przechowywane publicznej w plikach pliki o do nazwie kompilacji Nazwa_klasy.java, gdzie w pliku Nazwa_klasy.java zdefiniowano jedną klasę, to w wyniku kompilacji zawierać dokładnie JeŜeli pliku program publiczną jeden powstaje jest moduł i statyczną aplikacją, źródłowy wynikowy funkcję to w (moduł zestawie Nazwa_klasy.class. main główny (kaŝdy modułów aplikacji) inny źródłowych moduł z klasą źródłowy musi publiczną, się moŝe znaleźć która rozszerza wielomodułowym. pakietu Moduł źródłowy, o klasę postaci przestrzeń z funkcją w package którym nazw main, programu definicje nazwa_pakietu; jeŝeli klas nie i pozwala jest oraz staje to interfejsów klasa się lepsze pakietem. publiczna). zarządzanie poprzedzono Deklaracja programem deklaracją domyślnego JeŜeli źródłowy nie zawiera deklaracji pakietu, to naleŝy on do tzw. pakietu i umieszczona Pakiety pliki wynikowe. są ściśle (pakietu w pliku powiązane Witaj.java bez nazwy). z katalogami, naleŝy Np. zadeklarowana do pakietu w których domyślnego. umieszcza wcześniej się klasa moduły Witaj, źródłowe Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 9
Np. postaci: w katalogu nowak\myprog\pakiet1 Przykład tworzenia umieszczono i korzystania główny plik źródłowy z pakietu import package nowak.myprog.pakiet1.punkt; nowak.myprog.pakiet1; //moŝna uŝywać //klasa //tylko nazwy taka punkt1 kolejność: skrócone naleŝy do składowych package...; pakietu nowak.myprog.pakiet1 aplikacji klas import...; importowanych punkt1.java o { public { Punkt class static //zamiast = punkt1 new void nowak\myprog\pakiet1\punkt Punkt(1, main //tutaj (String[] 7); klasy args) Punkt } //... p1.zmien(2,5); p1= new nowak\myprog\pakiet1\punkt (1,7); Definicję class package { Punkt klasy nowak.myprog.pakiet1; Punkt umieszczono w pliku //klasa Punkt.java, naleŝy która do ma pakietu postać: }// definicja ciała klasy jak w przykładzie 5 nowak.myprog.pakiet1 katalogu Plik Przebieg punkt1.java kompilacji W importu wyniku nadrzędnego klasy kompilacji Punkt. zawiera zostaną javac w Plik stosunku definicję ten nowak\myprog\pakiet1\punkt1.java utworzone moŝe klasy do katalogu zostać punkt1, nowak). skompilowany poprzedzoną deklaracją (wywołaniem pakietu kompilatora oraz deklaracją punkt1.class dwa pliki, wynikowe: Punkt.class javac z spowoduje Wykonanie publicznej klasy wyprowadzenie programu punkt1 java nowak\myprog\pakiet1\punkt1 na ekran napisów tworzonych prze funkcje main Autor: Zofia Kruczkiewicz, Programowanie obiektowe - java, materiał pomocniczy do wykładu 1 10