Òåõíîëîãèÿ ïðîãðàììèðîâàíèÿ - ýòî
ñîâîêóïíîñòü ìåòîäîâ è ñðåäñòâ ðàçðàáîòêè (íàïèñàíèÿ) ïðîãðàììíûõ ñèñòåì è
ïîðÿäîê ïðèìåíåíèÿ ýòèõ ìåòîäîâ è ñðåäñòâ.
Íà ðàííèõ ýòàïàõ ðàçâèòèÿ
ïðîãðàììèðîâàíèÿ, êîãäà ïðîãðàììû ïèñàëèñü â âèäå ïîñëåäîâàòåëüíîñòåé ìàøèííûõ
êîìàíä, êàêàÿ-ëèáî òåõíîëîãèÿ ïðîãðàììèðîâàíèÿ îòñóòñòâîâàëà. Ïåðâûå øàãè â
ðàçðàáîòêå òåõíîëîãèè ñîñòîÿëè â ïðåäñòàâëåíèè ïðîãðàììû â âèäå
ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ, ò.å. ñîñòàâëåíèå îïåðàòîðíîé ñõåìû, îòðàæàþùåé
ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ è ïåðåõîäû ìåæäó íèìè. Îïåðàòîðíûé ïîäõîä
ïîçâîëèë ðàçðàáîòàòü ïåðâûå ïðîãðàììû äëÿ àâòîìàòèçàöèè ñîñòàâëåíèÿ ïðîãðàìì -
òàê íàçûâàåìûå ñîñòàâëÿþùèå ïðîãðàììû.
 îêîí÷àòåëüíîì âèäå
ëþáàÿ ïðîãðàììà ïðåäñòàâëÿåò ñîáîé íàáîð èíñòðóêöèé ïðîöåññîðà. Âñå, ÷òî íàïèñàíî íà
ëþáîì ÿçûêå ïðîãðàììèðîâàíèÿ, - áîëåå óäîáíàÿ, óïðîùåííàÿ çàïèñü ýòîãî íàáîðà èíñòðóêöèé,
îáëåã÷àþùàÿ íàïèñàíèå, îòëàäêó è ïîñëåäóþùóþ ìîäèôèêàöèþ ïðîãðàììû. ×åì âûøå óðîâåíü ÿçûêà, òåì
â áîëåå ïðîñòîé ôîðìå çàïèñûâàþòñÿ îäíè è òå æå äåéñòâèÿ. Íàïðèìåð, äëÿ ðåàëèçàöèè öèêëà íà ÿçûêå àññåìáëåðà
òðåáóåòñÿ çàïèñàòü ïîñëåäîâàòåëüíîñòü èíñòðóêöèé, ïîçàáîòèâøèñü î ðàçìåùåíèè ïåðåìåííûõ â
ðåãèñòðàõ, à â Ñ++ èëè Ïàñêàëå äëÿ ýòîãî
äîñòàòî÷íî îäíîãî îïåðàòîðà.
Ñ ðîñòîì îáúåìà
ïðîãðàììû ñòàíîâèòñÿ íåâîçìîæíûì óäåðæèâàòü â ïàìÿòè âñå äåòàëè, è ñòàíîâèòñÿ íåîáõîäèìûì
ñòðóêòóðèðîâàòü èíôîðìàöèþ, âûäåëÿòü ãëàâíîå è îòáðàñûâàòü íåñóùåñòâåííîå. Ýòîò ïðîöåññ
íàçûâàåòñÿ ïîâûøåíèåì ñòåïåíè àáñòðàêöèè
ïðîãðàììû.
Ïåðâûì øàãîì
ê ïîâûøåíèþ àáñòðàêöèè ÿâëÿåòñÿ èñïîëüçîâàíèå ôóíêöèé, ïîçâîëÿþùåå
ïîñëå íàïèñàíèÿ è îòëàäêè ôóíêöèè îòâëå÷üñÿ îò äåòàëåé åå ðåàëèçàöèè,
ïîñêîëüêó äëÿ âûçîâà ôóíêöèè òðåáóåòñÿ çíàòü òîëüêî åå èíòåðôåéñ. Åñëè
ãëîáàëüíûå ïåðåìåííûå íå èñïîëüçóþòñÿ, èíòåðôåéñ ïîëíîñòüþ îïðåäåëÿåòñÿ çàãîëîâêîì ôóíêöèè.
×àñòü òàêèõ ôóíêöèé îáúåäèíÿëàñü
â áèáëèîòåêè, èç êîòîðûõ ôóíêöèè ìîæíî áûëî âêëþ÷àòü â ðàáî÷èå ïðîãðàììû è
çàòåì âûçûâàòü èç ðàáî÷èõ ïðîãðàìì. Ýòî ïîëîæèëî íà÷àëî ïðîöåäóðíîìó
ïðîãðàììèðîâàíèþ - áîëüøàÿ ïðîãðàììà ïðåäñòàâëÿëàñü ñîâîêóïíîñòüþ ôóíêöèé. Îäíà
èç ôóíêöèé ÿâëÿëàñü ãëàâíîé è ñ íåå íà÷èíàëîñü âûïîëíåíèå ïðîãðàììû.
Ïðîöåäóðíûé ïîäõîä ïîòðåáîâàë
ñòðóêòóðèðîâàíèÿ áóäóùåé ïðîãðàììû, ðàçäåëåíèÿ åå íà îòäåëüíûå ôóíêöèè. Ïðè
ðàçðàáîòêå îòäåëüíîé ôóíêöèè î äðóãèõ ôóíêöèè òðåáîâàëîñü çíàòü òîëüêî èõ
íàçíà÷åíèå è ñïîñîá âûçîâà. Ïîÿâèëàñü âîçìîæíîñòü ïåðåðàáàòûâàòü îòäåëüíûå ôóíêöèè,
íå çàòðàãèâàÿ îñòàëüíîé ÷àñòè ïðîãðàììû, ñîêðàùàÿ ïðè ýòîì çàòðàòû òðóäà è
ìàøèííîãî âðåìåíè íà ðàçðàáîòêó è ìîäåðíèçàöèþ ïðîãðàìì.
Ñëåäóþùèì øàãîì ñòðóêòóðèðîâàíèÿ
ïðîãðàìì ñòàëî òàê íàçûâàåìîå ñòðóêòóðíîå ïðîãðàììèðîâàíèå, ïðè êîòîðîì
ïðîãðàììà â öåëîì è îòäåëüíûå ôóíêöèè ðàññìàòðèâàëèñü êàê ïîñëåäîâàòåëüíîñòè
êàíîíè÷åñêèõ ñòðóêòóð: ëèíåéíûõ ó÷àñòêîâ, öèêëîâ è ðàçâåòâëåíèé. Ïîÿâèëàñü
âîçìîæíîñòü ÷èòàòü è ïðîâåðÿòü ïðîãðàììó êàê ïîñëåäîâàòåëüíûé òåêñò, ÷òî
ïîâûñèëî ïðîèçâîäèòåëüíîñòü òðóäà ïðîãðàììèñòîâ ïðè ðàçðàáîòêå è îòëàäêå
ïðîãðàìì. Ñ öåëüþ ïîâûøåíèÿ ñòðóêòóðíîñòè ïðîãðàììû áûëè âûäâèíóòû òðåáîâàíèÿ ê
áîëüøåé íåçàâèñèìîñòè ôóíêöèé, ôóíêöèè äîëæíû ñâÿçûâàòüñÿ ñ âûçûâàþùèìè èõ ôóíêöèÿìè
òîëüêî ïóòåì ïåðåäà÷è èì àðãóìåíòîâ, èñïîëüçîâàíèå â ï ôóíêöèÿõ ïåðåìåííûõ,
ïðèíàäëåæàùèõ äðóãèì ôóíêöèÿì èëè ãëàâíîé ôóíêöèè, ñòàëî ñ÷èòàòüñÿ
íåæåëàòåëüíûì.
Ïðèìåíåíèå ïðîãðàìì â ñàìûõ
ðàçíûõ îáëàñòÿõ ÷åëîâå÷åñêîé äåÿòåëüíîñòè ïðèâåëî ê íåîáõîäèìîñòè ïîâûøåíèÿ
íàäåæíîñòè âñåãî ïðîãðàììíîãî îáåñïå÷åíèÿ. Îäíèì èç íàïðàâëåíèé
ñîâåðøåíñòâîâàíèÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ ñòàëî ïîâûøåíèÿ óðîâíÿ òèïèçàöèè
äàííûõ.
Ïîýòîìó, ñëåäóþùèé
øàã - îïèñàíèå ñîáñòâåííûõ òèïîâ äàííûõ, ïîçâîëÿþùèõ ñòðóêòóðèðîâàòü è ãðóïïèðîâàòü
èíôîðìàöèþ, ïðåäñòàâëÿÿ åå â áîëåå åñòåñòâåííîì âèäå. Íàïðèìåð, ìîæíî ïðåäñòàâèòü ñ ïîìîùüþ îäíîé
ñòðóêòóðû âñå ðàçíîðîäíûå
ñâåäåíèÿ, îòíîñÿùèåñÿ ê îäíîìó âèäó òîâàðà íà ñêëàäå.
Äëÿ ðàáîòû ñ ñîáñòâåííûìè òèïàìè
äàííûõ òðåáóþòñÿ ñïåöèàëüíûå ôóíêöèè. Åñòåñòâåííî ñãðóïïèðîâàòü èõ ñ îïèñàíèåì ýòèõ òèïîâ
äàííûõ â îäíîì ìåñòå ïðîãðàììû, à òàêæå ïî âîçìîæíîñòè îòäåëèòü îò åå îñòàëüíûõ
÷àñòåé. Ïðè ýòîì äëÿ èñïîëüçîâàíèÿ ýòèõ òèïîâ è ôóíêöèé íå òðåáóåòñÿ ïîëíîãî
çíàíèÿ òîãî, êàê èìåííî îíè íàïèñàíû - íåîáõîäèìû òîëüêî îïèñàíèÿ èíòåðôåéñîâ. Îáúåäèíåíèå â ìîäóëè îïèñàíèé òèïîâ äàííûõ è ôóíêöèé,
ïðåäíàçíà÷åííûõ äëÿ ðàáîòû ñ íèìè, ñî ñêðûòèåì îò
ïîëüçîâàòåëÿ ìîäóëÿ íåñóùåñòâåííûõ äåòàëåé, ÿâëÿåòñÿ äàëüíåéøèì ðàçâèòèåì ñòðóêòóðèçàöèè ïðîãðàììû.
Òåîðèÿ òèïîâ äàííûõ èñõîäèò èç
òîãî, ÷òî êàæäîå èñïîëüçóåìîå â ïðîãðàììå äàííîå ïðèíàäëåæèò îäíîìó è òîëüêî
îäíîìó òèïó äàííûõ. Òèï äàííîãî îïðåäåëÿåò ìíîæåñòâî âîçìîæíûõ çíà÷åíèé äàííîãî
è íàáîð îïåðàöèé, äîïóñòèìûõ íàä ýòèì äàííûì. Äàííîå êîíêðåòíîãî òèïà â ðÿäå
ñëó÷àåâ ìîæåò áûòü ïðåîáðàçîâàíî â äàííîå äðóãîãî òèïà, íî òàêîå ïðåîáðàçîâàíèå
äîëæíî áûòü ÿâíî ïðåäñòàâëåíî â ïðîãðàììå. Â çàâèñèìîñòè îò ñòåïåíè âûïîëíåíèÿ
ïåðå÷èñëåííûõ òðåáîâàíèé ìîæíî ãîâîðèòü îá óðîâíå òèïèçàöèè òîãî èëè èíîãî
ÿçûêà ïðîãðàììèðîâàíèÿ. Ñòðåìëåíèå ïîâûñèòü óðîâåíü òèïèçàöèè ÿçûêà
ïðîãðàììèðîâàíèÿ ïðèâåëî ê èäåå ñîçäàíèÿ ñòðîãî òèïèçèðîâàííûõ ÿçûêîâ
ïðîãðàììèðîâàíèÿ.
Ïðèìåíåíèå ñòðîãî òèïèçèðîâàííîãî
ÿçûêà ïðè íàïèñàíèè ïðîãðàììû ïîçâîëÿåò åùå ïðè òðàíñëÿöèè èñõîäíîãî òåêñòà
âûÿâèòü ìíîãèå îøèáêè èñïîëüçîâàíèÿ äàííûõ è ýòèì ïîâûñèòü íàäåæíîñòü
ïðîãðàììû. Âìåñòå ñ òåì ñòðîãàÿ òèïèçàöèÿ ñêîâûâàëà ñâîáîäó ïðîãðàììèñòà,
çàòðóäíÿëà ïðèìåíåíèå íåêîòîðûõ ïðèåìîâ ïðåîáðàçîâàíèÿ äàííûõ, ÷àñòî
èñïîëüçóåìûõ â ñèñòåìíîì ïðîãðàììèðîâàíèè.
Âñå òðè îïèñàííûõ
âûøå ìåòîäà ïîâûøåíèÿ àáñòðàêöèè ïðåñëåäóþò öåëü óïðîñòèòü ñòðóêòóðó ïðîãðàììû, òî
åñòü ïðåäñòàâèòü åå â âèäå ìåíüøåãî êîëè÷åñòâà áîëåå êðóïíûõ áëîêîâ è
ìèíèìèçèðîâàòü ñâÿçè ìåæäó íèìè. Ýòî ïîçâîëÿåò óïðàâëÿòü áîëüøèì îáúåìîì èíôîðìàöèè
è, ñëåäîâàòåëüíî, óñïåøíî îòëàæèâàòü áîëåå
ñëîæíûå ïðîãðàììû.
Âñå óíèâåðñàëüíûå ÿçûêè
ïðîãðàììèðîâàíèÿ, íåñìîòðÿ íà ðàçëè÷èÿ â ñèíòàêñèñå è èñïîëüçóåìûõ êëþ÷åâûõ
ñëîâàõ, ðåàëèçóþò îäíè è òå æå êàíîíè÷åñêèå ñòðóêòóðû: îïåðàòîðû ïðèñâàèâàíèÿ,
öèêëû è ðàçâåòâëåíèÿ. Âî âñåõ ñîâðåìåííûõ ÿçûêàõ ïðèñóòñòâóþò ïðåäîïðåäåëåííûå
òèïû äàííûõ (öåëûå è âåùåñòâåííûå àðèôìåòè÷åñêèå òèïû, ñèìâîëüíûé è, âîçìîæíî,
ñòðîêîâûé òèï), èìååòñÿ âîçìîæíîñòü èñïîëüçîâàíèÿ àãðåãàòîâ äàííûõ, â òîì ÷èñëå
ìàññèâîâ è ñòðóêòóð (çàïèñåé). Äëÿ àðèôìåòè÷åñêèõ äàííûõ ðàçðåøåíû îáû÷íûå àðèôìåòè÷åñêèå
îïåðàöèè, äëÿ àãðåãàòîâ äàííûõ îáû÷íî ïðåäóñìîòðåíà òîëüêî îïåðàöèÿ
ïðèñâàèâàíèÿ è âîçìîæíîñòü îáðàùåíèÿ ê ýëåìåíòàì àãðåãàòà.
Âìåñòå ñ òåì ïðè ðàçðàáîòêå
ïðîãðàììû äëÿ ðåøåíèÿ êîíêðåòíîé ïðèêëàäíîé çàäà÷è æåëàòåëüíà âîçìîæíî áîëüøàÿ
êîíöåïòóàëüíàÿ áëèçîñòü òåêñòà ïðîãðàììû ê îïèñàíèþ çàäà÷è. Íàïðèìåð, åñëè
ðåøåíèå çàäà÷è òðåáóåò âûïîëíåíèÿ îïåðàöèé íàä êîìïëåêñíûìè ÷èñëàìè èëè
êâàäðàòíûìè ìàòðèöàìè, æåëàòåëüíî, ÷òîáû â ïðîãðàììå ÿâíî ïðèñóòñòâîâàëè
îïåðàòîðû ñëîæåíèÿ, âû÷èòàíèÿ, óìíîæåíèÿ è äåëåíèÿ äàííûõ òèïà êîìïëåêñíîãî
÷èñëà, ñëîæåíèÿ, âû÷èòàíèÿ, óìíîæåíèÿ è îáðàùåíèÿ äàííûõ òèïà êâàäðàòíîé
ìàòðèöû. Ðåøåíèå ýòîé ïðîáëåìû âîçìîæíî íåñêîëüêèìè ïóòÿìè:
- Ïîñòðîåíèåì ÿçûêà
ïðîãðàììèðîâàíèÿ, ñîäåðæàùåãî êàê ìîæíî áîëüøå òèïîâ äàííûõ, è âûáîðîì äëÿ
êàæäîãî êëàññà çàäà÷ íåêîòîðîãî ïîäìíîæåñòâà ýòîãî ÿçûêà. Òàêîé ÿçûê èíîãäà
íàçûâàþò ÿçûêîì-îáîëî÷êîé.
- Ïîñòðîåíèåì ðàñøèðÿåìîãî ÿçûêà,
ñîäåðæàùåãî íåáîëüøîå ÿäðî è äîïóñêàþùåãî ðàñøèðåíèå, äîïîëíÿþùåå ÿçûê òèïàìè
äàííûõ è îïåðàòîðàìè, îòðàæàþùèìè êîíöåïòóàëüíóþ ñóùíîñòü êîíêðåòíîãî êëàññà
çàäà÷. Òàêîé ÿçûê íàçûâàþò ÿçûêîì-ÿäðîì.
Äàëüíåéøèì ðàçâèòèåì âòîðîãî ïóòè
ÿâèëñÿ îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä ê ïðîãðàììèðîâàíèþ.
Ââåäåíèå ïîíÿòèÿ êëàññà ÿâëÿåòñÿ
åñòåñòâåííûì ðàçâèòèåì èäåé ìîäóëüíîñòè. Â êëàññå ñòðóêòóðû
äàííûõ è ôóíêöèè èõ îáðàáîòêè îáúåäèíÿþòñÿ. Êëàññ èñïîëüçóåòñÿ òîëüêî ÷åðåç åãî
èíòåðôåéñ - äåòàëè ðåàëèçàöèè äëÿ ïîëüçîâàòåëÿ êëàññà
íåñóùåñòâåííû. Èäåÿ êëàññîâ îòðàæàåò ñòðîåíèå îáúåêòîâ ðåàëüíîãî ìèðà
- âåäü êàæäûé ïðåäìåò èëè ïðîöåññ îáëàäàåò íàáîðîì õàðàêòåðèñòèê èëè îòëè÷èòåëüíûõ
÷åðò, èíûìè ñëîâàìè, ñâîéñòâàìè è ïîâåäåíèåì. Ïðîãðàììû ÷àñòî ïðåäíàçíà÷åíû äëÿ
ìîäåëèðîâàíèÿ ïðåäìåòîâ, ïðîöåññîâ è ÿâëåíèé ðåàëüíîãî ìèðà,
ïîýòîìó â ÿçûêå ïðîãðàììèðîâàíèÿ óäîáíî èìåòü àäåêâàòíûé èíñòðóìåíò äëÿ ïðåäñòàâëåíèÿ
ìîäåëåé.
Êëàññ ÿâëÿåòñÿ òèïîì äàííûõ, îïðåäåëÿåìûì ïîëüçîâàòåëåì.
 êëàññå çàäàþòñÿ ñâîéñòâà è ïîâåäåíèå
êàêîãî-ëèáî ïðåäìåòà èëè ïðîöåññà â âèäå ïîëåé äàííûõ (àíàëîãè÷íî ñòðóêòóðå) è
ôóíêöèé äëÿ ðàáîòû ñ íèìè. Ñîçäàâàåìûé òèï äàííûõ îáëàäàåò
ïðàêòè÷åñêè òåìè æå ñâîéñòâàìè, ÷òî è ñòàíäàðòíûå òèïû. Íàïîìíèì, ÷òî
òèï çàäàåò âíóòðåííåå ïðåäñòàâëåíèå äàííûõ â ïàìÿòè êîìïüþòåðà, ìíîæåñòâî
çíà÷åíèé, êîòîðîå ìîãóò ïðèíèìàòü âåëè÷èíû ýòîãî òèïà, à òàêæå îïåðàöèè è
ôóíêöèè, ïðèìåíÿåìûå ê ýòèì âåëè÷èíàì. Âñå ýòî ìîæíî çàäàòü è â êëàññå.
Ñóùåñòâåííûì ñâîéñòâîì êëàññà ÿâëÿåòñÿ òî, ÷òî äåòàëè åãî ðåàëèçàöèè
ñêðûòû îò ïîëüçîâàòåëåé êëàññà çà èíòåðôåéñîì (âåäü è â ðåàëüíîì ìèðå ìîæíî,
íàïðèìåð, óïðàâëÿòü àâòîìîáèëåì, íå èìåÿ ïðåäñòàâëåíèÿ î
ïðèíöèïå âíóòðåííåãî ñãîðàíèÿ è óñòðîéñòâå äâèãàòåëÿ,
à ïîëüçîâàòüñÿ òåëåôîíîì - íå çíàÿ, «êàê èäåò ñèãíàë,
ïðèíöèïîâ ñâÿçè è êòî êëàë êàáåëü»). Èíòåðôåéñîì êëàññà ÿâëÿþòñÿ çàãîëîâêè åãî
ìåòîäîâ. Òàêèì îáðàçîì, êëàññ êàê ìîäåëü îáúåêòà ðåàëüíîãî ìèðà ÿâëÿåòñÿ
÷åðíûì ÿùèêîì, çàìêíóòûì ïî îòíîøåíèþ ê âíåøíåìó ìèðó.
ÎÎÏ
îñíîâíàÿ ìåòîäîëîãèÿ ïðîãðàììèðîâàíèÿ 90-õ ãîäîâ. Ýòî ñòèëü ïðîãðàììèðîâàíèÿ,
êîòîðûé ôèêñèðóåò ïîâåäåíèå ðåàëüíîãî ìèðà òàêèì ñïîñîáîì, ïðè êîòîðîì äåòàëè
åãî ðåàëèçàöèè ñêðûòû. Èäåÿ êëàññîâ ÿâëÿåòñÿ îñíîâîé îáúåêòíî-îðèåíòèðîâàííîãî
ïðîãðàììèðîâàíèÿ (ÎÎÏ). Îñíîâíûå ïðèíöèïû ÎÎÏ
áûëè ðàçðàáîòàíû åùå â ÿçûêàõ Simula-67 è Smalltalk, íî â òî âðåìÿ íå
ïîëó÷èëè øèðîêîãî ïðèìåíåíèÿ èç-çà òðóäíîñòåé îñâîåíèÿ
è íèçêîé ýôôåêòèâíîñòè ðåàëèçàöèè. Â C++ ýòè êîíöåïöèè ðåàëèçîâàíû
ýôôåêòèâíî, êðàñèâî è íåïðîòèâîðå÷èâî, ÷òî è ÿâèëîñü îñíîâîé óñïåøíîãî ðàñïðîñòðàíåíèÿ
ýòîãî ÿçûêà è âíåäðåíèÿ ïîäîáíûõ ñðåäñòâ â äðóãèå ÿçûêè ïðîãðàììèðîâàíèÿ.
Ïîïóëÿðíîñòü ÎÎÏ îáúÿñíÿåòñÿ ñëåäóþùèì:
·
ÎÎÏ ïîçâîëÿåò
ïðèâåñòè ê ðîñòó ïðîäóêòèâíîñòè è óëó÷øåíèþ íàäåæíîñòè ïðîãðàìì, ïîìîãàÿ òåì
ñàìûì ðàçðåøèòü êðèçèñ â ïðîãðàììíîì îáåñïå÷åíèè;
·
ñòðåìëåíèå
ïåðåéòè îò óñòàðåâøèõ òåõíîëîãèé ïðîãðàììèðîâàíèÿ ê íîâîé òåõíîëîãèè;
·
ìàêñèìàëüíîå
ñõîäñòâî ñ èäåÿìè, ðîäèâøèìèñÿ â äðóãèõ îáëàñòÿõ.
ÎÎÏ ÿâëÿåòñÿ ëèøü ïîñëåäíèì çâåíîì â
äëèíîé öåïè ðåøåíèé, êîòîðûå áûëè ïðåäëîæåíû äëÿ ðàçðåøåíèÿ "êðèçèñà
ïðîãðàììíîãî îáåñïå÷åíèÿ". Êðèçèñ ïðîãðàììíîãî îáåñïå÷åíèÿ îçíà÷àåò, ÷òî
òå çàäà÷è, êîòîðûå ìû õîòèì ðåøèòü, îïåðåæàþò íàøè âîçìîæíîñòè.
ÎÎÏ - ýòî íå ïðîñòî íàáîð íîâûõ ñðåäñòâ, äîáàâëåííûõ â ÿçûê, ÎÎÏ ÷àñòî íàçûâàþò
íîâîé ïàðàäèãìîé ïðîãðàììèðîâàíèÿ.
Òåðìèí
«ïàðàäèãìà» îçíà÷àåò íàáîð òåîðèé, ñòàíäàðòîâ è ìåòîäîâ, êîòîðûå ñîâìåñòíî
ïðåäñòàâëÿþò ñîáîé ñïîñîá îðãàíèçàöèè çíàíèé - èíûìè ñëîâàìè, ñïîñîá âèäåíèÿ
ìèðà. Â ïðîãðàììèðîâàíèè ýòîò òåðìèí èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ ìîäåëè
âû÷èñëåíèé, òî åñòü ñïîñîáà ñòðóêòóðèðîâàíèÿ èíôîðìàöèè, îðãàíèçàöèè âû÷èñëåíèé
è äàííûõ. Îáúåêòíî-îðèåíòèðîâàííàÿ ïðîãðàììà ñòðîèòñÿ â òåðìèíàõ îáúåêòîâ è èõ
âçàèìîñâÿçåé.
2. Ïðèíöèïû ÎÎ ïîäõîäà â ïðîãðàììèðîâàíèè
Ðàññìîòðèì ñèòóàöèþ èç æèçíè. Íàïðèìåð,
íàäî ïîçäðàâèòü ðîäñòâåííèêà, æèâóùåãî â äðóãîì ãîðîäå ñ äíåì ðîæäåíèÿ. Äëÿ ýòî
èäåòå íà ïî÷òó è ïîñûëàåòå òåëåãðàììó. Âû ñîîáùàåòå îïåðàòîðó, ÷òî õîòèòå
ïåðåñëàòü äàííûé òåêñò ïî íåêîòîðîìó àäðåñó è âàøå ïîçäðàâëåíèå ïîïàäåò ïî
íóæíîìó àäðåñó.
Èòàê, äëÿ ðåøåíèÿ ñâîåé ïðîáëåìû Âû íàøëè
àãåíòà è ïåðåäàëè åìó ñîîáùåíèå, ñîäåðæàùåå çàïðîñ. Îáÿçàííîñòüþ àãåíòà áóäåò
óäîâëåòâîðèòü Âàø çàïðîñ ëþáûì èçâåñòíûì òîëüêî èì ñïîñîáîì. Âàñ ñîâåðøåííî íå
èíòåðåñóåò êàêèì èìåííî. Èìååòñÿ íåêèé ìåòîä - ò.å. àëãîðèòì, èëè
ïîñëåäîâàòåëüíîñòü îïåðàöèé, êîòîðûå èñïîëüçóþò ïî÷òîâûå ðàáîòíèêè äëÿ
âûïîëíåíèÿ çàïðîñà. Âàì íå íàäî çíàòü êàêîé êîíêðåòíî ìåòîä èñïîëüçóåòñÿ.
Äåéñòâèå â ÎÎÏ èíèöèèðóåòñÿ ïîñðåäñòâîì
ïåðåäà÷è ñîîáùåíèé îáúåêòó, îòâåòñòâåííîìó çà äåéñòâèÿ. Ñîîáùåíèå ñîäåðæèò
çàïðîñ íà âûïîëíåíèå äåéñòâèÿ è ñîïðîâîæäàåòñÿ äîïîëíèòåëüíîé èíôîðìàöèåé,
íåîáõîäèìîé äëÿ åãî âûïîëíåíèÿ. Ïîëó÷àòåëü - ýòî àãåíò, êîìó ïîñûëàåòñÿ
ñîîáùåíèå. Åñëè îí ïðèíèìàåò ñîîáùåíèå, òî íà íåãî àâòîìàòè÷åñêè âîçëàãàåòñÿ
îòâåòñòâåííîñòü çà âûïîëíåíèå óêàçàííîãî äåéñòâèÿ.  êà÷åñòâå ðåàêöèè íà
ñîîáùåíèå ïîëó÷àòåëü çàïóñòèò íåêîòîðûé èçâåñòíûé òîëüêî åìó ìåòîä, ÷òîáû
óäîâëåòâîðèòü ïðèíÿòûé çàïðîñ.
Èòàê, ïåðâûì ïðèíöèïîì ÎÎ ïîäõîäà ê
ðåøåíèþ çàäà÷è ÿâëÿåòñÿ ñïîñîá çàäàíèÿ äåéñòâèé.
Ñêðûòèå èíôîðìàöèè ÿâëÿåòñÿ âàæíûì
ïðèíöèïîì è â òðàäèöèîííûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ. ×åì æå ïåðåñûëêà ñîîáùåíèÿ
îòëè÷àåòñÿ â ÎÎÏ è â òðàäèöèîííûõ ïîäõîäàõ.
Ïåðâîå îòëè÷èå: èìååòñÿ âïîëíå
îïðåäåëåííûé ïîëó÷àòåëü - àãåíò, êîòîðîìó ïîñëàíî ñîîáùåíèå. Ïðè âûçîâå
ïðîöåäóðû íåò ñòîëü ÿâíî âûäåëåííîãî ïîëó÷àòåëÿ.
Âòîðîå îòëè÷èå: èíòåðïðåòàöèÿ ñîîáùåíèÿ (à
èìåííî ìåòîä, âûçûâàåìûé ïîñëå ïðèåìà ñîîáùåíèÿ) çàâèñèò îò ïîëó÷àòåëÿ è
ÿâëÿåòñÿ ðàçëè÷íîé äëÿ ðàçëè÷íûõ ïîëó÷àòåëåé.
Òàêèì îáðàçîì, ðàçëè÷èå ìåæäó âûçîâîì
ïðîöåäóðû è ïåðåñûëêîé ñîîáùåíèÿ ñîñòîèò â òîì, ÷òî â ïîñëåäíåì ñëó÷àå
ñóùåñòâóåò îïðåäåëåííûé ïîëó÷àòåëü è èíòåðïðåòàöèÿ ìîæåò áûòü ðàçëè÷íîé äëÿ
ðàçëè÷íûõ ïîëó÷àòåëåé. Îáû÷íî êîíêðåòíûé ïîëó÷àòåëü íåèçâåñòåí âïëîòü äî
âûïîëíåíèÿ ïðîãðàììû, è, ñëåäîâàòåëüíî, íå èçâåñòåí êàêîé ìåòîä áóäåò âûçâàí. Â
òàêîì ñëó÷àå ãîâîðÿò, ÷òî èìååò ìåñòî ïîçäíåå ñâÿçûâàíèå ìåæäó ñîîáùåíèåì è
ìåòîäîì, êîòîðûé âûçûâàåòñÿ â îòâåò íà ýòî ñîîáùåíèå. Ýòà ñèòóàöèÿ
ïðîòèâîïîñòàâëÿåòñÿ ðàííåìó ñâÿçûâàíèþ íà ñòàäèÿõ êîìïîíîâêè, ïðèñóùèõ
òðàäèöèîííîìó ïðîãðàììèðîâàíèþ.
Ôóíäàìåíòàëüíîé êîíöåïöèåé â ÎÎÏ ÿâëÿåòñÿ
ïîíÿòèå îòâåòñòâåííîñòè çà âûïîëíåíèå äåéñòâèé.
Âñå îáúåêòû ÿâëÿþòñÿ ïðåäñòàâèòåëÿìè, èëè
ýêçåìïëÿðàìè, êëàññîâ. Ìåòîä àêòèâèçèðóåìûé îáúåêòîì â îòâåò íà ñîîáùåíèå,
îïðåäåëÿåòñÿ êëàññîì, ê êîòîðîìó ïðèíàäëåæèò ïîëó÷àòåëü ñîîáùåíèÿ. Âñå îáúåêòû
îäíîãî êëàññà èñïîëüçóþò îäíè è òå æå ìåòîäû â îòâåò íà îäèíàêîâûå ñîîáùåíèÿ.
Âåñü
ìèð - ýòî îáúåêòû, êîòîðûå ïåðåäàþò äðóã äðóãó ñîîáùåíèÿ
Ðàáîòíèêîâ ïî÷òû è îïåðàòîðîâ ñîòîâîé
ñâÿçè ìîæíî ïðåäñòàâèòü â âèäå òàêîé èåðàðõèè êàòåãîðèé. Ðàáîòíèê ïî÷òû è
îïåðàòîð ñîòîâîé ñâÿçè - ýòî ïðîäàâåö óñëóã, ïðîäàâåö óñëóã - ýòî ïðîñòî
ïðîäàâåö, ïðîäàâåö - ýòî ÷åëîâåê, ÷åëîâåê - ýòî ìëåêîïèòàþùåå, ìëåêîïèòàþùåå -
ýòî æèâîòíîå, æèâîòíîå - ýòî ìàòåðèàëüíûé îáúåêò.
Êëàññû ìîãóò áûòü îðãàíèçîâàíû â
èåðàðõè÷åñêóþ ñòðóêòóðó ñ íàñëåäîâàíèåì ñâîéñòâ. Äî÷åðíèé êëàññ (èëè ïîäêëàññ)
íàñëåäóåò àòðèáóòû ðîäèòåëüñêîãî êëàññà (èëè íàäêëàññà), ðàñïîëîæåííîãî âûøå â
èåðàðõè÷åñêîì äåðåâå.
Ïðèíöèï, â ñîîòâåòñòâèè ñ êîòîðûì çíàíèå î
áîëåå îáùåé êàòåãîðèè ðàçðåøàåòñÿ èñïîëüçîâàòü äëÿ áîëåå óçêîé êàòåãîðèè,
ÿâëÿåòñÿ âòîðûì ïðèíöèïîì ÎÎÏ, íàçûâàåòñÿ íàñëåäîâàíèåì.
Âîçíèêàþò ñëó÷àè, êîãäà íåîáõîäèìî ïåðåîïðåäåëèòü ñïîñîá äåéñòâèÿ,
ò.å. íåîáõîäèìî ðàçðåøàòü ïåðåîïðåäåëÿòü
èíôîðìàöèþ, íàñëåäóåìóþ èç ðîäèòåëüñêèõ êëàññîâ. Äëÿ ïîèñêà ìåòîäà, ïîäõîäÿùåãî
äëÿ îáðàáîòêè ñîîáùåíèÿ, èñïîëüçóåòñÿ ñëåäóþùåå ïðàâèëî.
Ïîèñê ìåòîäà, êîòîðûé âûçûâàåòñÿ â îòâåò
íà îïðåäåëåííîå ñîîáùåíèå, íà÷èíàåòñÿ ñ ìåòîäîâ, ïðèíàäëåæàùèõ êëàññó
ïîëó÷àòåëÿ. Åñëè ïîäõîäÿùèé ìåòîä íå íàéäåí, òî ïîèñê ïðîäîëæàåòñÿ äëÿ
ðîäèòåëüñêîãî êëàññà. Ïîèñê ïðîäâèãàåòñÿ ââåðõ ïî öåïî÷êå ðîäèòåëüñêèõ êëàññîâ
äî òåõ ïîð, ïîêà íå áóäåò íàéäåí íóæíûé ìåòîä èëè ïîêà íå áóäåò èñ÷åðïàíà ïîñëåäîâàòåëüíîñòü
ðîäèòåëüñêèõ êëàññîâ.  ïåðâîì ñëó÷àå âûïîëíÿåòñÿ íàéäåííûé ìåòîä, âî âòîðîì -
âûäàåòñÿ ñîîáùåíèå îá îøèáêå. Åñëè âûøå â èåðàðõèè êëàññîâ ñóùåñòâóþò ìåòîäû ñ
òåì æå èìåíåì, ÷òî è òåêóùèé, òî ãîâîðÿò, ÷òî äàííûé ìåòîä ïåðåîïðåäåëÿåò
íàñëåäóåìîå ïîâåäåíèå.
Òîò ôàêò, ÷òî Âàø äðóã ñòóäåíò è îïåðàòîð
ïî÷òû áóäåò ðåàãèðîâàòü ïî ðàçíîìó íà ïðîñüáó ïîçäðàâèòü ðîäñòâåííèêîâ,
ÿâëÿåòñÿ òðåòüèì ïðèíöèïîì ÎÎÏ, íàçûâàåìûé ïîëèìîðôèçìîì.
Âûáîð ñòåïåíè àáñòðàêöèè îïðåäåëÿåòñÿ
òèïîì çàäà÷è, êîòîðóþ òðåáóåòñÿ ðåøèòü. Íå èìååò ñìûñëà èñïîëüçîâàòü ñëîæíûå
òåõíîëîãèè äëÿ ðåøåíèÿ ïðîñòûõ çàäà÷, à ïîïûòêà «âðóêîïàøíóþ» ñïðàâèòüñÿ ñî
ñëîæíûìè ïðîáëåìàìè îáðå÷åíà íà ïðîâàë. Ñ äðóãîé ñòîðîíû, ñëîæíûå òåõíîëîãèè
òðåáóþò áîëüøèõ çàòðàò âðåìåíè íà èõ îñâîåíèå.
Íàïðèìåð, åñëè òðåáóåòñÿ íàïå÷àòàòü ïèñüìî, äëÿ ýòîé
öåëè ïîäîéäåò ïðîñòåéøèé òåêñòîâûé ðåäàêòîð, èìåþùèé ìèíèìóì âîçìîæíîñòåé,
êîòîðûì ìîæíî çà 10 ìèíóò îáó÷èòü äàæå ñîáñòâåííóþ áàáóøêó; ïîäãîòîâêà ñòàòüè ñ
ôîðìóëàìè ïîòðåáóåò îñâîåíèÿ áîëåå ñëîæíîãî òåêñòîâîãî ïðîöåññîðà òèïà Microsoft Word, à
äëÿ ñîçäàíèÿ ðåêëàìíîé áðîøþðû ñ èëëþñòðàöèÿìè ëó÷øå âñåãî ïîäîéäåò îäèí èç
èçäàòåëüñêèõ ïàêåòîâ, äëÿ îâëàäåíèÿ êîòîðûì ïîòðåáóåòñÿ íå îäíà íåäåëÿ. Òàê è â
ïðîãðàììèðîâàíèè: èäåè ÎÎÏ íå î÷åíü ïðîñòû äëÿ ïîíèìàíèÿ è, â îñîáåííîñòè, äëÿ
ïðàêòè÷åñêîãî èñïîëüçîâàíèÿ (èõ íåãðàìîòíîå ïðèìåíåíèå ïðèíîñèò ãîðàçäî áîëüøå
âðåäà, ÷åì ïîëüçû), à îñâîåíèå ñóùåñòâóþùèõ ñòàíäàðòíûõ áèáëèîòåê òðåáóåò
âðåìåíè è äîñòàòî÷íî âûñîêîãî óðîâíÿ ïåðâîíà÷àëüíîé ïîäãîòîâêè.
Êîíêðåòíûå âåëè÷èíû òèïà äàííûõ «êëàññ»
íàçûâàþòñÿ ýêçåìïëÿðàìè êëàññà, èëè îáúåêòàìè. Îáúåêòû âçàèìîäåéñòâóþò
ìåæäó ñîáîé, ïîñûëàÿ è ïîëó÷àÿ ñîîáùåíèÿ. Ñîîáùåíèå - ýòî çàïðîñ íà
âûïîëíåíèå äåéñòâèÿ, ñîäåðæàùèé íàáîð íåîáõîäèìûõ ïàðàìåòðîâ. Ìåõàíèçì
ñîîáùåíèé ðåàëèçóåòñÿ ñ ïîìîùüþ âûçîâà ñîîòâåòñòâóþùèõ ôóíêöèé. Òàêèì îáðàçîì,
ñ ïîìîùüþ ÎÎÏ ëåãêî ðåàëèçóåòñÿ òàê íàçûâàåìàÿ «ñîáûòèéíî-óïðàâëÿåìàÿ ìîäåëü»,
êîãäà äàííûå àêòèâíû è óïðàâëÿþò âûçîâîì òîãî èëè èíîãî ôðàãìåíòà ïðîãðàììíîãî
êîäà1.
ÏÐÈÌÅ×ÀÍÈÅ
Ïðèìåðîì ðåàëèçàöèè
ñîáûòèéíî-óïðàâëÿåìîé ìîäåëè ìîæåò ñëóæèòü ëþáàÿ ïðîãðàììà, óïðàâëÿåìàÿ ñ ïîìîùüþ ìåíþ. Ïîñëå
çàïóñêà òàêàÿ ïðîãðàììà ïàññèâíî îæèäàåò äåéñòâèé ïîëüçîâàòåëÿ è äîëæíà óìåòü ïðàâèëüíî
îòðåàãèðîâàòü íà ëþáîå èç íèõ. Ñîáûòèéíàÿ ìîäåëü ÿâëÿåòñÿ ïðîòèâîïîëîæíîñòüþ
òðàäèöèîííîé (äèðåêòèâíîé), êîãäà êîä óïðàâëÿåò äàííûìè: ïðîãðàììà ïîñëå ñòàðòà
ïðåäëàãàåò ïîëüçîâàòåëþ âûïîëíèòü íåêîòîðûå äåéñòâèÿ (ââåñòè äàííûå, âûáðàòü ðåæèì) â ñîîòâåòñòâèè
ñ æåñòêî çàäàííûì àëãîðèòìîì.
Îñíîâíûìè ñâîéñòâàìè
ÎÎÏ ÿâëÿþòñÿ èíêàïñóëÿöèÿ, íàñëåäîâàíèå è ïîëèìîðôèçì.
Áëàãîäàðÿ òîìó, ÷òî
ïðîãðàììà ïðåäñòàâëÿåòñÿ â òåðìèíàõ ïîâåäåíèÿ îáúåêòîâ, ïðè ïðîãðàììèðîâàíèè èñïîëüçóþòñÿ
ïîíÿòèÿ, áîëåå áëèçêèå ê ïðåäìåòíîé îáëàñòè, ñëåäîâàòåëüíî, ïðîãðàììà ëåã÷å ÷èòàåòñÿ è ïîíèìàåòñÿ.
Ýòî ÿâëÿåòñÿ áîëüøèì
ïðåèìóùåñòâîì ÎÎÏ. Îäíàêî ïðîåêòèðîâàíèå îáúåêòíî-îðèåíòèðîâàííîé ïðîãðàììû ïðåäñòàâëÿåò
ñîáîé âåñüìà ñëîæíóþ çàäà÷ó, ïîñêîëüêó â ïðîöåññ äîáàâëÿåòñÿ åùå îäèí âàæíûé ýòàï - ðàçðàáîòêà
èåðàðõèè êëàññîâ.
Ïëîõî ñïðîåêòèðîâàííàÿ èåðàðõèÿ
ïðèâîäèò ê ñîçäàíèþ ñëîæíûõ è çàïóòàííûõ ïðîãðàìì. Äðóãèì ïðåïÿòñòâèåì ê ïðèìåíåíèþ ÎÎÏ ÿâëÿåòñÿ
áîëüøîé îáúåì èíôîðìàöèè,
êîòîðóþ òðåáóåòñÿ îñâîèòü, è åå çíà÷èòåëüíàÿ ñëîæíîñòü.
Îñíîâíûå èäåè
îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà îïèðàþòñÿ íà ñëåäóþùèå ïîëîæåíèÿ:
- Ïðîãðàììà ïðåäñòàâëÿåò ñîáîé
ìîäåëü íåêîòîðîãî ðåàëüíîãî ïðîöåññà, ÷àñòè ðåàëüíîãî ìèðà.
- Ìîäåëü ðåàëüíîãî ìèðà èëè åãî
÷àñòè ìîæåò áûòü îïèñàíà êàê ñîâîêóïíîñòü âçàèìîäåéñòâóþùèõ ìåæäó ñîáîé
îáúåêòîâ.
- Îáúåêò îïèñûâàåòñÿ íàáîðîì
ïàðàìåòðîâ, çíà÷åíèÿ êîòîðûõ îïðåäåëÿþò ñîñòîÿíèå îáúåêòà, è íàáîðîì îïåðàöèé
(äåéñòâèé), êîòîðûå ìîæåò âûïîëíÿòü îáúåêò.
- Âçàèìîäåéñòâèå ìåæäó îáúåêòàìè
îñóùåñòâëÿåòñÿ ïîñûëêîé ñïåöèàëüíûõ ñîîáùåíèé îò îäíîãî îáúåêòà ê äðóãîìó.
Ñîîáùåíèå, ïîëó÷åííîå îáúåêòîì, ìîæåò ïîòðåáîâàòü âûïîëíåíèÿ îïðåäåëåííûõ
äåéñòâèé, íàïðèìåð, èçìåíåíèÿ ñîñòîÿíèÿ îáúåêòà.
- Îáúåêòû, îïèñàííûå îäíèì è òåì
æå íàáîðîì ïàðàìåòðîâ è ñïîñîáíûå âûïîëíÿòü îäèí è òîò æå íàáîð äåéñòâèé
ïðåäñòàâëÿþò ñîáîé êëàññ îäíîòèïíûõ îáúåêòîâ.
Îñíîâîïîëàãàþùåé
èäååé îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà
ÿâëÿåòñÿ îáúåäèíåíèå äàííûõ è äåéñòâèé, ïðîèçâîäèìûõ íàä ýòèìè
äàííûìè, â åäèíîå öåëîå, êîòîðîå íàçûâàåòñÿ îáúåêòîì.
Ôóíêöèè îáúåêòà, íàçûâàåìûå â
C++ ìåòîäàìè èëè ôóíêöèÿìè-÷ëåíàìè, îáû÷íî
ïðåäíàçíà÷åíû äëÿ äîñòóïà ê äàííûì îáúåêòà. Åñëè íåîáõîäèìî ñ÷èòàòü êàêèå-ëèáî
äàííûå îáúåêòà, íóæíî âûçâàòü ñîîòâåòñòâóþùèé ìåòîä, êîòîðûé âûïîëíèò
ñ÷èòûâàíèå è âîçâðàòèò òðåáóåìîå çíà÷åíèå. Ïðÿìîé äîñòóï ê äàííûì íåâîçìîæåí.
Äàííûå ñîêðûòû îò âíåøíåãî âîçäåéñòâèÿ, ÷òî çàùèùàåò èõ îò ñëó÷àéíîãî
èçìåíåíèÿ. Ãîâîðÿò, ÷òî äàííûå è ìåòîäû èíêàïñóëèðîâàíû. Òåðìèíû ñîêðûòèå
è èíêàïñóëÿöèÿ äàííûõ
ÿâëÿþòñÿ êëþ÷åâûìè â îïèñàíèè îáúåêòíî-îðèåíòèðîâàííûõ ÿçûêîâ.
Îáúåäèíåíèå äàííûõ
ñ ôóíêöèÿìè èõ îáðàáîòêè â ñî÷åòàíèè ñî ñêðûòèåì íåíóæíîé äëÿ èñïîëüçîâàíèÿ ýòèõ
äàííûõ èíôîðìàöèè íàçûâàåòñÿ èíêàïñóëÿöèåé (encapsulation). Ýòà èäåÿ íå íîâà è ïðèìåíÿëàñü
â ñòðóêòóðíîì è ìîäóëüíîì ïðîãðàììèðîâàíèè, à â ÎÎÏ ïîëó÷èëà ñâîå ëîãè÷åñêîå çàâåðøåíèå.
Èíêàïñóëÿöèÿ ïîâûøàåò
ñòåïåíü àáñòðàêöèè ïðîãðàììû: äàííûå êëàññà è ðåàëèçàöèÿ åãî ôóíêöèé íàõîäÿòñÿ íèæå óðîâíÿ
àáñòðàêöèè, è äëÿ íàïèñàíèÿ ïðîãðàììû èíôîðìàöèÿ î íèõ íå òðåáóåòñÿ. Êðîìå
òîãî, èíêàïñóëÿöèÿ ïîçâîëÿåò èçìåíèòü ðåàëèçàöèþ êëàññà áåç ìîäèôèêàöèè îñíîâíîé ÷àñòè ïðîãðàììû, åñëè èíòåðôåéñ îñòàëñÿ ïðåæíèì (íàïðèìåð, ïðè íåîáõîäèìîñòè
ñìåíèòü ñïîñîá õðàíåíèÿ äàííûõ ñ
ìàññèâà íà ñòåê). Ïðîñòîòà ìîäèôèêàöèè, êàê óæå íåîäíîêðàòíî îòìå÷àëîñü, ÿâëÿåòñÿ î÷åíü âàæíûì êðèòåðèåì êà÷åñòâà
ïðîãðàììû.
Èíêàïñóëÿöèÿ
ïîçâîëÿåò èñïîëüçîâàòü êëàññ â äðóãîì îêðóæåíèè è áûòü óâåðåííûì, ÷òî îí íå èñïîðòèò íå
ïðèíàäëåæàùèå åìó îáëàñòè ïàìÿòè, à òàêæå ñîçäàâàòü áèáëèîòåêè êëàññîâ äëÿ ïðèìåíåíèÿ âî ìíîãèõ
ïðîãðàììàõ.
Åñëè íåîáõîäèìî èçìåíèòü
äàííûå îáúåêòà, òî, î÷åâèäíî, ýòî äåéñòâèå òàêæå áóäåò âîçëîæåíî íà ìåòîäû
îáúåêòà. Íèêàêèå äðóãèå ôóíêöèè íå ìîãóò èçìåíÿòü äàííûå êëàññà. Òàêîé ïîäõîä îáëåã÷àåò íàïèñàíèå,
îòëàäêó è èñïîëüçîâàíèå ïðîãðàììû.
Òèïè÷íàÿ ïðîãðàììà íà ÿçûêå
C++ ñîñòîèò èç ñîâîêóïíîñòè îáúåêòîâ, âçàèìîäåéñòâóþùèõ ìåæäó ñîáîé ïîñðåäñòâîì
âûçîâà ìåòîäîâ äðóã äðóãà. Ñòðóêòóðà ïðîãðàììû íà C++ ïðèâîäèòñÿ íà ðèñ. 1.
Ðèñ. 1. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä
ÎÎÏ: ïîäõîä ê îðãàíèçàöèè
ïðîãðàììû. Îáúåêòíî-îðèåíòèðîâàííîå
ïðîãðàììèðîâàíèå íèêàê íå ñâÿçàíî ñ ïðîöåññîì âûïîëíåíèÿ ïðîãðàììû, à ÿâëÿåòñÿ
ëèøü ñïîñîáîì åå îðãàíèçàöèè.
Îáúåêòû. Ïðè
ðåøåíèè çàäà÷è ñ ïîìîùüþ îáúåêòíî-îðèåíòèðîâàííîãî
ìåòîäà âìåñòî ïðîáëåìû ðàçáèåíèÿ çàäà÷è íà ôóíêöèè âîçíèêàåò ïðîáëåìà
ðàçáèåíèÿ åå íà îáúåêòû. Ìûøëåíèå â òåðìèíàõ îáúåêòîâ îêàçûâàåòñÿ ãîðàçäî áîëåå
ïðîñòûì è íàãëÿäíûì, ÷åì â òåðìèíàõ ôóíêöèé, ïîñêîëüêó ïðîãðàììíûå îáúåêòû
ñõîæè ñ îáúåêòàìè ðåàëüíîãî ìèðà.
Ñîîòâåòñòâèå ìåæäó
ïðîãðàììíûìè è ðåàëüíûìè îáúåêòàìè ÿâëÿåòñÿ ñëåäñòâèåì îáúåäèíåíèÿ äàííûõ è
ôóíêöèé. Ïîëó÷àþùèåñÿ â ðåçóëüòàòå òàêîãî îáúåäèíåíèÿ îáúåêòû â ñâîå âðåìÿ
ïðîèçâåëè ôóðîð, âåäü íè îäíà ïðîãðàììíàÿ ìîäåëü, ñîçäàííàÿ íà îñíîâå
ïðîöåäóðíîãî ïîäõîäà, íå îòðàæàëà ñóùåñòâóþùèå âåùè ñòîëü òî÷íî, êàê ýòî
óäàëîñü ñäåëàòü ñ ïîìîùüþ îáúåêòîâ.
Êëàññû.
Êîãäà ìû ãîâîðèì îá îáúåêòàõ, ìû ãîâîðèì, ÷òî îíè ÿâëÿþòñÿ ýêçåìïëÿðàìè
êëàññîâ. Ðàññìîòðèì ñëåäóþùóþ àíàëîãèþ. Ïðàêòè÷åñêè âñå ÿçûêè ïðîãðàììèðîâàíèÿ
èìåþò ñòàíäàðòíûå òèïû äàííûõ; íàïðèìåð, â C++ åñòü öåëûé òèï int. Ìû ìîæåì
îïðåäåëÿòü ïåðåìåííûå òàêèõ òèïîâ â íàøèõ ïðîãðàììàõ:
int day;
int count;
int divisor;
int answer;
Ïîäîáíûì æå îáðàçîì ìû ìîæåì
îïðåäåëÿòü îáúåêòû êëàññà (ðèñ. 2). Êëàññ ÿâëÿåòñÿ ñâîåãî ðîäà ôîðìîé,
îïðåäåëÿþùåé, êàêèå äàííûå è ôóíêöèè áóäóò âêëþ÷åíû â îáúåêò êëàññà. Ïðè
îáúÿâëåíèè êëàññà íå ñîçäàþòñÿ íèêàêèå îáúåêòû ýòîãî êëàññà, ïî àíàëîãèè ñ òåì,
÷òî ñóùåñòâîâàíèå òèïà int åùå íå îçíà÷àåò ñóùåñòâîâàíèå ïåðåìåííûõ ýòîãî òèïà.
Ðèñ. 2. Êëàññ è åãî îáúåêòû
Òàêèì îáðàçîì, êëàññ ÿâëÿåòñÿ
îïèñàíèåì ñîâîêóïíîñòè ñõîäíûõ ìåæäó ñîáîé îáúåêòîâ. Ýòî ñîîòâåòñòâóåò
íåñòðîãîìó â òåõíè÷åñêîì ñìûñëå ïîíèìàíèþ òåðìèíà «êëàññ»: íàïðèìåð, Çèäàí,
Ðîíàëüäî, Ùåâ÷åíêî îòíîñÿòñÿ ê êëàññó ôóòáîëèñòîâ. Íå ñóùåñòâóåò êîíêðåòíîãî
÷åëîâåêà ñ èìåíåì «ôóòáîëèñò», îäíàêî ëþäè ñî ñâîèìè óíèêàëüíûìè èìåíàìè
ÿâëÿþòñÿ îáúåêòàìè ýòîãî êëàññà, åñëè îíè îáëàäàþò îïðåäåëåííûì íàáîðîì
õàðàêòåðèñòèê. Îáúåêò êëàññà òàêæå íàçûâàþò ýêçåìïëÿðîì êëàññà.
Íàñëåäîâàíèå. Ïîíÿòèå êëàññà ïðèâîäèò íàñ ê ïîíÿòèþ íàñëåäîâàíèÿ. Â ïîâñåäíåâíîé æèçíè ìû
÷àñòî ñòàëêèâàåìñÿ ñ ðàçáèåíèåì êëàññîâ íà ïîäêëàññû: íàïðèìåð, êëàññ æèâîòíûå
ìîæíî ðàçáèòü íà ïîäêëàññû ìëåêîïèòàþùèå, çåìíîâîäíûå, íàñåêîìûå, ïòèöû è
ò. ä. Êëàññ íàçåìíûé òðàíñïîðò äåëèòñÿ íà êëàññû àâòîìîáèëè,
ãðóçîâèêè, àâòîáóñû, ìîòîöèêëû è ò. ä.
Íàñëåäîâàíèå - ýòî âîçìîæíîñòü ñîçäàíèÿ
èåðàðõèè êëàññîâ, êîãäà ïîòîìêè íàñëåäóþò âñå ñâîéñòâà ñâîèõ ïðåäêîâ, ìîãóò èõ èçìåíÿòü è
äîáàâëÿòü íîâûå. Ñâîéñòâà
ïðè íàñëåäîâàíèè ïîâòîðíî íå îïèñûâàþòñÿ, ÷òî ñîêðàùàåò îáúåì ïðîãðàììû. Âûäåëåíèå îáùèõ ÷åðò
ðàçëè÷íûõ êëàññîâ â îäèí êëàññ-ïðåäîê ÿâëÿåòñÿ ìîùíûì ìåõàíèçìîì àáñòðàêöèè -
âåäü è ëþáàÿ íàóêà íà÷èíàåòñÿ ñ àáñòðàãèðîâàíèÿ è êëàññèôèêàöèè, êîòîðûå ïîìîãàþò ñïðàâèòüñÿ ñî
ñëîæíîñòüþ ðàññìàòðèâàåìîé ïðåäìåòíîé
îáëàñòè.
Èåðàðõèÿ êëàññîâ
ïðåäñòàâëÿåòñÿ â âèäå äðåâîâèäíîé ñòðóêòóðû, â êîòîðîé áîëåå îáùèå êëàññû ðàñïîëàãàþòñÿ
áëèæå ê êîðíþ, à áîëåå ñïåöèàëèçèðîâàííûå - íà âåòâÿõ è ëèñòüÿõ. Â C++ êàæäûé êëàññ ìîæåò èìåòü
ñêîëüêî óãîäíî ïîòîìêîâ è ïðåäêîâ. Èíîãäà ïðåäêè íàçûâàþòñÿ íàäêëàññàìè èëè ñóïåðêëàññàìè, à
ïîòîìêè - ïîäêëàññàìè èëè ñóáêëàññàìè.
Ïðèíöèï, ïîëîæåííûé â îñíîâó
òàêîãî äåëåíèÿ, çàêëþ÷àåòñÿ â òîì, ÷òî êàæäûé ïîäêëàññ îáëàäàåò ñâîéñòâàìè,
ïðèñóùèìè òîìó êëàññó, èç êîòîðîãî âûäåëåí äàííûé ïîäêëàññ. Àâòîìîáèëè,
ãðóçîâèêè, àâòîáóñû è ìîòîöèêëû îáëàäàþò êîëåñàìè è ìîòîðîì, ÿâëÿþùèìèñÿ
õàðàêòåðèñòèêàìè íàçåìíîãî òðàíñïîðòà. Êðîìå òåõ ñâîéñòâ, êîòîðûå ÿâëÿþòñÿ
îáùèìè ó äàííûõ êëàññà è ïîäêëàññà, ïîäêëàññ ìîæåò îáëàäàòü è ñîáñòâåííûìè
ñâîéñòâàìè: íàïðèìåð, àâòîáóñû èìåþò áîëüøîå ÷èñëî ïîñàäî÷íûõ ìåñò äëÿ
ïàññàæèðîâ, â òî âðåìÿ êàê ãðóçîâèêè îáëàäàþò çíà÷èòåëüíûì ïðîñòðàíñòâîì è
ìîùíîñòüþ äëÿ ïåðåâîçêè òÿæåëîâåñíûõ ãðóçîâ è ò. ä.
Ïîäîáíî ýòîìó, â
ïðîãðàììèðîâàíèè êëàññ òàêæå ìîæåò ïîðîäèòü ìíîæåñòâî ïîäêëàññîâ. Â C++ êëàññ,
êîòîðûé ïîðîæäàåò âñå îñòàëüíûå êëàññû, íàçûâàåòñÿ áàçîâûì êëàññîì; îñòàëüíûå êëàññû íàñëåäóþò åãî ñâîéñòâà, îäíîâðåìåííî îáëàäàÿ
ñîáñòâåííûìè ñâîéñòâàìè. Òàêèå êëàññû íàçûâàþòñÿ ïðîèçâîäíûìè.
Ðèñ. 3. Íàñëåäîâàíèå
Ïðîèçâîäíûå êëàññû èìåþò
ñâîéñòâà êàê óíàñëåäîâàííûå îò áàçîâîãî êëàññà, òàê è ñâîè ñîáñòâåííûå.
Áàçîâûé êëàññ ñîäåðæèò
ýëåìåíòû, îáùèå äëÿ ãðóïïû ïðîèçâîäíûõ êëàññîâ. Ðîëü íàñëåäîâàíèÿ â ÎÎÏ -
ñîêðàòèòü ðàçìåð êîäà è óïðîñòèòü ñâÿçè ìåæäó ýëåìåíòàìè ïðîãðàììû.
Ïîâòîðíîå èñïîëüçîâàíèå
êîäà. Ðàçðàáîòàííûé êëàññ ìîæåò áûòü
èñïîëüçîâàí â äðóãèõ ïðîãðàììàõ. Ýòî ñâîéñòâî íàçûâàåòñÿ âîçìîæíîñòüþ ïîâòîðíîãî èñïîëüçîâàíèÿ êîäà.
 ÎÎÏ êîíöåïöèÿ íàñëåäîâàíèÿ
îòêðûâàåò íîâûå âîçìîæíîñòè ïîâòîðíîãî èñïîëüçîâàíèÿ êîäà. Ïðîãðàììèñò ìîæåò
âçÿòü ñóùåñòâóþùèé êëàññ, è, íè÷åãî íå èçìåíÿÿ, äîáàâèòü â íåãî ñâîè ýëåìåíòû.
Âñå ïðîèçâîäíûå êëàññû óíàñëåäóþò ýòè èçìåíåíèÿ, è â òî æå âðåìÿ êàæäûé èç
ïðîèçâîäíûõ êëàññîâ ìîæíî ìîäèôèöèðîâàòü îòäåëüíî.
Ïðåäïîëîæèì, ÷òî ðàçðàáîòàëè
êëàññ, ïðåäñòàâëÿþùèé ñèñòåìó ìåíþ, àíàëîãè÷íóþ ãðàôè÷åñêîìó èíòåðôåéñó
Microsoft Windows èëè äðóãîìó ãðàôè÷åñêîìó èíòåðôåéñó ïîëüçîâàòåëÿ (GUI). Âû íå
õîòèòå èçìåíÿòü ýòîò êëàññ, íî âàì íåîáõîäèìî äîáàâèòü âîçìîæíîñòü óñòàíîâêè è
ñíÿòèÿ ôëàæêîâ.  ýòîì ñëó÷àå âû ñîçäàåòå íîâûé êëàññ, íàñëåäóþùèé âñå ñâîéñòâà
èñõîäíîãî êëàññà, è äîáàâëÿåòå â íåãî íåîáõîäèìûé êîä.
Ëåãêîñòü ïîâòîðíîãî
èñïîëüçîâàíèÿ êîäà óæå íàïèñàííûõ ïðîãðàìì ÿâëÿåòñÿ âàæíûì äîñòîèíñòâîì ÎÎÏ.
Ïîëüçîâàòåëüñêèå òèïû
äàííûõ. Îäíèì èç äîñòîèíñòâ îáúåêòîâ
ÿâëÿåòñÿ òî, ÷òî îíè äàþò ïîëüçîâàòåëþ âîçìîæíîñòü ñîçäàâàòü ñâîè ñîáñòâåííûå
òèïû äàííûõ. Ïðåäñòàâüòå ñåáå, ÷òî âàì íåîáõîäèìî ðàáîòàòü ñ îáúåêòàìè,
èìåþùèìè äâå êîîðäèíàòû, íàïðèìåð õ è ó. Âàì õîòåëîñü áû ñîâåðøàòü îáû÷íûå
àðèôìåòè÷åñêèå îïåðàöèè íàä òàêèìè îáúåêòàìè, íàïðèìåð:
pos3 = pos1 + pos2
ãäå ïåðåìåííûå pos1, pos2 è
pos3 ïðåäñòàâëÿþò ñîáîé íàáîðû èç äâóõ êîîðäèíàò. Îïèñàâ êëàññ, âêëþ÷àþùèé â
ñåáÿ ïàðó êîîðäèíàò, è îáúÿâèâ îáúåêòû ýòîãî êëàññà ñ èìåíàìè pos1, pos2 è
pos3, ôàêòè÷åñêè ñîçäàäèì íîâûé òèï äàííûõ.  C++ èìåþòñÿ ñðåäñòâà, îáëåã÷àþùèå
ñîçäàíèå ïîäîáíûõ òèïîâ äàííûõ.
Ïîëèìîðôèçì è ïåðåãðóçêà.
Íàäî îòìåòèòü, ÷òî îïåðàöèè
ïðèñâàèâàíèÿ = è ñëîæåíèÿ + äëÿ òèïà pos
äîëæíû âûïîëíÿòü äåéñòâèÿ, îòëè÷àþùèåñÿ îò òåõ, êîòîðûå îíè âûïîëíÿþò äëÿ
îáúåêòîâ ñòàíäàðòíûõ òèïîâ, íàïðèìåð int. Îáúåêòû pos íå ÿâëÿþòñÿ ñòàíäàðòíûìè,
ïîñêîëüêó îïðåäåëåíû ïîëüçîâàòåëåì êàê ïðèíàäëåæàùèå êëàññó pos. Êàê æå
îïåðàòîðû = è + ðàñïîçíàþò, êàêèå äåéñòâèÿ íåîáõîäèìî ñîâåðøèòü íàä îïåðàíäàìè?
Îòâåò çàêëþ÷àåòñÿ â òîì, ÷òî ìû ñàìè ìîæåì çàäàòü ýòè äåéñòâèÿ, ñäåëàâ íóæíûå
îïåðàòîðû ìåòîäàìè êëàññà pos.
Èñïîëüçîâàíèå îïåðàöèé è
ôóíêöèé ðàçëè÷íûì îáðàçîì â çàâèñèìîñòè îò òîãî, ñ êàêèìè òèïàìè âåëè÷èí îíè
ðàáîòàþò, íàçûâàåòñÿ ïîëèìîðôèçìîì.
Êîãäà ñóùåñòâóþùàÿ îïåðàöèÿ, íàïðèìåð = èëè +, íàäåëÿåòñÿ âîçìîæíîñòüþ
ñîâåðøàòü äåéñòâèÿ íàä îïåðàíäàìè íîâîãî òèïà, ãîâîðÿò, ÷òî òàêàÿ îïåðàöèÿ
ÿâëÿåòñÿ ïåðåãðóæåííîé. Ïåðåãðóçêà
ïðåäñòàâëÿåò ñîáîé ÷àñòíûé ñëó÷àé ïîëèìîðôèçìà è ÿâëÿåòñÿ âàæíûì èíñòðóìåíòîì
ÎÎÏ.
Èòàê, òðåòüèì êèòîì,
íà êîòîðîì ñòîèò ÎÎÏ, ÿâëÿåòñÿ ïîëèìîðôèçì - âîçìîæíîñòü èñïîëüçîâàòü â ðàçëè÷íûõ êëàññàõ
èåðàðõèè îäíî èìÿ äëÿ îáîçíà÷åíèÿ ñõîäíûõ ïî ñìûñëó äåéñòâèé è ãèáêî âûáèðàòü
òðåáóåìîå äåéñòâèå âî âðåìÿ âûïîëíåíèÿ ïðîãðàììû.
Ïîíÿòèå ïîëèìîðôèçìà èñïîëüçóåòñÿ
â C++ âåñüìà øèðîêî. Ïðîñòûì ïðèìåðîì ïîëèìîðôèçìà ìîæåò ñëóæèòü ðàññìîòðåííàÿ íàìè ðàíåå
ïåðåãðóçêà ôóíêöèé,
êîãäà èç íåñêîëüêèõ âàðèàíòîâ âûáèðàåòñÿ íàèáîëåå ïîäõîäÿùàÿ ôóíêöèÿ ïî ñîîòâåòñòâèþ åå
ïðîòîòèïà ïåðåäàâàåìûì ïàðàìåòðàì. Äðóãîé ïðèìåð - èñïîëüçîâàíèå øàáëîíîâ
ôóíêöèé, êîãäà îäèí è òîò æå êîä âèäîèçìåíÿåòñÿ â ñîîòâåòñòâèè ñ òèïîì, ïåðåäàííûì â êà÷åñòâå ïàðàìåòðà.
×àùå âñåãî ïîíÿòèå ïîëèìîðôèçìà ñâÿçûâàþò ñ ìåõàíèçìîì âèðòóàëüíûõ ìåòîäîâ.
Ñ òî÷êè çðåíèÿ ÿçûêà
ïðîãðàììèðîâàíèÿ êëàññ îáúåêòîâ ìîæíî ðàññìàòðèâàòü êàê òèï äàííîãî, à
îòäåëüíûé îáúåêò - êàê äàííîå ýòîãî òèïà. Îïðåäåëåíèå ïðîãðàììèñòîì ñîáñòâåííûõ
êëàññîâ îáúåêòîâ äëÿ êîíêðåòíîãî íàáîðà çàäà÷ äîëæíî ïîçâîëèòü îïèñûâàòü
îòäåëüíûå çàäà÷è â òåðìèíàõ ñàìîãî êëàññà çàäà÷ (ïðè ñîîòâåòñòâóþùåì âûáîðå
èìåí òèïîâ è èìåí îáúåêòîâ, èõ ïàðàìåòðîâ è âûïîëíÿåìûõ äåéñòâèé).
Òàêèì îáðàçîì, îáúåêòíî-îðèåíòèðîâàííûé
ïîäõîä ïðåäïîëàãàåò, ÷òî ïðè ðàçðàáîòêå ïðîãðàììû äîëæíû áûòü îïðåäåëåíû êëàññû
èñïîëüçóåìûõ â ïðîãðàììå îáúåêòîâ è ïîñòðîåíû èõ îïèñàíèÿ, çàòåì ñîçäàíû
ýêçåìïëÿðû íåîáõîäèìûõ îáúåêòîâ è îïðåäåëåíî âçàèìîäåéñòâèå ìåæäó íèìè.
Êëàññû îáúåêòîâ ÷àñòî óäîáíî
ñòðîèòü òàê, ÷òîáû îíè îáðàçîâûâàëè èåðàðõè÷åñêóþ ñòðóêòóðó. Íàïðèìåð, êëàññ
“Ñòóäåíò”, îïèñûâàþùèé àáñòðàêòíîãî ñòóäåíòà, ìîæåò ñëóæèòü îñíîâîé äëÿ
ïîñòðîåíèÿ êëàññîâ “Ñòóäåíò 1 êóðñà”, “Ñòóäåíò 2 êóðñà” è ò.ä., êîòîðûå
îáëàäàþò âñåìè ñâîéñòâàìè ñòóäåíòà âîîáùå è íåêîòîðûìè äîïîëíèòåëüíûìè
ñâîéñòâàìè, õàðàêòåðèçóþùèìè ñòóäåíòà êîíêðåòíîãî êóðñà. Ïðè ðàçðàáîòêå
èíòåðôåéñà ñ ïîëüçîâàòåëåì ïðîãðàììû ìîãóò èñïîëüçîâàòü îáúåêòû îáùåãî êëàññà
“Îêíî” è îáúåêòû êëàññîâ ñïåöèàëüíûõ îêîí, íàïðèìåð, îêîí èíôîðìàöèîííûõ
ñîîáùåíèé, îêîí ââîäà äàííûõ è ò.ï.  òàêèõ èåðàðõè÷åñêèõ ñòðóêòóðàõ îäèí êëàññ
ìîæåò ðàññìàòðèâàòüñÿ êàê áàçîâûé äëÿ äðóãèõ, ïðîèçâîäíûõ îò íåãî êëàññîâ.
Îáúåêò ïðîèçâîäíîãî êëàññà îáëàäàåò âñåìè ñâîéñòâàìè áàçîâîãî êëàññà è
íåêîòîðûìè ñîáñòâåííûìè ñâîéñòâàìè, îí ìîæåò ðåàãèðîâàòü íà òå æå òèïû
ñîîáùåíèé îò äðóãèõ îáúåêòîâ, ÷òî è îáúåêò áàçîâîãî êëàññà è íà ñîîáùåíèÿ,
èìåþùèå ñìûñë òîëüêî äëÿ ïðîèçâîäíîãî êëàññà. Îáû÷íî ãîâîðÿò, ÷òî îáúåêò
ïðîèçâîäíîãî êëàññà íàñëåäóåò âñå ñâîéñòâà ñâîåãî áàçîâîãî êëàññà.
Íåêîòîðûå ïàðàìåòðû îáúåêòà ìîãóò
áûòü ëîêàëèçîâàíû âíóòðè îáúåêòà è íåäîñòóïíû äëÿ ïðÿìîãî âîçäåéñòâèÿ èçâíå
îáúåêòà. Íàïðèìåð, âî âðåìÿ äâèæåíèÿ îáúåêòà-àâòîìîáèëÿ îáúåêò-âîäèòåëü ìîæåò
âîçäåéñòâîâàòü òîëüêî íà îãðàíè÷åííûé íàáîð îðãàíîâ óïðàâëåíèÿ (ðóëåâîå êîëåñî,
ïåäàëè ãàçà, ñöåïëåíèÿ è òîðìîçà, ðû÷àã ïåðåêëþ÷åíèÿ ïåðåäà÷) è åìó íåäîñòóïåí
öåëûé ðÿä ïàðàìåòðîâ, õàðàêòåðèçóþùèõ ñîñòîÿíèå äâèãàòåëÿ è àâòîìîáèëÿ â öåëîì.
Î÷åâèäíî, äëÿ òîãî, ÷òîáû
ïðîäóêòèâíî ïðèìåíÿòü îáúåêòíûé ïîäõîä äëÿ ðàçðàáîòêè ïðîãðàìì, íåîáõîäèìû
ÿçûêè ïðîãðàììèðîâàíèÿ, ïîçâîëÿþùèå ñòðîèòü îïèñàíèå êëàññîâ îáúåêòîâ,
îáðàçîâûâàòü äàííûå îáúåêòíûõ òèïîâ, âûïîëíÿòü îïåðàöèè íàä îáúåêòàìè.
ÎÎ ÿçûêè ïðîãðàììèðîâàíèÿ ÿâëÿþòñÿ
ðàçâèâàþùèìèñÿ ÿçûêàìè. Íàèáîëåå ðàñïðîñòðàíåííûìè â íàñòîÿùåå âðåìÿ ÿâëÿþòñÿ
ñèñòåìû ïðîãðàììèðîâàíèÿ ôèðìû Borland, òàêèå êàê Borland C++. Ýòî ñâÿçàíî ïðåæäå âñåãî íàëè÷èåì â íåé ðàçâèòîé IDE, îáúåäèíÿþùåé òåêñòîâûé
ðåäàêòîð, êîìïèëÿòîð, ðåäàêòîð ñâÿçåé (êîìïîíîâùèê) è îòëàäî÷íûå ñðåäñòâà.
Ðàññìîòðèì íåñêîëüêî îñíîâíûõ
ýëåìåíòîâ, âõîäÿùèõ â ñîñòàâ îáúåêòíî-îðèåíòèðîâàííûõ ÿçûêîâ, â ÷àñòíîñòè â
ñîñòàâ ÿçûêà C++.
·
Âñå
ÿâëÿåòñÿ îáúåêòîì.
·
Âû÷èñëåíèÿ
îñóùåñòâëÿþòñÿ ïóòåì âçàèìîäåéñòâèÿ (îáìåíà äàííûìè) ìåæäó îáúåêòàìè, ïðè
êîòîðîì îäèí îáúåêò òðåáóåò, ÷òîáû äðóãîé îáúåêò âûïîëíèë íåêîå äåéñòâèå.
Îáúåêòû âçàèìîäåéñòâóþò, ïîñûëàÿ è ïîëó÷àÿ ñîîáùåíèÿ. Ñîîáùåíèÿ - ýòî çàïðîñ íà
âûïîëíåíèå äåéñòâèÿ, äîïîëíåííûé íàáîðîì àðãóìåíòîâ, êîòîðûå ìîãóò ïîíàäîáèòüñÿ
ïðè âûïîëíåíèè äåéñòâèÿ.
·
Êàæäûé
îáúåêò ÿâëÿåòñÿ ïðåäñòàâèòåëåì êëàññà, êîòîðûé âûðàæàåò îáùèå ñâîéñòâà
îáúåêòîâ.
·
Â
êëàññå çàäàåòñÿ ïîâåäåíèå (ôóíêöèîíàëüíîñòü) îáúåêòà. Òåì ñàìûì âñå îáúåêòû,
êîòîðûå ÿâëÿþòñÿ ýêçåìïëÿðàìè îäíîãî êëàññà, ìîãóò âûïîëíÿòü îäíè è òå æå
äåéñòâèÿ.
·
Êëàññû
îðãàíèçîâàíû â åäèíóþ äðåâîâèäíóþ ñòðóêòóðó ñ îáùèì êîðíåì, íàçûâàåìóþ
èåðàðõèåé íàñëåäîâàíèÿ. Ïàìÿòü è ïîâåäåíèå, ñâÿçàííîå ñ ýêçåìïëÿðàìè
îïðåäåëåííîãî êëàññà, àâòîìàòè÷åñêè äîñòóïíû ëþáîìó êëàññó, ðàñïîëîæåííîìó íèæå
â èåðàðõè÷åñêîì äåðåâå.
Òðàäèöèîííàÿ ìîäåëü, îïèñûâàþùàÿ âûïîëíåíèå ïðîãðàììû íà
êîìïüþòåðå, áàçèðóåòñÿ íà äóàëèçìå - ïðîöåññ-ñîñòîÿíèå. Ñ ýòîé òî÷êè çðåíèÿ
êîìïüþòåð ÿâëÿåòñÿ àäìèíèñòðàòîðîì äàííûõ, ñëåäóþùèì íåêîòîðîìó íàáîðó
èíñòðóêöèé.  ðàìêàõ ÎÎÏ ìû íèêîãäà íå ïîìèíàåì àäðåñà ÿ÷ååê ïàìÿòè,
ïåðåìåííûå, ïðèñâàèâàíèÿ.
Âìåñòî ïðîöåññîðà, ìû ïîëó÷àåì íàáîð îáúåêòîâ, êîòîðûå îáðàùàþòñÿ
äðóã ê äðóãó âûïîëíèòü òå èëè èíûå äåéñòâèÿ.
Ïðè ÎÎÏ ìû ñ÷èòàåì, ÷òî âû÷èñëåíèå åñòü ìîäåëèðîâàíèå.
Êîíå÷íî, îáúåêòû íå ìîãóò âî âñåõ ñëó÷àÿõ ðåàãèðîâàòü íà ñîîáùåíèå
òîëüêî òåì, ÷òî îáðàùàþòñÿ äðóã ê äðóãó ñ ïðîñüáîé âûïîëíèòü íåêîòîðîå
äåéñòâèå. Ýòî ïðèâåäåò ê áåñêîíå÷íîìó öèêëó çàïðîñîâ. Íà íåêîòîðîé ñòàäèè
îáúåêòû äîëæíû âûïîëíÿòü íåêîòîðûå äåéñòâèÿ ïåðåä ïåðåñûëêîé çàïðîñîâ äðóãèì
îáúåêòàì.
Ïðè òðàäèöèîííîì ïîäõîäå ñëîæíîñòü ïðîãðàììû óñëîæíÿåòñÿ áîëüøèì
÷èñëîì ïåðåêðåñòíûõ ññûëîê. Ïåðåêðåñòíûå ññûëêè îáîçíà÷àþò çàâèñèìîñòü îäíîãî
ôðàãìåíòà êîäà îò äðóãîãî. Äàæå ñàìûé íåçàâèñèìûé ôðàãìåíò êîäà ÷àñòî
íåâîçìîæíî ïîíÿòü â èçîëÿöèè îò äðóãèõ.
Ãëàâíûé ìåõàíèçì áîðüáû ñî ñëîæíîñòüþ - ýòî àáñòðàãèðîâàíèå, ò.å.
ñïîñîáíîñòü îòäåëèòü ëîãè÷åñêèé ñìûñë ôðàãìåíòà ïðîãðàììû îò ïðîáëåìû åãî
ðåàëèçàöèè. Îò ïðîöåäóð ê ìîäóëÿì, äàëåå ê àáñòðàêòíûì äàííûì è, íàêîíåö, ê
îáúåêòàì.
Ïðîöåäóðû è ôóíêöèè áûëè ïåðâûìè ìåõàíèçìàìè àáñòðàãèðîâàíèÿ.
Ïðîöåäóðû ïîçâîëÿþò ñêîíöåíòðèðîâàòü â îäíîì ìåñòå ðàáîòó, êîòîðàÿ âûïîëíÿåòñÿ
ìíîãîêðàòíî, à çàòåì ìíîãîêðàòíî èñïîëüçîâàòü ýòîò êîä.
Äàííûå íå ìîãóò áûòü ëîêàëüíûìè, ïîòîìó ÷òî ÿâëÿþòñÿ îáùèìè äëÿ
âñåõ ïðîöåäóð. Äàííûå äîëæíû ñîäåðæàòüñÿ â ãëîáàëüíûõ ïåðåìåííûõ. Îäíàêî, åñëè
ïåðåìåííûå ãëîáàëüíûå - íåò ñïîñîáà îãðàíè÷èòü äîñòóï ê íèì èëè èõ âèäèìîñòü.
Åñëè èìÿ ïåðåìåííîé datastack, îá ýòîì äîëæíû çíàòü âñå ïðîãðàììèñòû, ÷òîáû íå
ñîçäàòü ïåðåìåííûå ñ òàêèì èìåíåì.
Ìîäóëè ìîæíî ðàññìàòðèâàòü êàê óëó÷øåííûé ìåòîä ñîçäàíèÿ è
óïðàâëåíèÿ ñîâîêóïíîñòè èìåí è ñâÿçàííûìè ñ íèìè çíà÷åíèÿìè. Åñëè ðàññìàòðèâàòü
ìîäóëü êàê àáñòðàêòíóþ êîíöåïöèþ, òî åå ñóòü ñîñòîèò â ðàçáèåíèè ïðîñòðàíñòâà
èìåí íà äâå ÷àñòè. Îòêðûòàÿ (public) ÷àñòü ÿâëÿåòñÿ äîñòóïíîé èçâíå ìîäóëÿ,
çàêðûòàÿ (private) ÷àñòü äîñòóïíà òîëüêî âíóòðè ìîäóëÿ. Òèïû, äàííûå è
ïðîöåäóðû ìîãóò áûòü ê ëþáîìó èç ýòèõ äâóõ ÷àñòåé.
Ìîäóëè ðåøàþò íåêîòîðûå, íî íå âñå ïðîáëåìû ðàçðàáîòêè
ïðîãðàììíîãî îáåñïå÷åíèÿ. Ìåõàíèçì ìîäóëÿ, ïîçâîëÿÿ ìàñêèðîâàòü äàííûå, íå
ïîçâîëÿåò ðàçìíîæàòü ýêçåìïëÿðû.
Àáñòðàêòíûé òèï äàííûõ çàäàåòñÿ ïðîãðàììèñòîì. Ñ äàííûìè
àáñòðàêòíîãî òèïà ìîæíî ìàíèïóëèðîâàòü òàê æå, êàê è ñ äàííûìè òèïîâ,
âñòðîåííûõ â ñèñòåìó. Ïîëüçîâàòåëþ ðàçðåøàåòñÿ ñîçäàâàòü ïåðåìåííûå, êîòîðûå
ïðèíèìàþò çíà÷åíèÿ èç äîïóñòèìîãî ìíîæåñòâà, è ìàíèïóëèðîâàòü èìè, èñïîëüçîâàòü
èìåþùèåñÿ îïåðàöèè. ×òîáû ïîñòðîèòü àáñòðàêòíûé òèï äàííûõ, ìû äîëæíû èìåòü:
·
Ýêñïîðòèðîâàòü
îïðåäåëåíèå òèïà äàííûõ
·
Äåëàòü
äîñòóïíûì íàáîð îïåðàöèé, èñïîëüçóþùèõñÿ äëÿ ìàíèïóëèðîâàíèÿ ýêçåìïëÿðàìè òèïà
äàííûõ.
·
Çàùèùàòü
äàííûå, ñâÿçàííûå ñ òèïîì äàííûõ, ÷òîáû ñ íèìè ìîæíî áûëî ðàáîòàòü òîëüêî ÷åðåç
óêàçàííûå ïîäïðîãðàììû.
·
Ñîçäàâàòü
íåñêîëüêî ýêçåìïëÿðîâ àáñòðàêòíîãî òèïà äàííûõ.
Îáúåêòû - ýòî ïî÷òè àáñòðàêòíûé òèï äàííûõ, íî äîïîëíåííûé íåêîòîðûìè
íîâøåñòâàìè.
ÎÎÏ äîáàâëÿåò èäåè ê àáñòðàêòíîìó òèïó äàííûõ. Ãëàâíàÿ èç íèõ -
ïåðåñûëêà ñîîáùåíèé. Äåéñòâèå èíèöèèðóåòñÿ ïî çàïðîñó, îáðàùåííîìó ê
êîíêðåòíîìó îáúåêòó, à íå ÷åðåç âûçîâ ôóíêöèè. Ê ïåðåñûëêå ñîîáùåíèÿ
äîáàâëÿåòñÿ ïåðåîïðåäåëåíèå èìåí è ìåõàíèçìû ñîâìåñòíîãî/ìíîãîêðàòíîãî
èñïîëüçîâàíèÿ êîäà.
Èíòåðïðåòàöèÿ ñîîáùåíèé ìåíÿåòñÿ äëÿ ðàçëè÷íûõ îáúåêòîâ.
Äîáàâëÿþòñÿ ìåõàíèçìû íàñëåäîâàíèÿ è ïîëèìîðôèçìà. Íàñëåäîâàíèå
ïîçâîëÿåò ðàçëè÷íûì òèïàì äàííûõ ñîâìåñòíî èñïîëüçîâàòü îäèí è òîò æå êîä, ïðèâîäÿ
ê óìåíüøåíèþ åãî ðàçìåðà è ïîâûøåíèþ ôóíêöèîíàëüíîñòè. Ïîëèìîðôèçì
îáåñïå÷èâàåò, ÷òîáû îáùèé êîä óäîâëåòâîðÿë êîíêðåòíûì îñîáåííîñòÿì îòäåëüíûõ
òèïîâ äàííûõ.
Ìíîãîêðàòíîå èñïîëüçîâàíèå - ýòî öåëü, ê êîòîðîé âñå ñòðåìÿòñÿ, íî
ðåäêî äîñòèãàþò. ÎÎÏ îáåñïå÷èâàåò ìåõàíèçì äëÿ îòäåëåíèÿ ñóùåñòâåííîé
èíôîðìàöèè îò ñïåöèàëèçèðîâàííîé (íàïðèìåð, êîíêðåòíûé ôîðìàò äàííûõ).
ÎÎÏ - ýòî íå ïðîñòî íàáîð íåêîòîðûõ ñâîéñòâ, äîáàâëåííûõ â óæå
ñóùåñòâóþùèå ÿçûêè. Ýòî íîâûé øàã â îñìûñëåíèè çàäà÷ è ðàçðàáîòêè ÏÎ.
Ïðîãðàììû - ýòî ñîâîêóïíîñòü âçàèìîäåéñòâóþùèõ îáúåêòîâ. Êàæäûé
îáúåêò îòâå÷àåò çà êîíêðåòíóþ çàäà÷ó. Âû÷èñëåíèå îñóùåñòâëÿåòñÿ ïîñðåäñòâîì
âçàèìîäåéñòâèÿ îáúåêòîâ. Îáúåêò ïîëó÷àåòñÿ â ðåçóëüòàòå èíêàïñóëÿöèè ñîñòîÿíèÿ
(äàííûõ) è ïîâåäåíèÿ (îïåðàöèé), âî ìíîãîì àíàëîãè÷íî àáñòðàêòíîìó òèïó äàííûõ.
Ïîâåäåíèå îáúåêòà äèêòóåòñÿ êëàññîì. Äàííûå è ïîâåäåíèå ïðåäñòàâëåíû â âèäå
êëàññîâ, ýêçåìïëÿðû êîòîðûõ - îáúåêòû. Âñå ýêçåìïëÿðû îäíîãî êëàññà áóäóò âåñòè
ñåáÿ îäèíàêîâûì îáðàçîì â îòâåò íà îäèíàêîâûå çàïðîñû.
Îáúåêò ïðîÿâëÿåò ñâîå ïîâåäåíèå ïóòåì âûçîâà ìåòîäà â îòâåò íà
ñîîáùåíèå. Èíòåðïðåòàöèÿ ñîîáùåíèÿ çàâèñèò îò îáúåêòà è ìîæåò áûòü ðàçëè÷íîé
äëÿ ðàçëè÷íûõ êëàññîâ îáúåêòîâ.
Äëÿ óäîáñòâà ñîçäàíèÿ íîâîãî òèïà èç óæå ñóùåñòâóþùèõ òèïîâ,
îïðåäåëåííûõ ïîëüçîâàòåëåì èñïîëüçóåòñÿ ìåõàíèçì íàñëåäîâàíèÿ. Êëàññû ìîãóò
áûòü îðãàíèçîâàíû â âèäå èåðàðõè÷åñêîãî äåðåâà íàñëåäîâàíèÿ.
Ñ ïîìîùüþ óìåíüøåíèÿ âçàèìîçàâèñèìîñòè ÎÎÏ ïîçâîëÿåò ðàçðàáàòûâàòü
ñèñòåìû, ïðèãîäíûå äëÿ ìíîãîêðàòíîãî èñïîëüçîâàíèÿ.
ÎÎÏ - ýòî âçãëÿä íà ïðîãðàììèðîâàíèå, ñîñðåäîòî÷åííûé íà äàííûõ; â
êîòîðîì äàííûå è ïîâåäåíèå æåñòêî ñâÿçàíû. Äëÿ ýòîãî íåîáõîäèìî, ÷òîáû îáúåêòû
îïðåäåëÿëèñü âìåñòå ñ ñîîáùåíèÿìè, íà êîòîðûå îíè ìîãóò ðåàãèðîâàòü.
Îáúåêòíî-îðèåíòèðîâàííàÿ ïàðàäèãìà ïðåäëàãàåò íîâûé ïîäõîä ê ðàçðàáîòêå
ïðîãðàììíîãî îáåñïå÷åíèÿ. Ôóíäàìåíòàëüíàÿ êîíöåïöèÿ îáúåêòíî-îðèåíòèðîâàííîé
ïàðàäèãìû ñîñòîèò â ïåðåäà÷å ñîîáùåíèé îáúåêòàì.
Òàêèì îáðàçîì, Îáúåêòíî-îðèåíòèðîâàííûé ÿçûê äîëæåí îáëàäàòü
ñâîéñòâàìè àáñòðàêöèè, èíêàïñóëÿöèè, íàñëåäîâàíèÿ è ïîëèìîðôèçìà.
Èíêàïñóëÿöèÿ ñ ñîêðûòèåì äàííûõ - ñïîñîáíîñòü îòëè÷àòü âíóòðåííåå
ñîñòîÿíèå îáúåêòà è ïîâåäåíèå îò åãî âíåøíåãî ñîñòîÿíèÿ è ïîâåäåíèÿ
Àáñòðàêöèÿ - ðàñøèðÿåìîñòü òèïîâ - ñïîñîáíîñòü äîáàâëÿòü òèïû,
îïðåäåëÿåìûå ïîëüçîâàòåëåì äëÿ òîãî, ÷òîáû äîïîëíèòü èìè âñòðîåííûå òèïû. Îäèí
èç ïðèíöèïîâ ÎÎÏ çàêëþ÷àåòñÿ â òîì, ÷òîáû òèïû, îïðåäåëÿåìûå ïîëüçîâàòåëåì,
äîëæíû îáëàäàòü òåìè æå ïðèâèëåãèÿìè, ÷òî è âñòðîåííûå òèïû.
Íàñëåäîâàíèå - ñïîñîáíîñòü ñîçäàâàòü íîâûå òèïû, ïîâòîðíî
èñïîëüçóÿ, îïèñàíèå ñóùåñòâóþùèõ òèïîâ.
Ïîëèìîðôèçì ñ äèíàìè÷åñêèì (ïîçäíèì) ñâÿçûâàíèåì - ñïîñîáíîñòü
îáúåêòîâ áûòü îòâåòñòâåííûìè çà èíòåðïðåòàöèþ âûçîâà ôóíêöèè
Ïðèíöèïû
Îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà:
Äåéñòâèå â îáúåêòíî-îðèåíòèðîâàííîì ïðîãðàììèðîâàíèè èíèöèèðóåòñÿ
ïîñðåäñòâîì ïåðåäà÷è ñîîáùåíèé îáúåêòó. Ñîîáùåíèå ñîäåðæèò çàïðîñ íà
îñóùåñòâëåíèå äåéñòâèÿ.  êà÷åñòâå ðåàêöèè íà ñîîáùåíèå ïîëó÷àòåëü çàïóñòèò
íåêîòîðûé ìåòîä, ÷òîáû óäîâëåòâîðèòü ïðèíÿòûé çàïðîñ.
Âñå îáúåêòû ÿâëÿþòñÿ ýêçåìïëÿðàìè, êëàññîâ. Âñå îáúåêòû îäíîãî
êëàññà èñïîëüçóþò îäíè è òå æå ìåòîäû â îòâåò íà îäèíàêîâûå ñîîáùåíèÿ.
Ïðèíöèï íàñëåäîâàíèÿ. Êëàññû ìîãóò áûòü îðãàíèçîâàíû â
èåðàðõè÷åñêóþ ñòðóêòóðó ñ íàñëåäîâàíèåì ñâîéñòâ. Äî÷åðíèé êëàññ íàñëåäóåò
àòðèáóòû ðîäèòåëüñêîãî êëàññà.
Ïðèíöèï ïîëèìîðôèçìà. Îáúåêòû ðåàãèðóþò íà îäíî è òîæå ñîîáùåíèå
ñòðîãî ñïåöèôè÷íûì äëÿ íèõ îáðàçîì.