C++. Введение в классы и объекты. Конструкторы и деструкторы, страница 2

  • Синтаксис объявления класса в С++: ключевое слово class, за которым следует открывающаяся фигурная скобка, после которой объявляются поля класса и объявляются или определяются методы класса. Объявление класса завершается закрывающейся фигурной скобкой и точкой с запятой.
  • Поля класса при объявлении не могут инициализироваться т. е. получать начальные значения.
  • Внутри объявления класса определяются только небольшие методы. Большие методы нужно объявлять внутри объявления класса, а определять их нужно вне объявления класса.
  • Если метод определяется вне объявления класса, то в заголовке, перед именем метода, указывается имя класса, к которому он относится, и операция доступа к области видимости (::).
  • В объявлении класса также могут указываться ключевые слова private, public, protected, которые задают для клиентов класса степень доступа к полям и методам класса.
  • Клиентами класса могут быть другие классы и внешние функции (например, main()).
  • Поля и методы, описанные в классе после ключевого слова private являются закрытыми, т. е. доступными только для методов этого класса;
  • По умолчанию все поля и методы класса считаются закрытыми (private).
  • Поля и методы, описанные в классе после ключевого слова protected являются защищенными, т. е. доступными только для методов этого класса и классов-потомков.
  • Поля и методы, описанные в классе после ключевого слова public являются открытыми, т. е. доступными для любых клиентов класса;
  • Ключевое слово степени доступа (private, public, protected) применяется ко всем расположенным ниже полям и методам до тех пор, пока не встретиться следующее ключевое слово степени доступа. Это позволяет создавать в объявлении класса разделы для открытых, закрытых и защищенных полей и методов.
  • Один из принципов объектно-ориентированного программирования, который называется инкапсуляция, требует чтобы поля данных класса объявлялись в секции private. Методы класса, необходимые клиентам класса, объявляют в секции public.

25.11.2016

8

  • Пример 1. Объявление класса
  • // cat.h
  • // объявление класса Cat
  • class Cat
  • { private: int age; // возраст
  • char name[20]; // кличка
  • public:
  • // определения методов getAge и setAge
  • int getAge(){ return age;} //возвращает возраст
  • void setAge(int Age) //устанавливает возраст
  • { age = Age;}
  • void Meow(); // объявление метода Meow()
  • };

25.11.2016

9

  • Пример 1. Определение метода класса вне объявления класса
  • // cat.cpp
  • #include "cat.h"
  • #include <iostream>
  • using namespace std;
  • // определение метода Meow() класса Cat
  • void Cat::Meow()
  • { cout << name << ": ";
  • for (int i = 1; i <= age; i++)
  • cout << "Мяу ";
  • cout << "\n" << "\n" ;
  • }

25.11.2016

10

  • Пример 1 демонстрирует объявление класса Cat. В классе Cat поля данных age и name объявлены в секции private. Клиенты класса могут получить и изменить значение поля age c помощью методов getAge() и setAge(). К значению поля name доступ для клиентов класса закрыт.
  • Объявление класса (Например, объявление класса Cat) обычно размещается в заголовочном файле модуля (cat.h) и называется интерфейсом класса, поскольку оно сообщает пользователю, как взаимодействовать с классом.
  • Определения методов класса (Например, определения методов класса Cat) обычно размещается в файле реализации модуля (cat.cpp) и называется реализацией класса.
  • Заголовочный файл модуля подключают в файл реализации модуля с помощью директивы #include (Например, #include "cat.h“). См. пример1.
  • Файл реализации класса (Например, файл cat.cpp) всегда нужно добавлять в проект программы, которая является клиентом класса.
  • В программу - клиент необходимо включать интерфейс класса (Например, #include "cat.h“).) .

25.11.2016

11

Конструкторы и деструкторы