w1_java.pdf

(293 KB) Pobierz
w1_java
Literatura
„Pierwsza fili Ŝ anka Javy”
JAVA - Wprowadzenie
• Laura Lemay, Rogers Cadenhead: "Java 2 dla
kaŜdego", Helion, Gliwice 2001
• Marcin Lis, "Java. Ćwiczenia praktyczne.",
Helion, Gliwice 2006
• Bruce Eckel: "Thinking in Java", edycja polska,
Helion, Gliwice 2006
• http://java.sun.com/docs/books/tutorial
Beata Pańczyk - Java (Wykład 1)
2
Czym jest Java?
Wieloplatformowo ść Javy
• Uniwersalny (w pełni obiektowy) język
programowania
• Uniwersalne środowisko: programowania GUI,
dostępu do baz danych, programowania multimediów,
programowania sieciowego, programowania w systemach
rozproszonych, budowania programów z gotowych
komponentów - JavaBeans, środowisko przetwarzania
dokumentów XML, Mikro-Java do oprogramowania
obsługi sprzętu elektronicznego
• Wieloplatformowość - standardowe biblioteki i
narzędziowe interfejsy programistyczne (API)
B-kod .class
Źródło: http://java.sun.com/docs/books/tutorial
3
4
Wersje Javy
• 1.0.x - ubogi zestaw komponentów GUI, zły model
obsługi zdarzeń
• 1.1.x - przełom - nowy model obsługi zdarzeń, Java
Beans, Swing
• 1.2.x - integracja istniejących rozwiązań, Graphics
2D, platforma Java 2 (interfejs programistyczny
zmienia nazwę z JDK - Java Developer Kit na Java 2
SDK - Software Developer Kit)
• platforma Java 2 - trzy edycje: standardowa (J2SE),
biznesowa (Enterprise Edition J2EE) i mikro (Micro
Edition J2ME) dostępne pod adresem
http://java.sun.com
Najnowsza wersja Javy
• rok 2006 - oficjalna nazwa „Java 6” (w dokumentacji
uŜywany numer 1.6.)
• Składnikami platformy Java (juŜ nie Java 2) są:
Java SE (ang. Java Standard Edition) - środowisko
podstawowe
Java EE (ang. Java Enterprise Edition) - środowisko
tworzenia aplikacji biznesowych
Java ME (ang. Java Mobility Edition) - środowisko
tworzenia aplikacji do urządzeń przenośnych
Te same składniki platformy Java 2 nosiły nazwy: J2SE,
J2EE i J2ME .
5
6
1
B-kod .class
27932556.030.png 27932556.031.png 27932556.032.png 27932556.033.png 27932556.001.png 27932556.002.png 27932556.003.png
 
