Pasif veri yapısı - Passive data structure

İçinde bilgisayar Bilimi ve nesne yönelimli programlama, bir pasif veri yapısı (PDS, ayrıca bir düz eski veri yapısıveya düz eski veriler, POD) bir terimdir kayıt, nesnelerle kontrast oluşturmak için. Bu bir veri yapısı sadece pasif koleksiyonları olarak temsil edilen alan değerler (örnek değişkenler ), nesneye yönelik özellikler kullanmadan.[1]

Gerekçe

Veri işleme ve bütünlük için ayrıntılı mantığın başka bir yerde olduğunun açıkça belirtilmesi gereken bir sistemin bir parçası olduğunda, pasif veri yapıları uygundur. PDS'ler genellikle, bilgilerin diğer sistemlere veya kalıcı depolamaya veya başka sistemlerden taşındığı ve sistemin diğer bölümlerinde bulunan sorun etki alanı mantığının ilgisiz olduğu bir sistemin sınırlarında bulunur. Örneğin PDS, sistemin geçerli nesneler için gerekli anlamsal kontrollerin ve yorumların henüz uygulanmadığı bir bölümünde, harici verilerden oluşturulan nesnelerin alan değerlerini temsil etmek için uygun olacaktır.

C ++ ile

PDS türü C ++ veya Düz Eski C ++ Nesnesi, skaler tip veya PDS sınıfı olarak tanımlanır.[2] Bir PDS sınıfının, kullanıcı tanımlı kopya atama operatörü, kullanıcı tanımlı yıkıcı ve kendileri PDS olmayan statik olmayan veri üyeleri yoktur. Ayrıca, bir PDS sınıfı bir toplu olmalıdır, yani kullanıcı tanımlı kuruculara, özel veya korumalı statik olmayan verilere, sanal temel sınıflara sahip değildir.[a] ve sanal işlev yok.[4] Standart, PDS'nin C ++ 'da nasıl davranması gerektiğiyle ilgili ifadeler içerir. type_traits kütüphane C ++ Standart Kitaplık adlı bir şablon sağlar is_pod bu, belirli bir türün bir POD olup olmadığını belirlemek için kullanılabilir.[5] C ++ 20'de "düz eski veri" (POD) kavramı ve bununla is_pod kullanımdan kaldırılmıştır ve "önemsiz" ve "standart düzen" tür konseptiyle değiştirilmiştir.[6]

Bazı bağlamlarda, C ++ yalnızca PDS türlerinin kullanılmasına izin verir. Örneğin, bir Birlik C ++ 98'de bir sınıf içeremez. sanal işlevler veya önemsiz yapıcılar veya yıkıcılar. Bu kısıtlama, derleyici hangi kurucu veya yıkıcının birleşim için çağrılması gerektiğini belirleyemediği için uygulanır. PDS türleri ayrıca C, yalnızca PDS'yi destekleyen.

Java'da

İçinde Java bazı geliştiriciler, PDS konseptinin genel veri üyelerine sahip bir sınıfa karşılık geldiğini ve hiçbir yöntem içermediğini düşünmektedir (Java Kod Kuralları 10.1),[7] yani, a veri aktarım nesnesi.[8] Diğerleri de şunları içerir Düz eski Java nesneleri (POJOs), yöntemleri olan ancak yalnızca alıcıları ve ayarlayıcıları olan, mantığı olmayan bir sınıf ve JavaBeans olay işlemeyi kullanmıyorlarsa ve alıcılar ve ayarlayıcılar dışında ek yöntemler uygulamıyorlarsa PDS kavramı kapsamına girmek.[kaynak belirtilmeli ] Ancak, POJO'lar ve Java Beans, kapsülleme ve bu nedenle PDS'nin temel tanımını ihlal eder.

Diğer dillerde

İçinde PHP ilişkilendirilebilir diziler ve stdClass nesneleri PDS olarak kabul edilebilir.[kaynak belirtilmeli ]

Gibi diğer yapılandırılmış veri sunumları XML veya JSON önemli anlamsal kısıtlamalar kullanılmıyorsa PDS olarak da kullanılabilir.

Ayrıca bakınız

Notlar

  1. ^ Bir PDS sınıfı, ilk statik olmayan veri üyeleri farklı olan bir temel sınıfa sahip olabilir.[3]

Referanslar

  1. ^ Siyah, Paul E .; Vreda Pieterse (2007). "pasif veri yapısı". Algoritmalar ve Veri Yapıları Sözlüğü. Alındı 11 Eylül 2014.
  2. ^ Bilgi Teknolojileri Sanayi Konseyi (2003-10-15). Programlama dilleri - C ++ (İkinci baskı). Cenevre: ISO / IEC. 14882: 2003 (E).
  3. ^ Bjarne Stroustrup (Haziran 2013). C ++ programlama dili (Dördüncü baskı). Amerika Birleşik Devletleri: Pearson Education, Inc. ISBN  978-0-321-56384-2.
  4. ^ Walter E. Brown (29 Eylül 1999). "C ++ Dil Notu: POD Türleri". Fermi Ulusal Hızlandırıcı Laboratuvarı. Arşivlenen orijinal 3 Aralık 2016'da. Alındı 6 Aralık 2016.
  5. ^ "is_pod C ++ Başvurusu". cplusplus.com. Alındı 6 Aralık 2016.
  6. ^ "P0767R1: POD'u Kullanımdan Kaldır". www.open-std.org. Alındı 2020-01-20.
  7. ^ "Java Kod Kuralları 10.1". Oracle. Alındı 6 Aralık 2016.
  8. ^ "Java Dili Veri Yapıları". Sun / Oracle Kod Kuralları. 20 Nisan 1999. Alındı 6 Aralık 2016.