Объектно-ориентированное программирование.

...

catch (<объявление исключения>) { <операторы> }

· Условный оператор
if (<выражение>) <оператор 1> [else <оператор 2>]

Оператор-переключатель
switch (<выражение>)

{ case <константное выражение 1>: <операторы 1>

case <константное выражение 2>: <операторы 2>

...

case <константное выражение N>: <операторы N>

[default: <операторы>]

}

 

Оператор-переключатель предназначен для выбора одного из нескольких альтернативных путей выполнения программы. Вычисление оператора-переключателя начинается с вычисления выражения, после чего управление передается оператору, помеченному константным выражением, равным вычисленному значению выражения. Выход из оператора-переключателя осуществляется оператором break. Если значение выражения не равно ни одному константному выражению, то управление передается оператору, помеченному ключевым словом default, если он есть.

· Оператор цикла с предусловием
while (<выражение>) <оператор>

· Оператор цикла с постусловием
do <оператор> while <выражение>;

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

· Оператор пошагового цикла
for ([<начальное выражение>];[<условное выражение>];[<выражение приращения>])

<оператор>

Тело оператора for выполняется до тех пор, пока условное выражение не станет ложным (равным 0). Начальное выражение ивыражение приращения обычно используются для инициализации и модификации параметров цикла и других значений. Начальное выражение вычисляется один раз до первой проверки условного выражения, а выражение приращения вычисляется после каждого выполнения оператора. Любое из трех выражений заголовка цикла, и даже все три могут быть опущены (не забывайте только оставлять точки с запятой). Если опущено условное выражение, то оно считается истинным, и цикл становится бесконечным.

Оператор пошагового цикла в языке С++ является гибкой и удобной конструкцией, поэтому оператор цикла с предусловиемwhile используется в языке С++ крайне редко, т.к. в большинстве случаев удобнее пользоваться оператором for.

С формальной точки зрения операторы break, continue и return не являются операторами структурного программирования. Однако их использование в ограниченных количествах оправдано, когда они упрощают понимание программы и позволяют избегать больших вложенных структур. Например, мы проверяем входные данные на аномалии. Если не использовать эти операторы, то всю обработку придется вложить в условный блок, что ухудшает читабельность программы. Вместо этого можно написать небольшой условный блок, который организует выход из функции при неверных исходных данных.

Объектно-ориентированное программирование.

В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.

Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.

Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм; то есть возможность объектов с одинаковой спецификацией иметь различную реализацию.

Всё является объектом. Вычисления осуществляются путём взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. Каждый объект имеет независимую память, которая состоит из других объектов. Каждый объект является представителем (экземпляром) класса, который выражает общие свойства объектов. В классе задаётся поведение (функциональность) объекта. Тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия. Классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования. Память и поведение, связанное с экземплярами определённого класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве. Таким образом, программа представляет собой набор объектов, имеющих состояние и поведение. Объекты взаимодействуют посредством сообщений. Естественным образом выстраивается иерархия объектов: программа в целом — это объект, для выполнения своих функций она обращается к входящим в неё объектам, которые, в свою очередь, выполняют запрошенное путём обращения к другим объектам программы. Естественно, чтобы избежать бесконечной рекурсии в обращениях, на каком-то этапе объект трансформирует обращённое к нему сообщение в сообщения к стандартным системным объектам, предоставляемым языком и средой программирования.

Устойчивость и управляемость системы обеспечивается за счёт чёткого разделения ответственности объектов (за каждое действие отвечает определённый объект), однозначного определения интерфейсов межобъектного взаимодействия и полной изолированности внутренней структуры объекта от внешней среды (инкапсуляции)

5. С++. Классы.

Класс в программировании — это тип данных, имеющий некоторые общие черты с типом структуры. Объекты (экземпляры) класса - это переменные такого типа. Класс, как и структура, может содержать поля данных. Кроме этого, класс может содержать методы (т.е. функции, процедуры).

Определение (объявление) класса в языке C++ выглядит следующим образом:

class MyClass: public ParentClass // ParentClass — класс-предок, который должен быть определён ранее { public: // элементы в этой секции доступны из любой части программы MyClass(); // конструктор ~MyClass(); // деструктор int classmember; protected: // элементы в этой секции доступны из класса и его потомков private: // элементы в этой секции доступны только из класса; это область доступа по умолчанию };

В конце объявления класса ставится точка с запятой.

Если класс содержит методы (функции), то эти функции также должны быть определены.

MyClass::MyClass() { // определение конструктора } MyClass::~MyClass() { // определение деструктора }

После объявления класс считается полноценным типом данных и, экземпляры класса могут быть созданы следующим образом:

MyClass myinstance;

Обращение к членам класса:

myinstance.classmember

Уничтожается экземпляр класса, как и любая переменная, только в случае, если функция, в которой он был создан, завершила работу или если была принудительно освобождена динамическая память, выделенная под экземпляр.

6. C++. Методы.