Загрузка...

100 р за ответ (наследование)

Тема в разделе C/C++ создана пользователем Okana 11 ноя 2019. 318 просмотров

  1. Okana
    Okana Автор темы 11 ноя 2019 Заблокирован(а) 92 28 янв 2019
    [IMG]
    Нужно придумать адекватное наследование для этой схемы. Можно из любой тематики, но чтобы было не трудно описать поля классов потом)
     
  2. Interpollice
    Interpollice 11 ноя 2019 Заблокирован(а) 1 3 ноя 2019
    d2 I D1 I3 private I PUBLIC
     
  3. Okana
    Okana Автор темы 11 ноя 2019 Заблокирован(а) 92 28 янв 2019
    Interpollice,? Тут все есть) мне надо придумать названия конкретные для классов. Типо d1-лептоп B1-монитор, B2- компьютер) а что будет наследоваться от лептопа дальше не могу придумать
    --- Сообщение объединено с предыдущим 11 ноя 2019
    Тематика может быть любой
    --- Сообщение объединено с предыдущим 11 ноя 2019
    Поднял до 100 р
     
  4. adziri
    adziri 11 ноя 2019 mental handicap 8 20 дек 2017
    Код

    Transistor Capacitor
    | |
    +-------+------+
    |
    Chip
    |
    CPU
    |
    Personal Computer
    Но это офк говно из жопы, тк представление на объектах/предметах реального мира не работает, тк это говно из жопы.
     
    11 ноя 2019 Изменено
  5. r1chi_inactive2411360
    r1chi_inactive2411360 11 ноя 2019 Заблокирован(а) 34 12 июн 2019
    D3 - LAPTOP > D2 PERSONAL COMPUTER > D1 NOTEBOOK1 -- B1 VIDEOCARD -- B2 CPU
     
  6. Okana
    Okana Автор темы 11 ноя 2019 Заблокирован(а) 92 28 янв 2019
    r1chi_inactive2411360, ноутбук не является видеокартой
    --- Сообщение объединено с предыдущим 11 ноя 2019
    adziri, вот именно .не в том направлении схема идет . d3 не является d2 и тд
     
  7. adziri
    adziri 11 ноя 2019 mental handicap 8 20 дек 2017
    Всмысле не является?..
    У тебя есть два базовых класса B1 и B2.
    От них через множественное наследование наследуется D1.
    От D1 наследуется D2, а от D2 - D3.

    Читать надо наоборот, видеокарта является частью ноутбука (но это уже не совсем отношения вида наследование).
    --- Сообщение объединено с предыдущим 11 ноя 2019
    Окей, начнем с основ.
    Открытое, оно же публичное наследование означает связь «является».
    Если вы пишете класс D (derived – «производный») который открыто наследуется от класса B (base – «базовый»), то тем самым сообщаете компилятору C++ (а заодно и людям, читающим ваш код), что каждый объект типа D является также объектом типа B, но не наоборот.
    Код

    class Person {...};
    [FONT=-apple-system]class Student : public Person {...};[/FONT]
    В данном примере каждый студент – человек, но не каждый человек – студент. Именно такую связь подразумевает данная иерархия. Мы ожидаем, что всякое утверждение, справедливое для человека – например, что у него есть дата рождения, – справедливо и для студента, но не все, что верно для студента – например, что он учится в каком-то определенном институте, – верно для человека в общем случае.

    Закрытое, оно же приватное наследование не означает «является».
    Закрытое наследование означает «реализовано посредством…».
    Делая класс D закрытым наследником класса B, вы поступаете так потому, что заинтересованы в использовании некоторого когда, уже написанного для B, а не потому, что между объектами B и D существует некая концептуальная взаимосвязь. Таким образом, закрытое наследование – это исключительно прием реализации. Можно так же сказать, что закрытое наследование означает наследование одной только реализации, без интерфейса. Если D закрыто наследует B, это означает, что объекты D реализованы посредством объектов B, и ничего больше.

    В общем случае закрытое наследование почти то же, что и композиция.

    Вот почему, то что у вас на скриншоте полная фигня, в общем случае неважно какие имена будут у классов D1, B1 или Laptop, GPU, etc, потому что в отрыве от вашей предметной области это не будет иметь значения и дать конкретные советы сложно не зная ее.
     
Загрузка...
Top