|
||||||
|
|
|
|
|
|
Урок 8: Первый "класс". Секции.Классы в С++Начнём с того, что классы в С++ можно интерпритировать как новые типы данных. Т.е. вам даётся уникальная возможность создавать новые, собственные типы данных, причём без всяких ограничений. Вы скажете: "Как же классы можно называть типами данных, ведь у типов данных не бывает методов?". Вы скажете это и жестоко ошибётесь. Это не так, ведь арифмитические операции - это тоже методы, объявленные для некоторых типов данных. Так например для целочисленной переменной "i" подобная запись "i+" будет означать вызов функции сложения. Позже я объясню как перегузить операторы (+,-,*,/) для собственного класса. Первый классЧто ж, напишем первый класс. В поле рабочего документа вставте следующий код:
Разберём синтаксис и принципы работы класса на примере класса "Квадрат". Класс объявляется словм "class", затем идёт имя класса и "{" (к стати принято начинать имя класса с "C"). После "{" начинается private-секция. Ко всему, что там объявленно есть доступ только из класса. В нашем случае в private-секцие объявленна единственная переменная "a", характерезующая длинну ребра квадрата. Ключевое слово "public" означает начало public-секции, к содержимому которой доступно совершенно открыт. С конструктором и деструктором мы познакомимся в следующем уроке, а пока только скажу, что их наличие необходимо. Далее объявленны и реализованны две функции. Первая, setA, предназначенна для инициализации переменной "a" , т.е. для обозначения длинны стороны квадрата. Вторая - возвращает площадь квадрата со стороной "a". И наконец, объявление класса заканчивается знаками "};". Надо сказать, что функции класса (как и канструкторы и деструкторы) могут быть реализованны, как в классе, так и вне его. А может быть и так, что некоторые из них реализованны вне класса, а другие в классе. Разница лишь в том, что первые выполняются чуть медленнее, чем те, что реализованны в классе. Но вторые жрут намного больше ресурсов, чем первые. Так что, если нет особой спешки, реализовывайте функции вне класса. Приведу пример, как это делать:
Итак, вернёмся к нашей программе. С функцией main вы уже знакомы. Строчка "CSquare sq;" объявляет переменную типа CSquare. Таких переменных может быть сколько угодно. И каждая такая переменная будет иметь индивидуальное значение переменных, т.е. можно смоделировать, например, целый массив из разных квадратов. Строки, связанные с вводом числа с клавиатуры, вам должны быть понятны. Строчка "sq.setA(a);" отвечает за вызов функции "setA" c параметром "a" для экземпляра "sq" класса "CSquare". Строка "cout>>sq.Square();" отвечает за вызов функции "Square" для экземпляра "sq" класса "CSquare" и вывода возвращаемого этой функцией значения на экран. Надеюсь, что вам всё было понятно. Подробнее о конструкторах, деструкторах и различных областях класса читайте в следующем уроке. СекцииС этим слово вы уже сталкивались в предыдущем тексте, но я его не пояснял. Итак, я думаю необходимо внести ясность. Любой класс состоит из 3-х секций: public, private и protected. В каждой из этих секций могут быть объявленны как переменные, так и функции. Начинается любая секция со следующей строки "имя_секции:". Так, например, секция public будет начинаться со строки "public:". Закнчивается секция началом другой секции или "}". По умолчанию, т.е. если нет строки, объявляющей о начале какой-либо из секций, все функции и переменные объявляются в секции private. В классе может не быть элементов объявленных в той или иной секции, поэтому объявление этой секции не нужно, т.е. она в классе присутствует, но только условно. И последнее секции могут прерывать друг друга, т.е. может, например, сначала быть объявленна private-секция, потом public-секция, а затем снова private-секция и т.д. Теперь о назначении секций. Секции предназначены для ограничения доступа к элементам, объявленым внутри них. Ниже представленна таблица, характеризующая все ограничения секций.
|
© 2005 сайт VisualCBook.narod.ru © 2005 Кадров Никита |