334 __ ________________________Часть II. Программирование на C++
переменных, а функциональной — посредством функций. Совокупность этих аспектов образует классы.
Объявления функций в классах ничем не отличаются от объявлений вне классов: возвращаемый тип, за ним следует имя функции, список аргументов и завершается вся эта конструкция точкой запятой. То есть
Class INT
{
int j; // простое целое данное-член int GetJ(); // функция-член, иногда называемая методом } •
определяет класс INT с одним данным-членом j и одной функцией-членом GetJ(), возвращающей целочисленное значение. Функции-члены классов иногда называются методами (methods).
Замечание
Пусть вас не путает изобилие синонимов. Человеческой природе свойственно постигать новое, опираясь на уже известное, выискивая в новых концепциях эквиваленты и аналоги знакомых понятий.
Термин "метод" произошел из другого объектно-ориентированного языка — SmallTalk. В этом языке все является объектами, а все функции называются методами. Заимствование этого термина, вероятно, объясняется чьими-то усилиями сделать понятнее идею функций-членов классов.
При разработке классов первым делом следует выявить те данные и функции, которые наиболее полно выражают вашу концепцию.
Сравнение классов и структур
У классов и структур много общего. Структуры пришли из мира структурного программирования С. Классы вводят вас в новый, объектно-ориентированный мир. C++ является надмножеством языка С, так что структуры сохранены в C++ для обеспечения обратной совместимости.
Итак, мы переходим от структурного программирования к объектно-ориентированному, но структуры еще долго будут встречаться вам, как в старых, так и в новых программах. В частности, это обусловлено консерватизмом некоторых программистов, продолжающих сохранять верность С, а также тем, что некоторые сторонники C++ для конструкций, содержащих данные без функций, предпочитают использовать структуры, а не классы.
В синтаксисе классов и структур много общего; мы рассмотрим как сходства, так и различия. Пусть ни то, ни другое не будет вам чуждо, но все-таки вот вам совет: используйте классы всегда, даже для представления наборов данных, не содержащих функций.