Нысан (информатика) - Object (computer science)

Жылы Информатика, an объект болуы мүмкін айнымалы, а мәліметтер құрылымы, а функциясы немесе а әдіс және, осылайша, а мәні жылы жады сілтеме жасаған идентификатор.

Ішінде объектіге бағытталған бағдарламалау парадигма объект айнымалылардың, функциялардың және мәліметтер құрылымының тіркесімі болуы мүмкін; атап айтқанда сыныптық ол белгілі бір түрге қатысты парадигманың хош иісі данасы а сынып.

Ішінде реляциялық модель туралы дерекқор басқару, объект болуы мүмкін а кесте немесе баған, немесе деректер мен деректер базасы арасындағы байланыс (мысалы, адамның жасын белгілі бір адамға жатқызу).[1]

Объектілік тілдер

Программалау тілдеріндегі маңызды айырмашылық - бұл объектіге бағытталған тіл мен объектілік тіл арасындағы айырмашылық. Тіл, әдетте, объектінің негізгі мүмкіндіктерін: сәйкестендіруді, қасиеттерді және атрибуттарды қамтыса, объектілі деп саналады. Тіл объектіге негізделген болып саналады, егер ол объектілікке негізделген болса, сонымен қатар қабілеті бар болса полиморфизм және мұрагерлік. Полиморфизм дегеніміз функцияның атауын бірнеше мінез-құлықпен жүктеу мүмкіндігі, оған негізделетін объект (-тер) берілуін айтады. Дәстүрлі хабарлама жіберу тек бірінші объектіге қатысты дискриминация жасайды және оны осы объектіге «хабарлама жіберу» деп санайды. Алайда, кейбір OOP тілдері Дәмдер және Жалпы Lisp объектілік жүйесі (CLOS) функцияның бірінші параметрінен көп бөлуге мүмкіндік береді.[2] Мұрагерлік - бұл объектілер класын ішкі классқа бөлу, бұрыннан бар сыныптың екінші класы болып табылатын және ата-аналарының барлық шектеулері мен мінез-құлықтарын мұрагер етіп алатын, сонымен бірге олардың жаңа немесе / немесе біреуін өзгертетін және / немесе өзгертетін жаңа класс құру мүмкіндігі.[3][4]

Объектіге бағытталған бағдарламалау

Нысанға бағытталған бағдарламалау дегеніміз - модульдік қайта қолдануға болатын бағдарламалық жасақтаманы жобалау тәсілі. Нысанға бағытталған тәсіл - бұл компьютерлік бағдарламалаудың басынан басталатын дизайнерлік тәжірибенің эволюциясы. Нысанға бағдарлау дегеніміз - ескі техниканың логикалық жалғасы құрылымдық бағдарламалау және деректердің дерексіз түрлері. Нысан - деректердің дерексіз типі полиморфизм және мұрагерлік.

Құрылымдық бағдарламалардан гөрі код және деректер сияқты, объектіге бағытталған жүйе екеуін «объект» ұғымын қолдана отырып біріктіреді. Нысанда күй (мәліметтер) және мінез-құлық (код) болады. Заттар нақты әлемде кездесетін заттарға сәйкес келуі мүмкін. Мысалы, графикалық бағдарламада сияқты нысандар болады шеңбер, шаршы, мәзір. Интернет-дүкен жүйесінде сияқты нысандар болады сатып алу себеті, тапсырыс беруші, өнім. Сауда жүйесі сияқты әрекеттерді қолдайды тапсырыс беру, төлем жасау, және жеңілдік ұсыну. Объектілер класс иерархиясы ретінде жасалған. Мәселен, мысалы, сауда жүйесінде жоғары деңгейдегі сабақтар болуы мүмкін электроника өнімі, ас үй өнімі, және кітап. Қосымша нақтыланулар болуы мүмкін, мысалы электронды өнімдер: CD ойнатқышы, DVD ойнатқышыжәне т.с.с. осы сыныптар мен кіші сыныптарға сәйкес келеді жиындар мен ішкі жиындар математикалық логикада.[5][6]

Мамандандырылған нысандар

