You are on page 1of 90

Przemysaw Pardel, Listopad 2007

Historia i geneza programowania obiektowego, Programowanie obiektowe, Obiekty i typy podstawowe, Klasy, Metody, Pola i metody statyczne, Konstruktory, Pakiety, Polimorfizm, Metody i klasy abstrakcyjne, Interfejsy, Inne.

Simuli 67 Ole-Johan Dahl i Kristen Nygaard z Norsk Regnesentral w Oslo pogrupowano typy statkw w rne klasy obiektw, a kada z klas sama odpowiadaa za okrelanie wasnych danych i zachowa Smalltalk - stworzony w Simuli w Xerox PARC - w peni dynamiczny system, w ktrym obiekty mog by tworzone i modyfikowane "w locie C++ - poowa lat 80 - W tym okresie cechy obiektowe dodano do wielu jzykw programowania, w tym Ady, BASIC-a, Lisp-a, Pascal-a i innych, Eiffel - Bertrand Meyer - obecnie zosta on w zasadzie cakowicie zastpiony przez Jav Obiektowo rozprzestrzenia si do znacznie, jednak zwykle w systemach hybrydowych, w poczeniu z programowaniem niskopoziomowym (C++), funkcyjnym (Ocaml, niektre dialekty Lisp-a), sieciowym (Java), skryptowym (Perl, Python, Ruby) itd. Systemy czysto obiektowe typu Smalltalk-a nie znalazy zbyt szerokiego zastosowania.

Zgodno podejcia z rzeczywistoci najwikszy atut programowania, projektowania oraz analizy obiektowej. Arystoteles forma (odpowiednik platoskiej idei) i materia (Formie w programowaniu obiektowym odpowiada Klasa, materii - instancja - obiekt). Podstawow cech mzgu ludzkiego jest klasyfikacja czenie wystpujcych w rzeczywistoci obiektw w grupy klasy. Podstawowy postulat: Tym lepszy jest model, im bardziej jest zgodny z rzeczywistoci.

Definicja: Programowanie obiektowe - (ang. object-oriented programming) metodyka tworzenia programw komputerowych, ktra definiuje programy za pomoc obiektw elementw czcych stan (czyli dane) i zachowanie (czyli procedury, metody) Obiektowy program komputerowy wyraony jest jako zbir obiektw komunikujcych si pomidzy sob w celu wykonywania okrelonych zada.

Wszystko jest obiektem. Program jest zbiorem obiektw, ktre wysyaj sobie komunikaty. Kady obiekt posiada pami, na ktr skadaj si inne obiekty. Kady obiekt posiada swj typ. Wszystkie obiekty tego samego typu mog otrzymywa te same komunikaty.
8

Definicja: Obiekt: Podstawowa jednostka abstrakcji modelu obiektowego Gwne cechy obiektu:
Stan dane wewntrzne, zachowanie zestaw metod do wykonania, tosamo kady obiekt mona w sposb

jednoznaczny odrni od innych obiektw.


10

Metoda statyczna
Na stosie lub w obszarze statycznym:
Metoda szybka, Programista musi sam zwolni pami.

Kompilator wyznacza czas trwania obiektu, i sam go

niszczy.

Metody dynamiczna (Java)


Tworzenie dynamiczne obiektw na stercie:
Ilo i czas ycia obiektw nieznany do czasu wykonania.

Java uywa odmiecacz pamici (garbage collector),

by wykrywa i usuwa obiekty nieuywane.


11

Definicja: Implementacja to kod umoliwiajcy wykonanie da przez obiekt np. Utworzenie obiektu klasy: Autobus aut = new Autobus(); danie pod kierunkiem obiektu: aut.Uruchom();

12

Program dostarcza usugi, Program skada si ze zbioru obiektw, Realizuje usugi wykorzystujc usugi wykonywane przez skadowe obiekty, Usugowy model uatwia projektowanie, analiz i ponowne uytkowanie obiektw.

13

Wszystko w Javie jest obiektem JAVA: Deklaracja tworzy odwoanie do obiektu s typu/klasy String: String s Obiekt wskazywany przez s nie istnieje zatem: s.length() LE Deklaracja oraz inicjacja odwoania do obiektu s typu/klasy String: String s = new String(abc); Teraz s wskazuje na konkrety obiekt utworzony w pamici, o wartoci abc s.length() - DOBRZE

14

