|
Программирование >> Элементы языков с и с++
Классы Существуют разработчики классов и пользователи классов (разработчики приложений): если разработчик создает классы, то пользователь манипулирует классами и экземплярами классов. Класс - это обыкновенный тип. Если вы программист, то всегда имеете дело с типами и экземплярами, даже если и не используете эту терминологию. Па-пример, вы создаете различные переменные типа int. Можно сказать, что вы фактически создаете различные экземпляры переменных этого типа. Классы обычно более сложны, чем простые типы данных, но они работают тем же способом. Создавая переменные типа заданного класса, вы создаете кземп-ляры этого класса, а назначая различные значения экземплярам того же типа (как и переменным типа int), вы можете выполнять разные задачи. Поэтому наша цель - научиться пользоваться классами для написания приложений, а создание самих классов оставить их разработчикам. Класс- это собрание связанной информации, которая включает в себя и данные, и функции (программы для работы с данными). Эти функции в классах называются методами. Класс - это дальнейшее развитие структур; в них тоже объединяются данные разных типов. Это такой же шаблон, под который (как и под структуру) память выделяется только тогда, когда мы создаем переменную типа этого шаблона . Вспомним, что если у нас была некая структура А, то чтобы работать с ней, мы создавали экземпляр этой структуры а путем объявления да;, а затем уже работали с экземпляром а. Можно сказать, что мы объявляли переменную а типа А. Точно так же поступают и для класса: если есть класс а (шаблон, под него память не выделяется), то объявляют переменную а типа а путем объявления А а;, после чего можно работать уже как бы с самим классом, а на са%юм деле-с его экземпляром а. Как и при использовании структур, к членам класса (данным и методам) можно обращаться по тем же правилам; если объяв- В-третьих, имеется возможность многократного использования элемента (как и когда-то многократное использование библиотеки стандартных программ). В-четвертых, обеспечивается легкая сменяемость элементов в общей программе (в приложении): если такой элемент выходит из строя, его можно легко заменить аналогичным элементом, не разрушая всю задачу. Итак, ООП основано на использовании классов. Использование классов - это основное отличие языка С++ от языка С. Принципы построения классов Основные принципы построения классов это - инкапсуляция, наследование и полиморфизм. Инкапсуляция Инкапсуляция - это принцип объединения в единой конструкции и данных, и программ, обрабатывающих эти данные. В терминологии ООП данные называются членами-данными, а программы, их обрабатывающие (эти программы построены в виде функций), - членами-функциями, или методами. лено а а;, то обращение к члену класса с именем аа будет записываться как а.аа, а если был объявлен указатель на класс (например, как а *а;), то обращение к члену класса с именем аа будет записываться как а->аа. Класс - это конструкция, параметрически определяющая некоторую категорию объектов. Например, может быть класс компьютеров, который объединяет в себе компьютеры разных марок, разных возможностей. Может быть класс столов: столы письменные, обеденные и т. п. Класс столов может делиться на подклассы: столы письменные, которые, в свою очередь, могут делиться на столы письменные дубовые и столы письменные древесноволокнистые и т. д. Мы видим, что классы могут принадлежать некой иерархии классов. В каждом классе определены характеристики тех объектов, которые образуют этот класс. В классе также задаются программы, называемые методами, которые обрабатывают характеристики объектов, принадлежащих данному классу. Поведение объекта в реальном мире определяется его характеристиками. Изменяя значение характеристик, мы получим разное поведение объектов. Когда мы создаем экземпляр класса и определяем значения его конкретных характеристик, то получаем конкретный объект. В составе класса существует специальный метод (т. е. программа-функция), который формирует экземпляр класса. Этот метод носит название конструктора. В противоположность конструктору, существует программа-деструктор, которая уничтожает экземпляр класса в памяти, освобождает память, которая может использоваться для других программных целей. А если вспомнить, что память- величина не беспредельная, то становится гю-нятной и роль деструктора. Такой подход позволяет максимально изолировать объект, получаемый из класса, от внешнего воздействия, что приводит к высокой надежности программ, использующих объекты. С другой стороны, классы используются так, как ранее использовались стандартные программы, только с еще большей эффективностью в самых разных приложениях, что значительно повышает производительность труда программиста. При добавлении новых характеристик классам программы, ранее использовавшие объекты, построенные из них, остаются без изменений. В VC++ введено понятие компонентов - специальных классов, в которых объекты определяются такими характеристиками, как свойства, события и методы. Причем, в отличие от работы с обычными классами, при работе в VC-H- возможно манипулировать видом и функциональным поведением компонентов и на стадии проектирования приложения, и в момент его выполнения. Например, в VC++ существует компонент форма (класс Form) и компонент кнопка (класс Button), у которых есть свои свойства, методы и собьпия. Если при проектировании приложения в форму поместить две кнопки, то с помощью определения двух разных значений свойствам кнопок Text (название кнопки) и visible (значения false и true определяют видимость кнопки при исполнении приложения) вы получаете два экземпляра, которые ведут себя по-разному: первая кнопка при выполнении программы будет невидима в форме, а вторая останется видимой. При помощи события компонент сообщает пользователю, что на него произведено определенное воздействие (например, для компонента кнопка событием может быть нажатие кнопки - щелчок кнопкой мыши), а методы служат для обработки реакции компонента на события. Наследование Наследование - второй принцип построения классов. Мы видели, что классы, в общем случае, могут составлять иерархию: один класс получается из другого, на основании другого получается третий и т. д. То есть речь идет о том, что и в классах существуют родители и дети, бабушки с дедушками, их внуки и т. д. Наследование предполагает, что все характеристики класса-родителя присваиваются классу-потомку. После этого потомку при необходимости добавляют новые характеристики. Иногда некоторые методы в классе-потомке, полученном от предков, переопределяются, т. е. наполняются новым содержанием. Наследование используется не только при разработке классов, но и при проектировании приложения. Например, в VC++ есть класс Label (метка). Если
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |