Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
FIN7
2 / 2 / 0
Регистрация: 09.02.2013
Сообщений: 177
1

Отличие наследования от вложения

31.08.2014, 00:10. Просмотров 972. Ответов 5
Метки нет (Все метки)

Кому не лень объясните что такое наследование и вложение кратко и какая между ними разница. Спасибо.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2014, 00:10
Ответы с готовыми решениями:

Чем отличаются структуры для наследования интерфейса от структур для наследования реализаций?
Дорогие программисты, во первых, хочу поздравить вас с Наступающим новым Годом! Я к вам обращаюсь с...

Вложения
Добрый день! Ситуация. Есть база документов, у всех документов есть по одному или несколько...

Вложения
Вопрос следующий можно ли используя язык формул определить, вложен ли файл в конкретное rtf поле...

Rt + Вложения
Есть вот какая проблема... В RT-поле отображаются не все вложения. В чем может быть проблема?

Превью вложения
Есть ли в лотусе возможность предпросмотра вложенных картинок из документа, как на форумах? Пните в...

5
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,040
31.08.2014, 00:24 2
Цитата Сообщение от FIN7 Посмотреть сообщение
Кому не лень объясните что такое наследование и вложение кратко и какая между ними разница. Спасибо.
Про наследование кратко не объяснить...Много нюансов, ну к примеру есть абстрактный класс машина, не сказано сколько у неё дверей, колёс итп итд, но понятно что все машины могут ездить, перевозить груз итп, т.е. обладают рядом сходих свойств. Ну вот скажем необходимо уточнить какая машина - допустим ваз2109, он тоже может ездить итп т.е. логично сделать его наследником от класса машина(в данном случае машина это абстрактный базовый класс) о наш ваз2109 будет обладать теми же свойствами и методами......Про это надо читать, в книгах отдельные главы этому посвящены, так что то что я тут начал расписывать это ерунда...
вложение - просто 1 объект содержит другой - пример, объект машина содержит 4 объекта колесо.
1
FIN7
2 / 2 / 0
Регистрация: 09.02.2013
Сообщений: 177
31.08.2014, 00:54  [ТС] 3
dzrkot, а можно пример вложения простой?
0
Arkaniy
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
31.08.2014, 02:00 4
C++
1
2
3
4
5
6
7
 сlass A {
//some fields
};
 
сlass B {
A a;
};
Класс А вложен в В.
0
Mr.X
Эксперт С++
3192 / 1719 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
31.08.2014, 04:24 5
Цитата Сообщение от FIN7 Посмотреть сообщение
объясните что такое наследование и вложение кратко и какая между ними разница.
Вложение реализует концепцию «класс содержит класс», либо «класс реализуется посредством класса».
Открытое наследование реализует концепцию «класс есть разновидность класса», а закрытое - «класс реализуется посредством класса», т.е. вложение и закрытое наследование реализуют одну и ту же концепцию.
1
some_name
Вежливость-главное оружие
229 / 229 / 86
Регистрация: 19.02.2013
Сообщений: 1,441
31.08.2014, 15:08 6
Наверняка, читая какие-либо умные книги по потернам вас будут убеждать что агрегация лучше наследование. Возможно это и так, но всегда думайте своей головой и помните, что каждый способ хорош в той или иной ситуации. Панацеи нет. Поэтому всегда думайте о уместности использования того или ного способа построения архитектуры классов.

Добавлено через 29 минут
Вот, набросал немного.
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/**
*Agregation demo
*/
class Spanner{
public:
    void tightenBolt(){
        std::cout << "Tighten the bolt execute successfully!" << std::endl;
    }
};
 
class Saw{
public:
    void cut(){
        std::cout << "Cut off executed successfully!" << std::endl;
    }
};
 
class Thinker{
private:
    Spanner spanner;
    Saw saw;
public:
    Thinker(Spanner spanner, Saw saw) {
        this->spanner = spanner;
        this->saw = saw;
    }
    void work() {
        saw.cut();
        spanner.tightenBolt();
    }
};
 
/**
*Inheritance demo
*/
class Human{
private:
    char* fullName;
    short age;
public:
    Human(){
    };
    Human(char* fullName, short age){
        this->fullName = fullName;
        this->age = age;
    }
};
 
class Soldier : public Human{
private:
    char* militaryProfession;
public:
    Soldier(char* fullName, short age, char* militaryProfession){
        Human(fullName, age);
        this->militaryProfession = militaryProfession;
    }
    void war(){
        std::cout << "За Родину! За Сталина! Урааа!!!" << std::endl;
    }
};
 
 
int main() {     
    setlocale(LC_ALL, "ru");
 
    /*Agregation*/
    std::cout << "Agragation demo.." << std::endl;
    Spanner spanner;
    Saw saw;
    Thinker thinker(spanner, saw);
    thinker.work();
 
    /*Inheritance*/
    std::cout << "Inheritance demo..." << std::endl;
    Soldier hero("Петр Гаврилов", 41, "Майор");
    hero.war();
 
    system("pause");
}


Добавлено через 3 минуты
ООП было придумано для того что бы программист мог мыслить категориями реального мира. В примере выше Thinker(Мастер) не может наследоваться от Spanner(Ключ) или(и) Saw(Пила) - это противореч здравому смыслу, поэтому мы используем агрегаци, т.к. она отражает действительность.
Во втором случае наследование вполне уместно, т.к., опять же, это тоже соответствует реальной картине мира.
Надеюсь я не перегнул палку.
1
31.08.2014, 15:08
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2014, 15:08

Иконка вложения
День добрый всем. Lotus 6.5 Для создания вложений использую следующий код Set rtitem=New...

редактирование вложения
документ сохранен, открыт на редактирование, открываю аттач, изменяю, сохраняю, закрываю, снова...

Вложения в БАЗУ
Здравствуйте ! Столкнулся с такой проблемой : сделал вложения в базе, туда закрепил несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.