برمجة موجهة بالسمات

في الحوسبة؛ البرمجة موجهة بالسمات[1] (بالإنجليزية: Aspect-Oriented Programming)‏ هي نمط برمجة يهدف إلى زيادة التركيبية، إذ تسمح بالفصل بين الاهتمامات المتقاطعة. وذلك بإضافة إجراء إضافي (إرشاد) إلى كود موجود دون تعديل الكود نفسه، فبدلًا من التحديد المنفصل الذي يُعدَل فيه الكود من خلال مواصفات «نقطة القطع (pointcut)»، مثل «تسجيل جميع الاستدعاءات الوظيفية للوظائف التي يبدأ اسمها بـ «set». تتيح هذه البرمجة إضافة إجراءات غير أساسية لمنطق الأعمال (مثل التسجيل) إلى البرامج دون تشويش الكود الأساسي للوظيفة. تعد البرمجة الموجهة بالسمات أساسًا لتطوير البرمجيات ذات السمات.

تتضمن البرمجة الموجهة بالسمات التوجه طُرق وأدوات برمجية تدعم نمذجة الاهتمامات على مستوى الكود المصدري، بينما يشير «تطوير البرمجيات ذات السمات» إلى تخصص هندسي كامل.

تستلزم البرمجة الموجهة بالسمات تقسيم منطق البرنامج إلى أجزاء مميزة (تسمى الاهتمامات، مجالات أداء وظيفي متماسكة). تدعم جميع أنماط البرمجة تقريبًا مستوى ما من تجميع وتغليف الاهتمامات في كيانات مستقلة منفصلة بتقديم التجريدات (مثل الوظائف والإجراءات والوحدات النمطية والأصناف والطرق) التي يمكن استخدامها لتنفيذ هذه الاهتمامات وتجريدها وتجميعها. تتقاطع بعض الاهتمامات مع تجريدات متعددة في البرنامج، تستعصي على أشكال التنفيذ هذه. وتسمى هذه الاهتمامات الاهتمامات المتقاطعة أو الاهتمامات الأفقية.

يمثل التسجيل اهتمامًا متقاطعًا لأن إستراتيجية التسجيل تؤثر بالضرورة على كل جزء مسجل من النظام. وبالتالي يتقاطع التسجيل جميع الأصناف والطرق المسجلة.

تحتوي جميع تطبيقات البرمجة الموجهة بالسمات بعض التعبيرات المتقاطعة التي تُغلّف كل اهتمام في مكان واحد. يكمن الاختلاف بين التطبيقات في القوة والآمان وسهولة الاستخدام للبنيات المقدمة. مثلًا، الاعتراضات التي تحدد طرق للتعبير عن شكل محدود للتقاطع، دون الدعم الجيد لسلامة الأنواع أو تصحيح الأخطاء. يملك امتداد AspectJ عددًا من هذه التعبيرات التي يغلفها في صنف خاص، يدعى جانب. مثلًا، يمكن للجانب أن يغير إجراء الكود الأساسي (الجزء غير الجانبي من البرنامج) من خلال تطبيق إرشاد (إجراء إضافي) في نقاط الربط المختلفة (نقاط في البرنامج) المحددة في تقدير الكمي أو استعلام يسمى نقطة القطع (يحدد ما إذا كانت نقطة ربط معينة مطابقة). يمكن للجانب أيضًا إجراء تغييرات هيكلية ثنائية متوافقة للأصناف الأخرى، مثل إضافة أصناف أعضاء أو أصناف آباء.

تاريخيًا

للبرمجة الموجهة بالسمات العديد من السوابق المباشرة إي1 وإي2:[2] الانعكاس، وبروتوكولات الكائن ميتا، والبرمجة غرضية التوجه، ومرشحات التركيب والبرمجة التكيفية.[3]

طور غريغور كيتشالا وزملاؤه في زيروكس بارك المفهوم الصريح للبرمجة الموجهة بالسمات، وتُبع ذلك بإضافة امتداد البرمجة الموجهة بالسمات AspectJ إلى الجافا. اتبع فريق أبحاث آي بي إم منهجًا للأدوات حول طرق تصميم اللغات، واقترحوا عام 2001 Hyper/J وبيئة معالجة الاهتمامات لكنها لم تشهد استخدامات واسعة.

تستخدم الأمثلة في هذه المقالة AspectJ.

يعتبر خادم أعمال مايكروسوفت أول تطبيق رئيسي للبرمجة الموجهة بالسمات يليه وحدة جافا للأعمال.[4][5]

