среда, 16 апреля 2014 г.

Классы



1.Объекты и классы

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

Компоненты объекта:
  • члены-данные 
  • члены-функции

Под классом понимается множество объектов, связанных общностью структуры и поведения. Таким образом, класс можно сравнить с шаблоном, по которому создаются объекты.


В С++ класс – это структурированный тип, включающий в себя в качестве элементов типизированные данные и функции, применяемые по отношению к этим данным




Например, можно объявить класс четырехугольников:
  


 Имя класса   FourAngel

Члены-данные

  • координаты вершин,
  • стороны,
  • периметр,
  • площадь.
 Члены-функции:

  • метод ввода координат вершин,
  • расчет длин сторон,
  • расчет площади,
  • расчет периметра. 

Затем в том же файле (или в другом) производится описание объявленных функций – членов класса.

Так как прототипы всех методов уже указаны в определении класса, то порядок описания членов-функций может быть любой. Члены-функции могут вызывать друг друга и обращаться к любым членам-данным этого класса.
На рис.: член-функция Init класса FourAngel вводит члены-данные x1, y1, x2… этого класса:


В отличие от определения обычной функции здесь имеются спецификации принадлежности к определенному кассу с использованием операции разрешения области видимости (::)

В функции main описываются конкретные экземпляры класса  (объекты) и сама программа получается очень компактной:

 


Здесь
         Созданы три объекта –четырехугольника f1,f2,f3, на них автоматически будет выделена память.
         Поля (координаты) объектов f1,f2 определены с помощью вызова функции Init() для этих объектов;
         Рассчитаны длины сторон первого четырехугольника.
         Рассчитана площадь первого четырехугольника.

Обратите внимание на особенности вызова:

  •  функций-членов типа void (вызов отдельным оператором)
  •   функций-членов других типов (в операторах вывода на экран и  в арифметических операциях ). Например, можно написать:
S= f1.Ploshad()+ f2.Ploshad()

2. Инкапсуляция

  Инкапсуляция – комбинирование и сокрытие внутри объекта данных и функций, которые их обрабатывают.
Инкапсуляция позволяет разработчику в силу различных причин скрыть от пользователя детали реализации объекта и самому в то же время делать меньше ошибок, так как доступ к членам - данным объектов обычно имеют лишь функции класса.

В С++ используются три спецификатора доступа:
         Private (сокрытый)   - Доступ извне запрещен
         Public (общедоступный)    - Доступ извне разрешен
         Protected (защищенный)  - Доступ разрешен только наследникам

Один и тот же спецификатор доступа может появляться при описании класса несколько раз.
В описанном нами примере класса все поля являются скрытыми (при попытке обращения –ошибка), а все методы –доступными извне (можно вызывать).


Для доступа к значениям скрытых полей используется следующий прием:

3.Конструкторы

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

Основные отличия конструктора от методов класса:
         Имя конструктора совпадает с именем класса;
         Конструктор не может иметь возвращаемого значения.

Можно определить несколько конструкторов с разным количеством параметров. Это позволит по-разному задавать значения полей создающихся объектов- экземпляров класса. 
 

 

4. Наследование

        Наследование -возможность использования уже введенных объектов для создания других объектов. Каждый из потомков наследует определение данных и методов своего “родителя”- базового класса.

Общий вид определения класса-потомка:
Class Имя_потомка : ключ_доступа Имя_базового_ класса
{
    Дополнительные поля данных;
    Дополнительные методы;
};
Пример определения наследника:


В классе-потомке Stud определяются дополнительные данные:
  •        члены класса массивы grupp и ozenki; 
  •        конструктор и дополнительная член-функция SrBall, 
  •        переопределяется функция Show. 
 После этого можно описать члены-функции класса-родителя и класса-наследника (с указанием имен классов):

Далее в программе можно создавать экземпляры объекта-родителя Chel –объект а и объекта-наследника Stud –объект с:





5. Общие сведения о библиотеке MFC


MFC  -это базовый набор (библиотека) классов, написанных на языке С++ для упрощения процесса программирования для Windows.
Библиотека содержит многоуровневую иерархию классов, насчитывающую около 200 членов. Они дают возможность создавать Windows-приложения на базе объектно-ориентированного подхода.

Преимущества работы с MFC:

  • Упрощение и уменьшение длины программного кода
  •   Возможность многократного использования одного и того же кода. Так как библиотека содержит много элементов, общих для всех Windows-приложений, которые можно наследовать.
  • Упрощение взаимодействия с прикладным программным интерфейсом (API) Windows. Любое приложение взаимодействует с Windows через API, который содержит несколько сот функций.
  •  С каждым MFC-приложением связывается определяющий его на верхнем уровне объект-приложение theApp, принадлежащий классу, производному от CWinApp.
  • Объект-приложение theApp –это то, что Windows запускает при старте программы.
  •  Разработка приложения состоит в том, что программист берет из библиотеки MFC классы CWinApp, CFrameWnd, CDocument, CView и т.д. и строит производные классы. Приложение создается как совокупность объектов этих производных классов. Каждый объект несет в себе как наследуемые черты, определяемые базовыми классами, так и новые черты, добавленные программистом.





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

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