Java jest wszechstronnym językiem programowania, zor
Transkrypt
Java jest wszechstronnym językiem programowania, zor
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod programu podlega wprawdzie kompilacji, ale jej wynikiem jest tzw. kod bajtowy Javy, który następnie można zinterpretowa na dowolnym systemie komputerowym z zainstalowanym odpowiednim systemem czasu przegiegu Javy (maszyną wirtualną). Maszyna wirtualna stanowi jakby nieistniejący w rzeczywistości system komputerowy. Interpreter Javy wczytuje kod bajtowy oraz analizuje kolejne instrukcje maszyny wirtualnej i wykonuje je w sposób określony dla danego komputera. Aplet jest małym programem, napisanym w Javie, który jest ładowany dynamicznie, za pomocą sieci, tak samo, jak inne obiekty ładowane z poziomu strony HTML (np. obrazy, obiekty Flash’a itp.). Jest to zatem aplikacja, wykonywana po stronie klienta, mająca pewien ograniczony dostęp do systemu plików zarówno serwera, jak i klienta. Klasa jest modelem abstrakcyjnej grupy obiektów. Obiekt stanowi pojedynczy egzemplarz klasy, zachowujący jej właściwości i metody. Zalety języka Java: — prostota i wszechstronność — bezpieczeństwo — zorientowanie obiektowe — niezawodność — interakcja — niezależność od sprzętu — interpretacja przy dużej wydajności Programowanie obiektowe Wprowadzenie programowania zorientowanego obiektowo stanowiło ogromną zmianę w programowaniu. Pozwala bowiem ono programistom pisać programy, które są zorganizowane tak, jak rozważany problem. Świat zewnętrzny najczęściej postrzegany jest jako zbiór obiektów, stanowiących przedstawicieli różnych klas obiektów. Obiekty te posiadają pewne właściwości (atrybuty). Istnieją również pewne czynności wykonywane przez obiekty lub na obiektach. Czynności te nazywa się metodami (methods). Aby nauczyć się programować obiektowo, trzeba nauczyć się „myślenia obiektowego”. Należy nauczyć się postrzegać obiekty w otaczającym nas świecie, wyodrębniać je w rozwiązywanych problemach, tworzyć hierarchie klas obiektów, itp. Programowanie obiektowe pociąga za sobą: — uniknięcie problemu stosowania zmiennych globalnych — rozwinięcie programowania zstępującego, stosowanego już w programowaniu strukturalnym — możliwiści, jakich nie miał żaden inny sposób programowania: — hermetyzacja (zwana też enkapsulacją) - łączenie danych i operacji wykonywanych na tych danych, z możliwością ukrycia pewnej części klasy (tzw. część prywatna), oraz chronienia jej w przypadku dziedziczenia (tzw. część chroniona). — dziedziczenie wprowadzenie hierarchicznego uporządkowania obiektów. Część atrybutów jest wspólna dla całej hierarchi, a część jest charakterystyczna tylko dla pewnego podzbioru całej hierarchi klas. W Javie nie ma możliwości dziedziczenia wielobazowego. — polimorfizm możliwość tworzenia wielu metod o tej samej nazwie, umieszczonych w różnych miejscach hierarchii klas, różniących się działaniem, w zależności od klasy obiektu, do którego należą. Zalety w stosunku do C/C++ — Brak zmiennych globalnych. W Javie tylko nazwy klas są globalne. — Brak instrukcji GO TO. — Brak wskaźników. W Javie uchwyty do obiektów są wprawdzie zaimplementowane jako wskaźniki, ale nie ma możliwości wykonania żadnych operacji na nich, nie można zamienić zmiennej całkowitej na wskaźnik, odczytać adresu jakiejś komórki pamięci, itp. — Brak operacji przydzielania i zwalniania pamięci. — Obiekty tworzy się za pomocą operatora new, który zwraca nie adres, lecz uchwyt do obiektu. Gdy przestaną istnieć zmienne odwołujące się do obiektu, pamięć zostaje zwolniona automatycznie (tzw. mechanizm garbage collection). — Jednoznaczność typów (łącznie z obiektami) — Brak możliwości definiowania metod o zmiennej liczbie atrybutów, — Bezpieczne rzutowanie typów — Brak plików nagłówkowych — Brak struktur i unii — zostały całkowicie zastąpione przez klasy Pierwszy program w Javie Plik źródłowy HelloWorld.java: class HelloWorld // Definicja klasy { public static void main (String args[]) /* Każdy program musi zawierać metodę main */ /* Java rozróżnia wielkość liter!!! */ { System.out.println("Hello World!"); } } Kompilacja: javac HelloWorld.java Uruchomnienie pliku wynikowego HelloWorld.class: java HelloWorld Hello World! Pierwszy Applet w Javie Plik źródłowy HelloWorld.java: import java.awt.*; import java.applet.*; class HelloWorld extends Applet { public void paint (Graphics g) { g.drawString("Hello World!", 20, 20); } } Plik HTML HelloWorld.html : <HTML> <HEAD><TITLE>Strona z apletem</TITLE></HEAD> <BODY> <H1>Aplet <EM>HelloWorld</EM>:</H1> <applet code=HelloWorld.class name=myFirstApplet width=320 height=200> </applet> </BODY> </HTML> Drugi Applet w Javie Plik źródłowy ResizeMe.java: import java.awt.*; import java.applet.*; public class { final int int max = int min = Dimension ResizeMe extends Applet inc = 25; 500; 200; d; public void paint (Graphics g) { d = size(); g.setColor(Color.black); g.drawLine(0, 0, d.width, d.height); g.drawLine(0, d.height, d.width, 0); g.drawString(d.width+" x " + d.height, 10, 20); } public boolean mouseUp(java.awt.Event evt, int x, int y) { int w = (d.width + inc) > max ? min : (d.width + inc); int h = (d.height + inc) > max ? min : (d.height + inc); resize(w,h); return true; } } Powyższy program należy uruchomić w przeglądarce apletów, gdyż w internetowych przeglądarkach nie można zmieniać rozmiaru apletów.