الفئات العامة تسهل إعادة الاستخدام. اجعل شفرتك قابلة للتطوير وفعالة باستخدام الفئات العامة في Java.

Generics هو مفهوم برمجة يسمح لك بتحديد النوع الذي تنوي تخزينه في مجموعة. يمكن أن يكون النوع العام أي قيمة غير أولية. معلمات النوع التقليدية التي قد تكون على دراية بها هي سلسلة وعدد صحيح.

ومع ذلك ، يمكنك إنشاء نوع عام فريد. علاوة على ذلك ، يمكنك إنشاء فئة عامة واستخدامها لإنشاء مجموعات مختلفة باستخدام الأدوية الجنيسة.

إنشاء نوع عام

النوع العام هو في الأساس كائن ، تم إنشاؤها باستخدام فئة أو واجهة. لذلك ، بالنسبة لهذه المقالة ، سيكون النوع العام هو العميل. باستخدام نموذج تطبيق على مستوى المؤسسة ، يمثل العميل كيانًا في نظام قاعدة بيانات. يخدم نظام قاعدة البيانات هذا شركة أثاث لديها ثلاثة مواقع فعلية في ثلاث مدن مختلفة.

publicabstractclassCustomer{
private String name;
publicCustomer(String name){
this.name = name;
}
public String getName(){
return name;
}
}

ستلاحظ خلاصة الكلمة الرئيسية في عميل إعلان فئة أعلاه. هذا يعني أنه لا يمكنك إنشاء نوع مباشر أو كائن من ملف عميل يكتب.

نظرًا لأن كل موقع متجر فعلي سيكون له قائمة فريدة من العملاء ، سيحتاج التطبيق إلى ثلاث فئات فرعية من العملاء ستنفذها باستخدام

instagram viewer
مفهوم برمجة الميراث.

ستكون هذه الفئات الفرعية الثلاثة هي الأنواع الصلبة للعامة عميل يكتب. الأول عميل ستحتوي الفئة الفرعية على الكود التالي:

publicclassCity1CustomerextendsCustomer{
publicCity1Customer(String name){
super(name);
}
}

إنشاء فئة عامة

لاستخدام نوع عام ، يجب أن يكون لديك فئة أو طريقة عامة تقبل هذا النوع كمعامل. لإنشاء فئة عامة ، ما عليك سوى إدخال معلمة النوع في إعلان الفئة.

publicclassPromotion<T> {}

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

publicclassPromotion<TextendsCustomer> {}

يضمن الرمز المحدث أعلاه أن ملف ترقية الطبقة تأخذ فقط عميل أنواع ، وهذا يعني جميع الفئات الفرعية من عميل فصل.

نظرًا لوجود ثلاثة متاجر ، تريد الشركة إنشاء ترويج مستقل واحد لكل متجر. البيانات المطلوبة لهذه الترقيات متشابهة. سيكون لكل عرض ترويجي اسم ومجموعة من العملاء الذين فازوا في هذا العرض الترويجي.

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

لذلك ، أ ترقية فئة عامة هي واحدة من أكثر الحلول فعالية لهذه المشكلة.

import java.util.ArrayList;

publicclassPromotion<TextendsCustomer> {

private String promoName;
private ArrayList winners = new ArrayList<>();

publicPromotion(String promoName){
this.promoName = promoName;
}

public String getPromoName(){
return promoName;
}

publicvoidaddCustomer(T customer){
if (winners.contains(customer)) {
System.out.println( customer.getName() + " is already a winner of this prize.");
} else {
winners.add(customer);
System.out.println( customer.getName() + " is a winner in the " + this.promoName);
}
}

publicintnumWinners(){
returnthis.winners.size();
}
}

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

تكوين مجموعات باستخدام فئة عامة

قبل أن تتمكن من البدء في إنشاء مجموعات ، ستحتاج إلى إنشاء عملاء.

publicclassMain{
publicstaticvoidmain(String[] args){
City1Customer john = new City1Customer("John Brown");
City1Customer kelly = new City1Customer("Kelly James");
City2Customer jane = new City2Customer("Jane Doe");
City3Customer jess = new City3Customer("Jess Smith");
}
}

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

Promotion city1promo = new Promotion("City1 Promo");
Promotion city2promo = new Promotion("City2 Promo");
Promotion city3promo = new Promotion("City3 Promo");

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

city1promo.addCustomer(john);
city1promo.addCustomer(kelly);

لذلك ، فإن إضافة الكود أعلاه إلى ملف رئيسي ستنتج class النتيجة التالية في وحدة التحكم:

ومع ذلك ، إذا حاولت إضافة عميل ثالث إلى قائمة الفائزين بالترويج في المدينة الأولى ، فإن IDE الخاص بك سينتج خطأ في التجميع.

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

city2promo.addCustomer(jane);

سيؤدي استبدال سطر التعليمات البرمجية الخاطئ بالسطر أعلاه إلى طباعة الإخراج التالي إلى وحدة التحكم:

فوائد استخدام الأنواع العامة

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

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