Основы объектно-ориентированного программирования (Презентации)
Описание файла
Файл "Основы объектно-ориентированного программирования" внутри архива находится в папке "Презентации". PDF-файл из архива "Презентации", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МПУ. Не смотря на прямую связь этого архива с МПУ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
Îñíîâûîáúåêòíî-îðèåíòèðîâàííîãîïðîãðàììèðîâàíèÿÎÎÏ ðåçóëüòàò ýâîëþöèèìåòîäîëîãèé ïðîãðàììèðîâàíèÿÏîòðåáíîñòü â ÎÎÏ ñâÿçàíà ñî ñòðåìèòåëüíûìóñëîæíåíèåì ðàçðàáàòûâàåìûõ ïðîãðàìì è, êàê ñëåäñòâèå, èõ íåäîñòàòî÷íîé íàäåæíîñòüþ. Ïðàêòè÷åñêè âñå ñîâðåìåííûå ÿçûêè ïðîãðàììèðîâàíèÿ, íåçàâèñèìî îò ïðèíàäëåæíîñòè ê òîìó èëè èíîìó ñòèëþ (äèðåêòèâíîìó èëè äåêëàðàòèâíîìó), ïîääåðæèâàþò êîíöåïöèþ ÎÎÏ.
Ñðåäè íèõ C++, Java,Ruby.Îñíîâíûå ñâîéñòâà ÎÎ ñòèëÿ îñíîâå ÎÎÏ ëåæàò òðè ïîíÿòèÿ:èíêàïñóëÿöèÿ (ñîêðûòèå äàííûõ â êëàññå èëèìåòîäå);íàñëåäîâàíèå;ïîëèìîðôèçì.IIIÈíêàïñóëÿöèÿ äàííûõÌàëîçíà÷àùèå äåòàëè îáúåêòà (ýêçåìïëÿðà êëàññà) ñêðûòû îò ïîëüçîâàòåëÿ, è åñëè äàåòñÿ êîìàíäàêàêîìó-òî îáúåêòó, òî îí ¾çíàåò¿, êàê åå âûïîëíèòü. Ôóíäàìåíòàëüíîé êîíöåïöèåé â ÎÎÏ ÿâëÿ-åòñÿ ïîíÿòèå îáÿçàííîñòè èëè îòâåòñòâåííîñòè çàâûïîëíåíèå äåéñòâèÿ.Èíêàïñóëÿöèÿ äàííûõ (2)Èíêàïñóëÿöèþ ìîæíî ïðåäñòàâèòü, êàê çàùèòíóþ îáîëî÷êó âîêðóã êîäà äàííûõ, ñ êîòîðûìè ýòîòêîä ðàáîòàåò. Îáîëî÷êà çàäàåò ïîâåäåíèå è çàùèùàåò êîä îò ïðîèçâîëüíîãî äîñòóïà èçâíå.Ïðèìåðclass Birddef flyputs "ß - ïòèöà, ÿ - ëå÷ó!"endendeagle = Bird.neweagle.flyÝêçåìïëÿðû êëàññîâÂñå îáúåêòû ÿâëÿþòñÿ ïðåäñòàâèòåëÿìè, èëè ýêçåìïëÿðàìè, êëàññîâ.
Ìåòîä, àêòèâèçèðóåìûé îáúåêòîì â îòâåò íà ñîîáùåíèå, îïðåäåëÿåòñÿ êëàññîì, ê êîòîðîìó ïðèíàäëåæèò ïîëó÷àòåëü ñîîáùåíèÿ. Âñå îáúåêòû îäíîãî êëàññà èñïîëüçóþò îäíèè òå æå ìåòîäû â îòâåò íà îäèíàêîâûå ñîîáùåíèÿ.Ñîçäàíèå êëàññà â Rubyclass Èìÿ_êëàññàdef initialize(ïàðàìåòðû)...enddef Îäèí_èç_ìåòîäîâ...end...endÈåðàðõèè êëàññîâÊëàññû ïðåäñòàâëÿþòñÿ â âèäå èåðàðõè÷åñêîé äðåâîâèäíîé ñòðóêòóðû, â êîòîðîé êëàññû ñ áîëåå îáùèìè ÷åðòàìè ðàñïîëàãàþòñÿ â êîðíå äåðåâà, àñïåöèàëèçèðîâàííûå êëàññû è â êîíå÷íîì èòîãåèíäèâèäóóìû ðàñïîëàãàþòñÿ â âåòâÿõ.ÍàñëåäîâàíèåÍàñëåäîâàíèå ýòî ïðîöåññ, â ðåçóëüòàòå êîòîðîãî îäèí êëàññ (òèï) íàñëåäóåò ñâîéñòâà äðóãîãî.Ïðèìåðclass Macaw < Birddef speakputs "ß - ïîïóãàé!"endendmacaw = Macaw.newmacaw.fly# "ß - ïòèöà, ÿ - ëå÷ó!"macaw.speak # "ß - ïîïóãàé!"ÏîëèìîðôèçìÏîëèìîðôèçì ýòî êîíöåïöèÿ, ïîçâîëÿþùàÿèìåòü ðàçëè÷íûå ðåàëèçàöèè äëÿ îäíîãî è òîãî æåìåòîäà, êîòîðûå áóäóò âûáèðàòüñÿ â çàâèñèìîñòèîò òèïà îáúåêòà, ïåðåäàííîãî ìåòîäó ïðè âûçîâå.Ïðèìåðclass Penguin < Birddef flyputs "Ïèíãâèíû íå ëåòàþò!"endendpenguin = Penguin.newpenguin.fly # "Ïèíãâèíû íå ëåòàþò!"Íàçíà÷åíèå ìåòîäà initializeÝòîò ìåòîä êîíñòðóêòîð.
Îí âûçûâàåòñÿ, êîãäàìû ñîçäàåì ýêçåìïëÿð êëàññà (óêàçûâàÿ êëþ÷åâîåñëîâî new). Ñ åãî ïîìîùüþ ìîæíî ñîçäàâàòü ýêçåìïëÿðû êëàññà ñ ðàçëè÷íûìè õàðàêòåðèñòèêàìè.Ïðèìåðclass Macaw < Birddef initialize(name)puts "ß - ïîïóãàé!"@name = nameenddef speakputs "Ìåíÿ çîâóò #{@name}!"endendmacaw = Macaw.new("Ïåòÿ") # "ß - ïîïóãàé!"macaw.speak # "Ìåíÿ çîâóò Ïåòÿ!"Ïåðåìåííûå ýêçåìïëÿðàÏåðåìåííûå, èìåíà êîòîðûõ íà÷èíàþòñÿ ñ ñèìâîëà , íàçûâàþòñÿ ïåðåìåííûìè ýêçåìïëÿðà. Òàêèå ïåðåìåííûå íóæíû äëÿ õðàíåíèÿ èíôîðìàöèè,ñïåöèôè÷åñêîé äëÿ äàííîãî ýêçåìïëÿðà.Ïðèìåðclass Macaw < Birddef initialize(name)puts "ß - ïîïóãàé!"@name = nameenddef speakputs "Ìåíÿ çîâóò #{@name}!"endendmacaw1 = Macaw.new("Ïåòÿ")macaw2 = Macaw.new("Êåøà")macaw1.speak# "Ìåíÿ çîâóò Ïåòÿ!"macaw2.speak# "Ìåíÿ çîâóò Êåøà!"Äîñòóï ê ïåðåìåííûì ýêçåìïëÿðàÏðèíöèï èíêàïñóëÿöèè íå ïîçâîëÿåò ¾âèäåòü¿ñëóæåáíóþ èíôîðìàöèþ êëàññà è åãî ýêçåìïëÿðà(â òîì ÷èñëå è ïåðåìåííûå).
Äëÿ òîãî, ÷òîáû ñäåëàòü ¾âèäèìûìè¿ íåêîòîðûå ïåðåìåííûå ýêçåìïëÿðà ñëåäóåò çàäàòü àòðèáóòû ÷òåíèÿ è, ïðè íåîáõîäèìîñòè, àòðèáóòû çàïèñè äëÿ äàííîãî êëàññà.Ïðèìåðclass Macaw < Birdattr_reader :nameattr_writer :namedef initialize(name)@name = nameenddef speakputs "Ìåíÿ çîâóò #{@name}!"endendmacaw = Macaw.new("Ïåòÿ")macaw.speak# "Ìåíÿ çîâóò Ïåòÿ!"macaw.name = "Êåøà"macaw.speak# "Ìåíÿ çîâóò Êåøà!".