WikiDer > Файл реализации класса
В объектно-ориентированного программирования, а файл реализации класса часто используется, чтобы содержать код реализации для метод (ы) из класс. Этот файл также называют исходный файл.[нужна цитата] Такие языки программирования, как C и C ++, используют эти файлы реализации, чтобы отделить интерфейс и реализацию этих методов.[1]
Мотивация
Используя эту структуру, определение класса файл, содержащий объявление класса и его членов, также создается. Если определение класса было включено и файл реализации для его методов доступен, пользователь может создать экземпляр ан объект класса. Цель этой структуры - скрыть код реализации, но позволить пользователю просматривать дизайн.[2][3]
Пользователи используют общедоступный интерфейс объект чтобы максимально упростить создание объектов, гарантируя, что клиентский код не отвлекает пользователя ненужными деталями реализации класса.[4]Это позволяет пользователю получить информацию, необходимую для эффективного использования класса, но не дает ему повредить скомпилированный код.[5]
Структура файла реализации класса
Файл реализации используется в Программирование на C ++ при создании определение класса чтобы отделить интерфейс от реализации. В заголовочный файл объявил бы все функции-члены (методы) и методы данных (поля), которые есть в классе.[6][7][8]
Файл реализации будет содержать фактическое определение или исходный код методов, объявленных в заголовочный файл. Этот файл может начинаться с блока заголовка, который содержит комментарии, описывающие цель определенного класса и любые подробности о создании фактического файла, такие как автор файла и дата создания файла.[9]Он также может включать любые библиотеки из Стандартная библиотека C ++ который будет использоваться любым из объявленных в файле методов. В файл реализации класса обычно будет строка для включения связанного файла заголовка (см. примеры ниже).
Пример на C ++
Примером может быть класс с именем ExampleClass
. Заголовочный файл этого файла C ++ будет называться «example_class.h», а файл реализации - «example_class.cc».[10][11]
Пример структуры example_class.cc будет выглядеть так:
#включают "example_class.h"ExampleClass::ExampleClass() = по умолчанию;пустота ExampleClass::Добавить что - нибудь(int k) { ...}
В этом примере реализация функций опущена, но функции должны быть объявлены в example_class.h как это:[12]
#включают <string>класс ExampleClass { общественный: ExampleClass(); // Конструктор. пустота Добавить что - нибудь(int k); частный: стандартное::строка имя_; };
Пример в Objective-C
Другой пример того, как будет структурирован файл реализации класса, можно увидеть с Цель-C, который используется в iOS программирование.[13]В этом примере будет использоваться ExampleClass. Заметная разница между C ++ и Цель-C при использовании этих файлов реализации в конце файлов используются расширения. В C ++ это будет .cpp[14]И в Цель-C это будет .m,[15]но оба будут использовать одно и то же .час расширение для их заголовочный файл (ы)[16][17]как показано в примере ниже.
Это пример ExampleClass.h в Цель-C:
#import @интерфейс ExampleClass : NSObject { // объявления переменных экземпляра идут сюда}- (NSString*) имя;@конец
Это пример файл реализации класса Exampleclass.m в Цель-C:
#import "ExampleClass.h"@реализация ExampleClass- (NSString*) имя { вернуть @"…";}@конец
Смотрите также
использованная литература
- ^ Алан Гриффитс (2005). «Разделение интерфейса и реализации на C ++». http://accu.org/index.php/journals/: ACCU. Получено 2013-05-07.
- ^ Алан Гриффитс (2005). «Разделение интерфейса и реализации на C ++». http://accu.org/index.php/journals/: ACCU. Получено 2013-05-07.
- ^ Нойберг, Мэтт (26 мая 2011 г.). «Глава 4.3. Заголовочный файл и файл реализации». Программирование iOS 4. O’Reilly Media, Inc. ISBN 978-1-4493-8843-0.CS1 maint: ref = harv (ссылка на сайт)
- ^ Алан Гриффитс (2005). «Разделение интерфейса и реализации на C ++». http://accu.org/index.php/journals/: ACCU. Получено 2013-05-07.
- ^ "Что можно и чего нельзя делать в C ++". https://www.chromium.org/developers/coding-style/cpp-dos-and-donts: Проекты Chromium. Получено 2013-05-07.
- ^ «Введение в классы C ++». http://pages.cs.wisc.edu/~hasti/cs368/CppTutorial/NOTES/. Получено 2013-05-07.CS1 maint: location (ссылка на сайт)
- ^ Алан Гриффитс (2005). «Разделение интерфейса и реализации на C ++». http://accu.org/index.php/journals/: ACCU. Получено 2013-05-07.
- ^ Фебил Чако Таникал (2009). «Как определить класс шаблона в файле .h и реализовать его в файле .cpp». http://www.codeproject.com/Articles/48575/How-to-define-a-template-class-in-a-h-file-and-imp: Проект кода. Получено 2013-05-07.CS1 maint: location (ссылка на сайт)
- ^ «Файл реализации в программировании на C ++». http://www.itechtalk.com/: ITechTalk. Получено 2013-05-07.
- ^ «Введение в классы C ++». http://pages.cs.wisc.edu/~hasti/cs368/CppTutorial/NOTES/CLASSES-INTRO.html. Получено 2013-05-07.CS1 maint: location (ссылка на сайт)
- ^ Нойберг, Мэтт (26 мая 2011 г.). «Глава 4.3. Заголовочный файл и файл реализации». Программирование iOS 4. O’Reilly Media, Inc. ISBN 978-1-4493-8843-0.CS1 maint: ref = harv (ссылка на сайт)
- ^ «Введение в классы C ++». http://pages.cs.wisc.edu/~hasti/cs368/CppTutorial/NOTES/CLASSES-INTRO.html. Получено 2013-05-07.CS1 maint: location (ссылка на сайт)
- ^ Нойберг, Мэтт (26 мая 2011 г.). «Глава 4.3. Заголовочный файл и файл реализации». Программирование iOS 4. O’Reilly Media, Inc. ISBN 978-1-4493-8843-0.CS1 maint: ref = harv (ссылка на сайт)
- ^ «Введение в классы C ++». http://pages.cs.wisc.edu/~hasti/cs368/CppTutorial/NOTES/. Получено 2013-05-07.CS1 maint: location (ссылка на сайт)
- ^ Нойберг, Мэтт (26 мая 2011 г.). «Глава 4.3. Заголовочный файл и файл реализации». Программирование iOS 4. O’Reilly Media, Inc. ISBN 978-1-4493-8843-0.CS1 maint: ref = harv (ссылка на сайт)
- ^ «Введение в классы C ++». http://pages.cs.wisc.edu/~hasti/cs368/CppTutorial/NOTES/. Получено 2013-05-07.CS1 maint: location (ссылка на сайт)
- ^ Нойберг, Мэтт (26 мая 2011 г.). «Глава 4.3. Заголовочный файл и файл реализации». Программирование iOS 4. O’Reilly Media, Inc. ISBN 978-1-4493-8843-0.CS1 maint: ref = harv (ссылка на сайт)