Rejestry szybka pami wewntrz procesora, ograniczona liczba, niedostpne z programu, Stos - cz RAM, szybki dostp, rozmiar i czas ycia danych znane w czasie kompilacji, odwoania do obiektw, Sterta cz RAM, rozmiar i czas ycia danych nieznane w czasie kompilacji, skadowanie obiektw, wolniejszy dostp, Obszar statyczny cz RAM, dane dostpne w dowolnym momencie z programu, sowo kluczowe static, Obszar staych w kodzie programu, ewentualnie w pamici ROM, Obszar spoza RAM obiekty trwae (zachowuj stan midzy wywoaniami programu), zamiana obiektw w strumie bajtw (do przesania/zapisu).

15

Czasami tworzenie obiektw na stercie (przez operator new) nie jest efektywne: Integer i = new Integer(1); Typ podstawowy: int i = 1; Tworzy si zmienna ktra nie jest odwoaniem do obiektu, a wartoci.

16

boolean (Boolean), char (Character), byte (Byte), short (Short), int (Integer), long (Long), float (Float), double (Double), void (Void), Rozmiar kadego typu jest niezmienny programy s przenone, Wszystkie typy numeryczne s ze znakiem, Klasa opakowujca typ podstawowy pozwala umieszcza dane na stercie: Integer i = new Integer(1);
17

Zasig przez pooenie nawiasw: int i = 1; // dostepny i { int j = 2; // dostepne i, j } i = j // dostepny i

