лекции (2008) (by Kravets) (укороченное) (1160827), страница 14
Текст из файла (страница 14)
Âñå ñòðóêòóðû äàííûõ, îáúÿâëåííûåâ ìîäóëå ðåàëèçàöèè íå äîñòóïíû èçâíå..DEF => .SYM.MOD => .OBJDM=> unit => DFVIMDM=> unit (unit stack)interface...implemenation...end (stack);Âçàèìîäåéñòâèå ìîäóëåé ìåæäó ñîáîé.Êàæäûé áèáëèîòå÷íûé ìîäóëü ýêñïîðòèðóå âñå èìåíà, êîòîðûå îáúÿâëåíèû â ìîäóëå îïðåäåëåíèÿ.Ìîäóëü âèäèìîñòè - èìÿ ëèáî âèäèìî, ëèáî íå âèäèìî.Âèäèìîñòü (âèäèìûå èìåíà) äåëÿòñÿ íà äâà êëàññà- ïîòåíöèàëüíàÿ âèäèìîñòü (òðåáóåò óòî÷íåíèÿ)- íåïîñðåäñòâåííàÿ âèäèìîñòü (ìîæåò áûòü èñïîëüçîâàííî áåç âñÿêèõ óòî÷íåíèé)Èìååòñÿ ñïåöèàëüíàÿ êîíñòðóêöèÿ IMPORT, êîòîðàÿ èìååò 2 âèäà. 1.IMPORT <ñïèñîê èìåí ÁÌ> (äåëàåòïîòåíöèàëüíî âèäèìûâñå âñå èìåíà, êîòîðûå îáúÿâëåííû)VAR S:Stacks, Stack;FROM Stacks IMPORT Stack, PopÏóñòè èìååòñÿ èìÿ X - òîãäà ýòî ëèáî:- ñòàíäàðòíûé èäåíòèôèêàòîð- ëîêàëüíûé îáúåêò- èìÿ èç èìïîðòèðóåìîãî ìîäóëÿ, òîãäà èìååò âèä M.x- èìÿ èìïîðòèðîâàííîå ñ ïîìîùüþ èìïîðòà âî âòîðîé ôîðìå óñëîâèÿõ èñïîëüçîâàíèÿ ðàçíîðîäíûõ ìîäóëåé âîçìîæåí êîíôëèêò èìåí.
Âîçìîæåí ëèáî êîíôëèêò ìåæäóèìåíåì èç èìïîðòèðóåìîãî ìîäóëÿ è èìåíåì îïèñàííûì, â íàøåì ìîäóëå. Ìîäóà - 2 íåò ïåðåãðóçêè èìåí, òî åñòü â ïðåäåëàõ îäíîãî ìîäóëÿ âñå èìåíà óíèêàëüíû.Åñëè åñòü êîíôëèêò ëîêàëüíîãî èìåíè ñ èìåíåì, ïîëó÷åííûì ïî uses, òî ïðèîðèòåò èìååò ëîêàëüíîå èìÿ.Äðóãîé âàðèàíò êîíôëèêòà - êîíôëèêò 2 èìïîðòèðóåìûõ èìåí, òî åñòüuses M1, M2;Ïðè÷åì â îáîèõ ìîäóëÿõ åñòü èìÿ X, òîãäà îáðàùåíèå ìîæåò áûòü òîëüêî ïî M1.x èëè M2.xÑàìûé íåïðèÿòíûé ìîìåíò - êîíôëèêò äâóõ ìîäóëåé ñ îäèíàêîâûìè íàçâàíèÿìè. Îäèí èç âàðèàíòîâðåøåíèÿ - èñïîëüçîâàíèå óíèêàëüíûõ êîìáèíàöèé èìåí â èìåíàõ â ìîäóëÿõ.GL_..
äëÿ openGLglu.. äëÿ gluÌîäóëè äåëÿòñÿ íà ñåãìåíòû ýêñïîðòèðóåìûõ è íåâåäèìûõ èìåí. ÿçûêå Îáåðîí Âèðò îòêàçàëñÿ îò ïîíÿòèÿ ãëàâíîãî è ëîêàëüíîãî ìîäóëÿ. Ïðåäïîëàãàåòñÿ, ÷òî ïðîãðàììà íà ÿçûêå Îáåðîí ïîãðóæåíà â êîíñîëüíûó ñèñòåìó. Åñòü ñïåöèàëüíàÿ êîììàíäà äëÿ çàãðóçêè ìîäóëÿ Mâ ïàìÿòü, ïîñëå ÷åãî ïîëüçîâàòåëü ìîæåò âûïîëÿòü ëþáóþ ïðîöåäóðó èç ýòîãî ìîäóëÿ.Load M;M.p47 1988 ãîäó ïîÿâèëñÿ Îáåðîí - 2.  ñàìîì ïåðâîì îáåðîíå áûëî âñåãî 2 ìîäóëÿ - DEFINITION (àíàëîãè÷íîìîäóëþ â ìîäóëà -2) è MODULE (ïðîñòî ìîäóëü). ïåðåñìîòðåííîé âåðñèè ÿçûêà îáåðîí, Íèêëàóñ Âèðò ðåøèë, ÷òî ïðîãðàììû íà ÿçûêå îáåðîí íå ìîãóòáûòü íàïèñàííû â îòðûâå îò ñèñòåìû ïðîãðàììèðîâàíèÿ èëè îïåðàöèîííîé ñèñòåìû.
×òî ïðèâåëî ê òîìó, ÷òîìîäóëü îïðåäåëåíèÿ ìîæåò áûòü ñãåíåðèðîâàí àâòîìàòè÷åñêè, íà îñíîâå ìîäóëÿ ñ îïèñàíèÿìè.  ìîäóëå âñå,÷òî òðåáóåòñÿ ïîìåñòèòü â ýêñïîðòèðóåìîå, ïîìå÷àåòñÿ çâåçäî÷êîé, òî åñòü åñëè òðåáóåòñÿ ýêñïîðòèðîâàòüèìÿ, òî åãî îïðåäåëåíèå ïîìå÷àåòñÿ çâåçäî÷êîé.À ìîäóëü îïðåäåëåíèÿ ìîæåò áûòü ñãåíåðèðîâàí àâòîìàòè÷åñêè íà îñíîâå èñõîäíîãî ìîäóëÿ ñ ïîìîùüþñïåöèàëüíûõ óòèëèò. äàííîì ñëó÷àå, âîçíèêàåò ïðîáëåìà ñ äîñòóïîì íà ÷òåíèå / çàïèñü ê ñòðóêòóðàì.
Äëÿ ñïåöèôèêàöèèòîãî, ÷òî ïåðåìåííàÿ ýêñïîðòèðóåòñÿ òîëüêî íà ÷òåíèå ñëóæèò ñèìâîë *-. Ïðè ýòîì inline ïðîöåäóð íåòâïðèíöèïå.Äàëåå â ÿýûêå îáåðîí îñòàëîñü òîëüêî åäèíñòâåííàÿ ôîðìà èìïîðòàIMPORT <ñïèñîê èìåí ìîäóëåé>Òî åñòüIMPORT InOut;InOut.writeln;Òî åñòü íåò íåïîñðåäñòâåííîé âèäèìîñòè ãëîáàëüíûõ èìïîðòèðóåìûõ èìåí.Ïóíêò 3.
Ëîãè÷åñêèå ìîäóëå â ñëó÷àå ÿçûêà Àäà.package èìÿ isîáúÿâëåíèÿ;end èìÿ;package body èìÿ isîïðåäåëåíèÿend èìÿ;Ïåðâàÿ ÷àñòü íàçûâàåòñÿ ïàêåòîì, à âòîðàÿ - òåëîì ïàêåòà. ÿçûêå Àäà ïàêåòû ìîãóò áûòü âëîæåííû äðóã â äðóãà. Ñ÷èòàåòñÿ ÷òî åñòü ñïåöèàëüíûé ïàêåò STANDARD.packade STANDARD isîáúÿâëåíèÿ èç STANDARDîáúÿâëåíèÿ ïîëüçîâàòåëüñêèé ïàêåòîâend STANDARD; ìîäóëà - 2 çàãðóçêà ìîäóëÿ - çàãðóçêà ñîîòâåñòâóþùåé òàáëèöè èìåí, â Àäà âñ ñëîæíåå.STANDARD...package P ispackage P1 isend P1;end P;package PP ispackage P2 is...end P2;package P3;...end P3;end PP;Âèäèìîñòü òåë ïàêåòîâ òî÷íî òàêàÿ æå ÷òî è ó âëîæåííîñòåé òåë îáúÿâëåíèé. Âñåãäà âèäèìû èìåíà èçïàêåòà STANDARD. Èìåíà ñòàíîâÿòñÿ âèäèìû ïîñëå îáúÿâëåíèÿ è ïåðåñòàþò áûòü âèäèìû ïî îêîí÷àíèèñïåöèôèêàöèè ïàêåòà.
Âñå èìåíà ñòàíîâÿòñÿ âèäèìûìè ïîòåíöèàëüíî, àíàëîãè÷íî ÿçûêó Ìîäóëà.48Ëåêöèÿ 2011.11.2008Îñíîâíàÿ âîçìîæíîñòü ëîãè÷åñêîãî ìîäóëÿ - âîçìîæíîñòü îïðåäåëåíèå íîâîãî òèïà äàííûõ.Áèáëèîòå÷íûé ìîäóëü - Ìîäóëà - 2Ìîäóëü - ÎáåðîíUnit - DelphiÏðè ýòîì â ÿçûêå Àäà âîçìîæíû âëîæåííûå ìîäóëè è âîçìîæíà ñëîæíàÿ ñòðóêòðà âëîæåííîñòè ñïåöèôèêàöèè ïàêåòîâ.
Ïðè÷åì âëîæåííîñòü òåë ïàêåòîâ èìååò òàêóþ æå âëîæåííîñòü, ÷òî è ñïåöèôèêàöèÿ.Ìîäóëü íå îáÿçàì èìåòü òåëî, íî âñåãäà îáÿçàí èìåòü èíòåðôåéñ. Íàïðèìåð, åñëè ìîäóëü èìååò òîëüêîîïðåäåëåíèÿ îáúåêòîâ äàííûõ èëè êîíñòàíò, òî implementation ÷àñòü íå òðåáóåòñÿ.package P ispackage P1 ispackage P12 isend P12end P1Òîãäà òåëà âëîæåííû àíàëîãè÷íî.package body P ispackage body P1 ispackage body P12 ispackage AUX is....end AUXpackage body AUX is...end AUXend P12end P1end PÈìååòñÿ 2 ïîäõîäà ê ïðîåêòèðîâàíèþ ïðîãðàìì.Ïåðâûé - ñâåðõó âíèç, òî åñòü íà÷èíàòü ñ ãëàâíîãî ìîäóëÿ (ñàìîãî àáñòðàêòíîãî) è èäòè âíèç. Íåäîñòàòîê äî ïðîãðàììèðîâàíèÿ ìîäóëÿ ñàìîãî íèæíåãî óðîâíÿ íå ïîëó÷àåòñÿ çàïóñòèòü ñèñòåìó. (Top - bottom).Âòîðîé - ñíèçó ââåðõ (Bottom-up).Äëÿ óïðîùåíèå ðàáîòû áûëà ââåäåíà êîíöåïöèÿ âëîæåííûõ ìîäóëåé, òî åñòü íå äëÿ êàæäîãî ìîäóëÿíà äàííîé ñòóïåíè èåðàðõèè òðóáåþòñÿ íå âñå ìîäóëè èç íèæíåãî óðîâíÿ èåðàðõèè.
Ýòî ñèëüíî óïðîùàåòïðîåêòèðîâàíèÿ ïðîãðàììû, íî ñèëüíî óñëîæíÿåò ÿçûê.Ïåðåãóçêà èëè ïîëèìîðôèçì - îäíîìó èìåíè ñîîòâåòñòâóåò íåñêîëüêî îáúÿâëåíèÿ. Âñå òðàäèöèîííûåßÏ ïðèäåðæèâàþòñÿ èäåè ÷òî â îäíîé îáëàñòè âèäèìîñòè îäíîìó èìåíè ñîîòâåñòâóåò òîëüêî åäèíñòâåííûåîáúåêò.  ñîâðåìåííûõ ßÏ ïîëèìîðôèçì ðàñïîñòðàíÿåòñÿ òîëüêî íà èìåíà ïðîöåäóð è ôóíêöèé.Íå èìåþò ïåðåãðóçêè òîëüêî "Âèðòîâñêèå"ßÏ - Îáåðîí è Ìîäóëà.  ÿçûêå Àäà åñòü ïåðåãðóçêà ïðîöåäóðè ôóíêöèé, ïðè÷åì ó÷èòûâàþòñÿ è âîçâðàùàåìûå çíà÷åíèÿ.
Òî åñòü äîïóñòèìà òàêàÿ ïåðåãðóçêà:function P:boolean;function P:integer; java, C++ è àíàëàãè÷íûõ ßÏ òàêàÿ ïåðåãðóçêà íåäîïèñòèìà. Äàëåå âîçíèêàåò âîïðîñ è ïåðåãðóçêåñòàíäàðòíûõ îïåðàöèé. Òóò ñóùåñòâóåò 2 òå÷åíèÿ. ïåðâîå âõîäèò Àäà, Ñ#, Ñ++ ïîçâîëÿþùèå ïåðåãðóæàòü ñòàíäàðîòíûå îïåðàöèè. Òðåáîâàíèå ïåðåãðóçêè ñòàíäàðòíûõ îïåðàöèé áûëî â ñòàíäàðòå Àäà, ïðè÷åì ïåðåãðóçêà íå äîëæíà áûëà âëèÿòü íà ñèíòàêñè÷åñêèé àíàëèç.Òî åñòü åñëè ïåðåãðóçêà íå äîëæíà áûëà âëèÿòü íà ìåñòíîñòü îïåðàöèé.Êëàññè÷åñêèé ïðèìåð ïåðåãðóçêè îïåðàòîðîâ - ìàòðè÷íàÿ àðèôìåòèêà. Òî åñòüpackage Matrices istype Matrix is ...;function"+"(M1,M2: Matrix):return Matrix;.....end Matrices;49x,y,z:Matrix;z:=x + y;z:="+"(x,y)Îäíàêî âñå èìåíà ÿâëÿþòñÿ ëèøü ïîòåíöèàëüíî âèäèìûìè, òî åñòü òàêîé êîä íå âåðåí.
Òðåáóåòñÿ ñïåöèôèöèðîâàòü ïàêåò, òî åñòü ïèñàòü òàê: x,y,z:Matrices.Matrix;z:=Matrices."+"(x,y)Òàêèì îáðàçîì, ìû ïðèõîäèì ê òðåáîâàíèþ êîíñòðóêöèè, êîòîðàÿ ñíèìàåò ïîòåíöèàëüíóþ âèäèìîñòü.Òàêîé êîíñòðóêöèåé ÿâëÿåòñÿ èìåíîâàííûé èìïîðò, êîòîðûé ñíèìàåò ïîòåíöèàëüíóþ âèäèìîñòü, åñëè íåòêîíôëèêòà èìåí.use <ñïèñîê èìåí - îáúåêòîâ>;Òî åñòü âîçìîæíî íàïèñàòü òàê.use Matrices;x,y,z:Matrix;z:=x + y;Âñå ïðîáëåìû íà÷èíàþòñÿ, êîãäà ïîÿâëÿåòñÿ êîíôëèêò èìåí. È â îáùåì ñëó÷àå ãëàâíûå ïðîáëåìû ñâÿçàííû ñî ñëîæíîé ñòðóêòóðîé ïðîñòðàíñòâà èìåí, è ñ âîçìîæíîñòüþ èñïîëüçîâàíèÿ ïðîöåäóðû íåêîíòðîëèðóåìîãî èìïîðòà (use - äåëàåò âñþ ñïåöèôèêàöèþ ïàêåòà íåïîñðåäñòâåííî âèäèìîé).Òàáëèöà èìåí ÿçûêà Ìîäóëà - 2 íàìíîãî ïðîùå ÷åì òàáëèöà èìåí ÿçûêà Àäà.
 Ìîäóëà - 2 òðåáóåòñÿòîëüêî ñòåê òàáëèö, â ÿçûêå Àäà ñòåê îñòàåòñÿ,íî êàæäàÿ èç òàáëèö â ñòåêå ìîæåò ñîäåðæàòü â ñåáå äðóãèåïîäòàáëèöû.Ïóíêò 4. Èíêàïñóëÿöèÿ è àáñòðàêòíûå òèïû äàííûõ.Ïîíÿòèå àáñòðàêòíîãî òèïà äàííûõ âîøëî â îáèõîä âìåñòå ñ ïîíÿòèåì èíêàïñóëÿöèè. Àáñòðàêòíûé òèïäàííûõ - òèï äàííûõ, ó êîòîðîãî âñÿ ñòðóêòóðà èíêàïñóëèðîâàííà.Ãîâîðÿò ÷òî îáúåêòíîîðèåíòèðîâàííûé ÿçûê - ÿçûê â êîòîðîì èìååòñÿ 3 ïîíÿòèÿ - èíêàïñóëÿöèÿ, íàñëåäîâàíèå è äèíàìè÷åñêèé ïîëèìîðôèçì. Èíêàïñóëÿöèÿ - íåêîòîðîå ñêðûòèå äåòàëåé. Îñíîâíàÿ çàäà÷à ïðèïðîåêòèðîâàíèè ñòðóêòóðû ïðîãðàììû - ïðîåêòèðîâàíèÿ èíòåðôåéñà, äëÿ ÷åãî òðåáóåòñÿ èìåííî ìåõàíèõèíêàïñóëÿöèè.Ïîíÿòèå åäèíèöû çàùèòû ïî÷òè âî âñåõ ßÏ - òèï.
Òî åñòü âñå îáúåêòû îäíîãî òèïà äàííûõ îáëàäàþòîäèíàêîâûìè ñâîéñòâàìè ñ òî÷êè çðåíèÿ çàøèòû äàííûõ. Àòîìîì æå çàùèòû ÿâëÿåòñÿ ëèáî òèï öåëèêîì,ëèáî ÷àñòü òèïà - ïåðåìåííàÿ, ìåòîä è òàê äàëåå.  ÿçûêàõ Ìîäóëà - 2 èëè Àäà àòîìîì çàùèòû ÿâëÿåòñÿòèï, òî åñòü ëèáî âñå çàêðûâàåòñÿ ëèáî âñå îòêðûâàåòñÿ. Òî åñòü òðåáóåòñÿ çàêðûâàòü âñå ÷ëåíû äàííûõ. ÿçûêàõ Îáåðîí è ÿçûêàõ ñ êëàññàìè àòîìîì çàùèòû ÿâëÿåòñÿ ÷ëåí êëàññà.Ðàññìîòðèì ïðèìåð íà ìîäóëà - 2.DEFINITION MODULE M;....END M; EMPLEMENTATION MODULE M;....END M; Àäà òàê æå åñòü ñïåöèôèêàöèÿ è òåëî ïàêåòà. Âñå ÷òî îáúÿâëåííî â ìîäóëå îïðåäåëåíèÿ âèäíî èçâíå,âñå ÷òî îáúÿâëåíî â ìîäóëå ðåàëèçàöèè çàêðûòî.Îáåðîí.TYPE T* = RECORDv1:T1;v2:T2;end;Ñ ýòîé òî÷êè çðåíèÿ îáåðîí ïîõîä íà ÿçûêè ñ êëàññîâîé ñòðóêòóðîé, òî åñòü èìïîðòèðóåòñÿ èìÿ òèïà, íîïîëÿ äàííûõ ÿâëÿþòñÿ çàêðûòûìè.Èòàê àáñòðàêòíûé òèï äàííûõ â îáùåì ñëó÷àå - ýòî ïðîñòî ìíîæåñòâî îïåðàöèé.
Ðàññìîòðèì ðåàëèçàöèèÀÒÄ.50 ÿçûêå Ìîäóëà - 2 ÀÒÄ îïðåäåëÿåòñÿ êàê ñêðûòûé òèï äàííûõ.Îí îáúÿâëåí â ìîäóëå îïðåäåëåíèÿïðîñòî êàê TYPE T;.Òî åñòü íàïðìèåðDEFINITION MODULE stacks;TYPE STACK;PROCUDERE Init (var s:stack);PROCUDURE Push (var s:stack, x:integer);....END stacks;Íàä òàêèì òèïîì äàííõ ïðèìåíèìû îïåðàöèè, îïðåäåëåííûå â ìîäóëå, à òàê äå îïåðàöèè ïðèñâàíèâàíèÿè ñðàâíåíèÿ íà ðàâåíñòâî / íåðàâåíñòâî. Ïðè÷åì ñåìàíòèêà ýòèõ îïåðàöèé èñêëþ÷èòåëüíî ïîâåðõíîñòíàÿ,òî åñòü ïðîèçâîäèòñÿ èñêëþ÷èòåëüíî ïîâåðõíîñòíîå êîïèðîâàíèÿ.
Ñòðóêòóðû ÀÒÄ äîëæíà áûòü îïèñàííàâíóòðè ìîäóëÿ ðåàëèçàöèè, ïðè÷åì íà îïðåäåëåíèå íàêëàäûâàþòñÿ íåêîòîðûå îãðàíè÷åíèÿ.Òàêèì îáðàçîì, äëÿ âñåõ îáúåêòîâ ÀÒÄ èñïîëüçóåòñÿ ðåôåðåíöàëüíàÿ ìîäåëü äîñòóïà. Íàïèøåì îïðåäåëåíèå ñòåêà.TYPE PLINK = POINTER TO LINK;TYPE LINK = RECORDNEXT:PLINK;INF:INTEGER:END: Stack = plink;Òàêèì îáðàçîì, â ëþáîì ñëó÷àå âñå îáúåêòû ÀÒÄ - óêàçàòåëè íà ÷òî - ëèáî.Òàêèì îáðàçîì Ìîäóëà - 2 çàñòàâëÿåò ïðîãðàììèðîâàòü â òåðìèíàõ ÀÒÄ è áîëåå òîãî â òåðìèíàõ ðåôåðåíöèàëüíîé ìîäåëè äàííûõ.51Ëåêöèÿ 21.13.11.2008Ññûëî÷íàÿ ìîäåëü ðàáîòû áûëà ñâÿçàííà ñ ìåõàíèçìîì ðàçäåëüíîé êîìïèëÿöèè è ïðèíöèïîì ÐÎÐÈ.Ïðèíöèï ÐÎÐÈ - ðàçäåëåíèå îïðåäåëåíèÿ, ðåàëèçàöèè è èñïîëüçîâàíèÿ. ñòðóêòóðå òàêèõ ßÏ, êàê ìîäóëà - 2, Àäà, Delphi, ÷åòêî âèäíî, ÷òî îïðåäåëåíèå, ðåàëèçàöèÿ è èñïîëüçîâàíèÿ ÷åòêî ðàçäåëåíû.
 Ìîäóëà 2 - DEFINITION, IMPLEMENTATION.  Àäà - ñïåöèôèêàöèÿ ïàêåòà è îïðåäåëåíèå ïàêåòà, ïðè÷åì îíè ìîãóò òðàíñëèðîâàòüñÿ îòäåëüíî.  Ìîäóëà - 2 òàê æå ìîäóëè îïðåäåëåíèÿ è îïèñàíèÿ ìîãóò òðàíñëèðîâàòüñÿîòäåëüíî.Ñ òî÷êè çðåíèÿ ðàçäåëüíîé òðàíñëÿöèè, êîìïèëÿòîðó íåîáõîäèìî çíàòü òîëüêî òó ÷àñòü, êîòîðàÿ îòíîñèòñÿ ê îïðåäåëåíèþ, ïîýòîìó ýòà ÷àñòü âûíåñåíà â îòäåëüíóþ ÿçûêîâóþ êîíñòðóêöèþ.Äëÿ òîãî ÷òîáû îòêîìïèëèðîâàòü êëèåíòñêèé ìîäóëü, êîìïèëÿòîðó íåîáõîäèì òîëüêî DEFINITION ìîäóëü ñåðâèñà, êîòîðûé èñïîëüçóåò êëèåíò. Òî åñòü åñëè ïîìåíÿëñÿ ìîäóëü îïðåäåëåíèÿ, òî òðåáóåòñÿ ïåðåêîìïèëèðîâàòü âñå ìîäóëè, êîòîðûå åãî èñïîëüçóþò.Àíàëîãè÷íî ñäåëàíî â è ßÏ Àäà è Delphi.uses Service; Ñ/C++ ðîëü ìîäóëåé îïðåäåëåíèÿ èãðàþò çàãîëîâî÷íûå ôàéëû, íî ïðè íåçíà÷èòåëüíîì èçìåíåíèèîäíîãî çàãîëîâî÷íîãî ôàéëà òðåáóåòñÿ ïåðåòðàíñëèðîâàòü âñå ôàéëû, êîòîðûå èñïîëüçóþò äàííûé çàãîëîâî÷íûé ôàéë.Ïðè ýòîì â Delphi èãðàþò ðîëü òîëüêî ñåðüåçíûå èçìåíåíèÿ â èíòåðôåéñíîé ÷àñòü ìîäóëÿ.Òî åñòü åñëèèçìåíèòü ìîäóëü òî îí áóäåò ïåðåòðàíñëèðîâàí, à îñòàëüíûå òîëüêî â òîì ñëó÷àå åñëè áûë èçìåíåí èíòåðôåéñìîäóëÿ.Âåðíåìñÿ ê ðåàëèçàöèè ÀÒÄ ñ ïîìîùüþ ñêðûòîãî òèïà.