суббота, 5 декабря 2009 г.

6.1. Введение

Теперь мы начнем знакомиться с объектной ориентацией в С++. Почему мы отложили объектно-ориентированное программирование (ООП) на С++ до главы 6? Дело в том, что объекты, которые мы будем строить, будут составлены частично из структурированных фрагментов программ, так что сначала нам нужно было определить основы структурного программирования.
В разделах «Размышления об объектах» в конце глав с 1 по 5 мы по­знакомились с основными принципами (т.е. с «объектным мышлением») и с терминологией (т.е. с «объектным языком») объектно-ориентированного программирования на С++. В этих специальных разделах мы также обсудили технику объектно-ориентированного проектирования: мы проанализировали типичную постановку задачи, которая требовала построения системы (напри­мер, модели лифта), определили, какие объекты необходимы для реализации системы, определили, какие атрибуты должны иметь объекты, определили, какими вариантами поведения должны обладать эти объекты, и указали, как объекты должны взаимодействовать друг с другом для достижения гло­бальной цели системы.
Давайте проведем краткий обзор некоторых ключевых принципов и тер­минологии объектной ориентации. ООП инкапсулирует данные (атрибуты) и функции (варианты поведения) в совокупности, называемые объектами; данные и функции объекта тесно связаны друг с другом. Объекты обладают свойством скрытия информации. Это значит, что хотя объекты могут знать, как связываться друг с другом посредством хорошо определенного интер­фейса, им обычно не позволено знать, как реализуются другие объекты — детали реализации спрятаны внутри самих объектов. Несомненно, можно ездить на автомобиле, не зная технических деталей его внутреннего функ­ционирования — трансмиссии, выхлопной трубы и др. Мы увидим, почему скрытие информации так важно для разработки хорошего программного обес­печения.
В С и других процедурно-ориентированных языках программирование стремится быть ориентированным на действия, тогда как в идеале програм­мирование на С++ объектно-ориентированное. В С единицей программиро­вания является функция. В С++ единицей программирования является класс, на основе которого в конечном счете создаются объекты.
Программисты на С основное внимание уделяют написанию функций. Группы действий, выполняющие некоторую задачу, объединяются в функ­ции, а функции группируются, чтобы образовать программу. Данные несо­мненно важны в С, но современная точка зрения состоит в том, что данные существуют в первую очередь для поддержки действий, выполняемых функ­циями. Глаголы в описании проектируемой системы помогают программисту на С определить множество функций, которые будут совместно работать для реализации системы.
Программисты на С++ основное внимание уделяют созданию своих соб­ственных определяемых пользователем типов, называемых классами. Клас­сы — это типы, определяемые программистом. Каждый класс содержит дан­ные и набор функций, манипулирующих с этими данными. Компоненты-данные класса называются данными-элементами. Компоненты- функции класса называются функциями-элементами. Подобно тому как сущ­ность встроенного типа, такого, как int, называется переменной, сущность определяемого пользователем типа (т.е. класса) называется объектом. Цент­ром внимания в С++ являются не функции, а объекты. Имена существи­тельные в описании проектируемой системы помогают программисту на С++ определить множество классов. Эти классы используются для создания объ­ектов, которые будут совместно работать для реализации системы.
Классы в С++ являются естественным продолжением структуры struct в С. Прежде чем рассматривать специфику разработки классов на С++, мы обсудим структуры и построим определенный пользователем тип, основанный на структуре. Слабости, которые мы выявим в этом подходе, помогут объ­яснить запись класса.

Комментариев нет:

Отправить комментарий