Объектілер үшін маңызды ұғым дизайн үлгісі. Дизайн үлгісі жалпы проблеманы шешу үшін қайта қолдануға болатын шаблон ұсынады. Төмендегі объектілік сипаттамалар объектілерді жобалаудың кейбір кең таралған үлгілерінің мысалдары болып табылады.[7]

  • Функция нысаны: жалғыз әдісі бар объект (C ++ тілінде бұл әдіс функцияға ұқсас жұмыс жасайтын функция операторы, «оператор») болады (функцияға C / C ++ сілтемесі сияқты).
  • Өзгермейтін нысан: құру кезінде белгіленген күймен орнатылған және кейін өзгермейтін объект.
  • Бірінші класты объект: шектеусіз пайдалануға болатын объект.
  • Контейнер нысаны: басқа объектілерді қамтуы мүмкін объект.
  • Зауыт нысаны: мақсаты басқа объектілерді құру болып табылатын объект.
  • Метаобъект: басқа объектілерді жасауға болатын объект (а-мен салыстырыңыз сынып, бұл міндетті емес объект).
  • Прототип нысаны: басқа объектілерді көшіру арқылы жасауға болатын арнайы метаобъект
  • Құдай қарсы: көп нәрсені білетін немесе көп жасайтын объект (бұл - мысалы шаблонға қарсы ).
  • Синглтон нысаны: бағдарламаның өмір сүру кезеңінде өз класының жалғыз данасы болып табылатын объект.
  • Нысанды сүзу: мәліметтер ағыны кірісі ретінде қабылдайтын және оны объектінің шығысына айналдыратын объект. Көбіне кіріс және шығыс ағындары символдар ағыны болып табылады, бірақ бұлар ерікті объектілер ағындары болуы мүмкін. Әдетте, олар қаптамада қолданылады, өйткені олар қолданыстағы іске асыруды жасаушы тарапта қажет болатын абстракциямен жасырады.

Таратылған нысандар

Объектіге бағытталған тәсіл - бұл бағдарламалау моделі ғана емес. Оны an сияқты бірдей қолдануға болады интерфейсті анықтау тілі таратылған жүйелер үшін. А нысандары таратылған есептеу модельдеу бағдарламалау объектілеріне қарағанда үлкен түйіршікті, ұзақ қызмет ететін және қызметке бағытталған.

Таратылған объектілерді ораудың стандартты әдісі интерфейсті анықтау тілі (IDL) арқылы жүзеге асырылады. IDL клиентке үлестірілген сервер объектісінің барлық бөлшектерін қорғайды. Нысан қай компьютерде орналасқан, не сияқты егжей-тегжейлі мәліметтер бағдарламалау тілі ол не пайдаланады операциялық жүйе, және басқа да платформалық мәселелер. IDL сонымен қатар барлық объектілерге біркелкі тәртіпте операциялар мен табандылық сияқты қызметтерді ұсынатын таратылған ортаның бөлігі болып табылады. Таратылған объектілерге ең танымал екі стандарт - Объектілерді басқару тобы Келіңіздер CORBA стандартты және Microsoft DCOM.[8]

Таратылған объектілерден басқа, объектінің негізгі тұжырымдамасына бірқатар басқа кеңейтімдер ұсынылған, олар үлестірілген есептеуді жүзеге асыруға мүмкіндік береді:

  • Хаттама нысандары а компоненттері болып табылады хаттама стегі желілік байланысты объектіге бағытталған интерфейс шеңберінде қосатын.
  • Қайталанатын нысандар бөлінген объектілер тобы (деп аталады) көшірмелер) өздерінің ішкі күйлері арасында жоғары консистенцияға қол жеткізу үшін таратылған көп партиялы протоколды іске қосатын және сұраныстарға үйлесімді түрде жауап беретін. Мысалдар ақауларға төзімді CORBA нысандар.
  • Тікелей таратылған нысандар (немесе жай тірі заттар )[9] жалпылау қайталанатын объект кез-келген таратылған протоколды іштей қолдана алатын репликалар топтарына арналған тұжырымдама, мүмкін олардың жергілікті штаттары арасындағы әлсіз дәйектілікке әкелуі мүмкін.

