LINUX.ORG.RU

История изменений

Исправление hobbit, (текущая версия) :

Ну смотри.

Грубо говоря, есть класс «Человек» с полями «имя», «отчество» и фамилия", у него есть метод «полноеИмя()», собирающий ФИО из этих полей.

А теперь мы унаследовали от него класс «Сотрудник», в котором можем добавить дополнительные поля: год поступления, должность и др. И можем добавить ещё метод (функцию), которая, зная эти поля, возвращает его стаж, например. При этом мы по-прежнему можем пользоваться методом «полноеИмя()», если он нам нужен. Код не дублируется, это тот же самый метод. Сотрудник остаётся человеком. :)

Звучит не очень привлекательно, если речь про одну простую функцию. Мы можем просто написать глобальную функцию и перебирать из неё все записи. Но когда их много, и они не такие простые, этот подход начинает приводить к глобальному запутанному коду. А классы позволяют упорядочить вместе данные и код по их обработки. А извне мы манипулируем самими классами.

Аналогично с виджетами. У каждого виджета в Qt есть ширина и высота. У унаследованных виджетов есть более специальные поля, например, текст у однострочного редактора. Но когда речь, скажем, о размещении виджетов в окне-владельце, дополнительные поля нам не так интересны. При этом QLineEdit позволяет собой манипулировать именно как QWidget, класс-предок.

Ещё есть инкапсуляция, но это отдельная тема. На ней многие ломаются, да.

Исправление hobbit, :

Ну смотри.

Грубо говоря, есть класс «Человек» с полями «имя», «отчество» и фамилия", у него есть метод «полноеИмя()», собирающий ФИО из этих полей.

А теперь мы унаследовали от него класс «Сотрудник», в котором можем добавить дополнительные поля: год поступления, должность и др. И можем добавить ещё метод (функцию), которая, зная эти поля, возвращает его стаж, например. При этом мы по-прежнему можем пользоваться методом «полноеИмя()», если он нам нужен. Код не дублируется, это тот же самый метод.

Звучит не очень привлекательно, если речь про одну простую функцию. Мы можем просто написать глобальную функцию и перебирать из неё все записи. Но когда их много, и они не такие простые, этот подход начинает приводить к глобальному запутанному коду. А классы позволяют упорядочить вместе данные и код по их обработки. А извне мы манипулируем самими классами.

Аналогично с виджетами. У каждого виджета в Qt есть ширина и высота. У унаследованных виджетов есть более специальные поля, например, текст у однострочного редактора. Но когда речь, скажем, о размещении виджетов в окне-владельце, дополнительные поля нам не так интересны. При этом QLineEdit позволяет собой манипулировать именно как QWidget, класс-предок.

Ещё есть инкапсуляция, но это отдельная тема. На ней многие ломаются, да.

Исправление hobbit, :

Ну смотри.

Грубо говоря, есть класс «Человек» с полями «имя», «отчество» и фамилия", у него есть метод «полноеИмя()», собирающий ФИО из этих полей.

А теперь мы унаследовали от него класс «Сотрудник», в котором можем добавить дополнительные поля: год поступления, должность и др. И можем добавить ещё метод (функцию), которая, зная эти поля, возвращает его стаж, например. При этом мы по-прежнему можем пользоваться методом «полноеИмя()», если он нам нужен. Код не дублируется, это тот же самый метод.

Звучит не очень привлекательно, если речь про одну простую функцию. Мы можем просто написать глобальную функцию и перебирать из неё все записи. Но когда их много, и они не такие простые, этот подход начинает приводить к глобальному запутанному коду. А классы позволяют упорядочить вместе данные и код по их обработки. А извне мы манипулируем самими классами.

Аналогично с виджетами. У каждого виджета в Qt есть ширина и высота. У унаследованных виджетов есть более специальные поля, например, текст у однострочного редактора. Но когда речь, скажем, о размещении виджетов в окне-владельце, дополнительные поля нам не так интересны.

Исходная версия hobbit, :

Ну смотри.

Грубо говоря, есть класс «Человек» с полями «имя», «отчество» и фамилия", у него есть метод «полноеИмя()», собирающий ФИО из этих полей.

А теперь мы унаследовали от него класс «Сотрудник», в котором можем добавить дополнительные поля: год поступления, должность и др. И можем добавить ещё метод (функцию), которая, зная эти поля, возвращает его стаж, например. При этом мы по-прежнему можем пользоваться методом «полноеИмя()», если он нам нужен. Код не дублируется, это тот же самый метод.

Звучит не очень привлекательно, если речь про одну простую функцию. Мы можем просто написать глобальную функцию и перебирать из неё все записи. Но когда их много, и они не такие простые, этот подход начинает приводить к глобальному запутанному коду. А классы позволяют упорядочить вместе данные и код по их обработки. А извне мы манипулируем самими классами

Аналогично с виджетами. У каждого виджета в Qt есть ширина и высота. У унаследованных виджетов есть более специальные поля, например, текст у однострочного редактора.