
Ответы на экзаменн-е вопросы за 1-й курс. Препод- Рудой И.Б / Ответы / 02 Классы в Срр. Функции-элементы. Данные-элементы. Примеры классов
..doc02 Классы в Срр. Функции-элементы. Данные-элементы. Примеры классов.
Классы - как строительные блоки
В программировании на Си используются и переменные, и структуры данных, и функции. Однако, они не очень удобно комплексируются в блоках. Borland C++ (и другие объектно-ориентированные языки) чудесно помещают эти компоненты вместе, так что программисту приятно работать.
На схеме показан процесс создания классов: Данные Комплексирование классов double big_bucks; Функции > Bank void deposit(); double withdraw(); > Создание классов
Подобно тому, как структуры в Си используют для своей спецификации внутренние переменные, так классы в С++ используют для своей спецификации элементы-данных и функции-элементы. Для каждого задействованного, при написании программы класса, транслятор порождает соответствующие строки кода.
Создание новых классов sber_bank
Класс sber_bank может стать основой по которой будут созданы другие классы:
Класс Потомки класса sber_bank
v v v
sber_bank broke_bank, cold_cash_inc;
Объекты - на самом деле только переменные, созданные из структур. Так же как и в любой структуре, вы можете сохранять данные в объекте.
class sber_bank {
Объект sber_bank public:
double big_bucks;
...
< Deposit << };
$$$ <-------------------------------
<<
Данные > Withdraw >>
Функции элементы
Доступ к данным объекта выполняется подобно обращению к элементу структуры в языке Си через селектор '.'.
Например: class sber_bank { public: double big_bucks; ... }; sber_bank my_bank; Объект Данные v v my_bank.big_bucks = 1000000.00; ^ Селектор
Функции элементы (методы)
Как вы уже видели раньше, классы С++ могут содержать в качестве своих элементов не только данные, но и функции элементы. Функция эле мент - это функция, объявленная внутри определения класса и тесно связанная с типом этого класса. В нашем примере - это операции которые выполняются в сберегательных банках. Наш объект sber_bank имеет функции элементы deposite (вкладывать) и withdraw (снимать) деньги.
sber_bank
Объект сбербанк
< deposit << Вклад денег
$$$ < >
<
Данные > withdraw >> Снятие денег
Функции элементы
Наглядное представление функции элемента withdraw() приводится ниже:
Селектор
Определяемый класс Имя функции элемента
Возвращаемый тип Аргумент
v v v v v
double sber_bank::withdraw(double bucks)
{
big_bucks -= bucks;
if (big_bucks < 0.0) {
Вызов функций-элементов
Поскольку функции элементы принадлежат объектам, то вы не можете вызывать их напрямую - без указания принадлежности. Вызов может быть выполнен только с некоторым значением аргумента:
Объект Имя функции элемента
v v
my_bank.deposit(paycheck);
^ ^ ^
Простой селектор
в обращении к задан- Вызов функции элемента
ному элементу струк-
туры
Общий вид синтаксиса вызова выглядит как:
имя_класса_объекта.имя_функции(список аргументов).
Иерархия классов
Наследование может использоваться множество раз при порождении объектов. Порожденные классы могут наследовать готовые функции элементы своих классов-предков, набирая при каждом порождении все больше и больше функций элементов.
Окно
^
Наследование Панель Порождение
классов
v
Меню
Вы можете также порождать несколько классов из базового класса:
^ Меню
Насле- Порождение
дование > < классов
v
Вертикальное Горизонтальное
Вертикальное и Горизонтальное меню имеют одного предка - Меню. Общее свойство, унаследованное от Меню - это список элементов, расположение. Порождение нескольких классов из одного корня позволяет использовать текст программ для многих классов.
Используя наследование