-
Синтаксис объявления класса в С++: ключевое слово 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
Конструкторы и деструкторы