ProjektowanieObiektowe wstep

background image

Projektowanie obiektowe wst p

ę

Ad a m migielski

Ś

a d a m. s migiels ki@g m ail.co m

background image

Cel:

Cele m a r ty k u u je s t ag o d n e w p r o wa d z e nie d o p r o je k t ow a nia o biek t o weg o,

ł

ł

p r z e d s t awie nie z a s a d nic zyc h idei i wr a z z z a s t o s o w a nie m w d w óc h w z o rc ac h.

Wymagania:

Zak a d a m z n a j o m o

C + + , n a p o zio mie p o z w alaj cy m n a z r o z u mie nie c z e m u

ł

ść

ą

d e s t r u k t o r p o wi nie n by wir t u al ny.

ć

Oc zywi cie nie c hc z n iec h ca nik og o. Tylko p a mi t ajcie, t o nie je s t k u r s j zy k a,

ś

ę

ę ć

ę

ę

wi c nie z n a j d ziecie t u in t e r p r e t acji k o d u. Zak a d a m, e k a d y r o z u m ie co pi s z .

ę

ł

ż

ż

ę

Sa meg o k o d u nie b d zie z r e s z t z a d u o. I b d zie t o b a r d ziej p s e u d o k o d C + + ,

ę

ą

ż

ę

ni r e al nie d zi a aj cy.

ż

ł ą

Pojawi si t e Java. Je d n a k tylk o jak o p r zy k a d d o b ryc h p o m y s ów.

ę

ż

ł

ł

background image

Interfejs:

Co to ?

In te rfej s t o w s zy s t kie p u blic z n e p ola i m e t o d y n a s z ej kla sy. Czyli t o jak
k o m u ni k u je my si z ni .

ę

ą

Na idee in t e rfejs u n a t k n

e m si p o r a z pie rw s z y d aw n o d aw n o t e m u, z a la s a mi i

ął

ę

g ó r a mi, w biblio tece DirectX 7. Oc zywi cie wi n a pi nie je s t z b y t o biek t o we, wi c

ś

ę

t a k n a p r a w d b a r d ziej p o s u giwa o si ni m nic zy m u c h wy t e m.

ę

ł

ł

ę

Na in te rfej sy z p r a w d ziweg o z d a r z e nia p r zy s z o m i p o c z e k a je s z c z e ja ki c z a s,

ł

ć

ś

Java. Nie t o, e by Javy j u w te dy nie by o, p o p r o s t u jej nie z n a e m.

ż

ż

ł

ł

In te rfej sy s m oi m z d a nie m n ajwa niej s zy m ele m e n t e m p oli m o rfi z m u. Bez nic h

ą

ż

ca y m e c h a ni z m w z a s a d zie by by d o nic z eg o.

ł

ł

int e rf ace Zega r {

flo a t Up y ni tyC z a s();

ł

ę

}

W C + + nie m a t a kiego p o j cia. S je d n a k kla sy c zy s t o wir t u al n e, k t ó r e ideal nie

ę

ą

z a s t p u j in te rfej sy. Ty m k t ó r zy nie wie d z wy mie ni cec hy Java in te rf ace is t o t n e

ę

ą

ą

ę

d la n a s z e g o a r ty k u u:

ł

m e t o d y in te rf ej s u s p u blic z n e.

ą

m e t o d y in te rf ej s u s a b s t r a kcyj n e. a d nyc h d efi nicji.

ą

Ż

in te rfej s nie m a k o n s t r u k t o r a.

in te rfej s m o e m i e tylk o p ola p u blic z n e.

ż

ć

Klasy a b s t r a kcyj n e s nieco m n iej o g r a nic z o n e. Cz s t o p r o w a d zi t o d o sy t u acji

ą

ę

g dy kla s a a b s t r a kcyj n a je s t tylk o c z

ciowo wir t u al n a. No b o c z e m u pi s a jak

ęś

ć

ąś

f u n k cje d la w s zy s t kic h i m ple m e n t acji, je eli w s z d zie je s t ideal nie t a k a s a m a?

ż

ę

Po niew a k t o z a jaki c z a s, m o e c hcie n a pi s a t a k we r sj , k t ó r a b d zie si

ż

ś

ś

ż

ć

ć

ą

ę

ę

ę

wyr ó nia :)

ż

ć

Po co nam to ?

Ka d a gr a p o t r z e b u je zlic z a c z a s. Mier zy my c z a s ge n e r acji kla t ki, c z a s p o mi d zy

ż

ć

ę

