VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:44/93
RoΦnφk:1993
Rubrika/kategorie: Co (ne)najdete ve slovnφku

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

Encapsulation

Mßte-li za ·kol zvlßdnout n∞co, co je opravdu velkΘ a slo₧itΘ (nap°φklad rozsßhl² program), pak jednφm z nejv∞tÜφch problΘm∙, na kter² p°itom narazφte, je schopnost orientovat se ve velkΘm mno₧stvφ vzßjemn²ch zßvislostφ a vazeb. Pak jist∞ nßle₧it∞ docenφte, jak dobrΘ je udr₧ovat si ve vÜem po°ßdek.

Pokud jde o programovßnφ, zde se postupn∞ vyvinulo vφce r∙zn²ch postup∙, technik a nßstroj∙, kterΘ se sna₧φ zp°ehlednit velkΘ programovΘ celky, vnΘst do nich urΦit² °ßd a usnadnit jejich zvlßdnutφ. Pat°φ sem nap°φklad strukturovanΘ programovßnφ (Structured Programming) Φi tzv. objektov∞ orientovanΘ programovßnφ (zkratkou: OOP, od: Object Oriented Programming).

Jednou z hlavnφch myÜlenek objektov∞ orientovanΘho programovßnφ je zßsada, ₧e to, co logicky pat°φ k sob∞, by m∞lo tvo°it jeden logick² celek. P°edstavme si nap°φklad, ₧e modelujeme chovßnφ n∞jakΘ soustavy, slo₧enΘ z vφce jednotliv²ch prvk∙. Kvantitativnφ stav ka₧dΘho prvku popφÜeme urΦit²m poΦtem prom∞nn²ch a jeho chovßnφ vyjßd°φme operacemi (tj. procedurami Φi funkcemi), kterΘ budou s t∞mito prom∞nn²mi pracovat. Abychom si udr₧eli ve v∞cech p°ehled, nabφzφ nßm objektov∞ orientovanΘ programovßnφ mechanismus, pomocφ n∞ho₧ m∙₧eme sdru₧it do jednoho celku prom∞nnΘ, popisujφcφ dan² prvek, a souΦasn∞ s tφm i operace, kterΘ modelujφ jeho chovßnφ. V²sledn² celek pak m∙₧e velmi p°irozen²m a intuitivnφm zp∙sobem reprezentovat modelovan² prvek jako takov².

KonkrΘtnφ mechanismus, kter² je objektov∞ orientovan²m programovßnφm za tφmto ·Φelem poskytovßn, se v angliΦtin∞ oznaΦuje jako encapsulation a v doslovnΘm p°ekladu znamenß zapouzd°enφ (resp. zapouzd°ovßnφ). V²sledn² celek, kter² vznikne zapouzd°enφm prom∞nn²ch a operacφ (Φi jin²ch programov²ch objekt∙, podle konkrΘtnφho jazyka), se nejΦast∞ji oznaΦuje jako t°φda (class). Jednou z v²znamn²ch v²jimek je objektov∞ orientovan² Turbo Pascal firmy Borland (od verze 5.5), kter² mφsto pojmu t°φda pou₧φvß termφn objekt (object).

DalÜφ oblastφ, kde se m∙₧eme setkat s termφnem encapsulation, jsou poΦφtaΦovΘ sφt∞ a komunikace. Zde tento termφn oznaΦuje techniku, kterß °eÜφ pon∞kud jin² problΘm ne₧ u objektov∞ orientovanΘho programovßnφ.

V poΦφtaΦov²ch sφtφch se mohou pou₧φvat r∙znΘ p°enosovΘ technologie a r∙znΘ p°enosovΘ protokoly. P°edstavme si nap°φklad dv∞ lokßlnφ sφt∞ A a B vzßjemn∞ propojenΘ sφtφ C, kterß je jinΘho typu, a tudφ₧ pou₧φvß i jinΘ p°enosovΘ protokoly ne₧ sφt∞ A a B. Majφ-li pak b²t p°enesena n∞jakß data ze sφt∞ A do sφt∞ B (p°es sφ¥ C), m∙₧e to b²t realizovßno dv∞ma principißln∞ odliÜn²mi zp∙soby.

Prvnφ z nich spoΦφvß v tom, ₧e p°i p°echodu ze sφt∞ A do sφt∞ C jsou p°enßÜenß data transformovßna (tj. jsou "p°elo₧ena" do takovΘho tvaru, kter² odpovφdß p°enosov²m protokol∙m pou₧φvan²m v sφti C, a na v²stupu ze sφt∞ C do sφt∞ B jsou zase transformovßna zp∞t do p∙vodnφho tvaru). Druhß varianta spoΦφvß v tom, ₧e p°enßÜenß data se ponechajφ v p∙vodnφm formßtu a pro pot°eby p°enosu p°es sφ¥ C se pouze vlo₧φ do takovΘ "obßlky", se kterou sφ¥ C pracuje (tj. na vstupu do sφt∞ C se tato data vlo₧φ do p°enosovΘho rßmce Φi paketu, se kter²m sφ¥ C pracuje, a na v²stupu ze sφt∞ C se z tohoto rßmce Φi paketu zase vyjmou).

Pokud bychom cht∞li najφt n∞jakou v²sti₧nou analogii, pak se p°φmo vnucuje srovnßnφ s p°enosem textu napsanΘho na listu papφru. Rozdφl v p°enosov²ch protokolem mezi sφt∞mi A a B na jednΘ stran∞ a sφtφ C na stran∞ druhΘ by pak odpovφdal nap°φklad jinΘmu jazyku, ve kterΘm by tento text byl napsßn (vΦetn∞ pokyn∙ k doruΦenφ). Prvnφ varianta by pak odpovφdala tomu, ₧e p°i p°echodu ze sφt∞ A do sφt∞ C je text p°elo₧en do jazyka pou₧φvanΘho v sφti C a p°epsßn na nov² list papφru, kter² je pak skuteΦn∞ p°enßÜen sφtφ C. P°i p°echodu ze sφt∞ C do sφt∞ B je pak tent²₧ text p°elo₧en zp∞t do p∙vodnφho jazyka a p°epsßn na nov² list papφru. Analogiφ druhΘ varianty by byla situace, kdy je na p°echodu ze sφt∞ A do sφt∞ C list papφru s p∙vodnφm textem vlo₧en do obßlky; na ni jsou v jinΘm jazyku (v tom, kter² je pou₧φvßn v sφti C) napsßny pokyny nezbytnΘ k doruΦenφ obßlky a tato obßlka je pak p°enesena sφtφ C. Na v²stupu do sφt∞ B je tato obßlka rozbalena a v nφ obsa₧en² list papφru je p°edßn do sφt∞ B.

A prßv∞ tΘto druhΘ variant∞ se takΘ °φkß encapsulation (zapouzd°ovßnφ), zatφmco prvnφ varianta se v∞tÜinou oznaΦuje p°φvlastkem p°eklßdajφcφ (translational, translating).

Velmi v²znamn² a markantnφ je rozdφl mezi ob∞ma variantami nap°φklad u most∙ (bridges), kterΘ zajiÜ¥ujφ p°evod mezi sφt∞mi FDDI a sφt∞mi typu Ethernet. Pokud takov²to most funguje jen jako tzv. encapsulating bridge (zapouzd°ujφcφ most), pak p°φjemce i odesilatel se musφ nachßzet ve stejnΘ sφti (tedy nap°. oba v sφti typu Ethernet). Pokud se p°φjemce i odesilatel nachßzφ v sφti jinΘho typu (tj. jeden v sφti FDDI, a druh² v ethernetovΘ sφti), pak musφ b²t pou₧it tzv. translating bridge (p°eklßdajφcφ most).


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm