Òåìà 1. Îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä â ïðîãðàììèðîâàíèè

1.Òåõíîëîãèè ïðîãðàììèðîâàíèÿ

2. Ïðèíöèïû ÎÎ ïîäõîäà â ïðîãðàììèðîâàíèè

3. Ñóùíîñòü ÎÎ ïîäõîäà ê ïðîãðàììèðîâàíèþ

4. Õàðàêòåðèñòèêè ÎÎÏ

5. Ðåçþìå

1. Òåõíîëîãèè ïðîãðàììèðîâàíèÿ

Òåõíîëîãèÿ ïðîãðàììèðîâàíèÿ - ýòî ñîâîêóïíîñòü ìåòîäîâ è ñðåäñòâ ðàçðàáîòêè (íàïèñàíèÿ) ïðîãðàììíûõ ñèñòåì è ïîðÿäîê ïðèìåíåíèÿ ýòèõ ìåòîäîâ è ñðåäñòâ.

Íà ðàííèõ ýòàïàõ ðàçâèòèÿ ïðîãðàììèðîâàíèÿ, êîãäà ïðîãðàììû ïèñàëèñü â âèäå ïîñëåäîâàòåëüíîñòåé ìàøèííûõ êîìàíä, êàêàÿ-ëèáî òåõíîëîãèÿ ïðîãðàììèðîâàíèÿ îòñóòñòâîâàëà. Ïåðâûå øàãè â ðàçðàáîòêå òåõíîëîãèè ñîñòîÿëè â ïðåäñòàâëåíèè ïðîãðàììû â âèäå ïîñëåäîâàòåëüíîñòè îïåðàòîðîâ, ò.å. ñîñòàâëåíèå îïåðàòîðíîé ñõåìû, îòðàæàþùåé ïîñëåäîâàòåëüíîñòü îïåðàòîðîâ è ïåðåõîäû ìåæäó íèìè. Îïåðàòîðíûé ïîäõîä ïîçâîëèë ðàçðàáîòàòü ïåðâûå ïðîãðàììû äëÿ àâòîìàòèçàöèè ñîñòàâëåíèÿ ïðîãðàìì - òàê íàçûâàåìûå ñîñòàâëÿþùèå ïðîãðàììû.

 îêîí÷àòåëüíîì âèäå ëþáàÿ ïðîãðàììà ïðåäñòàâëÿåò ñîáîé íàáîð èíñòðóêöèé ïðîöåññîðà. Âñå, ÷òî íàïèñàíî íà ëþáîì ÿçûêå ïðîãðàììèðîâàíèÿ, - áîëåå óäîáíàÿ, óïðîùåííàÿ çàïèñü ýòîãî íàáîðà èíñòðóêöèé, îáëåã÷àþùàÿ íàïèñàíèå, îòëàäêó è ïîñëåäóþùóþ ìîäèôèêàöèþ ïðîãðàììû. ×åì âûøå óðîâåíü ÿçûêà, òåì â áîëåå ïðîñòîé ôîðìå çàïèñûâàþòñÿ îäíè è òå æå äåéñòâèÿ. Íàïðèìåð, äëÿ ðåàëèçàöèè öèêëà íà ÿçûêå àññåìáëåðà òðåáóåòñÿ çàïèñàòü ïîñëåäîâàòåëüíîñòü èíñòðóêöèé, ïîçàáîòèâøèñü î ðàçìåùåíèè ïåðåìåííûõ â ðåãèñòðàõ, à â Ñ++ èëè Ïàñêàëå äëÿ ýòîãî äîñòàòî÷íî îäíîãî îïåðàòîðà.

Ñ ðîñòîì îáúåìà ïðîãðàììû ñòàíîâèòñÿ íåâîçìîæíûì óäåðæèâàòü â ïàìÿòè âñå äåòàëè, è ñòàíîâèòñÿ íåîáõîäèìûì ñòðóêòóðèðîâàòü èíôîðìàöèþ, âûäåëÿòü ãëàâíîå è îòáðàñûâàòü íåñóùåñòâåííîå. Ýòîò ïðîöåññ íàçûâàåòñÿ ïîâûøåíèåì ñòåïåíè àáñòðàêöèè ïðîãðàììû.

Ïåðâûì øàãîì ê ïîâûøåíèþ àáñòðàêöèè ÿâëÿåòñÿ èñïîëüçîâàíèå ôóíêöèé, ïîçâîëÿþùåå ïîñëå íàïèñàíèÿ è îòëàäêè ôóíêöèè îòâëå÷üñÿ îò äåòàëåé åå ðåàëèçàöèè, ïîñêîëüêó äëÿ âûçîâà ôóíêöèè òðåáóåòñÿ çíàòü òîëüêî åå èíòåðôåéñ. Åñëè ãëîáàëüíûå ïåðåìåííûå íå èñïîëüçóþòñÿ, èíòåðôåéñ ïîëíîñòüþ îïðåäåëÿåòñÿ çàãîëîâêîì ôóíêöèè.

×àñòü òàêèõ ôóíêöèé îáúåäèíÿëàñü â áèáëèîòåêè, èç êîòîðûõ ôóíêöèè ìîæíî áûëî âêëþ÷àòü â ðàáî÷èå ïðîãðàììû è çàòåì âûçûâàòü èç ðàáî÷èõ ïðîãðàìì. Ýòî ïîëîæèëî íà÷àëî ïðîöåäóðíîìó ïðîãðàììèðîâàíèþ - áîëüøàÿ ïðîãðàììà ïðåäñòàâëÿëàñü ñîâîêóïíîñòüþ ôóíêöèé. Îäíà èç ôóíêöèé ÿâëÿëàñü ãëàâíîé è ñ íåå íà÷èíàëîñü âûïîëíåíèå ïðîãðàììû.

Ïðîöåäóðíûé ïîäõîä ïîòðåáîâàë ñòðóêòóðèðîâàíèÿ áóäóùåé ïðîãðàììû, ðàçäåëåíèÿ åå íà îòäåëüíûå ôóíêöèè. Ïðè ðàçðàáîòêå îòäåëüíîé ôóíêöèè î äðóãèõ ôóíêöèè òðåáîâàëîñü çíàòü òîëüêî èõ íàçíà÷åíèå è ñïîñîá âûçîâà. Ïîÿâèëàñü âîçìîæíîñòü ïåðåðàáàòûâàòü îòäåëüíûå ôóíêöèè, íå çàòðàãèâàÿ îñòàëüíîé ÷àñòè ïðîãðàììû, ñîêðàùàÿ ïðè ýòîì çàòðàòû òðóäà è ìàøèííîãî âðåìåíè íà ðàçðàáîòêó è ìîäåðíèçàöèþ ïðîãðàìì.

Ñëåäóþùèì øàãîì ñòðóêòóðèðîâàíèÿ ïðîãðàìì ñòàëî òàê íàçûâàåìîå ñòðóêòóðíîå ïðîãðàììèðîâàíèå, ïðè êîòîðîì ïðîãðàììà â öåëîì è îòäåëüíûå ôóíêöèè ðàññìàòðèâàëèñü êàê ïîñëåäîâàòåëüíîñòè êàíîíè÷åñêèõ ñòðóêòóð: ëèíåéíûõ ó÷àñòêîâ, öèêëîâ è ðàçâåòâëåíèé. Ïîÿâèëàñü âîçìîæíîñòü ÷èòàòü è ïðîâåðÿòü ïðîãðàììó êàê ïîñëåäîâàòåëüíûé òåêñò, ÷òî ïîâûñèëî ïðîèçâîäèòåëüíîñòü òðóäà ïðîãðàììèñòîâ ïðè ðàçðàáîòêå è îòëàäêå ïðîãðàìì. Ñ öåëüþ ïîâûøåíèÿ ñòðóêòóðíîñòè ïðîãðàììû áûëè âûäâèíóòû òðåáîâàíèÿ ê áîëüøåé íåçàâèñèìîñòè ôóíêöèé, ôóíêöèè äîëæíû ñâÿçûâàòüñÿ ñ âûçûâàþùèìè èõ ôóíêöèÿìè òîëüêî ïóòåì ïåðåäà÷è èì àðãóìåíòîâ, èñïîëüçîâàíèå â ï ôóíêöèÿõ ïåðåìåííûõ, ïðèíàäëåæàùèõ äðóãèì ôóíêöèÿì èëè ãëàâíîé ôóíêöèè, ñòàëî ñ÷èòàòüñÿ íåæåëàòåëüíûì.

Ïðèìåíåíèå ïðîãðàìì â ñàìûõ ðàçíûõ îáëàñòÿõ ÷åëîâå÷åñêîé äåÿòåëüíîñòè ïðèâåëî ê íåîáõîäèìîñòè ïîâûøåíèÿ íàäåæíîñòè âñåãî ïðîãðàììíîãî îáåñïå÷åíèÿ. Îäíèì èç íàïðàâëåíèé ñîâåðøåíñòâîâàíèÿ ÿçûêîâ ïðîãðàììèðîâàíèÿ ñòàëî ïîâûøåíèÿ óðîâíÿ òèïèçàöèè äàííûõ.

Ïîýòîìó, ñëåäóþùèé øàã - îïèñàíèå ñîáñòâåííûõ òèïîâ äàííûõ, ïîçâîëÿþùèõ ñòðóêòóðèðîâàòü è ãðóïïèðîâàòü èíôîðìàöèþ, ïðåäñòàâëÿÿ åå â áîëåå åñòåñòâåííîì âèäå. Íàïðèìåð, ìîæíî ïðåäñòàâèòü ñ ïîìîùüþ îäíîé ñòðóêòóðû âñå ðàçíîðîäíûå ñâåäåíèÿ, îòíîñÿùèåñÿ ê îäíîìó âèäó òîâàðà íà ñêëàäå.

Äëÿ ðàáîòû ñ ñîáñòâåííûìè òèïàìè äàííûõ òðåáóþòñÿ ñïåöèàëüíûå ôóíêöèè. Åñòåñòâåííî ñãðóïïèðîâàòü èõ ñ îïèñàíèåì ýòèõ òèïîâ äàííûõ â îäíîì ìåñòå ïðîãðàììû, à òàêæå ïî âîçìîæíîñòè îòäåëèòü îò åå îñòàëüíûõ ÷àñòåé. Ïðè ýòîì äëÿ èñïîëüçîâàíèÿ ýòèõ òèïîâ è ôóíêöèé íå òðåáóåòñÿ ïîëíîãî çíàíèÿ òîãî, êàê èìåííî îíè íàïèñàíû - íåîáõîäèìû òîëüêî îïèñàíèÿ èíòåðôåéñîâ. Îáúåäèíåíèå â ìîäóëè îïèñàíèé òèïîâ äàííûõ è ôóíêöèé, ïðåäíàçíà÷åííûõ äëÿ ðàáîòû  ñ íèìè, ñî ñêðûòèåì îò ïîëüçîâàòåëÿ ìîäóëÿ íåñóùåñòâåííûõ äåòàëåé, ÿâëÿåòñÿ äàëüíåéøèì ðàçâèòèåì ñòðóêòóðèçàöèè ïðîãðàììû.

Òåîðèÿ òèïîâ äàííûõ èñõîäèò èç òîãî, ÷òî êàæäîå èñïîëüçóåìîå â ïðîãðàììå äàííîå ïðèíàäëåæèò îäíîìó è òîëüêî îäíîìó òèïó äàííûõ. Òèï äàííîãî îïðåäåëÿåò ìíîæåñòâî âîçìîæíûõ çíà÷åíèé äàííîãî è íàáîð îïåðàöèé, äîïóñòèìûõ íàä ýòèì äàííûì. Äàííîå êîíêðåòíîãî òèïà â ðÿäå ñëó÷àåâ ìîæåò áûòü ïðåîáðàçîâàíî â äàííîå äðóãîãî òèïà, íî òàêîå ïðåîáðàçîâàíèå äîëæíî áûòü ÿâíî ïðåäñòàâëåíî â ïðîãðàììå.  çàâèñèìîñòè îò ñòåïåíè âûïîëíåíèÿ ïåðå÷èñëåííûõ òðåáîâàíèé ìîæíî ãîâîðèòü îá óðîâíå òèïèçàöèè òîãî èëè èíîãî ÿçûêà ïðîãðàììèðîâàíèÿ. Ñòðåìëåíèå ïîâûñèòü óðîâåíü òèïèçàöèè ÿçûêà ïðîãðàììèðîâàíèÿ ïðèâåëî ê èäåå ñîçäàíèÿ ñòðîãî òèïèçèðîâàííûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ.

Ïðèìåíåíèå ñòðîãî òèïèçèðîâàííîãî ÿçûêà ïðè íàïèñàíèè ïðîãðàììû ïîçâîëÿåò åùå ïðè òðàíñëÿöèè èñõîäíîãî òåêñòà âûÿâèòü ìíîãèå îøèáêè èñïîëüçîâàíèÿ äàííûõ è ýòèì ïîâûñèòü íàäåæíîñòü ïðîãðàììû. Âìåñòå ñ òåì ñòðîãàÿ òèïèçàöèÿ ñêîâûâàëà ñâîáîäó ïðîãðàììèñòà, çàòðóäíÿëà ïðèìåíåíèå íåêîòîðûõ ïðèåìîâ ïðåîáðàçîâàíèÿ äàííûõ, ÷àñòî èñïîëüçóåìûõ â ñèñòåìíîì ïðîãðàììèðîâàíèè.

Âñå òðè îïèñàííûõ âûøå ìåòîäà ïîâûøåíèÿ àáñòðàêöèè ïðåñëåäóþò öåëü óïðîñòèòü ñòðóêòóðó ïðîãðàììû, òî åñòü ïðåäñòàâèòü åå â âèäå ìåíüøåãî êîëè÷åñòâà áîëåå êðóïíûõ áëîêîâ è ìèíèìèçèðîâàòü ñâÿçè ìåæäó íèìè. Ýòî ïîçâîëÿåò óïðàâëÿòü áîëüøèì îáúåìîì èíôîðìàöèè è, ñëåäîâàòåëüíî, óñïåøíî îòëàæèâàòü áîëåå ñëîæíûå ïðîãðàììû.

Âñå óíèâåðñàëüíûå ÿçûêè ïðîãðàììèðîâàíèÿ, íåñìîòðÿ íà ðàçëè÷èÿ â ñèíòàêñèñå è èñïîëüçóåìûõ êëþ÷åâûõ ñëîâàõ, ðåàëèçóþò îäíè è òå æå êàíîíè÷åñêèå ñòðóêòóðû: îïåðàòîðû ïðèñâàèâàíèÿ, öèêëû è ðàçâåòâëåíèÿ. Âî âñåõ ñîâðåìåííûõ ÿçûêàõ ïðèñóòñòâóþò ïðåäîïðåäåëåííûå òèïû äàííûõ (öåëûå è âåùåñòâåííûå àðèôìåòè÷åñêèå òèïû, ñèìâîëüíûé è, âîçìîæíî, ñòðîêîâûé òèï), èìååòñÿ âîçìîæíîñòü èñïîëüçîâàíèÿ àãðåãàòîâ äàííûõ, â òîì ÷èñëå ìàññèâîâ è ñòðóêòóð (çàïèñåé). Äëÿ àðèôìåòè÷åñêèõ äàííûõ ðàçðåøåíû îáû÷íûå àðèôìåòè÷åñêèå îïåðàöèè, äëÿ àãðåãàòîâ äàííûõ îáû÷íî ïðåäóñìîòðåíà òîëüêî îïåðàöèÿ ïðèñâàèâàíèÿ è âîçìîæíîñòü îáðàùåíèÿ ê ýëåìåíòàì àãðåãàòà.

Âìåñòå ñ òåì ïðè ðàçðàáîòêå ïðîãðàììû äëÿ ðåøåíèÿ êîíêðåòíîé ïðèêëàäíîé çàäà÷è æåëàòåëüíà âîçìîæíî áîëüøàÿ êîíöåïòóàëüíàÿ áëèçîñòü òåêñòà ïðîãðàììû ê îïèñàíèþ çàäà÷è. Íàïðèìåð, åñëè ðåøåíèå çàäà÷è òðåáóåò âûïîëíåíèÿ îïåðàöèé íàä êîìïëåêñíûìè ÷èñëàìè èëè êâàäðàòíûìè ìàòðèöàìè, æåëàòåëüíî, ÷òîáû â ïðîãðàììå ÿâíî ïðèñóòñòâîâàëè îïåðàòîðû ñëîæåíèÿ, âû÷èòàíèÿ, óìíîæåíèÿ è äåëåíèÿ äàííûõ òèïà êîìïëåêñíîãî ÷èñëà, ñëîæåíèÿ, âû÷èòàíèÿ, óìíîæåíèÿ è îáðàùåíèÿ äàííûõ òèïà êâàäðàòíîé ìàòðèöû. Ðåøåíèå ýòîé ïðîáëåìû âîçìîæíî íåñêîëüêèìè ïóòÿìè:

- Ïîñòðîåíèåì ÿçûêà ïðîãðàììèðîâàíèÿ, ñîäåðæàùåãî êàê ìîæíî áîëüøå òèïîâ äàííûõ, è âûáîðîì äëÿ êàæäîãî êëàññà çàäà÷ íåêîòîðîãî ïîäìíîæåñòâà ýòîãî ÿçûêà. Òàêîé ÿçûê èíîãäà íàçûâàþò ÿçûêîì-îáîëî÷êîé.

- Ïîñòðîåíèåì ðàñøèðÿåìîãî ÿçûêà, ñîäåðæàùåãî íåáîëüøîå ÿäðî è äîïóñêàþùåãî ðàñøèðåíèå, äîïîëíÿþùåå ÿçûê òèïàìè äàííûõ è îïåðàòîðàìè, îòðàæàþùèìè êîíöåïòóàëüíóþ ñóùíîñòü êîíêðåòíîãî êëàññà çàäà÷. Òàêîé ÿçûê íàçûâàþò ÿçûêîì-ÿäðîì.

Äàëüíåéøèì ðàçâèòèåì âòîðîãî ïóòè ÿâèëñÿ îáúåêòíî-îðèåíòèðîâàííûé ïîäõîä ê ïðîãðàììèðîâàíèþ.

Ââåäåíèå ïîíÿòèÿ êëàññà ÿâëÿåòñÿ åñòåñòâåííûì ðàçâèòèåì èäåé ìîäóëüíîñòè.  êëàññå ñòðóêòóðû äàííûõ è ôóíêöèè èõ îáðàáîòêè îáúåäèíÿþòñÿ. Êëàññ èñïîëüçóåòñÿ òîëüêî ÷åðåç åãî èíòåðôåéñ - äåòàëè ðåàëèçàöèè äëÿ ïîëüçîâàòåëÿ êëàññà íåñóùåñòâåííû. Èäåÿ êëàññîâ îòðàæàåò ñòðîåíèå îáúåêòîâ ðåàëüíîãî ìèðà - âåäü êàæäûé ïðåäìåò èëè ïðîöåññ îáëàäàåò íàáîðîì õàðàêòåðèñòèê èëè îòëè÷èòåëüíûõ ÷åðò, èíûìè ñëîâàìè, ñâîéñòâàìè è ïîâåäåíèåì. Ïðîãðàììû ÷àñòî ïðåäíàçíà÷åíû äëÿ ìîäåëèðîâàíèÿ ïðåäìåòîâ, ïðîöåññîâ è ÿâëåíèé ðåàëüíîãî ìèðà, ïîýòîìó â ÿçûêå ïðîãðàììèðîâàíèÿ óäîáíî èìåòü àäåêâàòíûé èíñòðóìåíò äëÿ ïðåäñòàâëåíèÿ ìîäåëåé.

Êëàññ ÿâëÿåòñÿ òèïîì äàííûõ, îïðåäåëÿåìûì ïîëüçîâàòåëåì.  êëàññå çàäàþòñÿ ñâîéñòâà è ïîâåäåíèå êàêîãî-ëèáî ïðåäìåòà èëè ïðîöåññà â âèäå ïîëåé äàííûõ (àíàëîãè÷íî ñòðóêòóðå) è ôóíêöèé äëÿ ðàáîòû ñ íèìè. Ñîçäàâàåìûé òèï äàííûõ îáëàäàåò ïðàêòè÷åñêè òåìè æå ñâîéñòâàìè, ÷òî è ñòàíäàðòíûå òèïû. Íàïîìíèì, ÷òî òèï çàäàåò âíóòðåííåå ïðåäñòàâëåíèå äàííûõ â ïàìÿòè êîìïüþòåðà, ìíîæåñòâî çíà÷åíèé, êîòîðîå ìîãóò ïðèíèìàòü âåëè÷èíû ýòîãî òèïà, à òàêæå îïåðàöèè è ôóíêöèè, ïðèìåíÿåìûå ê ýòèì âåëè÷èíàì. Âñå ýòî ìîæíî çàäàòü è â êëàññå.

Ñóùåñòâåííûì ñâîéñòâîì êëàññà ÿâëÿåòñÿ òî, ÷òî äåòàëè åãî ðåàëèçàöèè ñêðûòû îò ïîëüçîâàòåëåé êëàññà çà èíòåðôåéñîì (âåäü è â ðåàëüíîì ìèðå ìîæíî, íàïðèìåð, óïðàâëÿòü àâòîìîáèëåì, íå èìåÿ ïðåäñòàâëåíèÿ î ïðèíöèïå âíóòðåííåãî ñãîðàíèÿ è óñòðîéñòâå äâèãàòåëÿ, à ïîëüçîâàòüñÿ òåëåôîíîì - íå çíàÿ, «êàê èäåò ñèãíàë, ïðèíöèïîâ ñâÿçè è êòî êëàë êàáåëü»). Èíòåðôåéñîì êëàññà ÿâëÿþòñÿ çàãîëîâêè åãî ìåòîäîâ. Òàêèì îáðàçîì, êëàññ êàê ìîäåëü îáúåêòà ðåàëüíîãî ìèðà ÿâëÿåòñÿ ÷åðíûì ÿùèêîì, çàìêíóòûì ïî îòíîøåíèþ ê âíåøíåìó ìèðó.

ÎÎÏ îñíîâíàÿ ìåòîäîëîãèÿ ïðîãðàììèðîâàíèÿ 90-õ ãîäîâ. Ýòî ñòèëü ïðîãðàììèðîâàíèÿ, êîòîðûé ôèêñèðóåò ïîâåäåíèå ðåàëüíîãî ìèðà òàêèì ñïîñîáîì, ïðè êîòîðîì äåòàëè åãî ðåàëèçàöèè ñêðûòû. Èäåÿ êëàññîâ ÿâëÿåòñÿ îñíîâîé îáúåêòíî-îðèåíòèðîâàííîãî ïðîãðàììèðîâàíèÿ (ÎÎÏ). Îñíîâíûå ïðèíöèïû ÎÎÏ áûëè ðàçðàáîòàíû åùå â ÿçûêàõ Simula-67 è Smalltalk, íî â òî âðåìÿ íå ïîëó÷èëè øèðîêîãî ïðèìåíåíèÿ èç-çà òðóäíîñòåé îñâîåíèÿ è íèçêîé ýôôåêòèâíîñòè ðåàëèçàöèè.  C++ ýòè êîíöåïöèè ðåàëèçîâàíû ýôôåêòèâíî, êðàñèâî è íåïðîòèâîðå÷èâî, ÷òî è ÿâèëîñü îñíîâîé óñïåøíîãî ðàñïðîñòðàíåíèÿ ýòîãî ÿçûêà è âíåäðåíèÿ ïîäîáíûõ ñðåäñòâ â äðóãèå ÿçûêè ïðîãðàììèðîâàíèÿ.

Ïîïóëÿðíîñòü ÎÎÏ îáúÿñíÿåòñÿ ñëåäóþùèì:

·        ÎÎÏ ïîçâîëÿåò ïðèâåñòè ê ðîñòó ïðîäóêòèâíîñòè è óëó÷øåíèþ íàäåæíîñòè ïðîãðàìì, ïîìîãàÿ òåì ñàìûì ðàçðåøèòü êðèçèñ â ïðîãðàììíîì îáåñïå÷åíèè;

·        ñòðåìëåíèå ïåðåéòè îò óñòàðåâøèõ òåõíîëîãèé ïðîãðàììèðîâàíèÿ ê íîâîé òåõíîëîãèè;

·        ìàêñèìàëüíîå ñõîäñòâî ñ èäåÿìè, ðîäèâøèìèñÿ â äðóãèõ îáëàñòÿõ.

ÎÎÏ ÿâëÿåòñÿ ëèøü ïîñëåäíèì çâåíîì â äëèíîé öåïè ðåøåíèé, êîòîðûå áûëè ïðåäëîæåíû äëÿ ðàçðåøåíèÿ "êðèçèñà ïðîãðàììíîãî îáåñïå÷åíèÿ". Êðèçèñ ïðîãðàììíîãî îáåñïå÷åíèÿ îçíà÷àåò, ÷òî òå çàäà÷è, êîòîðûå ìû õîòèì ðåøèòü, îïåðåæàþò íàøè âîçìîæíîñòè.

ÎÎÏ - ýòî íå ïðîñòî íàáîð íîâûõ ñðåäñòâ, äîáàâëåííûõ â ÿçûê, ÎÎÏ ÷àñòî íàçûâàþò íîâîé ïàðàäèãìîé ïðîãðàììèðîâàíèÿ.

Òåðìèí «ïàðàäèãìà» îçíà÷àåò íàáîð òåîðèé, ñòàíäàðòîâ è ìåòîäîâ, êîòîðûå ñîâìåñòíî ïðåäñòàâëÿþò ñîáîé ñïîñîá îðãàíèçàöèè çíàíèé - èíûìè ñëîâàìè, ñïîñîá âèäåíèÿ ìèðà.  ïðîãðàììèðîâàíèè ýòîò òåðìèí èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ ìîäåëè âû÷èñëåíèé, òî åñòü ñïîñîáà ñòðóêòóðèðîâàíèÿ èíôîðìàöèè, îðãàíèçàöèè âû÷èñëåíèé è äàííûõ. Îáúåêòíî-îðèåíòèðîâàííàÿ ïðîãðàììà ñòðîèòñÿ â òåðìèíàõ îáúåêòîâ è èõ âçàèìîñâÿçåé.

 

2. Ïðèíöèïû ÎÎ ïîäõîäà â ïðîãðàììèðîâàíèè

Ðàññìîòðèì ñèòóàöèþ èç æèçíè. Íàïðèìåð, íàäî ïîçäðàâèòü ðîäñòâåííèêà, æèâóùåãî â äðóãîì ãîðîäå ñ äíåì ðîæäåíèÿ. Äëÿ ýòî èäåòå íà ïî÷òó è ïîñûëàåòå òåëåãðàììó. Âû ñîîáùàåòå îïåðàòîðó, ÷òî õîòèòå ïåðåñëàòü äàííûé òåêñò ïî íåêîòîðîìó àäðåñó è âàøå ïîçäðàâëåíèå ïîïàäåò ïî íóæíîìó àäðåñó.

Èòàê, äëÿ ðåøåíèÿ ñâîåé ïðîáëåìû Âû íàøëè àãåíòà è ïåðåäàëè åìó ñîîáùåíèå, ñîäåðæàùåå çàïðîñ. Îáÿçàííîñòüþ àãåíòà áóäåò óäîâëåòâîðèòü Âàø çàïðîñ ëþáûì èçâåñòíûì òîëüêî èì ñïîñîáîì. Âàñ ñîâåðøåííî íå èíòåðåñóåò êàêèì èìåííî. Èìååòñÿ íåêèé ìåòîä - ò.å. àëãîðèòì, èëè ïîñëåäîâàòåëüíîñòü îïåðàöèé, êîòîðûå èñïîëüçóþò ïî÷òîâûå ðàáîòíèêè äëÿ âûïîëíåíèÿ çàïðîñà. Âàì íå íàäî çíàòü êàêîé êîíêðåòíî ìåòîä èñïîëüçóåòñÿ.

Äåéñòâèå â ÎÎÏ èíèöèèðóåòñÿ ïîñðåäñòâîì ïåðåäà÷è ñîîáùåíèé îáúåêòó, îòâåòñòâåííîìó çà äåéñòâèÿ. Ñîîáùåíèå ñîäåðæèò çàïðîñ íà âûïîëíåíèå äåéñòâèÿ è ñîïðîâîæäàåòñÿ äîïîëíèòåëüíîé èíôîðìàöèåé, íåîáõîäèìîé äëÿ åãî âûïîëíåíèÿ. Ïîëó÷àòåëü - ýòî àãåíò, êîìó ïîñûëàåòñÿ ñîîáùåíèå. Åñëè îí ïðèíèìàåò ñîîáùåíèå, òî íà íåãî àâòîìàòè÷åñêè âîçëàãàåòñÿ îòâåòñòâåííîñòü çà âûïîëíåíèå óêàçàííîãî äåéñòâèÿ.  êà÷åñòâå ðåàêöèè íà ñîîáùåíèå ïîëó÷àòåëü çàïóñòèò íåêîòîðûé èçâåñòíûé òîëüêî åìó ìåòîä, ÷òîáû óäîâëåòâîðèòü ïðèíÿòûé çàïðîñ.

Èòàê, ïåðâûì ïðèíöèïîì ÎÎ ïîäõîäà ê ðåøåíèþ çàäà÷è ÿâëÿåòñÿ ñïîñîá çàäàíèÿ äåéñòâèé.

Ñêðûòèå èíôîðìàöèè ÿâëÿåòñÿ âàæíûì ïðèíöèïîì è â òðàäèöèîííûõ ÿçûêàõ ïðîãðàììèðîâàíèÿ. ×åì æå ïåðåñûëêà ñîîáùåíèÿ îòëè÷àåòñÿ â ÎÎÏ è â òðàäèöèîííûõ ïîäõîäàõ.

Ïåðâîå îòëè÷èå: èìååòñÿ âïîëíå îïðåäåëåííûé ïîëó÷àòåëü - àãåíò, êîòîðîìó ïîñëàíî ñîîáùåíèå. Ïðè âûçîâå ïðîöåäóðû íåò ñòîëü ÿâíî âûäåëåííîãî ïîëó÷àòåëÿ.

Âòîðîå îòëè÷èå: èíòåðïðåòàöèÿ ñîîáùåíèÿ (à èìåííî ìåòîä, âûçûâàåìûé ïîñëå ïðèåìà ñîîáùåíèÿ) çàâèñèò îò ïîëó÷àòåëÿ è ÿâëÿåòñÿ ðàçëè÷íîé äëÿ ðàçëè÷íûõ ïîëó÷àòåëåé.

Òàêèì îáðàçîì, ðàçëè÷èå ìåæäó âûçîâîì ïðîöåäóðû è ïåðåñûëêîé ñîîáùåíèÿ ñîñòîèò â òîì, ÷òî â ïîñëåäíåì ñëó÷àå ñóùåñòâóåò îïðåäåëåííûé ïîëó÷àòåëü è èíòåðïðåòàöèÿ ìîæåò áûòü ðàçëè÷íîé äëÿ ðàçëè÷íûõ ïîëó÷àòåëåé. Îáû÷íî êîíêðåòíûé ïîëó÷àòåëü íåèçâåñòåí âïëîòü äî âûïîëíåíèÿ ïðîãðàììû, è, ñëåäîâàòåëüíî, íå èçâåñòåí êàêîé ìåòîä áóäåò âûçâàí.  òàêîì ñëó÷àå ãîâîðÿò, ÷òî èìååò ìåñòî ïîçäíåå ñâÿçûâàíèå ìåæäó ñîîáùåíèåì è ìåòîäîì, êîòîðûé âûçûâàåòñÿ â îòâåò íà ýòî ñîîáùåíèå. Ýòà ñèòóàöèÿ ïðîòèâîïîñòàâëÿåòñÿ ðàííåìó ñâÿçûâàíèþ íà ñòàäèÿõ êîìïîíîâêè, ïðèñóùèõ òðàäèöèîííîìó ïðîãðàììèðîâàíèþ.

Ôóíäàìåíòàëüíîé êîíöåïöèåé â ÎÎÏ ÿâëÿåòñÿ ïîíÿòèå îòâåòñòâåííîñòè çà âûïîëíåíèå äåéñòâèé.

Âñå îáúåêòû ÿâëÿþòñÿ ïðåäñòàâèòåëÿìè, èëè ýêçåìïëÿðàìè, êëàññîâ. Ìåòîä àêòèâèçèðóåìûé îáúåêòîì â îòâåò íà ñîîáùåíèå, îïðåäåëÿåòñÿ êëàññîì, ê êîòîðîìó ïðèíàäëåæèò ïîëó÷àòåëü ñîîáùåíèÿ. Âñå îáúåêòû îäíîãî êëàññà èñïîëüçóþò îäíè è òå æå ìåòîäû â îòâåò íà îäèíàêîâûå ñîîáùåíèÿ.

Âåñü ìèð - ýòî îáúåêòû, êîòîðûå ïåðåäàþò äðóã äðóãó ñîîáùåíèÿ

Ðàáîòíèêîâ ïî÷òû è îïåðàòîðîâ ñîòîâîé ñâÿçè ìîæíî ïðåäñòàâèòü â âèäå òàêîé èåðàðõèè êàòåãîðèé. Ðàáîòíèê ïî÷òû è îïåðàòîð ñîòîâîé ñâÿçè - ýòî ïðîäàâåö óñëóã, ïðîäàâåö óñëóã - ýòî ïðîñòî ïðîäàâåö, ïðîäàâåö - ýòî ÷åëîâåê, ÷åëîâåê - ýòî ìëåêîïèòàþùåå, ìëåêîïèòàþùåå - ýòî æèâîòíîå, æèâîòíîå - ýòî ìàòåðèàëüíûé îáúåêò.

Êëàññû ìîãóò áûòü îðãàíèçîâàíû â èåðàðõè÷åñêóþ ñòðóêòóðó ñ íàñëåäîâàíèåì ñâîéñòâ. Äî÷åðíèé êëàññ (èëè ïîäêëàññ) íàñëåäóåò àòðèáóòû ðîäèòåëüñêîãî êëàññà (èëè íàäêëàññà), ðàñïîëîæåííîãî âûøå â èåðàðõè÷åñêîì äåðåâå.

Ïðèíöèï, â ñîîòâåòñòâèè ñ êîòîðûì çíàíèå î áîëåå îáùåé êàòåãîðèè ðàçðåøàåòñÿ èñïîëüçîâàòü äëÿ áîëåå óçêîé êàòåãîðèè, ÿâëÿåòñÿ âòîðûì ïðèíöèïîì ÎÎÏ, íàçûâàåòñÿ íàñëåäîâàíèåì.

Âîçíèêàþò ñëó÷àè, êîãäà íåîáõîäèìî ïåðåîïðåäåëèòü ñïîñîá äåéñòâèÿ, ò.å.  íåîáõîäèìî ðàçðåøàòü ïåðåîïðåäåëÿòü èíôîðìàöèþ, íàñëåäóåìóþ èç ðîäèòåëüñêèõ êëàññîâ. Äëÿ ïîèñêà ìåòîäà, ïîäõîäÿùåãî äëÿ îáðàáîòêè ñîîáùåíèÿ, èñïîëüçóåòñÿ ñëåäóþùåå ïðàâèëî.

Ïîèñê ìåòîäà, êîòîðûé âûçûâàåòñÿ â îòâåò íà îïðåäåëåííîå ñîîáùåíèå, íà÷èíàåòñÿ ñ ìåòîäîâ, ïðèíàäëåæàùèõ êëàññó ïîëó÷àòåëÿ. Åñëè ïîäõîäÿùèé ìåòîä íå íàéäåí, òî ïîèñê ïðîäîëæàåòñÿ äëÿ ðîäèòåëüñêîãî êëàññà. Ïîèñê ïðîäâèãàåòñÿ ââåðõ ïî öåïî÷êå ðîäèòåëüñêèõ êëàññîâ äî òåõ ïîð, ïîêà íå áóäåò íàéäåí íóæíûé ìåòîä èëè ïîêà íå áóäåò èñ÷åðïàíà ïîñëåäîâàòåëüíîñòü ðîäèòåëüñêèõ êëàññîâ.  ïåðâîì ñëó÷àå âûïîëíÿåòñÿ íàéäåííûé ìåòîä, âî âòîðîì - âûäàåòñÿ ñîîáùåíèå îá îøèáêå. Åñëè âûøå â èåðàðõèè êëàññîâ ñóùåñòâóþò ìåòîäû ñ òåì æå èìåíåì, ÷òî è òåêóùèé, òî ãîâîðÿò, ÷òî äàííûé ìåòîä ïåðåîïðåäåëÿåò íàñëåäóåìîå ïîâåäåíèå.

Òîò ôàêò, ÷òî Âàø äðóã ñòóäåíò è îïåðàòîð ïî÷òû áóäåò ðåàãèðîâàòü ïî ðàçíîìó íà ïðîñüáó ïîçäðàâèòü ðîäñòâåííèêîâ, ÿâëÿåòñÿ òðåòüèì ïðèíöèïîì ÎÎÏ, íàçûâàåìûé ïîëèìîðôèçìîì.

3. Ñóùíîñòü ÎÎ ïîäõîäà ê ïðîãðàììèðîâàíèþ

Âûáîð ñòåïåíè àáñòðàêöèè îïðåäåëÿåòñÿ òèïîì çàäà÷è, êîòîðóþ òðåáóåòñÿ ðåøèòü. Íå èìååò ñìûñëà èñïîëüçîâàòü ñëîæíûå òåõíîëîãèè äëÿ ðåøåíèÿ ïðîñòûõ çàäà÷, à ïîïûòêà «âðóêîïàøíóþ» ñïðàâèòüñÿ ñî ñëîæíûìè ïðîáëåìàìè îáðå÷åíà íà ïðîâàë. Ñ äðóãîé ñòîðîíû, ñëîæíûå òåõíîëîãèè òðåáóþò áîëüøèõ çàòðàò âðåìåíè íà èõ îñâîåíèå.

Íàïðèìåð, åñëè òðåáóåòñÿ íàïå÷àòàòü ïèñüìî, äëÿ ýòîé öåëè ïîäîéäåò ïðîñòåéøèé òåêñòîâûé ðåäàêòîð, èìåþùèé ìèíèìóì âîçìîæíîñòåé, êîòîðûì ìîæíî çà 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, îáúåäèíÿþùåé òåêñòîâûé ðåäàêòîð, êîìïèëÿòîð, ðåäàêòîð ñâÿçåé (êîìïîíîâùèê) è îòëàäî÷íûå ñðåäñòâà.

 

4. Õàðàêòåðèñòèêè ÎÎÏ

Ðàññìîòðèì íåñêîëüêî îñíîâíûõ ýëåìåíòîâ, âõîäÿùèõ â ñîñòàâ îáúåêòíî-îðèåíòèðîâàííûõ ÿçûêîâ, â ÷àñòíîñòè â ñîñòàâ ÿçûêà C++.

·         Âñå ÿâëÿåòñÿ îáúåêòîì.

·         Âû÷èñëåíèÿ îñóùåñòâëÿþòñÿ ïóòåì âçàèìîäåéñòâèÿ (îáìåíà äàííûìè) ìåæäó îáúåêòàìè, ïðè êîòîðîì îäèí îáúåêò òðåáóåò, ÷òîáû äðóãîé îáúåêò âûïîëíèë íåêîå äåéñòâèå. Îáúåêòû âçàèìîäåéñòâóþò, ïîñûëàÿ è ïîëó÷àÿ ñîîáùåíèÿ. Ñîîáùåíèÿ - ýòî çàïðîñ íà âûïîëíåíèå äåéñòâèÿ, äîïîëíåííûé íàáîðîì àðãóìåíòîâ, êîòîðûå ìîãóò ïîíàäîáèòüñÿ ïðè âûïîëíåíèè äåéñòâèÿ.

·         Êàæäûé îáúåêò ÿâëÿåòñÿ ïðåäñòàâèòåëåì êëàññà, êîòîðûé âûðàæàåò îáùèå ñâîéñòâà îáúåêòîâ.

·         Â êëàññå çàäàåòñÿ ïîâåäåíèå (ôóíêöèîíàëüíîñòü) îáúåêòà. Òåì ñàìûì âñå îáúåêòû, êîòîðûå ÿâëÿþòñÿ ýêçåìïëÿðàìè îäíîãî êëàññà, ìîãóò âûïîëíÿòü îäíè è òå æå äåéñòâèÿ.

·         Êëàññû îðãàíèçîâàíû â åäèíóþ äðåâîâèäíóþ ñòðóêòóðó ñ îáùèì êîðíåì, íàçûâàåìóþ èåðàðõèåé íàñëåäîâàíèÿ. Ïàìÿòü è ïîâåäåíèå, ñâÿçàííîå ñ ýêçåìïëÿðàìè îïðåäåëåííîãî êëàññà, àâòîìàòè÷åñêè äîñòóïíû ëþáîìó êëàññó, ðàñïîëîæåííîìó íèæå â èåðàðõè÷åñêîì äåðåâå.

Òðàäèöèîííàÿ ìîäåëü, îïèñûâàþùàÿ âûïîëíåíèå ïðîãðàììû íà êîìïüþòåðå, áàçèðóåòñÿ íà äóàëèçìå - ïðîöåññ-ñîñòîÿíèå. Ñ ýòîé òî÷êè çðåíèÿ êîìïüþòåð ÿâëÿåòñÿ àäìèíèñòðàòîðîì äàííûõ, ñëåäóþùèì íåêîòîðîìó íàáîðó èíñòðóêöèé.  ðàìêàõ ÎÎÏ ìû íèêîãäà íå ïîìèíàåì àäðåñà ÿ÷ååê ïàìÿòè, ïåðåìåííûå, ïðèñâàèâàíèÿ.

Âìåñòî ïðîöåññîðà, ìû ïîëó÷àåì íàáîð îáúåêòîâ, êîòîðûå îáðàùàþòñÿ äðóã ê äðóãó âûïîëíèòü òå èëè èíûå äåéñòâèÿ.

Ïðè ÎÎÏ ìû ñ÷èòàåì, ÷òî âû÷èñëåíèå åñòü ìîäåëèðîâàíèå.

Êîíå÷íî, îáúåêòû íå ìîãóò âî âñåõ ñëó÷àÿõ ðåàãèðîâàòü íà ñîîáùåíèå òîëüêî òåì, ÷òî îáðàùàþòñÿ äðóã ê äðóãó ñ ïðîñüáîé âûïîëíèòü íåêîòîðîå äåéñòâèå. Ýòî ïðèâåäåò ê áåñêîíå÷íîìó öèêëó çàïðîñîâ. Íà íåêîòîðîé ñòàäèè îáúåêòû äîëæíû âûïîëíÿòü íåêîòîðûå äåéñòâèÿ ïåðåä ïåðåñûëêîé çàïðîñîâ äðóãèì îáúåêòàì.

Ïðè òðàäèöèîííîì ïîäõîäå ñëîæíîñòü ïðîãðàììû óñëîæíÿåòñÿ áîëüøèì ÷èñëîì ïåðåêðåñòíûõ ññûëîê. Ïåðåêðåñòíûå ññûëêè îáîçíà÷àþò çàâèñèìîñòü îäíîãî ôðàãìåíòà êîäà îò äðóãîãî. Äàæå ñàìûé íåçàâèñèìûé ôðàãìåíò êîäà ÷àñòî íåâîçìîæíî ïîíÿòü â èçîëÿöèè îò äðóãèõ.