Осы кеңейтімдердің кейбіреулері, мысалы үлестірілген нысандар және протокол нысандары, белгілі бір контекстте қолданылатын «қарапайым» объектілердің арнайы типтеріне арналған доменге тән терминдер (мысалы.) қашықтағы әдісті шақыру немесе хаттама құрамы ). Басқалары, мысалы қайталанатын нысандар және тірі үлестірілген нысандар, неғұрлым стандартты емес, өйткені олар объектінің бір уақытта бір жерде орналасуы туралы әдеттегі жағдайдан бас тартады және тұжырымдаманы бірнеше жерлерде таралуы мүмкін объектілер топтарына (репликалар) қолданады, әлсіз дәйекті күйге ие болуы мүмкін және оның мүшелігі динамикалық түрде өзгеруі мүмкін.

Семантикалық желі

The Семантикалық веб мәні бойынша бөлінген нысандар шеңбері. Семантикалық желідегі екі негізгі технологиялар: Веб-онтология тілі (OWL) және Ресурстың сипаттамасы (RDF). RDF Интернет арқылы қол жетімді негізгі объектілерді - атауларды, қасиеттерді, атрибуттарды, қатынастарды анықтау мүмкіндігін ұсынады. OWL көптеген мұрагерлік сияқты модельдеудің қосымша мүмкіндіктерін беретін жиынтық теорияға негізделген бай объект моделін қосады.

OWL нысандары стандартты ірі түйіршіктікке ұқсамайды үлестірілген нысандар интерфейсті анықтау тілі арқылы қол жетімді. Мұндай тәсіл Интернетке сәйкес келмейді, өйткені Интернет үнемі дамып отырады және интерфейстердің бір жиынтығында стандарттауға қол жеткізу қиын. OWL нысандары Java және сияқты бағдарламалау тілдеріндегі қолданбалы домендік модельдерді анықтау үшін қолданылатын объектілер түріне ұқсас болады C ++.

Дегенмен, OWL объектілері мен дәстүрлі объектіге бағытталған бағдарламалау объектілері арасында маңызды айырмашылықтар бар. Дәстүрлі нысандар статикалық иерархияларға жинақталады, әдетте бір мұрагерлікпен, бірақ OWL нысандары динамикалық. OWL объектісі өзінің құрылымын жұмыс уақытында өзгерте алады және жаңа немесе әр түрлі кластардың данасына айналуы мүмкін.

Тағы бір маңызды айырмашылық - модельдің жүйеде жоқ ақпаратқа деген көзқарасы. Бағдарламалау объектілері және мәліметтер қорының көптеген жүйелері «жабық әлемдік болжам Егер жүйеге факт белгілі болмаса, бұл факт жалған деп есептеледі. Веб-сайттардың мағыналық нысандары ашық әлем жорамалы, егер ол жалған екендігі туралы өзекті ақпарат болған жағдайда ғана мәлімдеме жалған болып саналады, әйтпесе ол шын да, жалған да емес белгісіз болып саналады.

OWL нысандары шын мәнінде жасанды интеллект объектілері сияқты кадр тілдері сияқты KL-ONE және Loom.

Төмендегі кестеде Java немесе C ++ сияқты объектіге бағытталған бағдарламалау тілдеріндегі дәстүрлі нысандар мен Semantic Web объектілері арасындағы айырмашылықтар:[10][11]

