سؤال

لقد طُلب مني وصف العلاقة بين السيارة والسيارة وتويوتا في مصطلح البرمجة الموجهة نحو الكائن (دعنا نقول في بيئة PHP). لقد تعثرت. هل يمكن لأحد أن يساعدني في ذلك؟ شكرًا...

هل كانت مفيدة؟

المحلول

السيارة هي سيارة وسيارة تويوتا هي سيارة.

البيان الأكثر وضوحا هو ذلك car يمكن أن يكون فئة فرعية من vehicle و toyota car يمكن أن يكون فئة فرعية من car.

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

نصائح أخرى

أعتقد أن تويوتا تشير إلى الشركة.

أود أن أقول:

السيارة كائن ، والسيارة هي نوع من المركبات. تويوتا هو تطبيق خاص لأشياء المركبات مع brake الطريقة التي تم تحميلها بشكل زائد للعودة FALSE.

جمل هو نوع السيارة - حتى تتمكن من التفكير في Vehicle كطبقة قاعدة Car.

تويوتا تصنع السيارات. بدلاً من جعل هذه علاقة الميراث ، سأميل إلى إضافة أ manufacturer متغير عضو ل Vehicle. ثم لحالات Car التي صنعتها تويوتا ، مجموعة car.manufacturer = "Toyota".

فقط لكي تكون محرجًا: السيارة هي فئة فرعية من السيارة ، وكذلك الشاحنة. تويوتا هي الشركة المصنعة التي تصنع سيارات وشاحنات ؛ لذلك يجب أن تكون تويوتا واحدة من العديد من القيم المحتملة لسمة الشركة المصنعة للسيارة.

class Vehicle{ 

   protected $_model;

   protected $_manufacturer;

   public __construct($manufacturer) {
       $this->_manufacturer = $manufacturer;
   }
} 

class Car extends Vehicle{ 
   public __construct($model,$manufacturer) {
       parent::__construct($manufacturer);
   }
   $this->_model = $model;
} 

class Truck extends Vehicle{ 
   public __construct($model,$manufacturer) {
       parent::__construct($manufacturer);
   }
   $this->_model = $model;
} 

$a = new Car('Avensis','Toyota');
$b = new Truck('Land Cruiser','Toyota');

هل تعني:

class Vehicle{
}

class Car extends Vehicle{
}

class Toyota extends Car{
}

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

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

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

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

السيارة: السيارة هي شكل من أشكال السيارة. لذلك ، فإنه يمتد السيارة. يمكن وصف السيارة على أنها مركبة ذات 4 عجلات ، وأبواب 2-N (اعتمادًا على السيارة) ، ومحرك ، وعجلة قيادة ، أو مساحات ، ومصابيح أمامية ، وميض ، ومكابح ، وسرع بالاشارة الى.

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

امل ان يساعد.

تويوتا سيارة. السيارة هي سيارة. لذا فإن فئة تويوتا ترث من السيارة والتي بدورها ترث من السيارة.

السيارة فئة. السيارة هي فئة فرعية من السيارة. يمكن أن تكون Toyota مثيلًا (عامًا إلى حد ما) لفئة السيارة ، أو وظيفة من فئة فرعية تضيف تويوتا.

السيارة هي سيارة ، تويوتا هي سيارة.

لذلك ، يمكن أن تكون تويوتا فئة فرعية من السيارة ويمكن أن تكون السيارة فئة فرعية من السيارة.

class Vehicle {

}

class Car extends Vehicle {

}

class Toyota extends Car {

}

على سبيل المثال ، قد يكون للسيارة VAR عضو واحد للإشارة إلى عدد العجلات ووظيفة لتشغيل المحرك (ليس كل المركبات لديها محرك). على الرغم من أن تويوتا قد يكون لها نفس VARS مثل سيارة ، بالإضافة إلى سلسلة تحتوي على اسم النموذج وطريقة لطلب الضمان على الدواسات ؛-)

يمكنك اتباع طرق مختلفة.

  1. Car هي فئة فرعية من Vehicle. Toyota هي فئة فرعية من Car.

  2. Car هي فئة فرعية من Vehicle. Car يسمى خاصية make. يمكنك إنشاء سيارة وتعيينها make إلى "تويوتا".

هناك المزيد من الطرق للقيام بذلك ، لكن هذين هما الأكثر وضوحًا التي تتبادر إلى الذهن التي تتناسب مع مفهوم OOP.

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

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

وستكون تويوتا اسم العلامة التجارية كسممة.

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

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

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

أخذ بلدي: "تويوتا" لا ينبغي اشتقاق من "سيارة" ، لأن تويوتا هي شركة ، وليست سيارة محددة. يمكن اشتقاق "Toyota_Car" من "سيارة". يجب اشتقاق "Toyota" من فئة "الشركة المصنعة" ، والتي يتم اشتقاقها من فئة "الشركة". يجب أن يكون لدى فئة "السيارة" عضو في الفصل في نوع مؤشر إلى "الشركة المصنعة". في حالة سيارة تم تصنيعها بواسطة Toyota ، يجب أن يكون للكائن الذي تم إنشاءه من "Car Car" هذا عضوًا ورثًا في الفئة يشير إلى كائن Singleton من النوع "Toyota". (C ++)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top