Объектно-ориентированное программирование на управляемом C++

 

В предыдущеи главе были наложены основы программирования на управляемом C++. Учитывая ваш богатый опыт работы с C++ бьпо охвачено много материала В этой паве мы изменим темп вместо того, чтобы осваивать новый мат ерши потратим ботьше времени на углубление понимания объектно ориентированной стороны управляемого С++ в частности, абстракции и наследования Сначала мы повторим основы объектно-ориентированного программирования, потом рассмотрим пример Бюро путешествии Acme. Этот пример будет разрабатываться в последующих павах по мере изучения татформы NET Мы рассмотрим, какие абстракции подходят для того чтобы реализовать систему резервирования ресурсов, и реализуем систему резервирования (бронирования) гостиничных номеров

  • Обзор основных понятий объектно-ориентированного программирования
  • Объекты имеют значение не только в мире программ, но и в реальном мире. Объектная модель описывает взаимосвязь между объектами.
  • Классы
  • Полиморфизм Давайте рассмотрим задачу создания платежной ведомости для разных категорий служащих. Зарплата для разных категорий служащих может начисляться по-разному. Например, некоторые оплачиваемые служащие получают установленный заработок. Рабочему, получающему зарплату, заработная плата начисляется в зависимости от количества отработанных часов. Коммерческому служащему платят комиссионные, которые он зарабатывает на продажах.
  • Проект: "Бюро путешествий Acme"
  • Проектирование абстракций Поскольку на самом деле нам нужно реализовать не только систему резервирования гостиничных номеров, но и систему резервирования других ресурсов, включая резервирование авиабилетов и автомобилей напрокат, необходимо тщательно продумать механизм абстракции С одной стороны, чем больше функций мы сможем включить в базовый класс, тем меньше останется работы при реализации каждой конкретной системы резервирования. С другой стороны, если базовый класс будет содержать слишком много функций, то множество задач, для решения которых его можно применить, уменьшится При качественном проектировании необходимо определить оптимальное множество функций, включаемых в базовый класс.
  • Логика базовых классов
  • Проектирование инкапсуляции В данной реализации класса Broker (Брокер) все списки представлены в виде массивов. Поскольку такая реализация может не быть (и на самом деле не будет) сохранена в последующих версиях, мы не станем рассматривать функции работы с массивами или обращаться к элементам с помощью индексов. Мы реализуем общедоступные свойства NumberUnits и NumberReservations, чтобы обеспечить доступ для просмотра частных переменных nextUnit и nextReservat ion.
  • Наследование в управляемом C++
  • Основные принципы наследования Если вы используете механизм наследования, учитывайте все абстракции вашей объектной модели и те из них, которые можно будет повторно использовать, поместите в базовые классы как можно более высокого уровня. Добавлять и изменять свойства можно в более специализированных производных классах, которые наследуют стандартное поведение базовых. Благодаря наследованию облегчается повторное использование кода и его расширяемость. Кроме того, производный класс может содержать более подходящий для членов базового класса интерфейс.
  • Реализация примера "Бюро путешествий Acme"
  • Запуск программы примера Перед тем, как продолжить просмотр кода, неплохо было бы запустить пример. Программа TestBroker. exe представляет собой консольное приложение.
  • Класс HotelReservation
  • Класс HotelBroker Самая важная задача в примере — реализовать класс HotelBroker, который является производным от класса Broker (Брокер). Код этого класса находится в файле hotel-broker.h.
  • Класс Customers (Клиенты)
  • Пространство имен
  • Класс TestHotel Класс TestHotel, который находится в файле TestHotel .h, содержит интерактивную программу для испытания классов, связанных с резервированием гостиницы, и классов клиентов, поддерживающих описанные ранее команды. В этом классе имеется цикл, просматривающий команды, — такой цикл считывает команду и затем выполняет ее. Класс содержит большой блок try для всех команд, за которым следует обработчик исключений catch.

Новая технология .NET, предложенная компанией Microsoft

Основы технологии .NET

Программирование на управляемом C++

Управляемый C++ в .NET Framework

Создание графических пользовательских интерфейсов

Сборки и развертывание в Microsoft .NET

Курс лекций Сопротивление материалов