الدافع والمفاهيم الأساسية

عادةً ما يكون الجانب (المظهر) موزّع أو متشابك ككود، مما يصعّب فهمه والحفاظ عليه. يكون موزعًا بحكم الوظيفة (مثل التسجيل) الموزعة على عدد من الوظائف غير المترابطة التي قد تستخدمها، وربما في الأنظمة غير المرتبطة كليًا، أو اللغات مختلفة المصدر... إلخ. هذا يعني أن تغيير التسجيل قد يتطلب تعديل جميع الوحدات المتأثرة. تصبح الجوانب متشابكة، ليس فقط مع الوظيفة الرئيسية للأنظمة المعبر عنها فيها، ولكن أيضًا مع بعضها البعض. وهذا يعني أن تغيير اهتمام واحد يستلزم فهم جميع الاهتمامات المتشابكة أو وجود بعض الوسائل التي تمكننا من استنتاج تأثير التغييرات.

مثلًا، باعتبار لدينا تطبيق مصرفي يتضمن طريقة بسيطة للغاية من الناحية المفاهيمية لتحويل مبلغ من حساب إلى آخر:[6]

void transfer(Account fromAcc, Account toAcc, int amount) throws Exception {
  if (fromAcc.getBalance() < amount)
      throw new InsufficientFundsException();

  fromAcc.withdraw(amount);
  toAcc.deposit(amount);
}

تتجاهل طريقة التحويل هذه بعض الاعتبارات التي قد يتطلبها التطبيق المستخدم: فهي تفتقر إلى فحوصات الأمان للتحقق من أن المستخدم الحالي لديه الإذن لإجراء هذه العملية؛ ويجب أن تُغلف معاملات قاعدة البيانات العملية لمنع فقدان البيانات العرضي؛ وبالنسبة للتشخيصات، يجب تسجيل العملية في سجل النظام، وما إلى ذلك. يمكن أن يبدو النص الذي يتضمن جميع هذه الاهتمامات الجديدة كما يلي:

void transfer(Account fromAcc, Account toAcc, int amount, User user,
    Logger logger, Database database) throws Exception {
  logger.info("Transferring money...");
  
  if (!isUserAuthorised(user, fromAcc)) {
    logger.info("User has no permission.");
    throw new UnauthorisedUserException();
  }
  
  if (fromAcc.getBalance() < amount) {
    logger.info("Insufficient funds.");
    throw new InsufficientFundsException();
  }

  fromAcc.withdraw(amount);
  toAcc.deposit(amount);

  database.commitChanges();  // Atomic operation.

  logger.info("Transaction successful.");
}

في هذا المثال، أصبحت الاهتمامات الأخرى متشابكة مع الوظيفة الأساسية (تسمى أحيانًا «اهتمامات الأعمال المنطقية»). فتمثل كل من المعاملات، والأمان، والتسجيل اهتمامات متقاطعة.

فكّر الآن فيما سيحدث إذا احتجنا فجأةً إلى تغيير اعتبارات الأمان للتطبيق مثلًا. في النسخة الحالية للبرنامج، تبدو العمليات المتعلقة بالأمان موزعة في عدة طرق، ويتطلب تغييرها جهدًا كبيرًا.

تحاول البرمجة الموجهة بالسمات حل هذه المشكلة بالسماح للمبرمج بالتعبير عن الاهتمامات المتقاطعة في وحدات مستقلة التي تسمى الجوانب. يمكن أن تحتوي الجوانب على إرشاد (كود متصل بنقاط محددة في البرنامج) وتصريحات بين الأنواع (أعضاء هيكلية تضاف إلى أصناف أخرى). مثلًا، يمكن أن تتضمن وحدة الأمان إرشادًا يقوم بفحص أمني قبل الوصول إلى حساب مصرفي. تحدد نقطة القطع الأوقات (نقاط الانضمام) التي يمكن للشخص فيها الوصول إلى حساب مصرفي، ويحدد الكود الموجود في جسم الإرشاد كيفية تنفيذ فحص الأمان. بهذه الطريقة، يمكن الاحتفاظ بالتحقق والأماكن في مكان واحد. علاوةً على ذلك، يمكن أن تشير نقطة القطع الجيدة إلى تغييرات لاحقة في البرنامج، وبالتالي إذا أنشأ مطور آخر طريقة جديدة للوصول إلى الحساب المصرفي، فسيطبق الإرشاد على الطريقة الجديدة عند تنفيذها.

