Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы на экзаменн-е вопросы за 1-й курс. Препод- Рудой И.Б / Ответы / 02 Классы в Срр. Функции-элементы. Данные-элементы. Примеры классов

..doc
Скачиваний:
40
Добавлен:
25.05.2014
Размер:
34.3 Кб
Скачать

02 Классы в Срр. Функции-элементы. Данные-элементы. Примеры классов.

Классы - как строительные блоки

В программировании на Си используются и переменные, и структуры данных, и функции. Однако, они не очень удобно комплексируются в блоках. 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

Вертикальное Горизонтальное

Вертикальное и Горизонтальное меню имеют одного предка - Меню. Общее свойство, унаследованное от Меню - это список элементов, расположение. Порождение нескольких классов из одного корня позволяет использовать текст программ для многих классов.

Используя наследование