Kategorie materiałów Informatyka

Przedmiot: JAVA Programowanie Obiektowe Wróć do kategorii

Java - Tworzenie i obsługa programów [20 stron]

plik Pobierz Java - Tworzenie i obsluga programow [20 stron].doc

Jacek Rumiński - Język JAVA – Rozdział 1
1-3
Rozdział 1 Tworzenie i obsługa programów
1.1 Klasy obiektów
1.2 Aplikacje
1.3 Aplety
1.4 Aplikacja i aplet w jednym kodzie
1.5 Interpretacja, kompilacja i obsługa klas w Javie
1.6 Wyjątki
1.7 Klasy wewnętrzne
1.1 Klasy obiektów
Ponieważ Java jest językiem obiektowym operuje na pojęciach ogólnych.
Znane z historii filozofii pojęcie uniwersalii, a więc pewnych klas ogólnych bytów np.
człowiek, małpa, rycerz Jedi, jest stosowane w Javie (jak i w innych językach
obiektowych). Klasa bytów (class) określa opis bytu (stałe, zmienne, pola) oraz jego
zachowanie (metody). Przykładowo klasę ludzi można opisać poprzez parametry:
kolor oczu, rasę, kolor włosów, itp., (pola klasy) ; oraz poprzez zachowanie: chodzi,
oddycha, itp, (metody klasy). Obiektem jest konkretna realizacja klasy, a więc np.
konkretny człowiek - Kowalski, a nie sama klasa. Można upraszczając podać
generalny podział na rodzaj kodu strukturalny i obiektowy. W ujęciu strukturalnym w
celu określenia zbioru konkretnych osób należy zdefiniować zbiór (wektor, macierz)
klas (struktur), gdzie każda klasa opisuje jedną osobę. W podejściu obiektowym w
celu określenia zbioru konkretnych osób należy zainicjować zbiór obiektów tej samej
klasy. Odwołanie się do parametru klasy w podejściu strukturalnym odbędzie się
poprzez odniesie przez nazwę odpowiedniej klasy, natomiast w podejściu
obiektowym poprzez nazwę obiektu. Oznacza to, że w aplikacjach obiektowych bez
inicjacji obiektu nie można odwołać się do parametrów (pól) i metod klasy. Wyjątkiem
są te pola i metody, które oznaczone są jako statyczne (static). Pole statyczne, bez
względu na liczbę obiektów danej klasy, będzie miało tylko jedną wartość. Pola i
metody statyczne mogą być wywoływane przez referencję do klasy. Po tym
podstawowym wprowadzeniu zapoznajmy się z zasadniczą konstrukcją programu w
Javie (rozważania dotyczące Javy jako Języka obiektowego znajdują się w dalszej
części tego dokumentu).
Klasę w Javie konstruuje się zaczynając od stworzenia ramy klasy:
ccclllaaassssss NaaazzzwaaaKlllaaasssyyy {{{
////// pppooolllaaa
tttyyyppp___zzzmiiieeennnnnneeejjj zzzmiiieeennnnnnaaa;;;
...
...
...
tttyyyppp___zzzmiiieeennnnnneeejjj zzzmiiieeennnnnnaaa;;;
//////kkkooonnnssstttrrruuukkktttooorrr --- meeetttooodddaaa ooo ttteeejjj sssaaameeejjj nnnaaazzzwiiieee cccooo kkklllaaasssaaa --- wyyywooołłłyyywaaannnaaa
//////aaauuutttooomaaatttyyyccczzznnniiieee ppprrrzzzyyy tttwooorrrzzzeeennniiiuuu ooobbbiiieeekkktttuuu dddaaannneeejjj kkklllaaasssyyy
NaaazzzwaaaKlllaaasssyyy(((tttyyyppp___aaarrrggguuumeeennntttuuu nnnaaazzzwaaa___aaarrrggguuumeeennntttuuu))){{{
tttrrreeeśśśććć___kkkooonnnssstttrrruuukkktttooorrraaa;;;
} }}
Jacek Rumiński - Język JAVA – Rozdział 1
1-4
//////meeetttooodddyyy
tttyyyppp___waaarrrtttooośśśccciii___zzzwrrraaacccaaannneeejjj nnnaaazzzwaaa___meeetttooodddyyy(((tttyyyppp___aaarrrggguuumeeennntttuuu nnnaaazzzwaaa___aaarrrggguuumeeennntttuuu))){{{
tttrrreeeśśśććć___meeetttooodddyyy;;;
} }}
}}}////// kkkooonnniiieeeccc ccclllaaassssss NaaazzzwaaaKlllaaasssyyy
Przykład 1.1:
//RycerzJedi.java
//klasa
class RycerzJedi{
//pola
String nazwa;
String kolor_miecza;
//konstruktor
RycerzJedi(String nazwa, String kolor_miecza){
this.nazwa=nazwa;
this.kolor_miecza=kolor_miecza;
}
//metody
void opis(){
System.out.println(”Rycerz ”+nazwa+ ” ma ”+kolor_miecza+” miecz.”);
}
}// koniec class RycerzJedi
Warto zwrócić uwagę na zastosowaną już metodę notacji. Otóż przyjęło się w Javie
(specyfikacja języka Java) oznaczanie nazwy klasy poprzez stosowanie wielkich liter
dla pierwszej litery i tych, które rozpoczynają nowe znaczenie w nazwie klasy.
Metody i obiekty oznacza się z małych liter. Warto również stosować prosty
komentarz rozpoczynający się od znaków „//” i mający zasięg jednego wiersza. Dalej
w tekście zostaną omówione inne, ważne zagadnienia związane z konstrukcją i
opisem kodu.
Przedstawiona powyżej rama i przykład klasy nie mogą być wprost uruchomione.
Konieczne jest utworzenie elementu wywołującego określone działanie. W Javie jest
to możliwe na dwa sposoby. Po pierwsze za pomocą aplikacji, po drugie appletu.
1.2 Aplikacje
Aplikacja w języku Java to zdefiniowana klasa publiczna wraz z jedną ściśle
określoną metodą statyczną o formie:
pppuuubbbllliiiccc ssstttaaatttiiiccc vvvoooiiiddd maaaiiinnn(((Stttrrriiinnnggg aaarrrgggsss[[[]]]))){{{
}}}////// kkkooonnniiieeeccc pppuuubbbllliiiccc ssstttaaatttiiiccc vvvoooiiiddd maaaiiinnn(((Stttrrriiinnnggg aaarrrgggsss[[[]]])))
Jacek Rumiński - Język JAVA – Rozdział 1
1-5
Tablica „args[]” będąca argumentem metody main() jest zbiorem argumentów
wywołania aplikacji w ciele której znajduje się metoda. Kolejność argumentów jest
następująca: argument 1 wywołania umieszczany jest w args[0], argument 2
wywołania umieszczany jest w args[1], itd. Występująca nazwa „args” oznacza
dynamicznie tworzony obiekt, który zawiera args.length elementów typu łańcuch
znaków. Pole „length” oznacz więc liczbę elementów tablicy. Łatwo jest więc określić
argumenty oraz ich liczbę korzystając z obiektu „args”. Warto zwrócić uwagę na to,
że oznaczenie „length” jest własnością tablicy (ukrytym polem każdej tablicy) a nie
metodą obiektu args. Istnieje metoda klasy String o nazwie „length()” (metody
zawsze są zakończone nawiasami pustymi lub przechowującymi argumenty), łatwo
więc się pomylić. Dla zapamiętania różnicy posłużmy się prostym przykładem
wywołania:
args.length - oznacz ilość elementów tablicy „args”;
args[0].length() -oznacza rozmiar zmiennej tekstowej o indeksie 0 w tablicy „args”.
Prosta aplikacja działająca w Javie będzie miała następującą formę:
Przykład 1.2:
// Jedi.java :
public class Jedi{
public static void main(String args[]){
System.out.println(”Rycerz Luke ma niebieski miecz.”);
}// koniec public static void main(String args[])
}// koniec public class Jedi
Nagrywając powyższy kod do plik „Jedi.java”, kompilując poprzez podanie polecenia:
„javac -g -verbose Jedi.java” (pamiętać należy że kompilację należy wykonać z
scieżki występowania pliku źródłowego, lub należy mieć odpowiednio ustawioną
zmienną środowiska CLASSPATH) można wykonać powstały Beta-kod „Jedi.class”
używając interpretatora: „java Jedi”. Uzyskamy następujący efekt:
Rycerz Luke ma niebieski miecz.
Jak działa aplikacja z przykładu 1.2? Otóż w ustalonej ramie klasy, w metodzie
programu uruchomiono polecenie wysłania do strumienia wyjścia (na standardowe
urządzenie wyjścia - monitor) łańcuch znaków „Rycerz Luke ma niebieski miecz.”.
Konstrukcja ta wymaga krótkiego komentarza. Słowo „System” występujące w
poleceniu wydruku oznacza statyczne odwołanie się do elementu klasy System. Tym
elementem jest pole o nazwie „out”, które stanowi zainicjowany obiekt typu
PrintStream (strumień wydruku). Jedną z metod klasy PrintStream jest metoda o
nazwie „println”, która wyświetla w formie tekstu podaną wartość argumentu oraz
powoduje przejście do nowej linii (wysyłany znak końca linii). W podanym przykładzie
nie ukazano jawnie tworzenia obiektu. Można więc powyższy przykład nieco
rozwinąć.
Jacek Rumiński - Język JAVA – Rozdział 1
1-6
Przykład 1.3
// Jedi1.java :
//klasa
class RycerzJedi{
//pola
String nazwa;
String kolor_miecza;
//konstruktor
RycerzJedi(String nazwa, String kolor_miecza){
this.nazwa=nazwa;
this.kolor_miecza=kolor_miecza;
}
//metody
void opis(){
System.out.println(”Rycerz ”+nazwa+ ” ma ”+kolor_miecza+” miecz.”);
}
}// koniec class RycerzJedi
public class Jedi1{
public static void main(String args[]){
RycerzJedi luke = new RycerzJedi(”Luke”, ”niebieski”);
RycerzJedi ben = new RycerzJedi(”Obi-wan”,”biały”);
luke.opis();
ben.opis();
}// koniec public static void main(String args[])
}// koniec public class Jedi1
Zapiszmy kod aplikacji pod nazwą Jedi1.java, a następnie wykonajmy kompilację z
użyciem polecenia: „javac -g -verbose Jedi1.java”. Zwróćmy uwagę na wyświetlane w
czasie kompilacji komunikaty. Po pierwsze kompilator ładuje wykorzystywane przez
nas klasy. Klasy te znajdują się w podkatalogu „lib” katalogu „jre” (biblioteki Java
Runtime Engine). Klasy są pogrupowane w pakiety tematyczne np. „lang” czy „io”.
Wszystkie grupy klas znajdują się w jednym zbiorze o nazwie „java”. Całość jest
spakowana metodą JAR (opracowaną dla Javy) do pliku „rt.jar”. Wszystkie
prekomilowane klasy znajdujące się w pliku „rt.jar” stanowią podstawowe biblioteki
języka Java. Biblioteki te ujęte w pakiety wywoływane są następująco:
np.:
java.lang.*; - oznacza wszstkie klasy (interfejsy i wyjątki - o czym później) grupy lang,
głównej biblioteki języka Java,
java.io.*; - oznacza wszstkie klasy (interfejsy i wyjątki - o czym później) grupy io
(wejście/wyjście), głównej biblioteki języka Java,
java.net.Socket; - oznacza klasę Socket grupy net (sieć), głównej biblioteki języka
Java.
Wykorzystując różne klasy biblioteki języka Java należy pamiętać w jakim pakiecie
się znajdują. Wszystkie klasy poza tymi zawartymi w pakiecie „java.lang.*”
Jacek Rumiński - Język JAVA – Rozdział 1
1-7
wymagają zastosowania jawnego importu pakietu (klasy) w kodzie programu.
Odbywa się to poprzez dodanie na początku kodu źródłowego linii:
np.:
iiimpppooorrrttt jjjaaavvvaaa...nnneeettt...***;;;
Po dodaniu takiej linii kompilator wie gdzie szukać używanych w kodzie klas. Pakiety
zaczynające się od słowa „java” oznaczają zasadnicze pakiety języka Java. Niemniej
możliwe są różne inne pakiety, których klasy można stosować np.:
„org.omg.CORBA”. Nazewnictwo pakietów jest określone w specyfikacji języka i
opiera się o domeny Internetowe. Oczywiście można tworzyć własne pakiety.
Występujące w nazwie pakietu kropki oznaczają zmianę poziomu w drzewie
katalogów przechowywania klas. Przykładowo „org.omg.CORBA.Context” oznacza,
że w katalogu „org”, w podkatalogu „omg”, w podkatalogu „CORBA” znajduje się
klasa „Context.class”; czyli zapis pakietu jest równoważny w sensie systemu plików:
/org/omg/CORBA/Context.class.
Obserwując dalej komunikaty wyprodukowane przez kompilator Javy łatwo
zauważyć, że zapisane zostały dwie klasy: RycerzJedi.class oraz Jedi1.class.
Oddzielnie definiowane klasy zawsze będą oddzielnie zapisywane w Beta-kodzie.
Po kompilacji należy uruchomić przykład 1.3. W tym celu wywołajmy interpretator:
„java Jedi1”. Zdarza się czasem, że wykorzystywany Beta-kod klas pomocniczych
(np. klasa RycerzJedi.class) znajduje się w innym miejscu dysku. Wówczas
otrzymamy w czasie wywołania aplikacji błąd o niezdefiniowanej klasie. Należy wtedy
ustawić odpowiednio zmienną środowiska CLASSPATH lub wywołać odpowiednio
interpretator:
„java -cp <ścieżka dostępu do klas> NAZWA_KLASY_GŁÓWNEJ”.
Prawidłowe działanie aplikacji z przykładu 1.3 da następujący rezultat:
Rycerz Luke ma niebieski miecz.
Rycerz Obi-wan ma biały miecz.
Prześledźmy konstrukcję kodu źródłowego w przykładzie 1.3. Kod składa się z
dwóch klas: RycerzJedi i Jedi1. Klasa RyczerzJedi nie posiada metody main, a więc
nie jest główną klasą aplikacji. Klasa ta jest wykorzystywana dla celów danej aplikacji
i jest skonstruowana z pól, konstruktora i metody. Pola oznaczają pewną własność
obiektów jakie będą tworzone: nazwa - łańcuch znaków oznaczający nazwę rycerza
Jedi; kolor_miecza - łańcuch znaków oznaczający kolor miecza świetlnego rycerza
Jedi. Konstruktor jest metodą wywoływaną automatycznie przy tworzeniu obiektu.
Stosuje się go do podawania argumentów obiektowi, oraz do potrzebnej z punktu
widzenia danej klasy grupy operacji startowych. Wywołanie konstruktora powoduje
zwrócenie referencji do obiektu danej klasy. Nie można więc deklarować konstruktora
z typem void. W rozpatrywanym przykładzie konstruktor posiada dwa argumenty o
nazwach takich samych jak nazwy pól. Oczywiście nie jest konieczne stosowanie
takich samych oznaczeń. Jednak w celach edukacyjnych zastosowano tu te same
oznaczenia, żeby pokazać rolę słowa kluczowego „this”. Słowo „this” oznacza obiekt
klasy w ciele której pojawia się „this”. Stworzenie więc przypisania this.nazwa=nazwa
powoduje przypisanie zmiennej lokalnej „nazwa” do pola danej klasy „nazwa”. Klasa
RycerzJedi ma również zdefiniowaną metodę opis, która wyświetla własności obiektu
Jacek Rumiński - Język JAVA – Rozdział 1
1-8
czyli treść pól. Druga klasa Jedi1 zawiera metodę main(), a więc jest główną klasą
aplikacji. W metodzie main() zawarto linie inicjowania obiektów np.:
RyyyccceeerrrzzzJJJeeedddiii llluuukkkeee === nnneeew RyyyccceeerrrzzzJJJeeedddiii(((”””LLLuuukkkeee”””,,, ”””nnniiieeebbbiiieeessskkkiii”””)));;;
Inicjowanie to polega na stworzeniu obiektu danej klasy, poprzez użycie słowa
kluczowego „new” i wywołanie konstruktora klasy z właściwymi argumentami. W
podanym przykładzie tworzony jest obiekt klasy RycerzJedi o nazwie luke i
przypisuje się mu dane właściwości. Po stworzeniu dwóch obiektów w klasie Jedi1
następuje wywołanie metod opis() dla danych obiektów. Tak stworzona konstrukcja
aplikacji umożliwia w sposób prosty skorzystanie z klasy RycerzJedi dowolnej innej
klasie, aplikacji czy w aplecie.
1.3 Aplety
Oprócz aplikacji możliwe jest wywołanie określonego działania poprzez aplet.
Aplet jest formą aplikacji wywoływanej w ściśle określonym środowisku. Aplet nie jest
wywoływany wprost przez kod klasy *.class lecz poprzez plik HTML w kodzie którego
zawarto odniesienie do kodu apletu *.class, np.:
<<<aaappppppllleeettt cccooodddeee===JJJeeedddiii222...ccclllaaassssss wiiidddttthhh===222000000 hhheeeiiiggghhhttt===111000000>>>
<<<///aaappppppllleeettt>>>
Zapis ten oznacza, że w oknie o szerokości 200 i wysokości 100 będzie uruchomiony
aplet o kodzie Jedi2.class. Zasadniczo aplet jest programem graficznym, stąd też
wyświetlany tekst musi być rysowany graficznie. Polecenie:
Syyysssttteeem...ooouuuttt...ppprrriiinnntttlllnnn(((”””Ryyyccceeerrrzzz LLLuuukkkeee maaa nnniiieeebbbiiieeessskkkiii miiieeeccczzz...”””)));;;
nie spowoduje wyświetlenia tekstu w oknie apletu, lecz wyświetli tekst w konsoli
Javy jeśli do takiej mamy dostęp. Uruchamiając aplet należy mieć Beta-kod Javy
oraz plik odwoławczy w HTML.
Tworząc aplet tworzymy klasę dziedziczącą z klasy Applet, wykorzystując
podstawowe metody takie jak init(), start(), paint(), stop() i destroy(). Wywołując
aplikację wywołujemy metodę main(), wywołując natomiast aplet wywołujemy
przedstawione wyżej metody w podanej kolejności. Metody init() i destroy() są
wykonywane jednorazowo (można uznać metodę init() za konstruktor apletu). Metody
start(), paint(), stop() mogą być wykonywane wielokrotnie. Ponieważ aplet korzysta z
klasy Applet oraz metod graficznych konieczne jest importowanie określonych
pakietów. Rozpatrzmy następujący przykład:
Przykład 1.4:
// Jedi2.java :
import java.applet.Applet;
import java.awt.*;
public class Jedi2 extends Applet{
Jacek Rumiński - Język JAVA – Rozdział 1
1-9
public void paint(Graphics g){
g.drawString(”Rycerz Luke ma niebieski miecz.„, 15,15);
}
} // koniec public cl ...

Ciąg dalszy w pliku do pobrania.

Wkuwanko.pl jako podmiot świadczący usługę hostingu materiałów edukacyjnych nie ponosi odpowiedzialności za ich zawartość.

Aby zgłosić naruszenie prawa autorskiego napisz do nas.

ikona Pobierz ten dokument

Wróć do kategorii

wkuwanko.pl

Wasze komentarze: dodaj komentarz

  • Nie ma jeszcze komentarzy do tego materiału.

Materiały w kategorii JAVA Programowanie Obiektowe [19]

  • podgląd pobierz opis Definiowanie własnych klas
  • podgląd pobierz opis Interfejsy
  • podgląd pobierz opis Java - Aplety, grafika w Javie [35 stron]
  • podgląd pobierz opis Java - Grafika i multimedia w Javie [23 strony]
  • podgląd pobierz opis Java - Konstrukcja kodu [30 stron]
  • podgląd pobierz opis Java - Programowanie obiektowe [24 strony]
  • podgląd pobierz opis Java - Tworzenie i obsługa programów [20 stron]
  • podgląd pobierz opis Java - wprowadzenie [6 stron]
  • podgląd pobierz opis Kolekcje
  • podgląd pobierz opis Kompozycja i dziedziczenie
  • podgląd pobierz opis Laboratorium1
  • podgląd pobierz opis Metody i języki programowania - Zadania
  • podgląd pobierz opis Podstawy języka Java
  • podgląd pobierz opis Polimorfizm i metody wirtualne
  • podgląd pobierz opis Programowanie GUI
  • podgląd pobierz opis Streszczenie
  • podgląd pobierz opis Wątki
  • podgląd pobierz opis Wstęp do programowania w języku Java
  • podgląd pobierz opis Zagadnienia na EGZAMIN
[ Misja ] [ Regulamin ] [ Kontakt ] [ Reklama ]   © wkuwanko.pl 2008-2018 właściciel serwisu SZLIFF

Partnerzy: matzoo.pl matmag.pl batmat.pl onlinefm.pl pisupisu.pl Matematyka radio online