В соответствии с новым федеральным государственным образовательным стандартом высшего образования программа бакалавриата должна быть ориентирована на формирование целого комплекса профессиональных компетенций (далее ПК) и по направлению обучения «Прикладная информатика» (от 12.03.2015) в перечень ПК входит «способность программировать приложения и создавать программные прототипы решения прикладных задач» [1]. В связи с этим разделы, посвященные изучению программирования, являются важной, неотъемлемой частью подготовки бакалавров по данному направлению обучения. Новый компетентностный подход провозглашает основой содержания образования не просто знания, а более сложную культурно-дидактическую единицу — целостную компетентность, что является результатом интеграции знаний, существует в форме деятельности и позволяет решать целый класс задач в отличие от функциональной грамотности. Поэтому на сегодняшний день познание каждой из основных парадигм программирования: процедурной, объектно-ориентированной, логической или функциональной, должно давать цельную форму сочетания знаний, умений, навыков, которая позволит справиться с профессиональными задачами в области прикладной информатики. Особенно актуален объектно-ориентированный подход, который сейчас позиционируется как унифицирующая идея всей науки, применимая не только в программировании. Ориентация на объекты позволяет справиться со сложностью систем самой различной природы, и поэтому в настоящее время данная методология является наиболее востребованной при разработке программных продуктов. Аппаратно-программные комплексы и технологии развиваются быстрыми темпами, и чтобы обеспечить студентам — выпускникам соответствующий уровень владения профессиональными компетенциями в сфере прикладной информатики, требуется постоянно пересматривать, дополнять и модернизировать существующие подходы обучения объектно-ориентированной парадигме программирования.
Концепт «парадигма программирования», сформулированный Робертом Флойдом в 1978 году, имеет несколько трактовок и в общем случае это есть система идей и понятий, которая определяет подход к программированию. Рассматривая любую парадигму программирования, необходимо отталкиваться от таких основ, как методология и технология программирования. Методология программирования определяет систему общетеоретических взглядов, посредством которой формируется совокупность методов, способов и приемов разработки, сопровождения и эксплуатации программ, т. е. технология программирования. Анализ научно-методических исследований основ объектно-ориентированной парадигмы программирования (Г. Буч, Б. Мейер, Т. Бадд, Аржанов Н.И, Бабушкина И. А., Барков И. А., Петров А. Н. и др.) позволяет выделить два основных подхода: освоение методологии и овладение технологией объектно-ориентированного программирования (далее ООП) (рис. 1.).
Рис. 1. Подходы к обучению объектно-ориентированной парадигме программирования
В основе обучения бакалавра направления «Прикладная информатика» находятся фундаментальные знания, которые являются универсальными и общетеоретическими, ориентированы на раскрытие сущностных понятий, выявляют и определяют многообразие внутренних и внешних связей с процессами окружающего мира. На практике фундаментальность реализуется в качестве обучения основным понятиям, законам, методам, которые формируют содержание предметной области. Теоретической основой объектно-ориентированного подхода в программировании являются метафоры объекта и класса, которые реализуются в понятиях абстракций реальной действительности. Так, например, в трактовке известного специалиста в области ООП Гради Буча «объект — это мыслимая или реальная сущность, обладающая характерным поведением и отличительными характеристиками и являющаяся важной в предметной области», «класс — это некое множество объектов, имеющих общую структуру и общее поведение» [2 c. 46, с. 85]. Изучение определений объекта и класса, как фундаментальных основ объектно-ориентированной методологии, дополняется такими понятиями, как свойства, состояние, поведение, индивидуальность объекта, реализация класса, отношения между классами, объектами. Кроме того, рассмотрение принципов абстрагирования, инкапсуляции, модульности, наследования и др. формирует целостное представление о возможностях и способах объектной декомпозиции.
Именно овладение бакалавром направления «Прикладной информатики» фундаментальными положениями, на которых базируется любой объектно-ориентированный язык программирования, будет являться основой для разработки качественного программного обеспечения. Но, как правило, одних теоретических знаний не бывает достаточно. Объектно-ориентированный программный код объемен, сложен и большая его часть может быть получена в результате автоматической генерации, поэтому наглядно проанализировать объектную декомпозицию задачи на его основе, т. е. имитацию процессов, происходящих в предметной области задачи в виде взаимодействующих объектов, трудно.
Абстрагироваться от используемого языка программирования и сконцентрироваться на объектной структуризации задачи позволяет метод объектно-ориентированного проектирования. Обучение ООП на основе объектно-ориентированного проектирования изучается во многих отечественных и зарубежных работах (Буч Г., Бадд Т., Аржанов И.Н, Петров А. Н. и др.). Некоторые авторы отдельно выделяют объектно-ориентированный анализ, основными задачами которого являются: выявление объектов и их свойств; формирование перечня операций, выполняемых над каждым объектом; определение связи между объектами для образования классов; формулировка требований к интерфейсу с объектами. Модели, полученные в результате объектно-ориентированного анализа, являются основой для объектно-ориентированного проектирования: разработка структуры классов, описывающей связь между классами и объектами; описание взаимосвязи с другими объектами; разработка внутренней структуры программного продукта. Документирование результатов объектно-ориентированного анализа и проектирования выполняется с помощью средств унифицированного языка моделирования (UML — Unified Modeling Language), который по сути является открытым стандартом графических обозначений абстрактных моделей (диаграмм), и с помощью технологий автоматизации проектирования программных продуктов — CASE — средств, выполняющих генерацию программного кода на основе диаграмм языка моделирования (рис. 2, рис. 3).
Таким образом, содержательная часть обучения бакалавра направления «Прикладная информатика» при освоении методологии объектно-ориентированной парадигмы программирования — это изучение фундаментальных основ объектно-ориентированного программирования, введение в технологию анализа и проектирования программ, введение в язык системного моделирования UML и ознакомление с CASE — инструментами (табл. 1).
диаграммы вариантов использования |
диаграммы классов |
диаграммы поведения системы |
диаграммы реализации |
||||
диаграммы взаимодействия |
диаграммы состояний |
диаграмма деятельностей |
диаграммы компонентов |
диаграммы развертывания |
|||
диаграммы последовательности |
кооперативные диаграммы |
||||||
Рис. 2. Структура моделей UML
CASE-средства |
Возможности |
IBM Rational Rose |
— прямоеи обратноепроектированиенаязыках: Ada, ANSI C++, C++, CORBA, Java, Java EE, Visual C++ и Visual Basic; — — возможностьгенерациисхембазданных Oracle и SQL и поддержкатехнологий COM, DDL, XML; — поддерживает спецификации UML 2. |
Sparx Systems Enterprise Architect |
— генерирование и обратное проектирование на более чем 10 языках программирования (C и C++, C#, Java, ObjectPascal, PHP); — поддерживает спецификации UML 2.4.1; — поддерживает моделирование схем баз данных и автоматическое генерирование скриптов DDL. |
Sybase® PowerDesigner |
— генерирование и обратное проектирование на языках: С#, C++, Java, PowerBuilder, VisualBasic; — поддерживает спецификации UML 2; — возможность генерации схем баз данных и поддержка технологий DDL, XML. |
Рис. 3. Обзор CASE-средств, реализующих объектный подход
Таблица 1
Содержание обучения методологии ООП
Задачи освоения методологии ООП |
Система понятий |
Содержание учебного материала |
Овладение техникой ивведение впроблематику |
Изучение фундаментальных основ ООП |
Объект, класс, абстрагирование, инкапсуляция, наследование, полиморфизм |
Понятие объекта, состояние, поведение, индивидуальность объекта, отношения между объектами. Класс и его реализация, отношения между классами. Концепции абстрагирования, инкапсуляции, наследования, полиморфизма |
Формирование объектного мышления |
Ознакомление с объектно-ориентированным проектированием |
Объектно-ориентированный анализ, объектные модели, объектно-ориентированное проектирование, UML диаграммы, CASE — средства. |
Среда и объект проектирования, объектные модели, объектно-ориентированные анализ и проектирование. Инструменты объектно-ориентированного анализа и проектирования. Язык UML и диаграммы вариантов использования, диаграммы классов, диаграммы деятельности, диаграммы последовательности. |
Реализация объектной декомпозиции предметной области задачи |
Обучение бакалавра направления «Прикладная информатика» технологии объектно-ориентированного программирования методически должно быть направлено на изучение конкретных приемов программирования на основе изучения объектно-ориентированных языков и реализовано с помощью инструментария какой-либо IDE-среды разработки программного обеспечения.
Многие авторы рассматривают общие подходы овладения техникой разработки объектно-ориентированного программного кода (Страуструп Б., Мейер Б. и др.) на основе реализации концепций ООП: наличие типов, определенных пользователем; скрытие деталей реализации (инкапсуляция); использование кода через наследование; разрешение интерпретации вызова функции во время выполнения программы (полиморфизм). Использование только языка программирования не будет достаточным для представления результатов техникой овладения объектно-ориентированной парадигмы программирования, а вот использование изученных возможностей для разработки отдельных частей программного кода в более сложных системах, является неоспоримым преимуществом данного подхода обучения.
Научно-методические вопросы обучения визуальному программированию рассматриваются в работах Бабушкиной И. А., Швецкого М. В., Саблуковой Н. Г., Семакина И. Г., Угриновича Н. Д. и др. Основной акцент в данном подходе обучения делается на возможностях использования широкого спектра готовых библиотек классов и работы с экземплярами этих классов в качестве графических компонентов программного продукта. В этих условиях основной задачей становится изучение иерархии библиотек визуальных средств и их взаимодействие друг с другом, чтобы отслеживать наследование основных свойств и методов. Построение графического интерфейса пользователя с применением средств визуального программирования требует также изучения основных принципов взаимодействия с операционной системой посредством обработки событий и обмена сообщениями.
При овладении бакалавром направления «Прикладная информатика» технологии ООП необходимо органичное сочетание изучения среды визуального программирования и способов проектирования графического интерфейса с возможностями разработки самостоятельных блоков программного кода. Таким образом, содержание данного подхода обучения: устройство и функционирование программы, реализация в системе программирования наследования, инкапсуляции, полиморфизма, структура объектной надстройки системы программирования, иерархия библиотек классов, взаимодействие с операционной системой (табл. 2).
Таблица 2
Содержание обучения технологии ООП
Задачи овладения технологией ООП |
Система понятий |
Содержание учебного материала |
Овладение техникой ивведение впроблематику |
Изучение объектно-ориентированного языка программирования |
Протокол класса, объект, инкапсуляция, множественное и одиночное наследование, полиморфизм. |
Протокол класса: поля, свойства, методы и структура объекта. Реализация наследования в программе: виды наследования, наследование полей, методов (статических и виртуальных). Разграничение доступа к ресурсам объекта. Общая схема реализации полиморфизма. |
Разработка объектно-ориентированного программного кода. |
Ознакомление с визуальным программированием |
Библиотека классов, обработка событий и сообщений, обработка ошибок. |
Библиотека классов и иерархия классов. Цикл взаимодействия с операционной системой: событие — сообщение — обработка. Программирование событий и сообщений. Виды ошибок и система обработки ошибок. |
Построение графического интерфейса пользователя |
Использование в образовательном процессе бакалавров направления «Прикладная информатика» рассмотренных выше подходов обучения объектно-ориентированной парадигме программирования позволит сформировать целостное изложение учебного материала, ориентировать подготовку профессиональных кадров в области информатики на возможность быстрого освоения большого спектра самых востребованных на сегодняшний день языков программирования (C и C++, C#, Java, ObjectPascal и др.), и, наконец, реализовать смежные профессиональные компетенции по данному направлению обучения, такие как «способность проводить обследование организаций, выявлять информационные потребности пользователей, формировать требования к информационной системе», «способность разрабатывать, внедрять и адаптировать прикладное программное обеспечение», «способность документировать процессы создания информационных систем на стадиях жизненного цикла» и др.
Литература:
- Приказ Минобрнауки России от 12.03.2015 N 207 «Об утверждении федерального государственного образовательного стандарта высшего образования по направлению подготовки 09.03.03 Прикладная информатика (уровень бакалавриата)" (Зарегистрировано в Минюсте России 27.03.2015 N 36589)
- Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений / Г. Буч, Р.Α. Максимчук, М. У. Энгл и др. — М.: ООО «И. Д. Вильямс», 2008. — 720 с.