Ãëàâíûé ìåõàíèçì áîðüáû ñî ñëîæíîñòüþ - ýòî àáñòðàãèðîâàíèå, ò.å. ñïîñîáíîñòü îòäåëèòü ëîãè÷åñêèé ñìûñë ôðàãìåíòà ïðîãðàììû îò ïðîáëåìû åãî ðåàëèçàöèè. Îò ïðîöåäóð ê ìîäóëÿì, äàëåå ê àáñòðàêòíûì äàííûì è, íàêîíåö, ê îáúåêòàì.

Ïðîöåäóðû è ôóíêöèè áûëè ïåðâûìè ìåõàíèçìàìè àáñòðàãèðîâàíèÿ. Ïðîöåäóðû ïîçâîëÿþò ñêîíöåíòðèðîâàòü â îäíîì ìåñòå ðàáîòó, êîòîðàÿ âûïîëíÿåòñÿ ìíîãîêðàòíî, à çàòåì ìíîãîêðàòíî èñïîëüçîâàòü ýòîò êîä.

Äàííûå íå ìîãóò áûòü ëîêàëüíûìè, ïîòîìó ÷òî ÿâëÿþòñÿ îáùèìè äëÿ âñåõ ïðîöåäóð. Äàííûå äîëæíû ñîäåðæàòüñÿ â ãëîáàëüíûõ ïåðåìåííûõ. Îäíàêî, åñëè ïåðåìåííûå ãëîáàëüíûå - íåò ñïîñîáà îãðàíè÷èòü äîñòóï ê íèì èëè èõ âèäèìîñòü. Åñëè èìÿ ïåðåìåííîé datastack, îá ýòîì äîëæíû çíàòü âñå ïðîãðàììèñòû, ÷òîáû íå ñîçäàòü ïåðåìåííûå ñ òàêèì èìåíåì.

Ìîäóëè ìîæíî ðàññìàòðèâàòü êàê óëó÷øåííûé ìåòîä ñîçäàíèÿ è óïðàâëåíèÿ ñîâîêóïíîñòè èìåí è ñâÿçàííûìè ñ íèìè çíà÷åíèÿìè. Åñëè ðàññìàòðèâàòü ìîäóëü êàê àáñòðàêòíóþ êîíöåïöèþ, òî åå ñóòü ñîñòîèò â ðàçáèåíèè ïðîñòðàíñòâà èìåí íà äâå ÷àñòè. Îòêðûòàÿ (public) ÷àñòü ÿâëÿåòñÿ äîñòóïíîé èçâíå ìîäóëÿ, çàêðûòàÿ (private) ÷àñòü äîñòóïíà òîëüêî âíóòðè ìîäóëÿ. Òèïû, äàííûå è ïðîöåäóðû ìîãóò áûòü ê ëþáîìó èç ýòèõ äâóõ ÷àñòåé.

Ìîäóëè ðåøàþò íåêîòîðûå, íî íå âñå ïðîáëåìû ðàçðàáîòêè ïðîãðàììíîãî îáåñïå÷åíèÿ. Ìåõàíèçì ìîäóëÿ, ïîçâîëÿÿ ìàñêèðîâàòü äàííûå, íå ïîçâîëÿåò ðàçìíîæàòü ýêçåìïëÿðû.

Àáñòðàêòíûé òèï äàííûõ çàäàåòñÿ ïðîãðàììèñòîì. Ñ äàííûìè àáñòðàêòíîãî òèïà ìîæíî ìàíèïóëèðîâàòü òàê æå, êàê è ñ äàííûìè òèïîâ, âñòðîåííûõ â ñèñòåìó. Ïîëüçîâàòåëþ ðàçðåøàåòñÿ ñîçäàâàòü ïåðåìåííûå, êîòîðûå ïðèíèìàþò çíà÷åíèÿ èç äîïóñòèìîãî ìíîæåñòâà, è ìàíèïóëèðîâàòü èìè, èñïîëüçîâàòü èìåþùèåñÿ îïåðàöèè. ×òîáû ïîñòðîèòü àáñòðàêòíûé òèï äàííûõ, ìû äîëæíû èìåòü:

·        Ýêñïîðòèðîâàòü îïðåäåëåíèå òèïà äàííûõ

·        Äåëàòü äîñòóïíûì íàáîð îïåðàöèé, èñïîëüçóþùèõñÿ äëÿ ìàíèïóëèðîâàíèÿ ýêçåìïëÿðàìè òèïà äàííûõ.

·        Çàùèùàòü äàííûå, ñâÿçàííûå ñ òèïîì äàííûõ, ÷òîáû ñ íèìè ìîæíî áûëî ðàáîòàòü òîëüêî ÷åðåç óêàçàííûå ïîäïðîãðàììû.

·        Ñîçäàâàòü íåñêîëüêî ýêçåìïëÿðîâ àáñòðàêòíîãî òèïà äàííûõ.

Îáúåêòû - ýòî ïî÷òè àáñòðàêòíûé òèï äàííûõ, íî äîïîëíåííûé íåêîòîðûìè íîâøåñòâàìè.

ÎÎÏ äîáàâëÿåò èäåè ê àáñòðàêòíîìó òèïó äàííûõ. Ãëàâíàÿ èç íèõ - ïåðåñûëêà ñîîáùåíèé. Äåéñòâèå èíèöèèðóåòñÿ ïî çàïðîñó, îáðàùåííîìó ê êîíêðåòíîìó îáúåêòó, à íå ÷åðåç âûçîâ ôóíêöèè. Ê ïåðåñûëêå ñîîáùåíèÿ äîáàâëÿåòñÿ ïåðåîïðåäåëåíèå èìåí è ìåõàíèçìû ñîâìåñòíîãî/ìíîãîêðàòíîãî èñïîëüçîâàíèÿ êîäà.

Èíòåðïðåòàöèÿ ñîîáùåíèé ìåíÿåòñÿ äëÿ ðàçëè÷íûõ îáúåêòîâ.

Äîáàâëÿþòñÿ ìåõàíèçìû íàñëåäîâàíèÿ è ïîëèìîðôèçìà. Íàñëåäîâàíèå ïîçâîëÿåò ðàçëè÷íûì òèïàì äàííûõ ñîâìåñòíî èñïîëüçîâàòü îäèí è òîò æå êîä, ïðèâîäÿ ê óìåíüøåíèþ åãî ðàçìåðà è ïîâûøåíèþ ôóíêöèîíàëüíîñòè. Ïîëèìîðôèçì îáåñïå÷èâàåò, ÷òîáû îáùèé êîä óäîâëåòâîðÿë êîíêðåòíûì îñîáåííîñòÿì îòäåëüíûõ òèïîâ äàííûõ.

Ìíîãîêðàòíîå èñïîëüçîâàíèå - ýòî öåëü, ê êîòîðîé âñå ñòðåìÿòñÿ, íî ðåäêî äîñòèãàþò. ÎÎÏ îáåñïå÷èâàåò ìåõàíèçì äëÿ îòäåëåíèÿ ñóùåñòâåííîé èíôîðìàöèè îò ñïåöèàëèçèðîâàííîé (íàïðèìåð, êîíêðåòíûé ôîðìàò äàííûõ).


5. Ðåçþìå

ÎÎÏ - ýòî íå ïðîñòî íàáîð íåêîòîðûõ ñâîéñòâ, äîáàâëåííûõ â óæå ñóùåñòâóþùèå ÿçûêè. Ýòî íîâûé øàã â îñìûñëåíèè çàäà÷ è ðàçðàáîòêè ÏÎ.

Ïðîãðàììû - ýòî ñîâîêóïíîñòü âçàèìîäåéñòâóþùèõ îáúåêòîâ. Êàæäûé îáúåêò îòâå÷àåò çà êîíêðåòíóþ çàäà÷ó. Âû÷èñëåíèå îñóùåñòâëÿåòñÿ ïîñðåäñòâîì âçàèìîäåéñòâèÿ îáúåêòîâ. Îáúåêò ïîëó÷àåòñÿ â ðåçóëüòàòå èíêàïñóëÿöèè ñîñòîÿíèÿ (äàííûõ) è ïîâåäåíèÿ (îïåðàöèé), âî ìíîãîì àíàëîãè÷íî àáñòðàêòíîìó òèïó äàííûõ. Ïîâåäåíèå îáúåêòà äèêòóåòñÿ êëàññîì. Äàííûå è ïîâåäåíèå ïðåäñòàâëåíû â âèäå êëàññîâ, ýêçåìïëÿðû êîòîðûõ - îáúåêòû. Âñå ýêçåìïëÿðû îäíîãî êëàññà áóäóò âåñòè ñåáÿ îäèíàêîâûì îáðàçîì â îòâåò íà îäèíàêîâûå çàïðîñû.

Îáúåêò ïðîÿâëÿåò ñâîå ïîâåäåíèå ïóòåì âûçîâà ìåòîäà â îòâåò íà ñîîáùåíèå. Èíòåðïðåòàöèÿ ñîîáùåíèÿ çàâèñèò îò îáúåêòà è ìîæåò áûòü ðàçëè÷íîé äëÿ ðàçëè÷íûõ êëàññîâ îáúåêòîâ.

Äëÿ óäîáñòâà ñîçäàíèÿ íîâîãî òèïà èç óæå ñóùåñòâóþùèõ òèïîâ, îïðåäåëåííûõ ïîëüçîâàòåëåì èñïîëüçóåòñÿ ìåõàíèçì íàñëåäîâàíèÿ. Êëàññû ìîãóò áûòü îðãàíèçîâàíû â âèäå èåðàðõè÷åñêîãî äåðåâà íàñëåäîâàíèÿ.

Ñ ïîìîùüþ óìåíüøåíèÿ âçàèìîçàâèñèìîñòè ÎÎÏ ïîçâîëÿåò ðàçðàáàòûâàòü ñèñòåìû, ïðèãîäíûå äëÿ ìíîãîêðàòíîãî èñïîëüçîâàíèÿ.

ÎÎÏ - ýòî âçãëÿä íà ïðîãðàììèðîâàíèå, ñîñðåäîòî÷åííûé íà äàííûõ; â êîòîðîì äàííûå è ïîâåäåíèå æåñòêî ñâÿçàíû. Äëÿ ýòîãî íåîáõîäèìî, ÷òîáû îáúåêòû îïðåäåëÿëèñü âìåñòå ñ ñîîáùåíèÿìè, íà êîòîðûå îíè ìîãóò ðåàãèðîâàòü.

Îáúåêòíî-îðèåíòèðîâàííàÿ ïàðàäèãìà ïðåäëàãàåò íîâûé ïîäõîä ê ðàçðàáîòêå ïðîãðàììíîãî îáåñïå÷åíèÿ. Ôóíäàìåíòàëüíàÿ êîíöåïöèÿ îáúåêòíî-îðèåíòèðîâàííîé ïàðàäèãìû ñîñòîèò â ïåðåäà÷å ñîîáùåíèé îáúåêòàì.

Òàêèì îáðàçîì, Îáúåêòíî-îðèåíòèðîâàííûé ÿçûê äîëæåí îáëàäàòü ñâîéñòâàìè àáñòðàêöèè, èíêàïñóëÿöèè, íàñëåäîâàíèÿ è ïîëèìîðôèçìà.

Èíêàïñóëÿöèÿ ñ ñîêðûòèåì äàííûõ - ñïîñîáíîñòü îòëè÷àòü âíóòðåííåå ñîñòîÿíèå îáúåêòà è ïîâåäåíèå îò åãî âíåøíåãî ñîñòîÿíèÿ è ïîâåäåíèÿ

Àáñòðàêöèÿ - ðàñøèðÿåìîñòü òèïîâ - ñïîñîáíîñòü äîáàâëÿòü òèïû, îïðåäåëÿåìûå ïîëüçîâàòåëåì äëÿ òîãî, ÷òîáû äîïîëíèòü èìè âñòðîåííûå òèïû. Îäèí èç ïðèíöèïîâ ÎÎÏ çàêëþ÷àåòñÿ â òîì, ÷òîáû òèïû, îïðåäåëÿåìûå ïîëüçîâàòåëåì, äîëæíû îáëàäàòü òåìè æå ïðèâèëåãèÿìè, ÷òî è âñòðîåííûå òèïû.

Íàñëåäîâàíèå - ñïîñîáíîñòü ñîçäàâàòü íîâûå òèïû, ïîâòîðíî èñïîëüçóÿ, îïèñàíèå ñóùåñòâóþùèõ òèïîâ.

Ïîëèìîðôèçì ñ äèíàìè÷åñêèì (ïîçäíèì) ñâÿçûâàíèåì - ñïîñîáíîñòü îáúåêòîâ áûòü îòâåòñòâåííûìè çà èíòåðïðåòàöèþ âûçîâà ôóíêöèè

Ïðèíöèïû Îáúåêòíî-îðèåíòèðîâàííîãî ïîäõîäà:

Äåéñòâèå â îáúåêòíî-îðèåíòèðîâàííîì ïðîãðàììèðîâàíèè èíèöèèðóåòñÿ ïîñðåäñòâîì ïåðåäà÷è ñîîáùåíèé îáúåêòó. Ñîîáùåíèå ñîäåðæèò çàïðîñ íà îñóùåñòâëåíèå äåéñòâèÿ.  êà÷åñòâå ðåàêöèè íà ñîîáùåíèå ïîëó÷àòåëü çàïóñòèò íåêîòîðûé ìåòîä, ÷òîáû óäîâëåòâîðèòü ïðèíÿòûé çàïðîñ.

Âñå îáúåêòû ÿâëÿþòñÿ ýêçåìïëÿðàìè, êëàññîâ. Âñå îáúåêòû îäíîãî êëàññà èñïîëüçóþò îäíè è òå æå ìåòîäû â îòâåò íà îäèíàêîâûå ñîîáùåíèÿ.

Ïðèíöèï íàñëåäîâàíèÿ. Êëàññû ìîãóò áûòü îðãàíèçîâàíû â èåðàðõè÷åñêóþ ñòðóêòóðó ñ íàñëåäîâàíèåì ñâîéñòâ. Äî÷åðíèé êëàññ íàñëåäóåò àòðèáóòû ðîäèòåëüñêîãî êëàññà.

Ïðèíöèï ïîëèìîðôèçìà. Îáúåêòû ðåàãèðóþò íà îäíî è òîæå ñîîáùåíèå ñòðîãî ñïåöèôè÷íûì äëÿ íèõ îáðàçîì.