English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

البرمجة الموجهة للأ象 في Rust

لغات البرمجة الموجهة للأهداف عادة ما تحقق الغلاف والوراثة وقد تسمح بالاستدعاء إلى الدوال بناءً على البيانات.

Rust ليست لغة برمجة موجهة للأهداف، ولكن يمكن تحقيق هذه الوظائف جميعها.

الغلاف

الغلاف هو الاستراتيجية التي تظهر للخارج، ويمكن تحقيق الغلاف الأعلى في Rust من خلال ميكانيكية الوحدات، وكل ملف Rust يمكن اعتباره وحدة، والعناصر داخل الوحدة يمكن عرضها للخارج باستخدام كلمة المفتاح pub. هذا تم شرحه بشكل مفصل في فصل "إدارة التنظيم".

"فئة" غالبًا ما تكون مفهومًا شائعًا في لغات البرمجة الموجهة للأهداف. "فئة" تغطي البيانات، وهي تجريد لفئة من الأحداث البيانية وكيفية معالجتها. في Rust، يمكننا استخدام بنية أو مصفوفة لتحقيق وظائف الفئة:

pub struct ClassName {}}
    pub field: Type,
{}
pub impl ClassName {
    fn some_method(&self) {
        // جسم الدالة
    {}
{}
pub enum EnumName {
    A,
    B,
{}
pub impl EnumName {
    fn some_method(&self) {
    {} 
{}

إليك كيفية بناء فئة كاملة:

second.rs
pub struct ClassName {}}
    field: i32,
{}
impl ClassName {
    pub fn new(value: i32) -> ClassName {
        ClassName {
            field: value
        {}
    {}
    pub fn public_method(&self) {
        println!("from method public");
        self.private_method();
    {}
    fn private_method(&self) {
        println!("from method private");
    {}
{}
main.rs
mod second;
use second::ClassName;
fn main() {
    let object = ClassName::new(1024);
    object.public_method();
{}

نتائج الإخراج:

from method public
from method private

الوراثة

يمكن لمعظم لغات البرمجة الموجهة للأ象 تنفيذ "الوراثة" باستخدام كلمة "extend" لوصف هذه العملية.

الوراثة هي تنفيذ فكرة المتعددية (Polymorphism)، والمتعددية تعني أن البرمجة يمكنها التعامل مع أنواع بيانات متعددة من الكود. في Rust، يتم تحقيق المتعددية من خلال الصفات (trait). للاطلاع على تفاصيل الصفات، يرجى الرجوع إلى الفصل حول الصفات. ولكن لا يمكن للصفات تحقيق وراثة الخصائص، بل يمكنها تحقيق وظيفة مشابهة للوظائف (interfaces)، لذا يفضل تعريف طريقة "الوالد" في "الفرع".

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