Visual C++ Классы для начинающих. Отделение интерфейса от реализации

Некоторые начинающие программисты периодически посещают различные сайты тематика которых — программирование. Бывает, что эти начинающие программисты видят, что код, который выложен кем-то на такой сайт разделен на части. Но вот бывает, что понять как же самому разделить код на части или как его читать не очень ясно. Речь идет о совсем зеленых юнцах-программистах, поэтому для них будем разбирать эту тему.

Для начала будем разбирать один из максимально простых примеров.

  • Создать метод класса, с помощью которого вывести сообщение приветствия на экран. При создании класса отделить интерфейс от реализации.

Звучит, вроде, совсем не страшно. Чем-то напоминает HelloWorld.

Чтобы решить такую задачу, я буду использовать VisualStudio Express 2012 (Вы можете что-то свое), но сразу предупреждаю, что в Borland C++ 3.1 (dos) у меня не получилось написать рабочий код. Поэтому я использую именно Visual Studio 2012 Express

  • 1. Должна быть точка вызова функции main
  • 2. Внутри функции main будет вызываться метод создаваемого класса
  • 3. Класс будет поделен на 2 части. Каждая из частей — отдельный файл

    • — Интерфейс
      — Реализация

Я предполагаю, что основное окно для написания кода у вас уже открыто, поэтому начнем с того, что создадим 2 пустых файла.
Первый файл создадим в заголовочных файлах и назовем его MyHeadFile.h (Мой заголовочный файл)
Второй файл создадим в файлах исходного кода и назовем его MyRealisation.cpp (Моя реализация)

Что это за файлы и зачем они нужны? Один из файлов будет содержать интерфейс класса, второй реализацию этого класса. Дальше по коду вы увидите, что это обозначает. В заголовочном файле описывают интерфейс класса.

  • Интерфейс класса в заголовочном файле MyHead.h

Можно сказать, что класс, который описан, но у которого не описано поведение функций — это интерфейс класса.
Вопрос тут явно возникнет другой.

Что это такое? Это конструкция, которая предотвращает многократное включение заголовочного файла (в моем примере MyHeadFile.h)
По негласному соглашению в этой конструкции в имени файла вместо точки используется подчеркивание.

Надеюсь более менее ясно и вопрос по описанию интерфейса и вопрос того, что такое тот интерфейс как-то сам собой отпал. Поэтому приступаем ко второй части деления класса на части. «Да я этот класс порву на флаг Британский, сказал студент своему монитору..»

Реализацию нужно описывать в другом файле. Я этот другой файл подготовил еще вначале (выше по тексту). Называется этот файл MyRealisation.cpp. Вот в этот файл и записываем поведение функций того класса, который был записан в заголовочный файл.

Вот это вся реализация, которая нужна для вывода одного сообщения. Если присмотреться, то чем-то напоминает написание программы HelloWorld, но это не суть. Главное то, что здесь только описывается поведение функций из нужного нам класса. При этом сам интерфейс класса описан в подключенном заголовочном файле. Поэтому void::MyClass::show() не вызывает ошибок.

Теперь дело за малым. Остается создать объект класса MyClass и вызвать для него метод show() . Вызов будет происходить из главной функции программы. Что такое главное функция, надеюсь объяснять не нужно. Логично что так или иначе, вызов чего-то должен начинаться с начала выполнения главной функции.

Вот и весь пример. Безусловно этот пример очень примитивен и всех ответов сразу не даст. Но зато благодаря своей простоте он может помочь в начинании понимания всей этой темы по отделению интерфейсов от реализации.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

4 комментария: Visual C++ Классы для начинающих. Отделение интерфейса от реализации

  • Lilu говорит:

    Огромное спасибо, все предельно понятно

  • Никита говорит:

    Спасибо, а то понять не мог раньше)

     

  • Никита говорит:

    Небольная ошибка, вместо:

    нужно:

    А то компилятор ругается, а так спасибо, все хорошо объяснено)

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     
Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор программирование на языке ада

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок