- •Конспект лекций по дисциплине «алгоритмизация и программирование»
- •Лекция № 1. Основные понятия
- •Использование ключевого слова using
- •2: Int main()
- •4: Using std::cout; // Вместо этих двух строк можно записать
- •5: Using std::endl; /* одну: using namespace std;*/
- •20: Return 0;
- •Комментарии
- •Функции
- •Переменные
- •Лекция № 3. Операторы
- •Математические операторы
- •Математические функции
- •Логические операторы
- •Операторы отношения
- •Операторы переходов по условию
- •Лекция № 4. Циклы
- •Оператор goto
- •Оператор цикла while
- •Операторы break и continue
- •Оператор цикла do..While
- •Оператор цикла for
- •Int main ()
- •Лекция № 5. Массивы
- •Одномерные массивы
- •Int main()
- •Многомерные массивы
- •Массивы символов (строки)
- •Int main()
- •Лекция № 6. Некоторые простые алгоритмы
- •Поиск максимального (или минимального) числа из выборки чисел
- •Int main()
- •Пузырьковая сортировка (bubble sort)
- •Void exch(double &a, double &b)
- •Лекция № 7. Численное решение уравнений
- •Теоретические основы
- •Метод простого перебора
- •Int RootSearch (double p[], int n, double a, double b, double dx);
- •Int main ()
- •Int RootSearch (double p[], int n, double a, double b, double dx)
- •Метод половинного деления
- •Метод Ньютона-Рафсона
- •Лекция № 8. Основы объектно-ориентированного программирования
- •Введение
- •Void Meow();
- •Закрытые и открытые члены класса
- •Void Meow();
- •Int main()
- •Void Meow();
- •Лекция № 9. Конструкторы и деструкторы
- •Определение
- •Int Weight;
- •Файлы заголовков
- •Встраиваемые функции
- •Лекция № 10. Классы, содержащие другие классы как данные-члены
- •Сложные классы
- •Структуры
Void Meow();
};
При объявлении класса Cat память не резервируется. Это объявление просто сообщает компилятору о существовании класса Cat, о том, какие данные он содержит (переменные itsAge и itsWeight), а также о том, что он умеет делать (метод Meow)). Кроме того, объявление сообщает компилятору о размере класса Cat, т.е. сколько места должен зарезервировать компилятор для каждого объекта класса Cat. Поскольку в приведенном примере для целого значения требуются четыре байта, размер объекта Cat составит восемь байтов (четыре байта для переменной itsAge и четыре – для itsWeight). Метод Meow() не требует выделения памяти, поскольку для функций-членов (методов) объекта пространство в памяти не резервируется.
Объект нового типа определяется точно так же, как и любая целочисленная переменная:
unsigned int GrossWeight;
Cat Frisky;
В этом коде определяется переменная GrossWeight, которая имеет тип unsigned int, а также определяется объект Frisky класса (или типа) Cat.
Кот – это разновидность домашнего животного, но никто не заводит дома разновидность, обычно покупают конкретного живого котенка. То есть, существует различие между абстрактным котом как понятием и конкретным котенком Фриски. Точно так же в языке С++ существует различие между классом Cat, который является концепцией кота, и каждым конкретным объектом класса Cat, который гуляет сам по себе. Таким образом, Frisky – это объект типа Cat, точно так же, как и GrossWeight является переменной типа unsigned int.
Объект – это конкретный экземпляр абстрактного класса. После определения реального объекта класса Cat, например Cat Frisky, возникает необходимость получить доступ к членам этого объекта. Для этого используется точечный оператор (.), который позволяет обратиться к элементам объекта непосредственно. Следовательно, чтобы присвоить число 50 переменной-члену Weight объекта Frisky, можно написать:
Frisky.itsWeight=50;
Аналогично для вызова метода Meow() достаточно использовать следующую запись:
Frisky.Meow();
Когда необходимо использовать определенный метод класса, выполняется вызов этого метода. В данном случае осуществляется вызов метода Meow() объекта Frisky.
В языке С++ нельзя присвоить значение типу данных, они присваиваются только переменным. Например, нельзя написать
int =5; // неверно!!!
Компилятор пометит эту строку как ошибочную, поскольку нельзя присваивать число 5 типу int. Вместо этого нужно определить целочисленную переменную и присвоить ей число 5. Например:
int x;
x=5;
Точно также недопустима следующая строка:
Cat.itsAge=5 // неверно!!!
Компилятор снова пометит эту строку как ошибочную, поскольку нельзя присвоить число 5 части класса Cat, ведь это всего лишь декларация. Сначала необходимо создать объект класса Cat, а затем его переменной itsAge присвоить значение 5. Например:
Cat Fricky; // то же, что и int x;
Frisky.itsAge=5; // то же, что и x=5;
-
Закрытые и открытые члены класса
В объявлении класса используются и другие ключевые слова. Двумя самыми важными из них являются public (открытый) и private (закрытый). Они применимы для всех членов класса: и переменных-членов, и методов. К закрытым членам могут обращаться только те методы, которые принадлежат этому классу. Открытые члены доступны для всех других функций программы. Вернемся к примеру
Class Cat
{
unsigned int itsAge;
unsigned int itsWeight;