k olej ny mi tick'a mi d o o blic z e fi zyc z nyc h, n a j r ó niej s z e in n e c z a sy d l a celów

ń

ż

s t a ty s tyc z n yc h it d. Po niewa je s t d o sy c z s t o wyk o r zy s tyw a n e tw o r zy my s o bie

ż

ć

ę

kla s Zegar, a by nie m u sie k a d o r a z o w o pi s a t eg o s a m e g o.

ę

ć

ż

ć

cla s s Zega r {

p u blic:

Zegar();

~ Z eg a r();

voi d Star t();

voi d Sto p();

flo a t Up y ni tyC z a s();

ł

ę

p riva te:

background image

lo n g lo ng o s t a t niC z a s;

}

Nie t r u d n o wyo b r a zi s o bie sy t u acj w k t ó r ej o d k rywa my, e je d n a kla s a Zega r t o

ć

ę

ż

t r o c h m a o n a n a s z e p o t r z e by. Je li p r z y k a d o w o k t o r z u ci gr a n a t, k t ó ry m a

ę

ł

ś

ł

ś

wy b uc h n

p o 5 s e k u n d ac h, t o c hcieliby my m i e z e g a r, k t ó ry s t a r t u je r a z, i

ąć

ś

ć

z w r aca c z a s o d s t a r t u. A d o m ie r z e nia c z a s u r e n d e r o w a nia kla t ki, faj nie by o by

ł

m i e z e g a r, k t ó ry p o d aje c z a s nie o d s t a r t u, lec z o d p o p r z e d nieg o p y t a nia.

ć

cla s s Zega rSt a t {

...

}

cla s s Zega rSt o p e r {

...

}

it d.

Prowa d zi t o d o p o w s t a nia kilk u kla s Zega r... . No i faj nie. W z ale n o ci o d p o t r z e b

ż

ś

tw o r z y my s o bie o d p o wie d ni o biek t i w s zy s t k o d zi a a. Tr z e b a s o bie je d n a k

ł

z d a w a s p r aw , e t a ki k o d je s t r ac z ej t r u d n y w z a r z d z a ni u. Dowol n a z mi a n a w

ć

ę ż

ą

n a s zyc h kla s ac h b d zie p o ci ga z a s o b k o niec z n o

w p r o w a d z e nia z mi a n we

ę

ą ć

ą

ść

w s zy s t kic h o d w o a niac h. Po n a d t o z k a d eg o Zega r a k o r z y s t a si in ac z ej. Z

ł

ż

ę

p o m o c p r zyc h o d zi n a m p oli m o rfi z m. Os t a t ec z nie ws zy s t k o t o s z e g a ry.

ą

ą

Wyci ga my, wi c c z e

ws p ól n p r z e d n a wia s, n a z ywa my j Zegar, a n a s z e kla sy

ą

ę

ść

ą

ą

p o niej d zie d zic z . Klas a Zegar jes t in te r fejs e m, a p o t o m n e s jego

ą

ą

i m ple m e n t acja mi.

cla s s Zega r {

p u blic:

vir t u al ~ Z e ga r() { ; };

vir t u al floa t Up yni tyC z a s() = 0;

ł

ę

}

cla s s Zega rI m pl 1 : p u blic Zega r {

}

cla s s Zega rI m pl 2 : p u blic Zega r {

}

Jak pisa interfejsy ?

ć

Tak ja k w Javie. Ko m ple t nie p u blic z n e i a b s t r a kcyj n e. W t e n s p o s ó b n a r z u c a my
kla s o m, tylk o t o co m a j r o bi , a nie jak. Daje t o le p s z za r z d z al n o

k o d u.

ą

ć

ą

ą

ść

Kiedy pisa interfejsy ?

ć

Os t a t ni mi c z a s u fa ni Te s t Drive n Develo p m e n t r o s n w si

. Sa m d o nic h n ale

.

ą

łę

żę

In te rfej sy t w o r z y my pi s z c t e s ty, a t e s ty pi s z e m y jes zc z e z a ni m n a pi s z e m y t o co

ą

b d zie my t e s t ow a . To co r o bi my je s t wa niej s z e o d t eg o jak t o r o bi my.

ę

ć

ż

background image

Obiekt funkcyjny:

Co to ?

Obiek t f u n kcyj ny t o n aj p r o ciej m ó wi c o biek t kla sy z p r z e d e fi niowa ny m

ś

ą

o p e r a t o r e m (). Po niewa o p e r a t o r t e n m o e p r zyj m o w a d o w ol n ilo