Java SE
Obiektowo ść w programowaniu
JDK (ang. Java Development Kit) - podstawowe
środowisko do tworzenia i uruchamiania programów
Javy
JRE (ang. Java Runtime Environment) - środowisko
tylko do uruchamiania programów Javy
• W Javie 2 często uŜywano zamiennie nazw JDK i
SDK (ang. Standard Development Kit). Od wersji 6
rozróŜnia się JDK od SDK:
JDK – Java SE Development Kit
SDK – Java EE Development Kit.
• UŜywa się takŜe określeń: JDK 6, JRE 6.
Klasa - typ danych, jej definicja opisuje
właściwości typu danych (atrybuty) i działania
(metody, usługi) które na nich moŜna wykonać
Obiekt – egzemplarz (instancja) określonej klasy
Metoda (usługa) - określone działanie obiektu
7
8
Obiektowo ść Javy - podstawy
Struktura programu w Javie (1)
• Schemat programu tworzą klasy
Wszystkie dane lub metody musz ą naleŜeć do jakiejś
klasy lub obiektu.
• Atrybuty obiektu nie są zwykle bezpośrednio dostępne
- dane są ukryte i traktowane jako nierozdzielna całość
z usługami (tzw. hermetyzacja lub enkapsulacja
danych)
• Koncepcja dziedziczenia klas - klasa dziedzicząca
(podklasa) inną przejmuje jej właściwości i ewentualnie
dodaje własne, wyspecjalizowane, kaŜda nowa klasa
dziedziczy domyślnie po systemowej klasie Object
Pakiety (package) Javy są zbiorem klas i obiektów.
package ... //deklaracja pakietu (nie konieczna)
import ... //deklaracje importu (zwykle potrzebne)
import ...
/** Komentarz dokumentacyjny
..........
*/
public class A{
... }
class B {
... }
9
10
Struktura programu w Javie (2)
Pakiety i nazwy kwalifikowane
pakiet - swoista biblioteka klas, kaŜda klasa naleŜy do
jakiegoś pakietu
• klasy kompilowane z deklaracją pakietu package
naleŜą do pakietu o nazwie podanej w deklaracji
• pakiety mają hierarchiczną strukturę np. pakiet
java.awt zawiera podpakiet java.awt.event
• nazwa kwalifikowana klasy znajdującej się w
nazwanym pakiecie ma formę:
nazwa_pakietu.nazwa_klasy
• klasy zdefiniowane w nie nazwanym pakiecie (np. w
pliku źródłowym) mają jako kwalifikowane swoje
proste nazwy
• program moŜe być zapisany w jednym lub wielu plikach
źródłowych (.java), w szczególności wszystkie klasy
składające się na program moŜna umieścić w jednym pliku
lub kaŜdą klasę moŜna umieścić w odrębnym pliku
• w jednym pliku .java moŜe się znajdować tylko jedna
klasa publiczna (public class)
• jeśli w pliku .java znajduje się klasa publiczna to program
musi mie ć taką samą nazwę jak ta klasa
• wszystkie wybrane pliki źródłowe .java podlegają
kompilacji (kompilatorem javac.exe). Z kaŜdej klasy w
pliku(ach) źródłowych powstaje plik B-kodu o
rozszerzeniu .class
11
12
2
27932556.004.png 27932556.005.png 27932556.006.png 27932556.007.png 27932556.008.png 27932556.009.png
Deklaracja importu
Programy w Javie
• import pojedynczej klasy:
import java.awt.Button; //importuje nazwę klasy
class A{
java.awt.Frame f=new java.awt.Frame(" Tytuł ");
Button b=new Button(”Ok”); //uŜycie prostej nazwy
...}
• import nazw wszystkich klas danego pakietu:
import java.awt.*;
• pakiet java.lang (zawiera klasy String i System )
nie wymaga importu - importowany domyślnie
Aplikacja - samodzielny program
Aplet - program wykonywany za
pośrednictwem przeglądarki (w
komputerze-kliencie)
Serwlet - program wykonywany za
pośrednictwem przeglądarki (w
komputerze-serwerze)
13
14
Aplikacja
• jedna z klas musi zawierać metodę
public static void main(String[ ] args)
• jeśli jest to klasa publiczna, nazwa tej klasy musi być taka
sama jak nazwa pliku, w której jest zdefiniowana
• po kompilacji pliku źródłowego .java do B-kodu
(polecenie javac ) powstają pliki .class (dla kaŜdej klasy
osobny plik)
• poleceniem java klasa .class zostaje załadowana przez
JVM (Java Virtual Machine) i sterowanie zostaje
przekazane do metody main( ), gdzie zaczyna się „Ŝycie”:
tworzenie obiektów, odwołania do innych klas aplikacji
Aplikacja 1 - kod ź ródłowy
• plik HelloWordApp.java
/**
* Klasa HelloWorldApp implementuje applikację, która
* wyświetla napis "Hello World!" na standardowym wy
*/
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Wyświetla napis
}
}
15
16
Aplikacja 1 - kompilacja
Aplikacja 1 - uruchamianie
17
18
3
27932556.010.png 27932556.011.png 27932556.012.png 27932556.013.png 27932556.014.png
Aplet
Aplet 1 - kod ź ródłowy .java
• jedna z klas dziedziczy klasę Applet, np.:
class MyAplet extends Applet{
...}
• po kompilacji powstaje (między innymi) plik
MyAplet.class
• musi istnieć plik HTML, w którym występuje
znacznik:
<applet code=MyAplet.class ...>
(ewentualnie jeszcze parametry i opcje)
• Plik HelloWorld.java
import java.applet.Applet;
import java.awt.Graphics;
/**
* Klasa HelloWorld implementuje applet, który
* wyświetla "Hello World!"
*/
public class HelloWorld extends Applet {
public void paint(Graphics g) {
g.drawString("Hello world!", 50, 25 );//wyświetla napis
}
}
19
20
Aplet 1 - kod ź ródłowy .html
Aplet 1 - kompilacja i uruchamianie
• Plik Hello.html
<HTML>
<HEAD><TITLE> Pierwszy aplet </TITLE></HEAD>
<BODY>
Wynik działania apletu:
<APPLET CODE="HelloWorld.class"
WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>
• Kompilacja HelloWorld.java do HelloWorld.class
• Uruchamianie apletu w oknie przeglądarki (cały
dokument HTML) lub za pomocą polecenia JDK
appletviewer (tylko aplet)
21
22
Aplet 1 - widok w Applet
Viewer
Aplet 1 - widok w przegl ą darce
23
24
4
27932556.015.png 27932556.016.png 27932556.017.png 27932556.018.png 27932556.019.png 27932556.020.png 27932556.021.png 27932556.022.png 27932556.023.png
Do czego słu Ŝą pakiety?
Przykład 1
Tworzenie pakietu graf
• eliminacja konfliktów nazw
• pakiet (ang. packages) w Javie - pewien podzbiór
biblioteki, zawierają przewaŜnie funkcje związane
tematycznie
• pakiety mogą zawierać definicje interfejsów
• moŜna tworzyć własne pakiety zawierające
definicje klas i interfejsów przy uŜyciu wyraŜenia
package .
• pakiet graf zawiera np. klasy reprezentujące obiekty
graficzne (punkt, odcinek, kwadrat, koło, itp.)
• udostępnienie powyŜszych klas innym programistom -
poprzez zgrupowanie ich w pakiecie graf , z kolei
pakiet ten moŜe być częścią innego pakietu np. moje
zawierającym inne zdefiniowane pakiety.
• poszczególne klasy publiczne definiuje się w pliku o
nazwie:
NazwaKlasyPublicznej . java
oprócz definicji jednej klasy publicznej w pliku tym
mogą znajdować się definicje innych klas
niepublicznych
25
26
Przykład 1
Definicja klas pakietu graf
Przykład 1
Poło Ŝ enie plików .class
• po skompilowaniu, dla ka Ŝ dej klasy tworzone są pliki
z kodem bajtowym o nazwach NazwaKlasy . class
• to, Ŝe klasa naleŜy do pakietu, determinuje takŜe
po ł oŜenie pliku z kodem bajtowym klasy w strukturze
katalogów
• pliki zawierające klasy z pakietu moje.graf muszą
znajdować się w folderze moje\graf a ten folder
powinien znajdowa ć się w miejscu zdefiniowanym
przez zmienną systemową CLASSPATH, która
określa po ł oŜenie plików z kodem bajtowym klas.
Jeśli zmienna ta przyjmuje wartość:
CLASSPATH = C:\Windows\java\classes;
to pliki znajdą się w katalogu:
C:\Windows\java\classes\moje\graf
• klasa Kwadrat zdefiniowana w pliku Kwadrat.java :
package moje.graf;
public class Kwadrat {
// definicja pl danych i metod klasy Kwadrat
} // ... ew. definicje innych klas niepublicznych
• klasa Punkt zdefiniowana w pliku Punkt.java :
package moje.graf;
public class Punkt {
// definicja pl danych i metod klasy Punkt
} // ... ew. definicje innych klas niepublicznych
27
28
Korzystanie z pakietów
Korzystanie z pakietów
• klasy naleŜące do róŜnych pakietów mogą mieć
takie same nazwy - kaŜdy pakiet tworzy swoją
"przestrze ń nazw"
• dostęp do klas z danego pakietu moŜliwy jest za
pomocą deklaracji import , np. klasy zdefiniowane
w pakiecie moje.graf moŜna wykorzystać w
programie np.:
• deklaracji import moŜna nie stosowa ć , jeśli w
programie następuje odwołanie się bezpośrednio
do klasy poprzez pełną nazwę kwalifikowaną:
class Cos2 {
moje.graf.Punkt p = moje.graf.Punkt();
}
• dostęp do wszystkich klas np. z pakietu java.io,
realizuje deklaracja:
import java.io.*;
import moje.graf;
class Cos {
Punkt p = Punkt();
}
29
30
5
27932556.024.png 27932556.025.png 27932556.026.png 27932556.027.png 27932556.028.png 27932556.029.png
Zgłoś jeśli naruszono regulamin