Объектно-ориентированный подход и начало практической работы
Начнем с определений. Терминология этого документа умышленно
немного сужена с целью сформировать понимание концепции объектно-
ориентированного подхода в программировании, являющегося основным
подходом языка C++, и избежать терминологического наследства процедурных
языков, в частности C, расширением которого изначально был C++ (он даже
был назван вначале C с классами).
Все что в процедурных языках называется "переменная" в C++ с позиций
ООП правильнее называть экземплярами класса или
объектами
. Переменная -
это именованная область памяти. Объект (object) - это экземпляр (instance)
определенного класса (object class) объектов, типа.
Все объекты в C++ имеют свой
класс
или тип объектов. Класс определяет
не только данные объектов класса, но и операции, которые можно производить
с объектом. Например, класс комплексных чисел должен будет содержать для
всех своих объектов данные о действительной и мнимой составляющих, а
также операции умножения, деления, сложения, вычитания и модуля. Такие
операции называются методами класса, а данные - полями класса (также
данные-члены - data member, member variable).
Еще раз, есть типы - классы, и есть их экземрпляры - объекты.
Классы, необходимые для работы программы, создает программист, но
язык сразу предоставляет
фундаментальные типы данных
, такие как
int
,
double
,
bool
,
char
.
Объектно-ориентированный подход в программировании строится на
следующих принципах: *
Инкапсуляция
-
разделение интерфейсов
использования класса и его внтренней реализации. *
Наследование
-
возможность расширения классов путем создания классов наследников,
включающих в себя поля и методы классов предшественников, и привносящих
в них новые поля и/или методы. *
Полиморфизм
-
изменение
функциональности методов с одним и тем-же именем в зависимости от
конкретного объекта, для которого этот метод вызывается. *
Композиция
-
конструирование нового класса, состоящего из других классов.
Возвращаясь к практике, для того чтобы приступить к работе необходимо
создать новый класс, объект этого класса и начать этот объект использовать в
разрабатываемой программе.
Файл "main.cpp":
#include "example_01.h"
// В этом файле дано определение класса
int main ()
{
A a;
// Создание объекта с именем "a" класса "A".
a.print
(); // Использование объекта - вызов извне класса
//
метода print() для объекта "a".
}
Файл "example_01.h":
13
// Препроцессорная защита от повторного включения содержимого этого
файла
#ifndef EXAMPLE_01_H
#define EXAMPLE_01_H
// Заголовочный файл стандартной библиотеки для консольного вывода
#include
//
Определение класса "A"
class A
{
double x, y
; // поля класса. По умолчанию недоступны извне класса
public: //
позволяет использовать извне класса методы и поля объявленные
//
после этого модификатора доступа
// Определение метода класса print()
void print(){
// Вывод в консоль средствами стандартной библиотеки
std::cout << "Hello world!" << std::endl;
}
};
#endif // EXAMPLE_01_H
Do'stlaringiz bilan baham: |