ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 6) онлайн

Зачем нужны классы?

Теперь, когда вы имеете представление о классах и объектах, вас, наверное, ин- тересует ответ на вопрос, какова выгода от их использования, тем более что на наших примерах мы убеждались: для выполнения определенных действий про- грамме не обязательно использовать классы — идентичные действия выполня- лись при помощи процедурного подхода.

Первым достоинством объектно-ориентированного программирования явля- ется то, что оно обеспечивает значительное сходство между объектами реально- го мира, моделируемыми программой, и объектами классов C++. Мы видели, как объекты классов представляли такие реально существующие вещи, как <...>, игральные карты, геометрические фигуры и т. д. Вся информация, касающаяся <...> вообще, описана при создании класса; там же описаны и все методы, то есть действия, которые можно производить с этой информацией. Это облегчает концептуализацию решаемой задачи. Вы выделяете в задаче те элементы, кото- рые целесообразно представлять в виде объектов, а затем помещаете все данные и функции, связанные с этим объектом, внутрь самого объекта. Если объект представляет игральную карту, то с помощью описания класса вы наделяете объект полями для хранения достоинства карты, ее масти, а также функциями,

выполняющими действия по заданию этих величин, их изменению, выводу на экран, сравнению с заданными значениями и т. д.

В процедурной программе, напротив, моделирование объектов реального мира возлагается на глобальные переменные и функции. Они не способны вместе об- разовать легко воспринимаемую модель.

Иногда при решении задачи бывает не столь очевидно, какие элементы реаль- ного мира следует представить в качестве объектов. Например, если вы пишете компьютерный вариант игры в шахматы, то что нужно представить в качестве объекта:  шахматистов, клетки шахматной доски или игровую позицию целиком?

Небольшие программы, такие, какими являются большинство наших примеров, можно создавать методом «проб и ошибок». Можно представить задачу в виде объектов каким-либо одним способом и написать определения классов для этих объектов. Если такое представление устроит вас, то вы можете продолжить раз- работку созданных классов. В противном случае следует выбрать другой способ представления задачи в виде совокупности объектов и повторить операцию созда- ния классов. Чем больше опыта вы наберете, создавая объектно-ориентированные программы, тем проще вам будет представлять новые задачи в терминах ООП.

При создании больших программ метод проб и ошибок оказывается мало- применимым. Для анализа поставленной задачи и создания классов и объектов, подходящих для ее решения, используется объектно-ориентированная разработ- ка (OOP). Мы обсудим объектно-ориентированную разработку в главе 16, кото- рая целиком посвящена аспектам ее применения.

Некоторые преимущества объектно-ориентированного программирования не столь очевидны. Вспомните о том, что ООП было создано, чтобы бороться со сложностью больших программ. Программы небольшого размера, подобные соз- данным нами, в меньшей степени нуждаются в объектно-ориентированной органи- зации. Чем больше программа, тем ощутимей эффект от использования ООП. Но даже для программ маленького размера применение объектно-ориентиро- ванного подхода способно принести определенную выгоду: например, по срав- нению с процедурными программами увеличивается эффективность компиля- тора при поиске и выявлении ошибок концептуального уровня.

 

29