ПРИМЕЧАНИЕ
Ïðèìåðîì ðåaëèçaöèè ñîáûòèéíî-óïðaâëяåìîé ìîäåëè ìîæåò ñëóæèòü ëþáaя ïðîãðaììa, óïðaâëяåìaя ñ ïîìîùüþ ìåíþ. Ïîñëå çaïóñêa òaêaя ïðîãðaììa ïaññèâíî îæèäaåò äåéñò- âèé ïîëüçîâaòåëя è äîëæía óìåòü ïðaâèëüíî îòðåaãèðîâaòü ía ëþáîå èç íèõ. Cîáûòèéíaя ìîäåëü яâëяåòñя ïðîòèâîïîëîæíîñòüþ òðaäèöèîííîé (äèðåêòèâíîé), êîãäa êîä óïðaâëяåò äaííûìè: ïðîãðaììa ïîñëå ñòaðòa ïðåäëaãaåò ïîëüçîâaòåëþ âûïîëíèòü íåêîòîðûå äåéñò- âèя (ââåñòè äaííûå, âûáðaòü ðåæèì) â ñîîòâåòñòâèè ñ æåñòêî çaäaííûì aëãîðèòìîì.
1 Cîáûòèéíî-óïðaâëяåìaя ìîäåëü íå яâëяåòñя ÷añòüþ ÎÎÏ è ìîæåò áûòü ðåaëèçîâaía è áåç èñïîëüçîâaíèя îáúåêòîâ (ïðèìåð — ïðîãðaììèðîâaíèå ía яçûêå C ïîä Windows ñ èñïîëüçîâaíèåì ôóíêöèé API).
Îñíîâíûìè ñâîéñòâaìè ÎÎÏ яâëяþòñя èíêaïñóëяöèя, íañëåäîâaíèå è ïîëèìîð- ôèçì. Íèæå êðaòêî ïîяñíяåòñя èõ ñìûñë, a ïîëíîå ïðåäñòaâëåíèå î íèõ ìîæíî ïîëó÷èòü1 ïîñëå èçó÷åíèя ýòîé ÷añòè êíèãè.
Îáúåäèíåíèå äaííûõ ñ ôóíêöèяìè èõ îáðaáîòêè â ñî÷åòaíèè ñî ñêðûòèåì íå- íóæíîé äëя èñïîëüçîâaíèя ýòèõ äaííûõ èíôîðìaöèè íaçûâaåòñя èínaïñóëяöèåñ (encapsulation). Ýòa èäåя íå íîâa è ïðèìåíяëañü â ñòðóêòóðíîì è ìîäóëüíîì ïðî- ãðaììèðîâaíèè, a â ÎÎÏ ïîëó÷èëa ñâîå ëîãè÷åñêîå çaâåðøåíèå. Èíêaïñóëяöèя ïîâûøaåò ñòåïåíü aáñòðaêöèè ïðîãðaììû: äaííûå êëañña è ðåaëèçaöèя åãî ôóíê- öèé íaõîäяòñя íèæå óðîâíя aáñòðaêöèè, è äëя íaïèñaíèя ïðîãðaììû èíôîðìa- öèя î íèõ íå òðåáóåòñя. Êðîìå òîãî, èíêaïñóëяöèя ïîçâîëяåò èçìåíèòü ðåaëèça- öèþ êëañña áåç ìîäèôèêaöèè îñíîâíîé ÷añòè ïðîãðaììû, åñëè èíòåðôåéñ îñòaëñя ïðåæíèì (íaïðèìåð, ïðè íåîáõîäèìîñòè ñìåíèòü ñïîñîá õðaíåíèя äaí- íûõ ñ ìaññèâa ía ñòåê). Ïðîñòîòa ìîäèôèêaöèè, êaê óæå íåîäíîêðaòíî îòìå÷a- ëîñü, яâëяåòñя î÷åíü âaæíûì êðèòåðèåì êa÷åñòâa ïðîãðaììû.
Èíêaïñóëяöèя ïîçâîëяåò èñïîëüçîâaòü êëaññ â äðóãîì îêðóæåíèè è áûòü óâå- ðåííûì, ÷òî îí íå èñïîðòèò íå ïðèíaäëåæaùèå åìó îáëañòè ïaìяòè, a òaêæå ñîç- äaâaòü áèáëèîòåêè êëaññîâ äëя ïðèìåíåíèя âî ìíîãèõ ïðîãðaììaõ.
Íañëåäîâaíèå — ýòî âîçìîæíîñòü ñîçäaíèя èåðaðõèè êëaññîâ, êîãäa ïîòîìêè ía- ñëåäóþò âñå ñâîéñòâa ñâîèõ ïðåäêîâ, ìîãóò èõ èçìåíяòü è äîáaâëяòü íîâûå. Câîéñòâa ïðè íañëåäîâaíèè ïîâòîðíî íå îïèñûâaþòñя, ÷òî ñîêðaùaåò îáúåì ïðî- ãðaììû. Âûäåëåíèå îáùèõ ÷åðò ðaçëè÷íûõ êëaññîâ â îäèí êëaññ-ïðåäîê яâëяåò- ñя ìîùíûì ìåõaíèçìîì aáñòðaêöèè — âåäü è ëþáaя íaóêa ía÷èíaåòñя ñ aáñòða- ãèðîâaíèя è êëaññèôèêaöèè, êîòîðûå ïîìîãaþò ñïðaâèòüñя ñî ñëîæíîñòüþ ðaññìaòðèâaåìîé ïðåäìåòíîé îáëañòè.
Èåðaðõèя êëaññîâ ïðåäñòaâëяåòñя â âèäå äðåâîâèäíîé ñòðóêòóðû, â êîòîðîé áî- ëåå îáùèå êëaññû ðañïîëaãaþòñя áëèæå ê êîðíþ, a áîëåå ñïåöèaëèçèðîâaííûå — ía âåòâяõ è ëèñòüяõ. Â C++ êaæäûé êëaññ ìîæåò èìåòü ñêîëüêî óãîäíî ïîòîìêîâ è ïðåäêîâ. Èíîãäa ïðåäêè íaçûâaþòñя íaäêëaññaìè èëè ñóïåðêëaññaìè, a ïîòîì- êè — ïîäêëaññaìè èëè ñóáêëaññaìè.
Òðåòüèì êèòîì, ía êîòîðîì ñòîèò ÎÎÏ, яâëяåòñя ïîëèìîðôèçì — âîçìîxíîñòü èñïîëüçîâaòü â ðaçëè÷íûõ nëaññaõ èåðaðõèè îäíî èìя äëя îáîçía÷åíèя ñõîäíûõ ïî ñìûñëó äåññòâèñ è ãèánî âûáèðaòü òðåáóåìîå äåññòâèå âî âðåìя âûïîëíåíèя ïðî- ãðaììû.
Ïîíяòèå ïîëèìîðôèçìa èñïîëüçóåòñя â C++ âåñüìa øèðîêî. Ïðîñòûì ïðèìåðîì ïîëèìîðôèçìa ìîæåò ñëóæèòü ðaññìîòðåííaя â ïåðâîé ÷añòè êíèãè ïåðåãðóçêa ôóíêöèé, êîãäa èç íåñêîëüêèõ âaðèaíòîâ âûáèðaåòñя íaèáîëåå ïîäõîäяùaя ôóíêöèя ïî ñîîòâåòñòâèþ åå ïðîòîòèïa ïåðåäaâaåìûì ïaðaìåòðaì. Äðóãîé ïðè- ìåð — èñïîëüçîâaíèå øaáëîíîâ ôóíêöèé (â äaëüíåéøåì ìû ðaññìîòðèì è øaá- ëîíû êëaññîâ), êîãäa îäèí è òîò æå êîä âèäîèçìåíяåòñя â ñîîòâåòñòâèè ñ òèïîì, ïåðåäaííûì â êa÷åñòâå ïaðaìåòða. ×aùå âñåãî ïîíяòèå ïîëèìîðôèçìa ñâяçûâa- þò ñ ìåõaíèçìîì âèðòóaëüíûõ ìåòîäîâ (îí áóäåò ðaññìîòðåí ía ñ. 205).
1 À ìîæíî è íå ïîëó÷èòü.
Áëaãîäaðя òîìó, ÷òî ïðîãðaììa ïðåäñòaâëяåòñя â òåðìèíaõ ïîâåäåíèя îáúåêòîâ, ïðè ïðîãðaììèðîâaíèè èñïîëüçóþòñя ïîíяòèя, áîëåå áëèçêèå ê ïðåäìåòíîé îá- ëañòè, ñëåäîâaòåëüíî, ïðîãðaììa ëåã÷å ÷èòaåòñя è ïîíèìaåòñя. Ýòî яâëяåòñя áîëüøèì ïðåèìóùåñòâîì ÎÎÏ. Îäíaêî ïðîåêòèðîâaíèå îáúåêòíî-îðèåíòèðî- âaííîé ïðîãðaììû ïðåäñòaâëяåò ñîáîé âåñüìa ñëîæíóþ çaäa÷ó, ïîñêîëüêó â ïðî- öåññ äîáaâëяåòñя åùå îäèí âaæíûé ýòaï — ðaçðaáîòna èåðaðõèè nëaññîâ.
Ïëîõî ñïðîåêòèðîâaííaя èåðaðõèя ïðèâîäèò ê ñîçäaíèþ ñëîæíûõ è çaïóòaííûõ ïðîãðaìì. Äðóãèì ïðåïяòñòâèåì ê ïðèìåíåíèþ ÎÎÏ яâëяåòñя áîëüøîé îáúåì èíôîðìaöèè, êîòîðóþ òðåáóåòñя îñâîèòü, è åå çía÷èòåëüíaя ñëîæíîñòü.
Âaæíî äî ía÷aëa ïðîåêòèðîâaíèя ïðaâèëüíî îïðåäåëèòü, òðåáóåòñя ëè âîîáùå ïðèìåíяòü îáúåêòíî-îðèåíòèðîâaííûé ïîäõîä. Åñëè â èåðaðõèè êëaññîâ íåò íå- îáõîäèìîñòè, òî, êaê ïðaâèëî, äîñòaòî÷íî îãðaíè÷èòüñя ìîäóëüíîé òåõíîëîãèåé, ïðè ýòîì ìîæíî óñïåøíî èñïîëüçîâaòü êëaññû êaê ñòaíäaðòíîé áèáëèîòåêè, òaê è ñîáñòâåííîé ðaçðaáîòêè. Åñòåñòâåííî, äëя ïðèìåíåíèя ñòaíäaðòíûõ êëaññîâ òðåáóåòñя ñía÷aëa èçó÷èòü íåîáõîäèìûé ñèíòaêñèñ è ìåõaíèçìû, a çaòåì — êîí- êðåòíûå ñâîéñòâa ýòèõ êëaññîâ1.
1  ïðîãðaììaõ, ïðèâåäåííûõ â ýòîé êíèãå, óæå íåçaìåòíûì îáðaçîì ïðèìåíяëèñü êëaññû ñòaíäaðòíîé áèáëèîòåêè Cin è COut. Èñïîëüçîâaíèå äðóãèõ êëaññîâ ìîæåò ía ïåðâûé âçãëяä ïîêaçaòüñя íå ñòîëü ïðîñòûì, íî ýôôåêò îïðaâäaåò çaòða÷åííûå ía èçó÷åíèå óñè- ëèя.
Do'stlaringiz bilan baham: |