ż

ż

ć

ą

ść

a rg u m e n t ó w i z w r ac a d o w ol ny m ty p, o biek t z a c zy n a z a c h o wywa si jak

ć

ć ę

f u n k cja.

Po z a ty m t o ty p o wy o biek t.

Po co nam to ?

Do s t aje my d o n a pi s a nia f u n kcj voi d go t oxy(u n sig n e d in t x, u n sig n e d in t y) d la

ę

k o n s oli Win d ow s. Jes t je d n a k m a y h ac zy k, a plik acja w k t ó r ej m a t o by u y te m a

ł

ć ż

kilka w t k ów, a k a d y w te k m a w a s n k o n s ol . Dla tyc h co nie wie d z

ą

ż

ą

ł

ą

ę

ą

p r z e s u ni cie k u r s o r a n a k o n s oli Win d ow s wy m ag a u c h wy t u d o s t r u k t u ry

ę

Scree nBufe r t ej k o n s oli. Jak wi d a m a m y p r o ble m, p o niewa nie m a jak p r z e k a z a

ć

ż

ć

t eg o u c h wy t u. Naj p r o ciej by o by s tw o r zy z m ie n n a glo b al n , ale s a mi nie wie my

ś

ł

ć

ą

ile tyc h w t k ów z k o n s ola mi b d zie.

ą

ę

cla s s GotoXY {

p u blic:

Go t oXY(co n s t Scree nBufe r &arg) : s c re e n(a rg) {

;

}

voi d o p e r a t o r () (u n sig ne d in t x, u n sig n e d in t y);

}

Ter a z wy s t a rc zy w k a d y m w t k u u t w o r zy o biek t:

ż

ą

ć

Got oXY g o t oxy(ActiveScree nBufer);

I j u m a m y d zia aj c f u n kcj go t oxy(50,1 0 0); :)

ż

ł ą ą

ę

background image

Delegacja:

Co to ?

Delegacja t o z r z u ce nie o d p o wie d zial n o ci z a wyk o n a nie jakiej f u n kcjo n al n o ci

ś

ś

ś

n a in n kla s . Deleg u je my p r o ble m :)

ą

ę

Po co nam to ?

C za s a mi kie dy pi s z e my jak

kla s wie my, e b d zie co r o bi , tylko nie wie my co

ąś

ę

ż

ę

ś

ć

t o d o k a d nie b d zie. Pr zyk a d e m m o e by o b r a z e k wek t o r owy. Na o b r a z k u

ł

ę

ł

ż

ć

m a m y ele m e n ty. Je d n a k nie wie my co t o z a ele m e n ty. Chce my a by t a d ecy zj a
z o s t a a p o d j t a j u p o d c z a s d zia a nia p r o g r a m u. Two r zy my, wi c co n a t e n

ł

ę

ż

ł

ę

ś

w z ó r:

cla s s Ele m e n t {

p u blic:

Ele m e n t(co n s t Rys owal ny & a rg) : o bie k tF u n k cyj ny(arg) {

;

}

voi d ry s uj(in t x, in t y) {

o biek tFu n kcyj ny(x,y);

}

}

Ele m e n ty o b r a z k a d eleg u j ry s ow a nie, d o in nyc h kla s.

ą

Czemu obiekt funkcyjny ?

Nie je s t t o k o niec z n e. Rów nie d o b r a, jak o p e r a t o r (), b d zie k a d a in n a m e t o d a.

ę

ż

Ist o t n e jes t tylk o a by by a w in te rfej sie z n a ny m kla sie d eleg uj cej.

ł

ą

background image

To ju jest koniec ?

ż

W z a s a d zie t u t aj m o n a by o by p r z e r w a t e n a r ty k u , a z ai n t e r e s o wa nyc h o d e s a

ż

ł

ć

ł

ł ć

d o k si g ar ni, alb o p o d ga r

lin k ów.

ę

ść

Pr z e d s t a wi e m d w a n ajwa niej s z e ele m e n ty p r oj ek t o wa nia o biek t ow eg o. Res z t a

ł

ż

je s t j u tylk o ich u miej t ny m

c z e nie m.

ż

ę

łą

My l je d n a k, e p o k a z a nie kilk u w z o rc ów wr a z z wyja nie nie m jak z o s t a y

ś ę

ż

ś

ł

z b u d o w a n e, m o e by b a r d z o r o z wijaj ce. St d je s z c z e o pi s d w óc h w z o rc ów.

ż

ć

ą

ą

background image

Prototyp:

Opis

Jes t t o w z o r z ec k r eacyj ny. O z n ac z a t o, e jego cele m je s t tw o r z e nie in s t a n cji.

ż

G ów n p r z e s a n k a by go z a s t o s o w a je s t nie z n aj o m o

k o n k r e t n eg o ty p u w

ł

ą

ł

ą

ć

ść

m o m e n cie k o m pilacji. Two r zy my wi c in te rfej sy Pro t o ty p ó w:

ę

cla s s Pro t o ty p {

vir t u al Pro t o ty p * Klo n uj() = 0;

vir t u al ~ P r o t o ty p() {;};

}

A n a s t p nie ich i m ple m e n t acje. Oc zywi cie i m ple m e n t acji m o e by wi cej ni

ę

ś

ż

ć

ę

ż

je d n a.

cla s s Klas aI m plPro t o ty p : p u blic Prot o ty p {

vir t u al Klas aI m plPr o t o ty p * Klo n uj();

vir t u al ~ Klas aI m plPr o t o ty p();

}

Meto d a Klo n u j() m a z a z a d a nie z w r óci k o pi o biek t u. Mo n a p o p r o s t u z w r óci

ć

ę

ż

ć

n o wy o biek t k o n s t r u k t o r e m k o pi u j cy m *this.

ą

Ter a z tw o r zy my s o bie kla s Fab ry k aI m plPr o t o ty p ó w

ę

cla s s Fab ry k aI m plPro t o ty p ów {

Fab ryk aI m plPro t o ty p ó (Im plPro t o ty p u 1 *, Im plPr o t o ty p u 2 *);

ł

Pro t o ty p 1 * Zro bI m plPro t o ty p u 1();

Pro t o ty p 2 * Zro bI m plPro t o ty p u 2();

}

Jak to dzia a ?

ł

Powie d z m y, e c hce my z r o bi a plikacj w k t ó r ej b d zie m o n a z m ie ni s tyl

ż

ć

ę

ę

ż

ć

in te rfej s u. Nie c hce my tylk o z m ie ni o b r a z k ó w. Chce my m ie m o liwo

wy mia ny

ć

ć

ż

ść

ca ej logiki ry s u j cej jego ele m e n ty.

ł

ą

Po u r u c h o mie ni u a plik acji jak o u s t ala m y, k t ó r wer sj UI n ale y wyk o r zy s t a .

ś

ą

ę

ż

ć

Two r zy my s o bie o biek t kla sy Fab ryk aEle m e n t ó wUI. W k o n s t r u k t o r z e
p r z e k a z u je my jej o d p o wie d nie o biek ty. O d t e r a z pi s z e m y s o bie n a p r z y k a d:

ł

Ok n o *ok n o = Fab ryk aEle m e n t ó wUI.Zro bOk n o();

I d o s t aje m y o d p o wie d ni o biek t i m ple m e n t u j cy in te rfej s o k n o.

ą

Ma my in t e rfej s i jego i m ple m e n t acje. Meto d a Klo n u j b d zie wywo ywa n a

ę

ł

p oli m o rfic z nie. D zi ki c z e m u z w r aca ny b d zie z a w s z e w a ciwy o biek t.

ę

ę

ł ś

Ma my t e d eleg acje. Meto dy Zro bI m plPr o t o ty p u wywo uj m e t o d Klo n u j i

ż

ł ą

ę

z w r acaj t e n s a m wy nik.

ą

background image

Py ek:

ł

Opis

Jes t t o w z o r z ec s t r u k t u r al ny. Jego cele m je s t, wi c s t r u k t u ry z acj a o biek t ów.

ę

Ko n k r e t niej, jes t w z o r z ec jak n a we t b a r d z o d u a ilo

o biek t ó w m a w s p ó d zieli

ż

ść

ł

ć

p ew n ilo

o biek t ów.

ą

ść

Pr zyk a dy growe . Ma my b a r d z o d u o m o d eli k o r zy s t aj cyc h z tyc h s a m yc h

ł

ż

ą

t e k s t u r. Nawe t c hy b a le p s z y m a m y b a r d z o d u o o biek t ów k o r zy s t aj cyc h z tyc h

ż

ą

s a m yc h m o d eli. Powie d z m y, e r o bi my siecioweg o f p p. Fab u a ty p o w a d o b ól u:

ż

ł

Wojn a w ca y m ws z ec h wiecie . Grac z e (d u o, s e t ki, ty si ce) d ziel si n a d wie

ł

ś

ż

ą

ą ę

g r u p y, a p o t e m z ac zy n a si r eg ula r n a bi tw a o ja ki p u n k t n a m a pie. W g r z e

ę

ś

wy s t p u j e kilka n a cie ty p ó w b r o ni. I jakie z o n a s p o d k u si o d o wy wietla nia

ę

ś

ś ł

ł

ś

lec cyc h p o cis k ó w ;) Ma my s e t ki ty si cy o biek t ó w n a s ce nie. Ale m o d eli b d zie

ą

ę

ę

d u o m niej. Oc zywis te je s t, e m o d ele n ale y w s p ó d zieli .

ż

ż

ż

ł

ć

Jak to dzia a ?

ł

W z a s a d zie, s p r a wa wy d aje si oc zywis t a. Two r zy m y s o bie z a r z d c e m o d eli.

ę

ą

clas s Fab ryk aPylkow {

Pylek Zwr ocPylek( kl uc z )

}

Meto d a Zwr ocMo d el n a p o d s t awie kl uc z a s twie r d z a c zy t a ki m o d el je s t
z a a d o w a ny, a d u je m o d el, je li je s z c z e nie by z a a d o w a ny, i z w r ac a ja k

ł

ł

ś

ł

ł

ąś

r efe r e ncj d o nieg o. Sa m m o d el p o t r afi si n a ry s ow a n a p o d s t a wie inf o r m acji

ę

ę

ć

p r z e k a z a nyc h p r z e z o biek t z e w n t r z n y.

ę

clas s Pylek {

O p e r acja( s t a nO biek t uZew n e t r z n eg o );

}

Gd zie t u p oli m o rfi z m ? Klas m o d eli m o e by s p o r o. Mog by m o d ele 3 d, m o g

ż

ć

ą

ć

ą

by 2 d, m o g by a ni m o w a n e, lu b nie.

ć

ą

ć

A co z m o d ela mi, k t ó r e m o g by z m ie nia n e w c z a sie ? Na p r z y k a d c hce my m ó c

ą

ć

ł

o d s t r z eli r k p r z eciw nik owi, ale t a k, e by ist o t ny by p u n k t t r afie nia. Po p r o s t u

ć ę ę

ż

ł

tw o r z y my Im ple m e n t acjePylk u, k t ó r a nie je s t w s p ó d zielo n a.

ł

Gd zie w ty m d eleg acja ? W z a s a d zie t o nie m a. Nie m niej tw o r zy my Py ki w in n ej

ł

kla sie. C zyli t a k jak by d eleg uje my s t w o r z e nie Py k u d o Fab ryki.

ł

background image

Tym razem to koniec.

Nie m a m a m bicji o pi s a w s zy s t kic h w z o rc ów, b o t o m a t e ria n a p o w a n a

ć

ł

ż

p u blik acj , alb o r ac z ej kilka t a kic h p u blik acji.

ę

O pis ó w w z o r ców je s t s p o r o. O d siebie m o g p oleci Desig n Pat te r n s: Ele m e n t s of

ę

ć

Reu s a ble Object - Orie n t e d Softwa r e c zyli p o p ol s k u Wzo rce p r o je k t o we
a u t o r s tw a Erich Ga m m a, Rich a r d Hel m, Ral p h Jo h n s o n, Jo h n Vlissi d e s.

Ko n s t r u k tyw n a k ry tyk a mile wid zia n a.


Document Outline


Wyszukiwarka

Podobne podstrony:
projekt wstep do sieci wymagania
Projekt - Wstęp, Studia, Sem 5, SEM 5 (wersja 1), Technologia Robót Budowlanych, Technologia robót b
projekt-wstep do sieci-wymagania
PSL Projekt ~$Wstęp
Projekt 1 wstęp
Projekt 2 Wstęp teoretyczny
Projektowanie oprogramowania Wstep do programowania i techniki komputerowej
rozdział 9 Projekt Europa, Wstęp do filozofii współczesnej A.Nogal
projekt wentyle wstep
Projekt Inż, Wstęp, Laboratorium programowania niskopoziomowego
8. METODY OCENY EFEKTYWNOŚCI PROJEKTÓW INWESTYCYJNYCH, 1 Wstęp
Metod oceny projektów gospodarczych, met. oceny proj. gosp. wyklad, Wstęp do metodyki inwestowania
zadanie dodatkowe, af metody oceny projektow inwestycyjnych, WSTĘP
Wstęp do Projektu
BO ZP Wyklad Wstep do Zarzadzania Projektami

więcej podobnych podstron