- •51. Организация файловой системы fat
- •52. Организация файловой системы ext2
- •53. Язык регулярных выражений и его применение, шаблоны имен файлов
- •2)Символы – квантификаторы(повторители):
- •54. Пользовательский интерфейс ос
- •55. Язык сценариев ос
- •56. Процессы и механизмы многозадачности
- •57. Переменные величины в яп, их атрибуты, время жизни, область видимости
- •58. Типы данных в яп
- •59. Алгоритмы обработки массивов
- •60. Выражения и операции. Перегрузка операций.
- •61. Операторный базис языков программирования.
- •62. Функция как средство структурирования программы.
- •69. Механизмы создания и уничтожения объектов
- •70. Наследование в яп
- •Виртуальные функции
- •Синтаксис шаблона функции
- •Примеры определений шаблонов функций
- •Прототип шаблона функции
- •Использование шаблона функции
- •Специализация шаблонов функции
- •Шаблоны классов
- •Синтаксис шаблона класса
- •Пример определения шаблона класса
- •Использование шаблона класса
- •Векторы
- •Уравнение прямой
- •Общее уравнение прямой
- •Расстояние от точки до прямой
- •Углы между двумя прямыми, между прямой и плоскостью.
- •Общее уравнение плоскости
- •Уравнение плоскости
- •Уравнение поверхности:
- •35. Устойчивость решений дифференциальных уравнений
- •Простейшие типы точек покоя. Автономные динамические системы двух уравнений первого порядка. Типы особых точек на фазовой плоскости
- •39. Алгебра логики.
- •3. Основные законы логики.
- •5. Нормальные формы. Совершенные нормальные формы.
- •6. Арифметические операции в алгебре логики. Полином Жегалкина.
- •7. Полнота и замкнутость (примеры полных систем). Теорема Поста.
- •Вопрос 40 Графы и их свойства
- •41. Маршруты в графах и деревья.
- •42. Сети и алгоритмы на сетях.
- •43. Вероятность случайного события. Основные свойства вероятности.
- •44. Случайные величины и законы их распределения.
- •45. Числовые характеристики случайных величин.
- •46. Методы проверки статических гипотез.
- •47. Математические модели операций.
- •48. Матричные игры.
- •49.Линейное программирование. Симплекс-метод.
- •50. Выпуклое программирование.
- •2) Различные формы условий оптимальности.
- •74. Проектирование структуры реляционной базы данных. Метод er-диаграмм (сущность-связь).
- •75. Языки описания запросов. Язык sql.
- •Select [all | distinct] –команда выборки данных
70. Наследование в яп
Наследование —это механизм, позволяющий строить иерархию типов. Механизм наследования предполагает определение базового типа, а затем использование этого типа для построения производных типов. Используя наследование, можно создать главный класс, который определяет свойства, общие для набора связанных элементов. Затем этот класс может быть унаследован другими, более специфическими классами, каждый из которых добавляет те свойства, которые являются уникальными для него. Класс, который унаследован, называется суперклассом (superclass). Класс, который выполняет наследование, называется подклассом (subclass). Поэтому подкласс — это специализированная версия суперкласса. Он наследует все переменные экземпляра и методы, определенные суперклассом, и прибавляет свои собственные уникальные элементы.
Определение производного класса
Синтаксис определения производного класса следующий:
class < D > : [ < вид наследования> ] < В > [, ...] { <объявления членов класса>}
где D - имя производного класса, В - имя базового класса, вид наследования определяется одним из ключевых слов public, private или protected.
Синтаксис определения производного класса напоминает обычное объявление класса, за исключением того, что в заголовке определяемого класса указывается список наследования:
: [ < вид наследования> ]< В >[,...]
Список наследования определяет класс или классы, из которых порождается производный класс. Например:
class Derived : public Base {…};
Здесь определяется производный класс Derived из базового класса Base. При этом класс Derived наследует все свойства класса Base. Количество базовых классов в списке наследования может быть любым. Если производный класс наследует члены более чем одного базового класса, то такое наследование называется множественным. Каждый базовый класс, заданный в списке наследования, к моменту определения производного класса должен быть определен либо для него должно быть задано предварительное объявление. Предварительное объявление класса имеет вид:
class <имя класса>; Например:
class Base; //Предварительное объявление class Derived : public Base
{ . . .};
class Base {...}; //Определение базового класса
Базовый класс и производный класс - это понятия относительные, а не абсолютные. Производный класс сам может быть базовым классом для нового, создаваемого из него класса и т.д. Таким образом, можно получить иерархию классов.
Защищенные члены класса
В ранних версиях языка C++ существовали только два атрибута, регулирующих уровень доступа к членам класса - public и private. В процессе все более широкого применения C++ для решения самых разнообразных задач выяснилось, что только этих двух атрибутов недостаточно, причем подавляющее большинство проблем, связанных с недостаточной гибкостью системы контроля доступа, выявились при использовании производных классов.
Например, ни пользователь класса Derived, ни даже функции-члены этого класса не могут получить доступ к членам класса Base, объявленным в нем в части private, хотя эти члены и являются одновременно членами класса Derived на правах наследования. Вначале это может показаться странным, но если подумать, то становится очевидным, что если разрешить функциям-членам производного класса обращаться к личным членам его базового класса, то вся система защиты данных теряет всякий смысл. Для решения такого рода проблем в язык C++ (начиная с версии 2.0) был добавлен еще один атрибут - protected.
Если класс А не служит базовым ни для какого другого класса, то его защищенные (protected) члены ничем не отличаются от личных (private) - доступ к ним имеют только функции-члены данного класса или привилегированные в этом класса функции. Если же класс В является производным от А, то пользователи как класса А, так и В, по-прежнему не имеют доступа к защищенным членам А, но такой доступ имеют функции-члены класса В (и, разумеется, функции, привилегированные в классе В). Еще раз подчеркнем: механизм наследования не может обеспечить доступ к личным членам базового класса. К личным (private) членам любого класса имеют доступ только функции-члены данного класса или функции, привилегированные в этом классе.
Это означает; что уровень доступа к членам класса Base для функций-членов класса Derived и просто пользователей класса Derived остался неизменным: личные члены класса Base недоступны в классе Derived, общие и защищенные члены класса Base остались соответственно общими и защищенными и в классе Derived.
Если базовый класс является личным (private) базовым классом для производного класса:
class Derived : private Base {/* . . . */};
то личные члены базового класса по-прежнему недоступны ни в производном классе, ни для пользователя производного класса, а защищенные и общие члены базового класса становятся личными членами производного класса.
Если базовый класс является защищенным (protected) базовым классом для производного класса:
class Derived : protected Base {/* . . . */};
то личные члены базового класса по-прежнему недоступны ни в производном классе, ни для пользователя производного класса, а защищенные и общие члены базового класса становятся защищенными членами производного класса.
Наследование |
Доступ в базовом классе |
Доступ в производном классе |
public: |
private |
нет доступа |
|
protected |
protected |
|
public |
public |
protected: |
private |
нет доступа |
|
protected |
protected |
|
public |
protected |
private: |
private |
нет доступа |
|
protected |
private |
|
public |
private |
м71. Полиморфизм в ЯП
Полиморфизм-одно из основополагающих понятий ООП, оно представляет собой свойство различных объектов выполнять одно и то же действие по-своему. В ЯП сущность полиморфизма заключается в обозначении общего действия одним именем(функцией), которое используется во всей иерархии типов. Однако каждый тип в этой иерархии реализует это действие собственным способом.