Пассивті мәліметтер құрылымы - Passive data structure

Жылы Информатика және объектіге бағытталған бағдарламалау, а пассивті мәліметтер құрылымы (PDS, сондай-ақ а қарапайым ескі мәліметтер құрылымы, немесе қарапайым ескі деректер, POD) а термині жазба, заттарға қарама-қарсы қою. Бұл мәліметтер құрылымы тек пассивті жинақ ретінде ұсынылған өріс құндылықтар (даналық айнымалылар ), объектіге бағытталған мүмкіндіктерді қолданбай.[1]

Негіздеме

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

C ++ тілінде

PDS типі C ++, немесе Қарапайым C ++ нысаны, скаляр типі немесе PDS сыныбы ретінде анықталады.[2] PDS сыныбында пайдаланушы анықтаған көшірмені тағайындау операторы, қолданушы анықтайтын деструктор және өздері PDS емес статикалық емес мәліметтер мүшелері жоқ. Сонымен қатар, PDS сыныбы жиынтық болуы керек, яғни оның қолданушы жариялаған конструкторлары, жеке немесе қорғалмаған статикалық деректері, виртуалды базалық сыныптары жоқ[a] және виртуалды функциялар жоқ.[4] Стандарт PDS-ді C ++ тілінде қалай ұстау керектігі туралы мәлімдемелерді қамтиды. The түр_құжаттар кітапхана C ++ стандартты кітапханасы атты шаблон ұсынады is_pod берілген түрдің POD екенін анықтау үшін қолдануға болады.[5] C ++ 20-да «қарапайым ескі деректер» (POD) және сол сияқты ұғымдар is_pod ескірді және «тривиальды» және «стандартты орналасу» типтерімен ауыстырылды.[6]

Кейбір контексттерде C ++ тек PDS типтерін қолдануға мүмкіндік береді. Мысалы, а одақ C ++ 98-де класты қамтуы мүмкін емес виртуалды функциялар немесе жеке емес конструкторлар немесе деструкторлар. Бұл шектеу компилятор қандай конструкторды немесе деструкторды біріктіруге шақыру керектігін анықтай алмайтындықтан қойылады. PDS типтерін интерфейс үшін де қолдануға болады C, тек PDS-ді қолдайды.

Java-да

Жылы Java, кейбір әзірлеушілер PDS тұжырымдамасы жалпыға ортақ деректері бар классқа сәйкес келеді және әдістері жоқ деп санайды (Java Code Conventions 10.1),[7] яғни, а деректерді беру нысаны.[8] Басқалары да кіреді Қарапайым Java нысандары (POJOs), әдістері бар класс, бірақ тек гетерлер мен сеттерлер, логикасыз және JavaBeans PDS тұжырымдамасына ену, егер олар оқиғаларды өңдеуді қолданбаса және алынған және орнатушылардан тыс қосымша әдістерді қолданбаса.[дәйексөз қажет ] Алайда, POJO және Java бұршақтары бар инкапсуляция және сондықтан PDS-нің негізгі анықтамасын бұзады.

Басқа тілдерде

Жылы PHP, ассоциативті массивтер мен stdClass нысандарын PDS деп санауға болады.[дәйексөз қажет ]

Сияқты басқа құрылымдық деректерді ұсыну XML немесе JSON мағыналық шектеулер қолданылмаса, PDS ретінде де қолданыла алады.

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

Ескертулер

  1. ^ PDS сыныбында алғашқы статикалық емес мүшелері ерекшеленетін базалық класс болуы мүмкін.[3]

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

  1. ^ Блэк, Пол Е .; Vreda Pieterse (2007). «пассивті деректер құрылымы». Алгоритмдер және мәліметтер құрылымы сөздігі. Алынған 11 қыркүйек 2014.
  2. ^ Ақпараттық технологиялар саласының кеңесі (2003-10-15). Бағдарламалау тілдері - C ++ (Екінші басылым). Женева: ISO / IEC. 14882: 2003 (E).
  3. ^ Bjarne Stroustrup (маусым 2013). C ++ бағдарламалау тілі (Төртінші басылым). Америка Құрама Штаттары: Pearson Education, Inc. ISBN  978-0-321-56384-2.
  4. ^ Уолтер Э.Браун (29 қыркүйек 1999). «C ++ тілінің ескертпесі: POD түрлері». Ферми ұлттық үдеткіш зертханасы. Архивтелген түпнұсқа 2016 жылғы 3 желтоқсанда. Алынған 6 желтоқсан 2016.
  5. ^ «is_pod C ++ сілтемесі». cplusplus.com. Алынған 6 желтоқсан 2016.
  6. ^ «P0767R1: ескіру POD». www.open-std.org. Алынған 2020-01-20.
  7. ^ «Java Code Conventions 10.1». Oracle. Алынған 6 желтоқсан 2016.
  8. ^ «Java тілінің деректер құрылымы». Sun / Oracle код конвенциялары. 1999 жылғы 20 сәуір. Алынған 6 желтоқсан 2016.