لذا يمكن تنفيذ التسجيل للمثال السابق في جانب كالتالي:

aspect Logger {
  void Bank.transfer(Account fromAcc, Account toAcc, int amount, User user, Logger logger)  {
    logger.info("Transferring money...");
  }

  void Bank.getMoneyBack(User user, int transactionId, Logger logger)  {
    logger.info("User requested money back.");
  }

  // Other crosscutting code.
}

يمكن التفكير في البرمجة الموجهة بالسمات بوصفها أداة لتصحيح الأخطاء أو كأداة على مستوى المستخدم. يجب حفظ الإرشاد للحالات التي لا يمكنك فيها تغيير الوظيفة (مستوى المستخدم)[7] أو لا ترغب في تغيير الوظيفة في كود الإنتاج (تصحيح الأخطاء).

مراجع

  1. ^ نزار الحافظ (2007)، مسرد مصطلحات المعلوماتية (بالعربية والإنجليزية)، الجمعية العلمية السورية للمعلوماتية، ص. 4، QID:Q108442159
  2. ^ Kiczales، G.؛ Lamping، J.؛ Mendhekar، A.؛ Maeda، C.؛ Lopes، C.؛ Loingtier، J. M.؛ Irwin، J. (1997). "Aspect-oriented programming" (PDF). European Conference on Object-Oriented Programming 97. Proceedings of the 11th European Conference on Object-Oriented Programming. Lecture Notes in Computer Science. ج. 1241. ص. 220–242. CiteSeerX:10.1.1.115.8660. DOI:10.1007/BFb0053381. ISBN:3-540-63089-9. مؤرشف (PDF) من الأصل في 2016-01-12.
  3. ^ "Adaptive Object Oriented Programming: The Demeter Approach with Propagation Patterns" Karl Liebherr 1996 (ردمك 0-534-94602-X) presents a well-worked version of essentially the same thing (Lieberherr subsequently recognized this and reframed his approach).
  4. ^ Don Box؛ Chris Sells (4 نوفمبر 2002). Essential.NET: The common language runtime. Addison-Wesley Professional. ص. 206. ISBN:978-0-201-73411-9. مؤرشف من الأصل في 2019-03-31. اطلع عليه بتاريخ 2011-10-04.
  5. ^ Roman، Ed؛ Sriganesh، Rima Patel؛ Brose، Gerald (1 يناير 2005). Mastering Enterprise JavaBeans. John Wiley and Sons. ص. 285. ISBN:978-0-7645-8492-3. مؤرشف من الأصل في 2019-03-31. اطلع عليه بتاريخ 2011-10-04.
  6. ^ Note: The examples in this article appear in a syntax that resembles that of the Java language.
  7. ^ "gnu.org". www.gnu.org. مؤرشف من الأصل في 2017-12-24. اطلع عليه بتاريخ 2018-05-05.

Read other articles:

Pemilihan umum Wali Kota Surakarta 2020201520249 Desember 2020[1]   Calon Gibran Rakabuming Raka Bagyo Wahyono Partai PDI-P Independen Pendamping Teguh Prakosa Suparjo Fransiskus Xaverius Suara rakyat 225.451 35.055 Persentase 86,5% 13,5% Peta lokasi Kota Surakarta di Jawa Tengah Wali Kota dan Wakil Wali Kota petahanaF.X. Hadi Rudyatmo dan Achmad Purnomo PDI-P Wali Kota dan Wakil Wali Kota terpilih Gibran Rakabuming Raka dan Teguh Prakosa PDI-P L • BBantuan penggunaan...

 

Bacteria deriving energy from dissolved iron Iron-oxidizing bacteria in surface water Iron-oxidizing bacteria (or iron bacteria) are chemotrophic bacteria that derive energy by oxidizing dissolved iron. They are known to grow and proliferate in waters containing iron concentrations as low as 0.1 mg/L. However, at least 0.3 ppm of dissolved oxygen is needed to carry out the oxidation.[1] When de-oxygenated water reaches a source of oxygen, iron bacteria convert dissolved iron into an i...

 

Josep Maria Bayarri Información personalNacimiento 1886 Valencia (España) Fallecimiento 1970 Valencia (España) Sepultura Cementerio General de Valencia Nacionalidad Española y francesaFamiliaHijos Nassio Información profesionalOcupación Escultor y escritor Género Poesía [editar datos en Wikidata] Josep Maria Bayarri Hurtado, escrito también a veces Xusep Maria Vaiarri, (Valencia, 1886-1970) fue un escultor, escritor y poeta español.[1]​ Biografía Nacido en Valencia ...

Дзвіночок — термін, який має кілька значень. Ця сторінка значень містить посилання на статті про кожне з них.Якщо ви потрапили сюди за внутрішнім посиланням, будь ласка, поверніться та виправте його так, щоб воно вказувало безпосередньо на потрібну статтю.@ пошук посилань

 

Graf-Zeppelin-Klasse Die Graf Zeppelin nach ihrem Stapellauf Die Graf Zeppelin nach ihrem Stapellauf Schiffsdaten Land Deutsches Reich Deutsches Reich Schiffsart Flugzeugträger Bauzeitraum 1937 bis 1943 Stapellauf des Typschiffes 8. Dezember 1938 Gebaute Einheiten 2 (nicht fertiggestellt) Schiffsmaße und Besatzung Länge 262,5 m (Lüa)250,0 m (KWL) Breite 36,2 m Tiefgang max. 8,5 m Verdrängung Standard: 23.200 tsKonstruktion: 28.090 tMaximal: 33.550 tn.l.   Besatzung 1.760 Mann z...

 

Tschechische NationalbankČeská národní banka Hauptsitz Prag, Tschechien Gründung Januar 1993 Gouverneur Aleš Michl Land Tschechien Währung Tschechische Krone ISO 4217 CZK Website www.cnb.cz Vorgänger Státní banka československá Liste der Zentralbanken Hauptgebäude der Nationalbank, PragGebäude der Nationalbank, Brünn Die Česká národní banka (abgekürzt ČNB, dt. Tschechische Nationalbank) ist die Zentralbank der Tschechischen Republik mit Sitz in Prag. Die Zentralbank wurde...

British businessman and shipbuilder (1875–1912) For other people named Thomas Andrews, see Thomas Andrews (disambiguation). Thomas AndrewsAndrews in 1911BornThomas Andrews Jr.(1873-02-07)7 February 1873Comber, County Down, IrelandDied15 April 1912(1912-04-15) (aged 39)Atlantic OceanNationalityBritishOccupationShipbuilderKnown forChief Designer of RMS TitanicSpouse Helen Reilly Barbour ​ ​(m. 1908)​Children1RelativesViscount Pirrie (uncle) J....

 

  لمعانٍ أخرى، طالع شارع الجمهورية (توضيح). شارع الجمهورية (بغداد) البلد العراق  تعديل مصدري - تعديل   شارع الجمهورية شارع الجمهورية وتظهر في الوسط قبة كنيسة أم الأحزان للكلدان في الشورجة ويظهر جزء من مبنى جامع الخلفاء على يمين الصورة وبينهما شارع الجمهورية 2017 منار...

 

Bid of China for the 2019 FIBA Basketball World Cup Main article: 2019 FIBA Basketball World Cup Chinese bidfor the 2019 FIBA World CupBid DetailsBidding nation ChinaBidding federationChinese Basketball AssociationProposed venues8 (in 8 cities)Bidding decision7 August 2015in Tokyo, JapanBid resultWon The Chinese Basketball Association (not to be confused with the basketball league of the same English-language name) was the successful bid for the right to host the 2019 FIBA Basketbal...

Tour de Francia 1973 DetallesCarrera60. Tour de FranciaCompeticiónSuper Prestige Pernod 1973Etapas27Fechas30 de junio – 22 de julio de 1973Distancia total4140 kmPaíses Francia Bélgica Países Bajos EspañaLugar de inicioScheveningenLugar de llegadaParísCiclistas participantes132Ciclistas finalizados87Clasificación finalGanador Luis Ocaña (BiC)Segundo Bernard Thévenet (Peugeot-BP-Michelin)Tercero José Manuel Fuente (Kas-Kaskol)Puntos Herman Van Springel (Rokado-De Gribaldy)Montaña P...

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Januari 2023. Gunung UyelewunGunung UyelewunLokasi Gunung Uyelewun di Pulau Lembata, NTTTampilkan peta Pulau TimorGunung UyelewunGunung Uyelewun (Nusa Tenggara Timur)Tampilkan peta Nusa Tenggara TimurTitik tertinggiKetinggian1.523 Mdpl (4.921 Kaki)Koordinat8°12′4...

 

Halaman ini berisi artikel tentang konferensi tahun 1917. Untuk konferensi internasional tahun 2006, lihat Koneferensi Vilnius 2006. Presidium dan sekretariat Konferensi Vilnius. Balai dihias dengan bendera dua warna (merah dan hijau) kecil (tiga terlihat di gambar). Ini adalah salah satu sugesti untuk Bendera Lituania. Para delegasi menganggapnya terlalu gelap dan suram dan kemudian menambahkan strip kuning.[1] Konferensi Vilnius atau Konferensi Nasional Vilnius (bahasa Lituania:...

Al-Khanqah al-Salahiyya Mosqueمسجد الخانقاه الصلاحيةOttoman periodReligionAffiliationIslamDistrictJerusalemLocationLocationChristian Quarter, Old City, JerusalemArchitectureTypeMosqueStyleAyyubid, OttomanMinaret(s)1 The Al-Khanqah al-Salahiyya Mosque (Arabic: مسجد الخانقاه الصلاحية al-Khānqāh aṣ-Ṣalāḥiyya) is an Islamic place of worship located in the Christian Quarter of the Old City of Jerusalem, north of the Church of the Holy Sepulchre.[...

 

Los Angeles ClippersDatos generalesDeporte BaloncestoFundación 1970Historia Buffalo Braves 1970-1978 San Diego Clippers 1978-1984 Los Angeles Clippers 1984-PresenteColores Rojo, Azul, Negro, Gris y Blanco                         Propietario(s) Steve BallmerPresidente Lawrence FrankMánager general Trent ReddenEntrenador Tyronn LueEquipo afiliado Agua Caliente ClippersPatrocinador HoneyInstalac...

 

Lake in Dunhuang, Gansu Province, China This article is about the Crescent Lake near Dunhuang, China. For other lakes of the same name, see Crescent Lake. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Crescent Lake Dunhuang – news · newspapers · books · scholar · JSTOR (May 2013) (Learn how and when t...

此條目需要精通或熟悉相关主题的编者参与及协助编辑。 (2016年9月24日)請邀請適合的人士改善本条目。更多的細節與詳情請參见討論頁。 李顯榮Lee Sen-zong 中華民國第6屆立法委員任期2005年2月1日—2008年1月31日选区臺北縣第二選舉區 个人资料性别男出生 (1947-07-23) 1947年7月23日(76歲) 中華民國臺灣省台南縣国籍 中華民國政党 民主進步黨(2007年11月13日-) ...

 

Bulgarian Orthodox clergyman (1942–2020) Amvrosius ParashkevovMetropolitan Ambrose in 2010Native nameАмвросий ДоростолскиChurchBulgarian Orthodox ChurchAppointed30 May 2019OrdersOrdination13 August 1983 (Tonsured)19 October 1983 (Hierodeaconon) 15 August 1984 (Hieromonk)3 April 1994 (Bishop)RankMetropolitanPersonal detailsBornAlexander Alexandrov Parashkevov(1942-06-09)June 9, 1942Svishtov, BulgariaDiedAugust 18, 2020(2020-08-18) (aged 78)Silistra, BulgariaNationalit...

 

For the Canadian chain, see United Cigar Stores Limited. This article's lead section may be too short to adequately summarize the key points. Please consider expanding the lead to provide an accessible overview of all important aspects of the article. (November 2018) St. Louis, Missouri, 1925 (on corner) On April 19, 1917, the cowcatcher of the Flatiron Building United Cigar Store was transformed into a mock fort for the Wake up America Day parade. United Cigar Stores was a chain of cigar sto...

This article is an orphan, as no other articles link to it. Please introduce links to this page from related articles; try the Find link tool for suggestions. (August 2023) Place in Federally Administered Tribal Areas, PakistanAdam KiliAdam KiliCoordinates: 33°17′N 70°32′E / 33.29°N 70.53°E / 33.29; 70.53Country PakistanTerritoryFederally Administered Tribal AreasElevation646 m (2,119 ft)Time zoneUTC+5 (PST) • Summer (DST)UTC+6 (PDT) ...

 

For other uses, see Star of Africa (disambiguation). UK military campaign medal for WW2 AwardThe Africa StarAwarded to a South African, 314134 J.A. JoosteTypeMilitary campaign medalAwarded forEntry into operational areaCountry United KingdomPresented bythe Monarch of the United Kingdom and the Dominions of the British Commonwealth, and Emperor of IndiaEligibilityAll RanksCampaign(s)North Africa 1940–1943ClaspsNORTH AFRICA 1942–438th ARMY1st ARMYEstablished8 July 1943First awarded1943Ribbo...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!