Основы объектно-ориентированного программирования (1092194)
Текст из файла
Îñíîâûîáúåêòíî-îðèåíòèðîâàííîãîïðîãðàììèðîâàíèÿÎÎÏ ðåçóëüòàò ýâîëþöèèìåòîäîëîãèé ïðîãðàììèðîâàíèÿÏîòðåáíîñòü â ÎÎÏ ñâÿçàíà ñî ñòðåìèòåëüíûìóñëîæíåíèåì ðàçðàáàòûâàåìûõ ïðîãðàìì è, êàê ñëåäñòâèå, èõ íåäîñòàòî÷íîé íàäåæíîñòüþ. Ïðàêòè÷åñêè âñå ñîâðåìåííûå ÿçûêè ïðîãðàììèðîâàíèÿ, íåçàâèñèìî îò ïðèíàäëåæíîñòè ê òîìó èëè èíîìó ñòèëþ (äèðåêòèâíîìó èëè äåêëàðàòèâíîìó), ïîääåðæèâàþò êîíöåïöèþ ÎÎÏ.
Ñðåäè íèõ 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# "Ìåíÿ çîâóò Êåøà!".
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.