В.А. Биллиг
Основы программирования на С#
М.: Интернет-университет информационных технологий; БИНОМ. Лаборатория знаний, 2006. 483 с.: ил.

Весьма серьезным вопросом для преподавателя, решающего, с чего начинать обучение программированию, является выбор языка программирования. На одной из конференций, посвященных проблемам построения вузовского образования с учетом интересов бизнеса, пришлось услышать основанное на собственном опыте мнение профессора В.А. Биллига по данному поводу, высказанное в докладе, который так и назывался — «Первый язык программирования». При этом, считая целью обучения получение реальной возможности создания современных программных систем, он полагал, что для этого необходимы знания по технологии разработки и применяемым инструментам, по языку программирования, адекватному применяемым технологиям, по среде разработки, фактически расширяющей возможности языка, и по образцам разработки. Свой выбор В.А. Биллиг сделал в пользу языка программирования С#.

Написанный им учебный курс «Основы программирования на С#» выпущен совместно с Интернет-университетом информационных технологий (ИНТУИТ) и издательством «БИНОМ. Лаборатория знаний» в серии «Основы информационных технологий». Материал книги представлен в виде 21 лекции, и на его основе можно построить годовой курс, расширив его за счет практических работ, хотя в него и так включено множество примеров, да и весь курс зиждется на проектной основе. Отвечая на вопрос, почему интересен С#, автор книги обращает внимание на то, что это объектно-ориентированный язык программирования, следовательно, используя его, можно создавать программные системы, образующие семейства классов, включающих структуры, перечисления, интерфейсы, делегатов, события, связанные с объектами.

Автор рассматривает язык С# с азов, начиная с встроенных типов и способов организации данных, выражений и операторов языка, управляющих структур, процедур и функций, но главное внимание уделяет классам и всем частным случаям классов, введенным в языке С#. Так как для программной системы, обычно состоящей из семейства классов, важную роль играют отношения между ними, то в курсе описываются наследование и встраивание. Помимо них рассмотрены и другие отношения, например связывающие универсальный класс и его родовые порождения.

Обучение языку С# автор курса не считает самоцелью — важно овладеть объектной технологией разработки программных систем. Как отмечает В.А. Биллиг, в данном вопросе на него оказала влияние книга Б. Мейера по технологии разработки «Объектно-ориентированное конструирование программных систем», в частности, этим объясняется рассмотрение двух ролей классов: семантической, как типа данных, и архитектурной, как модуля. Также уделено внимание другим свойствам классов, жизненному циклу разработки программных систем и другим, а также иным вопросам.

Что касается среды разработки, связанной с использованием С #, то в учебном курсе рассказано о среде Visual Studio и каркасе Framework.Net, а также о классе библиотеки FCL (Framework Class Library) и динамическом компоненте каркаса CLR (Common Language Runtime), общеязыковой исполнительной среде. Описание среды разработки в курсе предшествует изложению материалов по языку, что создает предпосылки для самостоятельной работы по созданию (написанию) собственных классов. Ну а представление классов пронизывает содержание практически всего курса.

Существенная часть объема книги посвящена созданию образцов программирования. Примеры присутствуют практически в каждой главе и носят не только технический, но и содержательный характер. Это может быть сортировка Хоара, вычисление интеграла, комбинаторная задача о «Ханойской башне» и многое другое.

Последняя лекция, называемая «Финальный проект», содержит почти 30 страниц текста полноценного Windows-приложения. В нем создается семейство классов, описывающих геометрические фигуры. При этом проектирование начинается с абстрактного класса поведения, который описывает общие свойства и методы, характерные для всех фигур семейства, затем с использованием наследования создаются классы конкретных геометрических фигур, от простейших и до составных, таких как класс Person. Далее в проект добавляются динамические структуры данных, например список с курсором, предназначенный для хранения фигур семейства. Наконец, создается интерфейс, включающий меню с десятками команд и панель с инструментальными кнопками. Он служит конечному пользователю для выполнения различных действий над геометрическими фигурами.


Полный вариант статьи см. на «Мир ПК-диске».