Niedozwolone przesanianie int i = 1; { int i = 2; // niedozwolone, Komunikat bdu zmienna ju istnieje }

18

ycie obiektw jest inne od ycia zmiennych typw podstawowych. String str = new String(abc);

{ }

Odwoanie str nie istnieje poza zasigiem deklaracji, natomiast obiekt wskazany przez str bdzie nadal istnia.
19

Obiekty ktre s identyczne z wyjtkiem stanu s grupowane w klasy, Klasa bytw (class) okrela opis bytu (stae, zmienne, pola) oraz jego zachowanie (metody) Klasa: interfejs i implementacja. Obiekty klasy maj t sam:
charakterystyk elementy skadowe zachowanie operacje na stanie

Rni si wartoci stanu, i tosamoci.


21

Kada klasa dziedziczy z klasy Object przynajmniej porednio. Klasa zadeklarowana jako final nie moe by ju niczyj nadklas. Za inicjalizowanie obiektw danej klasy odpowiadaj konstruktory (Java tworzy domylny - bezargumentowy).

22

Nowe typy obiektw zawarte s w klasach. Deklaracja klasy: class NazwaTypu { ... } Utworzenie obiektw klasy: NazwaTypu a = new NazwaTypu(); Klasa zawiera dwa rodzaje elementw:
pola obiekty dowolnego typu lub zmienne typw

podstawowych metody komunikaty ktre moe otrzyma dany obiekt


23

Kady obiekt uzyskuje wasny obszar pamici dla swoich zmiennych: class Dane {

int i; float f; Double d;

Obiekty nie dziel zmiennych midzy sob.


24

Utworzenie obiektu klasy: Dane da = new Dane(); Odwoanie do pl obiektu da: da.i = 47; da.f = 1.1f; da.d = new Double(1.0d);

25

Gdy pole jest typu podstawowego, jeli nie zainicjowane, to otrzyma warto domyln:
boolean false, char '\u0000, byte (byte)0, short

(short)0, int 0, long 0L, float 0.0f

Inicjalizacja jest gwarantowana dla zmiennych:


typu podstawowego deklarowanych jako skadowe klas

Inicjalizacja nie dotyczy zmiennych lokalnych, ktre nie s polami w klasie.


26

Pooenie klasy ? W tym samy pliku rdowym po prostu uywamy Inne pooenie np.
klasa ArrayList import java.util.ArrayList; Wszystkie klasy w pakiecie java.util import java.util.*;

27

Definicja: Metoda - Nazwane zachowanie obiektu jakie jest on zobowizany przejawi; okrelona funkcjonalno jak przejawiaj obiekty danej klasy W Javie rozrniamy dwa rodzaje metod:

Metoda klasowa (static) istnieje jedna dla wszystkich

obiektw danej klasy, nawet, gdy aden z nich jeszcze nie zosta powoany do ycia, Metoda instancyjna - jest tyle kopii ile obiektw, czyli do kadego obiektu przypisana jest kopia metody instancyjnej.
29

Metoda okrela komunikat ktre moe otrzyma dany obiekt: typZwracany nazwaMetody(/*argumenty*/) { ciao metody } Deklarowane tylko jako czci skadowe klas, i wywoywane na rzecz obiektu. typZwracany to typ wartoci zwracanych przez metod. argumenty to typy i nazwy; lista argumentw przekazywanych metodzie. ciao metody to definicja metody.

30

Podanie nazwy obiektu, kropki, nazwy metody, i jej listy argumentw (wysyanie komunikatu do obiektu): nazwaObiektu.nazwaMetody(arg1,arg2) Lista obiektw i ich klas, ktre mog by przekazane metodzie: int pamiec(String str) { return str.length(); } str jest referencj do obiektu. length() jest jedn z metod acucha str.

31

return peni dwie funkcje:


okrela opuszczenie metody
okrela warto zwracan (jeli jest)

Typ void - metoda nie zwraca wartoci: void nic_return() { return; } void nic2_bez_return() { }

32

Klasa posiada dwie lub wicej metod o tej samej nazwie ale rnych deklaracjach parametrw. Java uywa liczby i typw argumentw by ustali, ktr wersj metody naley wywoa. Przecianie metod plus dziedziczenie to sposb na implementacj polimorfizmu.

33

class Metody { void test() { System.out.println("Brak parametrow"); } void test(int a) { System.out.println("a: " + a); } void test(int a, int b) { System.out.println("a i b: " + a + " " + b); } double test(double a) { System.out.println("double a: " + a); return a*a; } }

34

Automatyczna kowersja typw gdy nie istnieje metoda o dokadnym typie wywoania: void test() { System.out.println("Brak parametrow); } void test(double a) { System.out.println("double a: " + a); } int i = 88; test(); test(i); Nastpuje konwersja int na double

35

Java umoliwia wystpienie powizanych metod pod jedn nazw: jeden interfejs, wiele metod. static int abs(int i) static long abs(long i) static float abs(float i)

36

Deklaracja pl statycznych: class StaticTest { static int i = 47; } st1.i i st2.i s te same: StaticTest st1 = new StaticTest(); StaticTest st2 = new StaticTest(); Odwoanie przez obiekty klasy: st1.i++; Odwoanie bez obiektu klasy: StaticTest.i++;

38

Moliwo wywoania metody bez koniecznoci tworzenia obiektu (np. main): class StaticFun { static void incr() { StaticTest.i++ } } Przez obiekt: StaticFunction sf = new StaticFunction(); sf.incr(); Przez klas: StaticFunction.incr();

39

Program wywietlajcy na ekranie sowo Hello World i biec dat: //HelloWorld.java - Komentarz import java.util.*;//???? public class HelloWorld { public static void main(String [] args) { System.out.println(Hello World , ); System.out.println(new Date()); } } Nazwy klas rozpoczynaj si od duej litery, kady kolejny wyraz te z duej litery. Nazwy zmiennych/pl/metod podobnie, ale pierwsza litera jest maa.

40

Konstruktor realizuje automatyczn inicjacj obiektu zaraz po jego utworzeniu, Konstruktor posiada t sam nazw jak klasa, w ktrej si znajduje, Konstruktor piszemy bez typu wyniku: domylnym typem konstruktora klasy jest ta sama klasa, Gdy klasa nie posiada konstruktora, domylny konstruktor automatycznie inicjuje pola zerami.
42

class Pudelko { double szerokosc, wysokosc, glebokosc; //konstruktor pudelka Pudelko() { System.out.println(Budujemy pudelko); szerokosc = 10; wysokosc = 10; glebokosc = 10; } //oblicza objetosc pudelka double objetosc() { return szerokosc * wysokosc * glebokosc; } }

43

class Pudelko { double szerokosc, wysokosc, glebokosc; //parametryzowany konstruktor pudelka Pudelko(double s, double w, double g) { szerokosc = s; wysokosc = w; glebokosc = g; } ... }

44

Odwoanie z metody do obiektu ktry j wywoa, Przesanianie Pl:


Nielegalne jest deklarowanie dwch zmiennych o tej samej nazwie

wewntrz zawierajcych si blokw, Legalne jest deklarowanie zmiennych lokalnych i parametrw o tej samej nazwie jak pola klasy, Nastpuje przesonicie pl przez zmienne lokalne: Pudelko(double szerokosc, double wysokosc, double glebokosc) {
this.szerokosc = szerokosc; this.wysokosc = wysokosc; this.glebokosc = glebokosc;

}
45

Dodatkowe czynnoci do wykonania gdy obiekt jest usuwany z pamici, np. zwolnienie dostpu do pliku wykonywane s przez metod finalize(): protected void finalize() { ... } Metoda wywoywana jest przez odmiecacz pamici gdy ten usuwa niepotrzebny obiekt ze sterty.

46

Definicja: Pakiety - Su organizacji modelu przez czenie elementw specyfikacji w grupy. Pliki s grupowane w pakiety, ktre tworz swoj integraln przestrze nazw, Klasy mog mie te same nazwy wewntrz innych pakietw, a do penej identyfikacji uywa si zoenia nazwy pakietu i nazwy wasnej klasy Pakiet - zbiornik na klasy:

dzieli przestrze nazw na rozczne zbiory kontroluje widoczno klas i skadowych klas
48

Instrukcja pakietu umieszczona jako pierwsza komenda pliku rdowego: package MojPakiet; Wszystkie klasy w pliku nale do pakietu MojPakiet. Inne pliki mog posiada t sam instrukcj: pakiet rozkada si na wiele plikw. Wszystkie pliki .class w pakiecie MojPakiet s zapisywane w katalogu MojPakiet. Pakiet wielo-poziomowy: package pakiet1.pakiet11.pakiet111;

49

Dodatkowe klasy/pakiety, ktre bd potrzebne w kodzie programu importujemy sowem kluczowym import: import java.util.*; java.lang - pakiet automatycznie wczany do kadego pliku Java
Pakiet java.lang zawiera klas System Klasa System zawiera pole: static PrintStream out; Klasa PrintStream zawiera metod: void

println(String x)
50

Jeli klasa o tej samej nazwie wystpuje w dwch rnych pakietach importowanych do programu: import pakiet1.*; import pakiet2.*; kompilator wywietli komunikat bdu gdy sprbujemy uy jednej z klas. Naley wwczas uy penej nazwy:

pakiet1.Klasa pakiet2.Klasa
51

Ukrywanie implementacji, hermetyzacja. Zapewnia, e obiekt nie moe zmienia stanu wewntrznego innych obiektw w nieoczekiwany sposb. Tylko wewntrzne metody obiektu s uprawnione do zmiany jego stanu. Kady typ obiektu prezentuje innym obiektom swj "interfejs", ktry okrela dopuszczalne metody wsppracy.
53

Do zmiennych i metod dostajemy si za pomoc nazwy. Istniej trzy wymiary dostpu do nazw:
Przestrzenie nazw
Java uywa szeciu rnych przestrzeni nazw: nazwy pakietu, typu, pola (zmiennej), metody, zmiennej lokalnej i etykiet

Zakresy
Zakres to cz klasy w ktrej dana nazwa jest widoczna

Modyfikatory dostpu
Modyfikatory dostpu okrelaj prawa dostpu do nazw danej klasy
54

public - mona si do dosta zewszd (dostpne dla kadego) protected - mona si do dosta tylko z danej klasy i jej potomkw (dostp maj tylko dana klasa i klasy dziedziczce) brak (czyli ten domylny) - mona si do dosta zewszd w danym pakiecie (public dla skadowych pakietu gdzie znajduje si element, private dla reszty) private - mona si do dosta tylko z obiektw danej klasy (tylko twrca klasy)

55

Ochrona wewntrznych operacji/danych przed ingerencj z zewntrz. Szczegy istotne i nieistotne. Wymiana implementacji klas bez wpywu na poprawno dziaania aplikacji.

56

Definicja: Porzdkuje i wspomaga polimorfizm i enkapsulacj dziki umoliwieniu definiowania i tworzenia specjalizowanych obiektw na podstawie bardziej oglnych. Dziedziczenie jest to relacja pozwalajca na wielokrotne uycie tego samego interfejsu Dla obiektw specjalizowanych nie trzeba redefiniowa caej funkcjonalnoci, lecz tylko t, ktrej nie ma obiekt oglniejszy.

58

Dodawanie
Dodajemy do klasy potomnej nowe metody, czsto iteracyjnie.

Przesanianie
Przesaniamy metody klasy bazowej przez nowe implementacje

metod.

Budowa jednej klasy na bazie drugiej, przez dodawanie/przesanianie jej skadowych:


nad-klasa klasa bazowa pod-klasa klasa pochodna od bazowej

Pod-klasa jest szczeglnym rodzajem nad-klasy, W hierarchii klas, najpierw wywoujemy konstruktory nadklasy, potem pod-klasy.
59

class pod-klasa extends nad-klasa { // tre klasy } Kada pod-klasa posiada tylko jedn nad-klas:
Java nie umoliwia wielo-dziedziczenia.
adna klasa nie jest nad-klas samej siebie.

Pod-klasa ma dostp do wszystkich publicznych skadowych swojej nadklasy, Pod-klasa nie ma dostpu do skadowych prywatnych swojej nad-klasy, Skadowa zadeklarowana jako private nie jest dostpna poza klas w ktrej jest zadeklarowana, wliczajc jej pod-klasy.

60

class A { int i; void pokazi() { System.out.println("i: " + i); } } class B extends A { int j; void pokazj() { System.out.println("j: " + j); } void suma() { System.out.println("i + j: " + (i + j)); } }

61

class ProsteDziedziczenie {
public static void main(String args[]) {
A a = new A(); B b = new B(); a.i = 10; a.pokazi(); b.i = 7; b.j = 8; b.pokazi(); b.pokazj(); b.suma();

}
62

Do zmiennej nad-klasy mona przypisa odwoanie do obiektu dowolnej pod-klasy. class NadKlasa { ... } class PodKlasa extends NadKlasa { ... } NadKlasa o1; PodKlasa o2 = new PodKlasa(); o1 = o2 Typ zmiennej, nie obiekt na ktry wskazuje ta zmienna, determinuje osigalne skadowe klasy.

63

Kiedy metoda pod-klasy ma t sam nazw i typ jak metoda nad-klasy, wtedy mwimy e przesania j, Wersja metody dla nad-klasy zostaje ukryta, Przesanianie metod nastpuje tylko gdy nazwy i sygnatury dwch metod s identyczne.

64

Wywoanie konstruktora nad-klasy: super(lista-parametrow) Musi by pierwsz instrukcj konstruktora podklasy: class NadKlasa { ... } class PodKlasa extends NadKlasa { PodKlasa(...) { super(...); ... } ... } W hierarchii klas, najpierw wywoujemy konstruktory nad-klasy, potem podklasy. Jeeli super() nie jest uyte, wywouje si domylny bez-parametrowy konstruktor kadej nad-klasy.

65

Odwoanie do elementu nad-klasy: super.pole super.metoda() Stosowany szczeglnie gdy skadowe pod-klasy przesaniaj skadowe nad-klasy o tych samych nazwach. class A { void pokaz() int i; } Przesonicie pola i meody w nad-klasie: class B extends A { int i; void pokaz(){ super.pokaz(); } B(int a, int b) { super.i = a; i = b;}

66

Przesanianie umoliwia dynamiczne wywoanie metod. Odwoanie do przesonitej metody przez zmienn super-klasy: Java ustala wersj metody na podstawie faktycznego typu obiektu wskazywanego przez zmienn. Wykonywany kod decyduje si w czasie rzeczywistym, nie w czasie kompilacji.
67

Metod deklarowan jako final w nad-klasie nie wolno przesania w pod-klasie Jako e metoda final nie moe zosta przesonita, podlega wczesnemu (wywoanie ustalone w trakcie kompilacji) wywoaniu - czasem uywana do poprawiania wydajnoci systemu. Klasa deklarowana jako final nie posiada potomkw, nie wolno po niej dziedziczy.
68

Sowo polimorfizm oznacza wielopostaciowo. W programowaniu zorientowanym obiektowo mamy do czynienia ze wsplnym interfejsem klasy bazowej oraz rnymi postaciami dynamicznie wizanych metod o tych samych nazwach w klasach pochodnych. Referencje i kolekcje obiektw mog dotyczy obiektw rnego typu, a wywoanie metody dla referencji spowoduje zachowanie odpowiednie dla penego typu obiektu wywoywanego.
70

Definicja: Polimorfizm moemy okreli jako wirtualizacj operacji; jest to moliwo dynamicznego (pnego, realizowanego w fazie wykonania) wizania (ang. late binding, dynamic binding) nazwy operacji do wielu implementacji (metod) tej operacji w rnych klasach pozostajcych w relacji dziedziczenia. Wybr implementacji zaley od nazwy metody oraz od typu dynamicznego tego obiektu, dla ktrego zostaa wywoana operacja, a nie od typu zmiennej, wskazujcej ten obiekt.

71

Jeden interfejs, wiele zachowa:


nad-klasa definiuje wsplne metody dla pod-klas pod-klasa dostarcza specyficzne implementacje dla

niektrych z tych metod

Swoboda definicji wasnych metod przez podklase, pod rygorem zachowania interfejsu dla tych metod. Kombinacja dziedziczenia i przesaniania: nadklasa opisuje format metod realizowanych przez pod-klas.
72

Kolejna metoda separacji interfejsu od implementacji, Polepsza organizacj i czytelno kodu, Pozwala na tworzenie elastycznych programw, ktre mog by rozwijane w miar potrzeb, take pniej.

73

Metoda dla ktrej nie istnieje implementacja. abstract typ nazwa(lista-parametrow); Metody:

konkretne - mog by przesonite przez pod-

klasy abstrakcyjne - musz zosta przesonite

Nie wolno definiowa abstrakcyjnych konstruktorw, ani metod statycznych.


75

Klasa ktra posiada metody abstrakcyjne musi sama by deklarowana jako abstrakcyjna. abstract class { ... } Klasa abstrakcyjna nie posiada obiektw; nie wolno uywa operatora new na takiej klasie. Pod-klasa klasy abstrakcyjnej:

implementuje wszystkie metody abstrakcyjne lub jest sama deklarowana jako abstrakcyjna.

Nie wolno tworzy obiektw klasy abstrakcyjnej. Wolno tworzy odwoania do klasy abstrakcyjnej.

76

Obiekt: Autobus --------------------Uruchom() Zatrzymaj() W_prawo() W_lewo()

Definicja: Interfejsem nazywamy zbir operacji opisujcych wymagane zachowania. Interfejsy w Javie:
Interfejs to zbir deklaracji metod bez

ich implementacji, Interfejs ustala jakie dania mona wysya pod adresem obiektu.

78

Interfejs jest podobny do klasy ktra posiada tylko metody pozbawione implementacji. wiele klas moe implementowa jeden interfejs jedna klasa moe implementowa wiele interfejsw Klasa implementuje dany interfejs jeli dostarcza definicji dla wszystkich jego metod.
79

dostp interface nazwa {


typ metoda1(lista-parametrw); ... typ metodaN(lista-parametrw); typ zmienna1 = warto; ... typ zmiennaM = warto;

Dwa rodzaje dostpu:


public moe by uyty gdziekolwiek w programie
domylny dostpny tylko w biecym pakiecie

Zmiennie s static, final, inicjowane sta.


80

Oglna posta definicji klasy: dostp class nazwa extends nad-klasa implements interfejs1, ..., interfejsN { ... } Dostp public lub domylny. Metody implementujce interfejs musz by public, oraz posiada dokadnie ten sam typ jak w interfejsie.

81

Deklaracja zmiennej ktrej typem jest interfejs: MojInterfejs mi; Przez zmienn ktrej typem jest interfejs mona wywoa dowoln metod w tym interfejsie. Nie mona wywoa metody ktra nie jest w interfejsie. Wartoci zmiennej moe by odwoanie do obiektu dowolnej klasy ktra implementuje ten interfejs. class Klasa implements MojInterfejs { ... } MojInterfejs mi = new Klasa();

82

Polimorfizm przez Interfejs. Klasa, ktra zawiera interfejs, ale nie implementuje wszystkich jego metod, musi by abstrakcyjna. Jeden interfejs moe dziedziczy po innym: interface A {

void metoda1();
void metoda2(); }

interface B extends A { void metoda3(); } Klasa implementujca musi dostarczy definicji dla wszystkich metod w kolejnych interfejsach.
83

Obsuga bdw wymuszona przez jzyk programowania:


wyjtek jest obiektem, sygnalizowany z miejsca bdu,

przechwytywany przez odpowiedni procedur obsugi.

Czym jest wyjtek ?


Alternatywna cieka sterowania programu, w przypadku wykrycia bdw.

85

Cechy: Kilka wykona rwnolegych. Wielowtkowo jest czci jzyka. Wtek jest obiektem. Blokowanie obiektw wspdzielonych. Programowanie niezalene od faktycznej liczby procesorw.

86

class Wyswietl { public static void main(String args[]) { String s = 1 mila to ; double d = 1.609; System.out.print(s); System.out.print(d); System.out.print( kilometrow\n); } }

89

import java.io.*; class Przyjmowanie { public static void main(String args[]) { String input = ; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println(Wpisz tekst: ); try { input = in.readLine(); } catch(IOException e) { System.out.println(e); } System.out.print(Wpisales: ); System.out.println(input); } }

90