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

الكائن له سمات (متغيرات) تحدد خصائصه وخصائصه وطرقه (وظائفه) التي تحدد الإجراءات (الإجراءات) وسلوكيات الكائن.

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

تخصيص الأنواع في Go

الأنواع المخصصة تجعل من السهل تجميع وتحديد التعليمات البرمجية المماثلة لإعادة الاستخدام.

الكود الخاص بالتصريح عن الأنواع المخصصة هو:

يكتب typeName نوع البيانات 

عند إنشاء نوع مخصص وتعيين متغير ، يمكنك التحقق من النوع باستخدام يعكس. نوع من() الذي يأخذ متغيرًا ويعيد نوع المتغير.

يستورد("fmt"
"يعكس")
يكتب اثنين int// ينشئ النوع "اثنان"
فار الرقم اثنان // متغير من النوع "اثنان"
FMT. Println (يعكس. TypeOf (رقم))

​​​

ال رقم المتغير هو نوع من اثنين وهو عدد صحيح. يمكنك الذهاب إلى أبعد من ذلك لإنشاء المزيد من النوع المخصص.

إنشاء الهياكل في Go

الهياكل (الهياكل) هي مخططات البرمجة الموجهة للكائنات في Go. الهياكل هي مجموعات من الحقول المعرفة من قبل المستخدم.

instagram viewer

يمكن أن تحتوي البنية على مجموعة متنوعة من أنواع البيانات ، بما في ذلك الأنواع والطرق المركبة.

يمكنك إنشاء هيكل باستخدام هذا النحو:

يكتب اسم الهيكل هيكل {
// بعض التعليمات البرمجية
}

تقليديا ، أسماء الهياكل عادة ما تكون بأحرف كبيرة وكتلة الجمل لسهولة القراءة.

يأخذ نوع الهيكل أسماء الحقول وأنواع البيانات. يمكن للبنى أن تأخذ أي نوع بيانات Go ، بما في ذلك الأنواع المخصصة.

يكتب مستخدم هيكل {
المجال 1 سلسلة
المجال 2 int
خريطة المجال خريطة[سلسلة]int
}

يمكنك إنشاء مثيل لنوع البنية عن طريق تعيين البنية كمتغير.

المثال: = مستخدم {
// بعض التعليمات البرمجية
}

يمكن ملء مثيل البنية بالحقول الموجودة في إنشاء مثيل كما هو محدد عند التهيئة أو تعيينه على قيمة خالية.

المثال: = مستخدم {
الحقل 1: "أ سلسلة ميدان"،
الحقل 2: 10,
خريطة المجال: خريطة[سلسلة]int{},
}

الوصول إلى عناصر الهيكل

يمكنك الوصول إلى حقول مثيل البنية باستخدام تدوين نقطي للحقل.

FMT. Println ("الوصول إلى حقل القيمة" ، example.field2)

ينتج عن هذا ملف المجال 2 مثيل الهيكل الذي تم إنشاء مثيل له.

تعيين طرق للهياكل

يتم تعيين الوظائف (الطرق) لأنواع الهياكل عن طريق تحديد اسم المستقبل واسم الهيكل قبل اسم الوظيفة كما هو موضح في بناء الجملة أدناه.

func(اسم الهيكل المتلقي)اسم وظيفة() {
// بعض التعليمات البرمجية
}

طريقة اسم وظيفة يمكن استخدامها فقط على نوع الهيكل المحدد.

تنفيذ الميراث في Go

الميراث قدرة الكائنات والأنواع على الوصول إلى واستخدام أساليب وسمات الكائنات الأخرى. ليس لدى Go Inheritance كميزة ، ولكن يمكنك استخدام التراكيب. في Go ، يستلزم التكوين الإشارة إلى البنية الفوقية (البنية الموروثة) في بنية فرعية من خلال توفير اسم البنية الفوقية إلى الطبقة التحتية.

باستخدام مثال البنية أعلاه:

يكتب مستخدم هيكل {
المجال 1 سلسلة
المجال 2 int
خريطة المجال خريطة[سلسلة]int
}
يكتب مستخدم 2 هيكل {
مستخدم
}

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

الابن: = المستخدم 2 {
مستخدم{
الحقل 1: "طفل" ،
الحقل 2: 0,
خريطة المجال: لا شيء,
},
}
FMT. Println (son.field2)

ال ابن المتغير أعلاه هو مثيل لـ مستخدم 2 هيكل. كما رأينا في المثال ، فإن ابن يمكن للمتغير الوصول إلى قيم من نوع المستخدم وإنشاء مثيل لها واستخدامها.

تغليف حقول النوع في Go

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

يتم تنفيذ التغليف في Go باستخدام معرفات مُصدرة وغير مُصدرة في الحزم.

المعرفات المصدرة (قراءة وكتابة)

يتم تصدير المعرفات المصدرة من حزمها المحددة والوصول إلى برامج أخرى. يؤدي رسم معرّف الحقل إلى تصدير الحقل إلى.

يكتب مستخدم هيكل {
مجال 1 سلسلة
مجال 2 int
خريطة المجال خريطة[سلسلة]int
}
يكتب مستخدم 2 هيكل {
مستخدم
}

المعرفات غير المصدرة (للقراءة فقط)

لا يتم تصدير المعرفات غير المُصدرة من الحزمة المحددة ويتم تقليلها تقليديًا.

يكتب مستخدم هيكل {
المجال 1 سلسلة
المجال 2 int
خريطة المجال خريطة[سلسلة]int
}
يكتب مستخدم 2 هيكل {
مستخدم
}

ينطبق مفهوم المعرفات المصدرة وغير المُصدرة أيضًا على طرق الكائن.

تعدد الأشكال في Go

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

Go تنفذ تعدد الأشكال باستخدام الواجهات. الواجهات هي أنواع مخصصة تستخدم لتعريف تواقيع الأسلوب.

إعلان الواجهات

التصريح عن الواجهات يشبه التصريح عن البنى. ومع ذلك ، يتم التصريح عن الواجهات باستخدام الامتداد واجهه المستخدم كلمة رئيسية.

يكتب اسم الواجهة واجهه المستخدم{
// بعض الطرق
}

تحتوي إقرارات الواجهة على طرق يتم تنفيذها بواسطة أنواع الهياكل.

تنفيذ واجهات في الهياكل

يجب التصريح عن الأنواع التي تقوم بتنفيذ الواجهة وبعد ذلك تقوم طرق النوع بتنفيذ الواجهة.

// الواجهة
يكتب اللون واجهه المستخدم{
رسم() سلسلة
}
// التصريح عن البنى
يكتب أخضر هيكل {
// بعض التعليمات البرمجية الخاصة بالبنية
}
يكتب أزرق هيكل {
// بعض التعليمات البرمجية المحددة
}

يحتوي مقتطف الشفرة أعلاه على ملف اللون أعلنت واجهة مع ملف رسم الطريقة التي سيتم تنفيذها من قبل أخضر و أزرق أنواع الهيكل.

يتم تنفيذ الواجهات عن طريق تعيين طرق لأنواع الهياكل ثم تسمية الطريقة بطريقة الواجهة المراد تنفيذها.

func(ز أخضر)رسم()سلسلة {
إرجاع "باللون الأخضر"
}
func(ب أزرق)رسم()سلسلة {
إرجاع "باللون الأزرق"
}

يتم تنفيذ طريقة الرسام بواسطة أنواع Green and Blue والتي يمكنها الآن استدعاء واستخدام امتداد رسم طريقة.

الفرشاة: = أخضر {}
FMT. Println (فرشاة. رسم())

تتم طباعة "باللون الأخضر" على وحدة التحكم للتحقق من أن الواجهة قد تم تنفيذها بنجاح.

استخراج الحقول في Go

التجريد عملية إخفاء الأساليب والسمات غير المهمة من نوع ما، مما يسهل تأمين أجزاء من البرنامج من الاستخدام غير الطبيعي وغير المقصود.

Go لم يتم تنفيذ التجريد فورًا ؛ ومع ذلك ، يمكنك العمل في طريقنا من خلال تنفيذ التجريد باستخدام الواجهات.

// يمكن للبشر الركض
يكتب بشري واجهه المستخدم {
يركض() سلسلة
}
// الصبي إنسان ذو أرجل
يكتب الولد هيكل {
أرجل سلسلة
}
// طريقة على الصبي تنفذ طريقة التشغيل للواجهة البشرية
func(ح بوي)يركض()سلسلة {
إرجاع ح. أرجل
}

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

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

يكتب شخص هيكل {
اسم سلسلة
سن int
مكانة الإنسان
}
funcالأساسية() {
person1: = & Boy {Legs: "two Legs"}
person2: = & شخص { // مثيل لشخص
الاسم: "أمينة" ،
سن: 19,
الحالة: شخص 1 ،
}
FMT. Println (شخص. Status.run ())
}

ال شخص هيكل يرث بشري واجهة ويمكن الوصول إلى جميع أساليبها باستخدام المتغير حالة وراثة الواجهة.

عند إنشاء مثيل بواسطة المرجع (باستخدام مؤشر) ، يكون مثيل ملف شخص هيكل الشخص 2 يشير إلى مثيل من الولد هيكل الشخص 1 والوصول إلى الأساليب.

بهذه الطريقة ، يمكنك تحديد طرق معينة ليتم تنفيذها حسب النوع.

OOP مقابل البرمجة الوظيفية

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

هذا لا يجعل البرمجة الوظيفية اختيارًا سيئًا ، حيث يمكن أن تكون البرمجة الوظيفية مفيدة وأفضل لبعض حالات الاستخدام.

ما هي البرمجة الشيئية؟ شرح الأساسيات في شروط لايمان

اقرأ التالي

شاركسقسقةشاركبريد الالكتروني

مواضيع ذات صلة

  • برمجة
  • البرمجة الشيئية

نبذة عن الكاتب

Ukeje Chukwuemeriwo الخير (2 مقالات منشورة)

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

المزيد من Ukeje Chukwuemeriwo Goodness

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك