اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

بالطبع يمكن ذلك، والطريقة تختلف من لغة لأخرى، وأحد الأساليب الشائعة هي استخدام التضمين (composition) أو الوراثة (inheritance) في جافا مثلا:

class MainObject {
    // خصائص الكائن الرئيسي
}

class SubObject {
    // خصائص الكائن الفرعي
}

class ContainerObject {
    MainObject mainObject;
    SubObject subObject;

    public ContainerObject(MainObject mainObject, SubObject subObject) {
        this.mainObject = mainObject;
        this.subObject = subObject;
    }
}

فهنا يحتوي ContainerObject على كائن من النوع MainObject وآخر من النوع SubObject، وتستطيع توسيع ذلك المفهوم وتعقيد العلاقات كما تريد. 

وفي جافاسكريبت كالتالي:

// تعريف كائن أول
let object1 = {
    property1: "Value 1",
    method1: function() {
        console.log("Method 1");
    }
};

// تعريف كائن آخر
let object2 = {
    property2: "Value 2",
    method2: function() {
        console.log("Method 2");
    },
    embeddedObject: object1  // وضع كائن داخل كائن آخر
};

// الوصول إلى الخصائص والأساليب في الكائن الفرعي
console.log(object2.property2);  // سيطبع: Value 2
object2.method1();  // سيطبع: Method 1

وأيضًا من الممكن الإعتماد على الوراثة بواسطة الـprototype في جافاسكريبت لتحقيق تنظيم هرمي للكائنات، وذلك يشمل وضع كائن داخل كائن آخر، أو استخدام مفاهيم مثل الـclass في ECMAScript 6 لتحقيق هيكلة أكثر تنظيمًا للكائنات.

 

  • 0
نشر
بتاريخ 9 ساعة قال Hu Puster:
اقتباس

هل يمكن وضع كائن داخل كائن؟  مثلا اكثر من كائن داخل كائن واحد

 

توجد اكثر من علاقه يمكن ان توجد بين الكلاسات.

الوراثة (Inheritance): يمكن لكلاس أن يورث خصائص وسلوكيات من كلاس آخر (الكلاس الأساس).

class Animal {
  public void eat() {
    System.out.println("Eating...");
  }
}

class Dog extends Animal {
  public void bark() {
    System.out.println("Bark!"); 
  }
}

Dog dog = new Dog();
dog.eat(); // inherited from Animal
dog.bark();

التركيب (Composition): عندما يحتوي كلاس على عضو من آخر. مثل كلاس سيارة يحتوي على كلاس محرك. 

class Engine {
  public void start() {...}
}

class Car {
  private Engine engine;

  public void drive() {
    engine.start();
    // use engine
  }
}

الاتحاد (Aggregation): نفس معنى التركيب ولكن العلاقة أضعف. مثل سيارة ومالكها. 

class Car {...}

class Person {
  private Car car;

  public void buyCar(Car c) {
    car = c; 
  }
}

الارتباط (Association): عندما تتعامل كائنات مع بعضها البعض دون تعديل بنيتها الداخلية. مثل طالب ومعلم.

class Student {
  private Teacher teacher;

  public void learn() {
    teacher.teach();
  }
}

class Teacher {
  public void teach() {...} 
}

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...