Programowanie obiektowe.pdf

(729 KB) Pobierz
110594788 UNPDF
PODSTAVITY
PROGRAMOWANIA
OBIEKTOWEGO
15.1. Wprowadzenie
l Programowanie obiektowe jest nowoczesn4 technik4 progTamowa.
nia, ktra zosta-a upowszechniona w ostatnich latach' Programowanie
obiektowe polega na operowaniu w programie obiektami, ktrymi s
dane wraz z tak zwanymi metodami, czyli procedurami i funkcjami,
ktre mogq by wykorzystane wycznie dla cileokrelonych danych'
Ide programowania obiektowego zilustrujemy na przykadach w
kolejnych punktach niniej szego rozdzjau.
Zmienna obiektowa lub po prostu obiekt jest elementem pewnej
klasy. Klasa jest to typ obiektowy, ktry definiujemy w podobny sposb
jak typ rekordowy, zastpuj4c sowo kluczowe record sowem k]uczo.
wym object.
Rozwamy nastpuj 4cy fragment programu:
tyPe
tekst20 : stringl20l;
Osoba : object
nazwisko: tekst2O;
imie: tekst20;
adres: tekst20;
end;
Powyszy fragment programu definiuje typ obiektowy (klas) o
nazwie osoba zawieraj4cy nastpuj4ce pola: nazwisko, imie oraz adres.
Dostp do tych pI otaz wyprowadzanie ich zawaoci powinno si
odbywa wyqcznie przy wykorzystaniu metod, czyli procedur lub fun-
kcji. Nagwki metod powinny by zadeklarowane w definicji klasy,
na'tomiast ich tre naley poda w dalsz}'.m ci4gu progTamu'
Przypumy, ze dla kiasy osoba chcemy mie dwie metody: pierw-
szq o r:.azwie Init suc4 do wprowadzania danych do pl obiektu oraz
drug4 o nazwie Drukuj wykorzystywan4 do wyprowadzenia danych
zawartych w polach obiektu. (nazwa Init powinna by zawsze stosowa-
na dla metody inicjuj4cej obiekt). Deklaracja klasy osoba moe zaem
zostac tozszerzarua w sposb nastpuj4cy:
tyPe
tekst20 : stringl2)l;
osoba : object
nazwisko: tekst20;
imie: tekst20;
adres: tekst20;
procedure fnit(p nazwisko,
procedure Drukuj;
end;
p_imie, p_adres : tekst20 ) ;
A oto przykadowa tremetod Init oraz Drukuj:
procedure osoba. Init(p nazwisko, p_imie, p_adres : tekst2O ) ;
begin
nazwisko :: p nazwisko;
imie : : p_imie;
adres :: p adres
end;
procedure Osoba.Drukuj ;
begin
writeln(nazwisko : 20, imie : 20, adres : 20)
end;
Zwrrny uwag, e w instrukcji procedure przed nazw4 metody
wystpuje nazwa klasy wTaz z kropk4 oddzielajqc te dwie nazvq1..
Metoda zdefiniowana w danej klasie moe by stosowana wy4cznie do
wykonywania operacji na polach okrelonych w tej klasie' Pola danego
obiektu w momencie wykonywania metody s4 automatycznie dostpne.
Przypomnijmy, e w celu uzyskania dostpu do pI rekordu laLey
poda deskryptor pola lub wykorzysta instrukcj with. Natomiast w
przypadku obiektu wystarczy wywoa metod w ten sposb, ze naj-
pierw podajemy nazw obiektu, a nastpnie po kropce nazw metody.
Na przykad dla rozwazanej klasy osoba zadeklarujemy najpierw dwa
obiekty o nazwach X, Y, d nastpnie przypiszemy polom tych obiektw
pewne wartoci'Deklaracje obiektw realizuje si nastpuj4co:
var
rKowalskir
r' Jan' r'Warszawa' ) i
co powoduje, e pola obiektu x: nazwisko, imie, adres przyjm4 wartoci
'Kowalski ', 'Jan', ''Wa-rszawa'. Ilustruje to rys. 15.1.
nazwisko | 'Kowalski'
imie | 'Jan'
adres | 'Warszawa'
Rys. 15.1. Zavtartoci pl obiektu x po wykonaniu metody Init.
Przypisanie waoci polom obiektu y wykonuje si analogicznie:
y. rni( |Tomaszewski' , lPiotr' , 'Kaowice' ) ;
Zavtafto pI obiektu y: nazwisko, imie, adres bdzie kolejno
'Tomaszewski', 'Piotr', 'Katowice'. Ilustruje to rys. 15.2.
X, Y: osoba { zadeklarowanie obiektw klasy osoba ]
W celu przypisania polom obiektu x konkretnych waoci wywou.
je-y metod Init w postaci:
x. Init(
nazwisko I 'Tomaszew-
I ski'
adres
I 'Piotr'
'Katowice'
Rys. 15.2. Zavlattoci pl obiektu y po wykonaniu metody Init.
Warto zwrlci uwag na fakt, e identyfrkacja obiektu, dla ktrego
ma by dokonana operacja przypisania odbywa si poprzez podanie
odpowiedniej nazwy w wywoaniu' Jeeli napiszemy x.Init, to operacja
zostanie wykonana dla pI obiektu x, natomiast y.Init powoduje wyko-
nanie operacji dla pl obiektu y. Naley te podkreIi,ze metoda Init
moe by wykorzystana wy4cznie dla obiektw klasy osoba. Bdne
byoby wywoanie postaci :
Tnit( rTomaszewskit,'Piotr', rKatowice' ) ;
z batdzo prostego powodu, a mianowicie' e nie s4 okreIone pola,
ktrym naley przypisa wartoci'
Do wyprowadzenia zawaocipl obiektw klasy osoba posuy
nam metoda Drukuj wywoana naspujqco:
x. Drukuj ;
y. Drukuj ;
Najpierw zostan wyprowadzole zawaoci pl obiektu x' a nas-
tpnie obiektu y. Pena tre programu ilustrujcego wykorzystanie
klasy osoba jest przedstawiona poniej.
Program 15.1
program Baza_danych;
{ Program ilustrujcy wykorzystanie obiektw }
tyPe
tekst20 : stringI2O);
{ zadeklarowanie klasy Osoba }
imie
Osoba : object
nazwisko: tekst20;
imie: tekst20;
adres: tekst20;
procedure Tnit(p_nazwj-sko, p_imie, p_adres : tekst20 ) ;
procedure Drukuj;
end;
procedure osoba. rnit(p_nazwisko,p-imie/ p_adres : teks20) ;
begi nazwisko :: p nazwisko;
imie :: p_imie;
adres :: p_adres
end;
procedure Osoba. Drukuj ;
begin
writeln(nazwisko : 20, imie : 20, adres : 20)
elrd;
var
Xry: Osoba;
{ zadeklarowanie obiektw k1asy osoba J
begin
x. Init( rKowal-ski' r tJant r tWarszawa' ) ;
y. Tnit( rTomaszewski' r'piotrr,
rKatowice' ) ;
x - Drukuj ;
y. Drukuj
end.
Czytelnik mgby odnie teraz wtazenie, e programowanie obiek-
towe jest bardzo mao oglne. Metod Init mona bowiem wykona
wy4cznie dla obiektw nalecych do klasy osoba. Tak jednak nie jest,
poniewa moemy tworzy pewn hierarchi klas, w ktrej obiekt
umieszczony niej w hierarchii dziedziczy wszystkie cechy obiektu
umieszczonego wyej. Dziedziczy, t,zn. ma dostp do wszystkich pl i
moe wykorzystywa wszystkie metody obiektw umieszczonych wyej
w hierarchii. Zanim omwimy to dokadniej, rczwazmy jeszcze metod
Init zadeklarowl]l4 dla klasy osoba umoliwiaj 4cq wczyanie wartoci
pl danego obiektu klasy osoba. Wartociprzypisywane poszczegInym
polom danego obiektu klasy osoba byy podane jako parametry aktual-
ne przy wywoaniu metody. Rwnie dobrze waoci te mog by
wczytywane z zewn4ttz. Ilustruje to ponisza metoda Init:
procedure Osoba.Init;
begin
writeln ( ' Podaj nazwisko, imi oraz adres ' ; ;
Zgłoś jeśli naruszono regulamin