Аб’ект (праграмаваньне): розьніца паміж вэрсіямі

Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі
Змесціва выдалена Змесціва дададзена
д робат дадаў: en, fi, ga, ja, ko, simple, zh зьмяніў: es
Радок 47: Радок 47:
[[da:Objekt (datalogi)]]
[[da:Objekt (datalogi)]]
[[de:Objekt (Programmierung)]]
[[de:Objekt (Programmierung)]]
[[en:Object (computer science)]]
[[es:Objetos (programación orientada a objetos)]]
[[eo:Objekto (komputiko)]]
[[eo:Objekto (komputiko)]]
[[es:Objeto (programación)]]
[[fi:Olio (ohjelmointi)]]
[[fr:Objet (informatique)]]
[[fr:Objet (informatique)]]
[[ga:Oibiacht (ríomhaireacht)]]
[[it:Oggetto (informatica)]]
[[it:Oggetto (informatica)]]
[[ja:オブジェクト (プログラミング)]]
[[ko:객체 (전산학)]]
[[lt:Objektas (programavimas)]]
[[lt:Objektas (programavimas)]]
[[nl:Object (informatica)]]
[[nl:Object (informatica)]]
Радок 56: Радок 61:
[[pt:Objeto]]
[[pt:Objeto]]
[[ru:Объект (программирование)]]
[[ru:Объект (программирование)]]
[[simple:Object (computer science)]]
[[ta:பொருள் (கணினியியல்)]]
[[ta:பொருள் (கணினியியல்)]]
[[vi:Đối tượng (khoa học máy tính)]]
[[uk:Об'єкт (програмування)]]
[[uk:Об'єкт (програмування)]]
[[vi:Đối tượng (khoa học máy tính)]]
[[zh:对象 (计算机科学)]]

Вэрсія ад 05:20, 16 верасьня 2008

У першым набліжэньні аб’ект — вылучаная вобласьць памяці. Аб’ектна-арыентаваныя мовы праграмаваньня выкарыстоўваюць зьменныя для доступу да аб’ектаў, а таму паняткі аб’ект і зьменная часам выкарыстоўваюцца як ўзаемазамяняльныя. Аднак, аб’ект не існуе да таго часу, пакуль ня вылучаная памяць.

У працэдурным праграмаваньні аб’ект можа ўтымліваць у сабе дадзеныя альбо інструкцыі, але не адное і другое разам. Інструкцыі могуць мець выгляд працэдуры або функцыі. У аб’ектна-арыентаваным праграмаваньні аб’ект зьяўляецца экзэмплярам клясы. Кляса ўтрымлівае ў сабе набор дадзеных і інструкцый, якія зьдзяйсьняюць апэрацыі з дадзенымі, робяць аб’ект мог прымаць паведамленьні, апрацоўваюць дадзеныя і адпраўляюць паведамленьні іншым аб’ектам.

Для лепшага разуменьня розьніцы паміж клясай і аб’ектам можна прывесьці наступны прыклад. Калі хтосьці хоча жыць у доме, ні чарцёж гэтага дома, ні ягоны фатаздымак, ні мадэль дома не дапамогуць гэтаму чалавеку. Што тут патрэбна — дык гэта рэальны дом, пабудаваны ў адпаведнасьці з спэцыфікацыямі. Выкарыстоўваючы гэтую аналёгію, чарцёж прадстаўляе клясу, а рэальны дом прадстаўляе аб’ект.

Тэорыя

У строгім матэматычным выкладаньні інфарматыкі панятак аб’ект выкарыстоўваецца ў чыста матэматычным сэнсе для абазначэньня любой «рэчы». Улічваючы тое, што пакуль яшчэ гэтая інтэрпрэтацыя цалкам прымальная для апісаньня абстрактнай тэорыі, і хаця гэты панятак недастаткова канкрэтны, каб апісваць прымітыўныя тыпы дадзеных у больш канкрэтных галінах (кшталту праграмаваньня), ён усё яшчэ дастаткова блізкі да бягучага разуменьня паняткаў «вылічэньне» і «апрацоўка інфармацыі». Па гэтай прычыне аб’екты ўсё яшчэ зьяўляюцца канцэптуальнымі сутнасьцямі, але звычайна адпавядаюць непарыўнаму блёку кампутарнай памяці вызначанага памеру ў вызначаным месцазнаходжаньні. Такая рэалізацыя абраная з прычыны таго, што вылічэньне і апрацоўка інфармацыі патрабуюць строга пэўную форму кампутарнай памяці. У гэтым сэнсе аб’екты — гэта фундамэнтральныя прымітывы, якія патрабуюцца для дакладнага вызначэньня такіх паняткаў як спасылкі, зьменныя і адпаведнасьць імёнаў.

Аб’екты існуюць толькі ў сваім кантэсьце. Частка кампутарнай памяці ўтрымлівае аб’ект толькі тады, пакуль праграма разглядае гэтую частку памяці як аб’ект. Таму час жыцьця аб’ектаў — гэта час пакуль вобласьць памяці разглядаецца як аб’ект. Вось чаму аб’екты зьяўляюцца канцэптуальнымі паняткамі, ня гледзячы на іхнае фізычнае знаходжаньне ў памяці.

Аб’екты ў аб’ектна-арыентаваным праграмаваньні

У аб’ектна-арыентаваным праграмаваньні (ААП) экзэмпляр праграмы (напрыклад, праграма, запушчаная на кампутары) разглядаецца як дынамічны набор аб’ектаў, якія ўзаемадзейнічаюць між сабой. Аб’екты ў ААП пашыраюць агульнае вызначэньне аб’ектаў, прыведзенае вышэй, шляхам выкарыстаньня адмысловага віду тыпізаваньня, якое, апроч іншага, дазваляе утрымліваць у сабе наступныя рэчы:

  1. дадзеныя, якія прадстаўляюць дадзеныя, асацыяваныя з аб’ектам;
  2. мэтады, якія зьвяртаюцца да дадзеных загадзя вызначанымі спосабамі.

У выпадку большасьці аб’ектаў, да дадзеных аб’екта можна зьвяртуцца толькі праз мэтады, што гарантуе тое, што дадзеныя заўжы застануцца ў дапушчальных межах. Аднак пэўныя мовы не адрозьніваюць дадзеныя і мэтады.

У амаль усіх аб’ектна-арыентаваных мовах праграмаваньня для выкліку пэўнага мэтаду альбо функцыі аб’екта выкарыстоўваецца апэратар «кропка» (.). Напрыклад, разгледзім арытмэтычную клясу зь імем АрытКляса, якая ўтрымлівае мэтады кшталту дадай(), адымі(), памнож() і падзялі(), якія вылічаюць вынік двух лікаў, якія былі ім перададзеныя. Гэтая кляса можа выкарыстоўвацца для вылічэньня здабытку 78 і 69, але спачатку трэба стварыць клясу і затым выклікаць мэтад здабытку наступым чынам:

 1  int вынік = 0;                           // Ініцыялізаваньне
 2  арытАб’ект1 = new АрытКляса();           // Стварэньне новага экзэмпляру клясы «АрытКляса»
 3  вынік = арытАб’ект1.памнож(78, 69);      // Здабытак 78 і 69 захоўваецца ў зьменнай «вынік»

У мовах, дзе кожны аб’ект ствараецца з клясы, аб’ект называецца экзэмплярам гэтай клясы. Калі кожны аб’ект мае тып, то два аб’екты адной і той жа клясы будуць мець адзін і той жа тып дадзеных.

Часам аб’ект застаецца без спасылак на яго ў праграме. Такі аб’ект ужо ня можа выконваць ніякіх дзеяньняў. У такіх выпадках у мовах, дзе рэалізаваны аўтаматычны збор сьмецьця, зьбіральнік сьмецьця пазначаць памяць, якая займаецца аб’ектам, як вольную, хаця яна яшчэ будзе ўтрымлівац дадзеныя аб’екта да таго часу, пакуль яны ня будуць перазапісаныя.

Тры ўласьцівасьці, якія характарызуюць аб’екты:

  1. Унікальнасьць: уласьцівасьць аб’екта, якая адрозьнівае яго ад іншых аб’ектаў;
  2. Стан: апісвае дадзеныя, якія захоўваюцца ў аб’екце;
  3. Паводзіны: апісвае мэтады ў інтэрфэйсе аб’екта, празь якія ён можа быць выкарыстаны.

Прыклад

Прыкладам з жыцьця можа быць аб’ект «мой сабака», які зьяўляецца экзэмплярам клясы «сабака», які ў сваю чаргу зьяўляецца падклясай клясы «жывёла». У выпадку паліморфных аб’ектаў пэўныя дэталі гэтага тыпу могуць выбарачна інгаравацца, напрыклад, аб’ект «сабака» можа выкарыстоўвацца фукцыяй, якая шукае «жывёлу». Але гэтаксама можа апрацоўвацца і «котка», бо яна таксама належыць да клясы «жывёла». Калі аб’ектры разглядаць як «жывёлаў», пэўныя члены і атрыбуты клясаў «сабака» альбо «котка» будуць недаступныя, напрыклад, такія як атыбут «хвост», бо ня ўсе жывёлы маюць хвасты.

Зьнешнія спасылкі