Теорема Пусть
1. функция F(x, y) непрерывна в прямоугольной окрестности
D = { (x, y): |x − x0| < δ1, |y − y0| < δ2 }
точки (x0, y0) , причем F(x0, y0) = 0 ;
2. функция F(x, y) при каждом фиксированном x Î (x0 − δ1, x0 + δ1) строго монотонна по y на интервале (y0 − δ2, y0 + δ2) .
Тогда существует окрестность точки x0 , в которой уравнение F(x, y) = 0 определяет функцию y = y(x) ( y(x0) = y0 ), непрерывную в этой окрестности.
8. Указатель this.
Прежде чем перейти к перегрузке операторов, необходимо познакомиться с ключевым словом this языка С++, которое является существенным ингредиентом многих перегруженных операторов.
Всякий раз, когда вызывается функция-член, автоматически передается указатель на объект, вызывающий данную функцию. Можно получить доступ к этому указателю, используя this. Указатель this служит неявным параметром всех функций-членов. (Функции-друзья не имеют указателя this.) Например, в операторе:
оb.f();
функции f() автоматически передается указатель this, указывающий на объект ob.
Как известно, функции-члены имеют непосредственный доступ к данным класса. Например, если задан следующий класс:
class cl {
int i;
// ...
};
то функция-член может присвоить переменной i значение 10, используя следующую инструкцию:
i = 10;
Фактически эта инструкция является сокращенной записью следующий инструкции:
this->i = 10;
9. Спецификаторы доступа : public, private, protected.
Каждому члену класса можно установить его область (уровень) доступа (англ. access control level). Область доступа члена класса определяет участки кода, из которых к этому элементу будет возможно обращаться. В языке Си++ поддерживаются следующие области доступа:
•private (закрытый, частный, внутренний член конкретного класса) — обращения к элементу допускаются только из кода методов класса, в котором этот элемент определён. Любые наследники класса уже не смогут получить доступ к этому члену;
•protected (защищённый, внутренний член иерархии классов) — обращения к
элементу допускаются из кода методов класса, в котором этот элемент определён, или из любых его классов-наследников;
•public (публичный, общедоступный, открытый член класса) — обращения к элементу допускаются из любого места.
Общие описания вида класса с использованием спецификатора доступа (последовательность может быть любая):
class имя_класса
{
описание_данных_и_методов_класса; // по умолчанию будет private:
public:
описание_данных_и_методов_класса;
protected:
описание_данных_и_методов_класса;
private:
описание_данных_и_методов_класса;
};
10. Понятие инкапсуляции. Процедурный и объектно-ориентированный подходы в программировании.
Инкапсуляция — свойство, позволяющие объединить данные и код (методы) в одном месте (объекте) и скрыть реализацию этого объекта от пользователя предоставив ему интерфейс (спецификацию). Работа пользователя с объектом осуществляется только через предоставленный интерфейс, а всё внутреннее устройство полностью скрыто. В языке Си++ способ управления доступом осуществляется с помощью использования ключевых слов private и public подробнее про них написано ниже. При этом public создаёт общедоступный интерфейс а private скрывает данные в классе.
Интерфейс — это совместно используемая часть, предназначенная для взаимодействия двух систем — например, между компьютером и принтером, или пользователем и компьютером. В отношении классов мы говорим об общедоступном интерфейсе. В этом случае потребителем его является программа, использующая класс, система взаимодействия состоит из объектов класса, а интерфейс состоит из методов, предоставленных тем, кто написал этот класс. Интерфейс позволяет вам, как программисту, написать код, взаимодействующий с объектами класса, и таким образом, позволяет программе взаимодействовать с объектами класса. Например, чтобы определить количество символов в объекте класса string, не надо просматривать, как этот объект работает внутри. А просто можно воспользоваться методом size() этого класса, предоставленного его разработчиком.
На протяжении долгого времени в программировании применялся процедурный подход. При этом программа состоит из функций, вызывающих друг друга.
Гораздо позже появилось объектно-ориентированное программирование, которое позволяет группировать функции и данные в единой сущности — «объекте».
Например, «пользователь», «меню», «элемент»… Чтобы ООП-подход «работал», объект должен представлять собой законченную, интуитивно понятную сущность.
То есть, объект — это нечто большее, чем просто «группировка» функций и данных. В частности, встроенный объект Math, хотя и содержит функции (Math.sin, Math.pow, …) и данные (Math.PI), не является объектом в смысле ООП. Это не более чем способ группировки: «пространство имён».
Меню, процедурный код
Например, пусть у нас есть HTML-элемент, представляющий собой «меню», вот такой:
1 | <div id="food-menu" class="menu"> |
2 | <span class="menu-title">Продуктовое меню</span> |
3 | <ul class="menu-items"> |
4 | <li>Сыр</li> |
5 | <li>Колбаса</li> |
6 | <li>Торт</li> |
7 | </ul> |
8 | </div> |
Оживим его в процедурном стиле — через создание функций:
01 | var foodMenu = $("#food-menu"); |
02 |
03 | function open() { |
04 | foodMenu.addClass('menu-open'); |
05 | } |
06 |
07 | function close() { |
08 | foodMenu.removeClass('menu-open'); |
09 | } |
10 |
11 | foodMenu.on('click', '.menu-title', function() { |
12 | if (foodMenu.hasClass('menu-open')) { |
13 | close(); |
14 | } else { |
15 | open(); |
16 | } |
17 | }); |
Это ещё называют «простыня кода». Потому что чем больше такого кода — тем сложнее его поддерживать. Особенно это заметно при создании сложных интерфейсов.
Меню, объектный подход
При объектном подходе меню описывается в виде объекта, например:
01 | /** |
02 | * options -- объект с параметрами меню. |
03 | * elem -- элемент меню |
04 | */ |
05 | function Menu(options) { |
06 | var elem = options.elem; |
07 |
08 | this.open = function() { |
09 | elem.addClass('menu-open'); |
10 | }; |
11 |
12 | this.close = function() { |
13 | elem.removeClass('menu-open'); |
14 | }; |
15 |
16 | elem.on('click', '.menu-title', function() { |
17 | if (elem.hasClass('menu-open')) { |
18 | close(); |
19 | } else { |
20 | open(); |
21 | } |
22 | }); |
23 |
24 | } |
Теперь мы можем использовать его в любом месте кода:
1 | var foodMenu = new Menu({ |
2 | elem: $('#food-menu') |
3 | }); |
4 | // ... |
5 | foodMenu.open(); |
Дата: 2019-03-05, просмотров: 211.