java – wprowadzenie
DESCRIPTION
Java – wprowadzenie. Jędrzej Jajor Marcin Zienkowicz. Historia Javy. Plan: Historia Cechy Obiektowość -Zgodność -Klasy i obiekty -Dziedziczenie -Hermetyzacja -Polimorfizm Interfejsy Środowisko Pakiety HelloWorld! -Aplikacja -Aplet Narzędzia Podsumowanie. - PowerPoint PPT PresentationTRANSCRIPT
Java – wprowadzenie
Jędrzej JajorMarcin Zienkowicz
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
2
Historia Javy 1990 – Bill Joy „Further” J. Gosling, P. Naughton, M. Sheridan - Sun
Microsystems 1991 – projekt Green -> OAK -> Java Podobieństwo do języka C++ Cele: przenośność, łatwość tworzenia
aplikacji sieciowych, usunięcie wad C++ Początkowo: embedded systems Nazwa w slangu amerykańskim: kawa
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
3
Cechy Javy Obiektowość Interfejsy Przenośne oprogramowanie Byte-code Garbage collector Aplikacja vs. applet
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
4
Java2 SDKPlan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
5
Świat a model
Żaba
płećgatunek
kumkaj()rechotaj()skacz()
class Zaba {char plec;String gatunek;void kumkaj();void rechotaj();void skacz();
}
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
6
Klasa a obiekt
Kermitżabus pospolitusmężczyzna
Monikażabus leniuchuskobieta
Królewiczżabus pięknusmężczyzna
Zaba Monika = new Zaba(”żabus leniuchus”, k);Zaba Krolewicz = new Zaba(”żabus pięknus”, m);Zaba Kermit = new Zaba(”żabus pospolitus”, m);
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
7
Dziedziczenie
Żaba
pływaj()kumkaj()
Płaz
płećgatunek
skacz()
Jaszczurka
idź()odrzućOgon()
Ropucha
jad
rechotaj()wydzielJad()
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
8
Dziedziczenie cd.class Plaz {
char plec;String gatunek;void skacz();
}
class Zaba extends Plaz {void plywaj();void kumkaj();
}
class Jaszczurka extends Plaz {void idz();void odrzucOgon();
}
class Ropucha extends Plaz {String jad;void rechotaj();void wydzielJad();
}
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
9
Dziedziczenie cd.Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
Wszystkie klasy dziedziczą z java.lang.Object Java wspiera tylko jednokrotne dziedziczenie Dziedziczenie wielokrotne może być częściowo
zrealizowane dzięki interfejsom Metody domyślnie są wirtualne (tzn.
wykorzystują polimorfizm)
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
10
Hermetyzacja
Płaz
-Płeć#Gatunek
+Skacz()
Żaba
+Pływaj()+Kumkaj()
class Plaz {private char plec;protected String gatunek;public void skacz();
}class Zaba extends Plaz {
public void plywaj();public void kumkaj();
}
Private(-), protected(#), public(+), defaultPlan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
11
AbstrakcjaPlan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
Słowo kluczowe abstract oznacza, że dana jednostka (klasa, metoda) fizycznie nie istnieje
klasy abstrakcyjne nie mogą mieć obiektów metody abstrakcyjne nie posiadają implementacji
Klasa z metodą abstrakcyjną musi także być zadeklarowana jako abstrakcyjna
abstract public class Figura {}abstract public void narysuj();
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
12
Polimorfizm wielopostaciowość wiele klas reprezentuje ten sam
typ
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
13
Polimorfizm cd.void Metoda(Plaz x) {...}...Zaba Monika;Jaszczurka Konrad;Plaz Zwierzak;...
Metoda(Monika);Metoda(Konrad);...Zwierzak = Monika;Zwierzak.skacz();...Zwierzak = Konrad;Zwierzak.skacz();
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
14
Interfejsy Deklaracje metod i definicje stałych Dany interfejs mogą implementować różne
klasy Dana klasa może implementować wiele
różnych interfejsów
class Zaba extends Plazimplements Wytresowany{... }class Pies extends Ssakimplements Wytresowany{... }
interface Wytresowany { final int Wiek = 5; void dajGlos(); void przynies();}
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
15
Interfejsy cd.interface Wytresowany {...}interface Jadowity {...}class Ropucha extends Plaz implements
Wytresowany, Jadowity {...}
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
...Ropucha zabus;Jadowity zwierz1;Wytresowany zwierz2;
zwierz1 = zabus;zwierz2 = zabus;
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
16
Cechy Javy Obiektowość Interfejsy
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
Przenośne oprogramowanie
Garbage collector Aplikacja vs. Applet
Byte-code
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
17
Środowisko JDK (Java Development Kit) i JRE (Java
Runtime Environment) – http://java.sun.com
JVM (Java Virtual Machine), JIT (Just-In-Time)
Środowiska graficzne, np. Eclipse, JBuilder javac - generator bajtkodu dla wirtualnej
maszyny Javy java – interpreter bajtkodu
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
18
ProgramowaniePlan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
19
Konstruktory służą do tworzenia instancji klas (przydział pamięci i
inicjalizacja pól) nazwa konstruktora == nazwa klasy nie zwracają typu mogą być przeciążane Jeżeli w klasie nie zdefiniowano wprost żadnego
konstruktora, kompilator generuje domyślny konstruktor bezparametrowy
public class MojaKlasa {
public MojaKlasa { // jestem w konstruktorze
}
}
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
20
Przykład konstruktoraPlan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
public class Okrag {
public static final double PI = 3.14159; // stała
public double r; // promień okręgu
public Okrag(double r) {
this.r = r;
}
public Okrag() {
this(1.0);
}
public double obwod() { return 2 * PI * r; }
public double pole() { return PI * r*r; }
}
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
21
Zarządzanie pamięcią w Javie nie ma destruktorów obiekty, do których nie ma referencji, są
usuwane automatycznie przez specjalny wątek JVM: garbage collector
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
22
Typy prymitywneW Javie wszystko jest obiektem, ale... bezpośrednio przechowują pojedynczą wartość dane są przechowywane na stosie są manipulowane za pomocą wbudowanych
operatorów nie mogą być rozszerzane przez programistę byte, short, int, long, float, double, char,
boolean posiadają odpowiedniki obiektowe (Byte, Short, Integer
etc.)
int i = 1;double pi = 3.1415;boolean isOpen = true;
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
23
Typy obiektowe przechowują referencję do faktycznego obiektu dane są przechowywane na stercie są manipulowane za pomocą metod i odwołań do
pól mogą być swobodnie tworzone i rozszerzane przez
programistów
MojaKlasa klasa = null; klasa = new MojaKlasa();klasa.wykonaj(parametr1, parametr2);
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
24
Zasięg Tak jak w C/C++, zasięg zmiennej jest określony
przez rozmieszczenie nawiasów klamrowych {}. Zmienna zdefiniowana w danym zasięgu jest
dostępna tylko do końca tego zasięgu
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
{
int x = 12; /* tylko x jest dostępne */
{
int q = 96; /* x i q są dostępne */
}
/* tylko x dostępne */
/* q jest poza zasięgiem */
}
{
int x = 12;
{
int x = 96; /* błąd */
}
}
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
25
Liczby Liczby są reprezentowane przez typy prymitywne o
różnej dokładności byte, short, int, long float, double
Na liczbach prymitywnych działają operatory znane z C/C++ (+-/*=%^)
Do reprezentacji bardzo dużych liczb służy klasa BigDecimal (zawarta w JDK)
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
26
Napisy Napisy są zawsze zapisywane w Unicode Klasy reprezentujące napisy
java.lang.String – operator ‘+’ java.lang.StringBuffer
Napisy są obejmowane w podwójne cudzysłowy, pojedyncze znaki – w pojedyncze
Popularne metody: substr(i, j), indexOf(ch), charAt(n)
String napis = „Mój” + „napis”;String slowo = napis.substr(0, 3);
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
27
Tablice Tablice są obiektami specjalnego typu Indeksy są liczone od 0 i są sprawdzane Bardzo ważne pseudopole length tablice różnych typów są od siebie różne
int mojaTablica[ ] = null;
mojaTablica = new int[5];
int mojaTablica2[ ] = {1, 4, 9, 16, 25};
String jezyki [ ] = {"Prolog", "Java"};
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
28
Wskaźnik a referencja W Javie nie występują wskaźniki takie jak w C/C++ Wszystkie obiekty są dostępne wyłącznie przez
referencje Referencje to wskaźnik bez możliwości wykonywania na
nim obliczeń Adres wskazywany przez referencję odnosi się do sterty
i nie może być modyfikowany
MojaKlasa klasa = null;MojaKlasa klasa2 = new MojaKlasa();
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
29
Stałe Stałą jest zmienna ze słowem final Wartość stałej jest ustalana przy pierwszym
przypisaniu Próba ponownego przypisania wartości jest
wykrywana przez kompilator Tradycyjnie stałe zapisuje się wielkimi literami
final double PI = 3.1415;final String KLUCZ = „klucz”;
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
30
Pakiety Rozszerzenie przestrzeni nazw Lepsze zarządzanie programem
wielomodułowym Pakiety ściśle związane z katalogami
// plik Zaba.javapackage jjmz.zwierz;public class Zaba {...}
// plik Zoo.javaimport jjmz.zwierz.Zaba;import jjmz.zwierz.Pies;// lubimport jjmz.zwierz.*;public class Zoo {...}
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
// plik Pies.javapackage jjmz.zwierz;public class Pies {...}
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
31
Pakiety cd. c:\
KlasyJavy jjmz
zwierz Zaba.class Pies.class
import jjmz.zwierz.Zaba;import jjmz.zwierz.Pies;// lubimport jjmz.zwierz.*;
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
Zmienna CLASSPATHset CLASSPATH=c:\KlasyJavy;c:\jdk\lib;.
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
32
Pakiety wbudowaneBiblioteka klas dostarczana wraz z JDK java.util.* - dynamiczne struktury
danych java.util.zip.* – obsługa plików ZIP java.text.* - przetwarzanie tekstów java.io.* - wsparcie operacji we/wy java.net.* - komponenty sieciowe javax.swing.* - komponenty graficzne ...
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
33
JAR-y Gotowe, spakowane komponenty Ułatwienie rozprowadzania
dodatkowych pakietów Dołączenie do CLASSPATH
CLASSPATH=c:\KlasyJavy\zwierz.jar
JAR a ZIP
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
34
HelloWorldpackage moj.pakiet;
import inny.pakiet.PewnaKlasa;import jeszcze.inny.pakiet.*;
public class HelloWorld {public static void main (String[] args) {
System.out.println(“Hello World!!!”);}
}
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
35
HelloWorld cd.
Hello World!!!
C:\> javac HelloWorld.java
C:\> java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
C:\> echo %CLASSPATH%
C:\JavaSoft\JRE\1.3.1\lib\ext\QTJava.zipC:\> set classpath=%classpath%;.
C:\> java HelloWorld
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
36
HelloWorld cd. Pakowanie do JARjar cvf Hello.jar HelloWorld.class
Dodawanie do CLASSPATHset classpath=c:\KlasyJavy\Hello.jar
Uruchomieniejava HelloWorldlub
java –jar Hello.jar
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
37
Java a C++ nie ma typedef (są klasy), nie ma preprocesora (np. #define (są stałe)), nie ma plików nagłówkowych (kompilator generuje z plików źródłowych
pliki binarne z niezbędnymi informacjami), nie ma struktur i unii (są klasy), nie ma funkcji (są metody), nie ma wielodziedziczenia klas (jest wielodziedziczenie interfejsów), nie ma instrukcji goto (choć słowo goto jest zastrzeżone), nie ma przeciążania operatorów (ale jest dociążanie metod), nie ma niejawnych przekształceń (koercji) typów (można je
zapisywać jawnie), nie ma wskaźników (są klasy, zmienne których wartościami sa obiekty
albo null, tablice, obiekty reprezentujące napisy), nie ma delete (jest automatyczne odśmiecanie).
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
38
HelloWorldAppletimport java.applet.Applet;import java.awt.Graphics;/** * Applet testowy, plik: HelloWorldApplet.java * @author JJ&MZ */public class HelloWorldApplet extends Applet {
/** Wywoływana domyślnie przy odświeżaniu ekranu */public void paint(Graphics theGraphics) {
theGraphics.drawString(“Hello World !!!”, 0, 50);}
}
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
39
HelloWorldApplet cd.<!– HelloWorldApplet.html --><html><head><title>Testowy
applet</title></head><body><h1>Test appletów</h1><applet code=“HelloWorldApplet.class”
width=“200” height=“100”></applet></body></html>
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
40
HelloWorldApplet cd.C:\> javac HelloWorldApplet.java
C:\> appletviewer HelloWorldApplet.html
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
41
Narzędzia javadoc – automatyczna
generacja dokumentacji appletviewer – przeglądarka
appletów javap – dekompilacja klas Javy
(*.class -> *.java) ...
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
42
niezależność od platformy dzięki JVM prawie czysta implementacja
paradygmatu obiektowego usunięcie pojęcia wskaźnika odzyskiwanie „nieużytków” weryfikacja kodu w fazie kompilacji i
wykonania dynamiczne ładowanie klas
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
43
brak możliwości przeciążenia
operatorów brak klas parametryzowanych
(templates)
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
44
Podsumowanie Java to nie tylko applety Java Servlet/JSP - tworzenie aplikacji
webowych Java JDBC - aplikacje bazodanowe Java Swing - aplikacje okienkowe Java RMI - aplikacje rozproszone Java Enterprise Edition - aplikacje
biznesowe (odpowiednik .NET) ...
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
10 lipca 2002r. Jędrzej Jajor & Marcin Zienkowicz
45
Źródła informacji java.sun.com/j2se/1.4 www.javasoft.com/j2se/1.4/docs www.javasoft.com/docs/books/tutorial www.BruceEckel.com - Thinking in
Java, Thinking in Patterns xml.apache.org jakarta.apache.org www.jug.poznan.pl ...
Plan:HistoriaCechyObiektowość-Zgodność-Klasy i obiekty-Dziedziczenie-Hermetyzacja-PolimorfizmInterfejsyŚrodowiskoPakietyHelloWorld!-Aplikacja-ApletNarzędziaPodsumowanie
Dziękujemy