У вас вопросы?
У нас ответы:) SamZan.net

Лекция 8 Классы

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.2.2025

red79;;;;;;;;;;;Лекция 8.

Классы.

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

  Данные класса  –  их еще называют полями (сравнить со структурой) –  это характеристики объекта.

  Функции   класса  –  методы   (функции – члены класса ) описывают   действия над  данными,  эти функции-члены предназначены для доступа к данным.

  В  простейшем случае  описание класса выглядит так:

class  имя

{private:

  //элементы класса         секция private      Секций м.б. несколько,

 . . . . . . . . . . . . . . . .                                          порядок их не важен.

public:

//элементы класса           секция public

 . . . . . . . . . . . . . .

};

private   и  public  –  это спецификаторы доступа,  они  управляют видимостью элементов класса.  После private  стоят  элементы, видимые внутри класса.  Этот вид доступа принят в классах по умолчанию. Доступ к этим элементам возможен только из функций, расположенных внутри класса,  т.е. это возможность защиты  этих элементов  от доступа  функций, расположенных вне класса.

  В секции public  описываются данные и функции,  которые доступны  вне класса  (это интерфейс класса).

Итак, основополагающей  идеей ООП является объединение  данных и действий (функций), производимых   над этими данными,  в одном классе.  Говорят :  данные и методы инкапсулированы.

  Рассмотрим простой пример:

class  myclass

{ private:

int  dan;            // поля могут быть любого типа, кроме типа 

char  c;             //этого класса, но м.б. указателями  или ссылками

public:             //на этот класс. Инициализация полей не допускается

void  show(){cout<<dan<<’ ’<<c<<endl;}

int  get_dan(){return  dan;}

char  get_c() {return   c;}

};

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

Определение объектов:  Объект   – это переменная типа класс.

myclass  a1,a2;

myclass  x[10];

myclass  *pw;

myclass  *qw=new  myclass(65,A);

myclass  &t=a1;

Вызов  метода класса  применяется  как вызов метода конкретного объекта, определяется  синтаксисом  для доступа к  элементам структуры:

 x[3]. show();

a1.show();  ‘ .операция доступа  к члену класса через  имя объекта,  отобразит  на экране  значения  полей  этого объекта.

При обращении через  указатель операцию ‘->’ можно выбрать:

 cout<<qw->get_dan();         cout<<(*qw).get_dan();

Замечание. В некоторых  языках ООП вызовы  методов называют  сообщениями  (посылка сообщения  объекту  a1 с  указанием  вывести  данные  на экран).

 Можно  при  описании  класса определить функцию, которая будет  задавать  значения  полей класса:

void   set_dan (int  d) {dan=d;}

void   set_c (char  ch) {c=ch;}

a1.set_dan (65);  a1.set_c (‘A);

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

  Конструктор  отличается от других  методов  класса:

а) имя конструктора совпадает с именем  класса;

б)у конструктора нет типа  возвращаемого значения (он вызывается автоматически и  ему не надо возврашать кому-то результат работы).

Есть   3  вида  конструкторов:

1

1)При создании объекта  специальный конструктор  инициализирует  поля объекта  нулями.  Такой  конструктор  называется  конструктор по умолчанию  

  Если в классе  конструктор по умолчанию не объявлен,  то компилятор создает его сам.  Без него нельзя было бы определить переменные  типа класс:  myclass a1;

  Если для класса  объявлен другой конструктор с параметрами  (конструктор инициализации), то  компилятор не создает  свой конструктор по умолчанию.  Если он нужен, то его  надо объявлять самим.

2

2) Если необходимо  инициализировать какие-то поля конкретными значениями, то необходимо объявить конструктор  для  инициализации       .  Их может быть  несколько. 

myclass a (69,D);

3

3)третий способ инициализации объекта –  когда используется уже существующий объект, это  конструктор  копирования            Он имеет  единственный параметр – ссылку  на  объект этого же  класса:

myclass (myclass  & x)  - конструктор копирования. Он вызывается:

(1)при описании объекта с  инициализацией  другим объектом:

myclass  a2 (a1);   //a1  определен  ранее. 

myclass  a2 =a1;    // это инициализация, а не присваивание.

(2) при передаче объекта в  функцию по значению.

(3) при  возврате  объекта из функции.

  Если не указан  конструктор   копирования,  то компилятор  создает его по умолчанию.  Копировщик просто копирует поля  указанного в параметре объекта в  поля нового объекта.  Это  поверхностное  копирование, все  поля из указанного в параметре объекта просто копируются в переменные члены нового объекта.

                  myclass b(a);

3




1. Проектирование горячего цеха предприятия общественного питания
2. Аналіз художнього твору на уроках читання у початкових класах
3. Тема- Прекращение трудового договора Выполнила студентка 1 курса 101 группы очно
4. ТЕМА СОДЕРЖАНИЕ- ВВЕДЕНИЕ ГЛАВА 1
5. Оценка эффективности управления инвестиционным портфелем
6. Яконцепцію на аркуші
7. Лекция для студентов 2 курса План лекции- 1
8. Валютный рынок и валютные операции.html
9. ая береза Наречия деепричастия слова категории состояния модальные слова служебные слова междометия зв
10. много ела и мало двигалась