OOP нысандарыСемантикалық веб-объектілер
Сыныптар даналар типтері ретінде қарастырылады.Сыныптар жеке адамдар жиынтығы ретінде қарастырылады.
Даналар жұмыс уақытында олардың түрін өзгерте алмайды.Сынып құрамы жұмыс уақытында өзгеруі мүмкін.
Сыныптар тізімі компиляция кезінде толық белгілі, содан кейін өзгермейді.Сабақтарды жұмыс кезінде жасауға және өзгертуге болады.
Компиляторлар құрастыру кезінде қолданылады. Компиляция уақытындағы қателіктер проблемаларды көрсетеді.Орындаушылар жұмыс уақытында немесе құрастыру кезінде жіктеу және дәйектілікті тексеру үшін пайдаланылуы мүмкін.
Сыныптар мағынасы мен мінез-құлқының көп бөлігін императивті функциялар мен әдістер арқылы кодтайды.Сыныптар олардың мағынасын OWL тұжырымдары тұрғысынан айқын етеді. Ешқандай міндетті кодты қосу мүмкін емес.
Даналар анонимді болып табылады, сондықтан оларды орындау бағдарламасынан тыс оңай шешуге болмайды.Барлық аталған RDF және OWL ресурстарында сілтеме жасауға болатын бірегей URI бар.
Жабық әлем: Егер тұжырымның растығын дәлелдейтін ақпарат жеткіліксіз болса, онда ол жалған болып саналады.Ашық әлем: егер тұжырымның растығын дәлелдейтін ақпарат жеткіліксіз болса, онда ол шын немесе жалған болуы мүмкін.[12]

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Оппел, Энди (2005). SQL анықталған. McGraw Hill. б. 7. ISBN  0-07-226224-9.
  2. ^ Габриэль, Ричард; Линда Г. ДеМичи. «Жалпы Lisp объектілік жүйесі: шолу» (PDF). Lucid Inc. техникалық есебі.
  3. ^ Вегнер, Питер (1987 ж. Желтоқсан). Мейровиц, Норман (ред.) «Объектілік-тілдік дизайнның өлшемдері». OOPSLA'87 конференция материалдары. 22 (12): 168–182. дои:10.1145/38807.38823.
  4. ^ Барби, С; М.Кемпе; A. Strohmeier (1993). «Ada 9X көмегімен нысанға бағытталған бағдарламалау». Техникалық есептің жобасы. Лозаннадағы Швейцария Федералды Технологиялық Институтының бағдарламалық жасақтама зертханасы. Алынған 15 желтоқсан 2013. Ада 83 өзі, негізінен, объектілі деп саналмайды; керісінше, Вегнердің терминологиясына сәйкес [Weg 87], ол объектіге негізделген деп аталады, өйткені ол тек мұраның шектеулі түрін ұсынады және ол полиморфизмге ие емес.
  5. ^ Джейкобсен, Ивар; Магнус Кристсон; Патрик Джонссон; Гуннар Овергаард (1992). Нысанға бағытталған бағдарламалық жасақтама. Addison-Wesley ACM Press. ISBN  0-201-54435-0.
  6. ^ «Нысан дегеніміз не?». oracle.com. Oracle корпорациясы. Алынған 13 желтоқсан 2013.
  7. ^ Мартин, Роберт С. «Дизайн принциптері және дизайн үлгілері» (PDF). Архивтелген түпнұсқа (PDF) 2015 жылғы 6 қыркүйекте. Алынған 28 сәуір 2017.
  8. ^ Орфали, Роберт (1996). Маңызды клиент / серверді сақтау бойынша нұсқаулық. Нью-Йорк: Wiley Computer Publishing. бет.399–403. ISBN  0-471-15325-7.
  9. ^ Островский, К., Бирман, К., Долев, Д. және Аннн Дж. (2008). «Тікелей таратылатын объектілермен бағдарламалау», Объектіге бағытталған бағдарламалау бойынша 22-ші Еуропалық конференция материалдары, Пафос, Кипр, 07-11 шілде, 2008, Дж. Витек, Ред., Информатика пәнінен дәрістер, т. 5142, Спрингер-Верлаг, Берлин, Гейдельберг, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536.
  10. ^ Бернерс-Ли, Тим; Джеймс Хендлер; Ора Лассила (17 мамыр 2001). «Семантикалық веб-компьютерлер үшін маңызды веб-мазмұнның жаңа формасы жаңа мүмкіндіктер революциясын ашады». Ғылыми американдық. 284: 34–43. дои:10.1038 / Scientificamerican0501-34. Архивтелген түпнұсқа 2013 жылғы 24 сәуірде.
  11. ^ Кнублаух, Холгер; Оберле, Даниел; Тетлоу, Фил; Уоллес, Эван (2006-03-09). «Объектілі бағдарламалық жасақтама жасаушыларға арналған семантикалық веб-праймер». W3C. Алынған 2008-07-30.
  12. ^ Кесте келесі кестелерден алынды: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/

Сыртқы сілтемелер