Файл: История и развитие методологии объектно-ориентированного программирования. Сферы применения (История и развитие).pdf
Добавлен: 30.03.2023
Просмотров: 175
Скачиваний: 1
Язык программирования С++ является объектно-ориентированным расширением языка С, таким образом, при возможностях низкоуровневости, унаследованной от языка С, к нему прибавились возможности, даваемые ООП.[6]
Oberon, по словам его создателя, Н.Вирта: «...включает в себя средства, необходимые для объектно-ориентированного программирования, сохраняя стиль Паскаля, и является результатом…стремления к простоте без потери выразительности. В этом должна состоять сущность языка, равно пригодного как для учебной аудитории, так и для профессиональной деятельности».
Объектно-ориентированный язык Delphi удобен при разработке приложений, взаимодействующих с базами данных и поддерживающих работы в корпоративных сетях и интернет. [6]
Объектно-ориентированный язык Java является платформенно- независимым и используется для создания интерактивных веб-страниц. [6]
Большой популярностью среди разработчиков пользуется объектно- ориентированный язык С#, он используется для создания Windows Web-приложений.
Основные идеи ООП применяются не только в создании языков, но и в других, например, в разработке операционных систем, так как сегодня многие программные системы проектируются и разрабатываются в объектно-ориентированном стиле. Для повышения стабильности системы очень важно создание надежного кода, так как, чем сложнее система, тем она уязвимее. В этом помогает объектно-ориентированная направленность стиля программирования. Используя универсализацию и наследование, можно повторно использовать уже созданные компоненты, можно создавать новые типы классов, дополняя новыми свойствами уже созданные. [2]
Например:
class Program //класс
{
static void Main () //метод класса
{
Console.WriteLine("Hello!!!");
}
}
Здесь есть класс Program с методом Main, что дает возможность обращаться к этому методу класса без создания его экземпляра. [3]
Подобным образом принципы объектно-ориентированного программирования применяются для расширения функционала уже созданных программных продуктов.
К примеру, Windows является объектно-ориентированной системой и в ней определены классы для производства объектов, в частности, интерфейсные и, когда программа, написанная под операционную систему Windows, обращается к ней, у нас возникают интерфейсные объекты, кажущиеся принадлежащими программе, но на самом деле являющиеся частью Windows. Так объектно-ориентированная программа встраивается в объектно-ориентированную систему, расширяя возможности ее использования. [3]
Можно подытожить, что сферы применения методологии ООП настолько широки, что проще было бы сказать, что она применяется почти везде или назвать узкие сферы, в которых она не применяется, что тоже довольно сложно. В любом случае, ООП сегодня является наиболее применимой методологией в программировании.
Глава 4. Практическое применение методологии объектно-ориентированного программирования в учебном проекте на Unreal Engine
В движке Unreal Engine можно писать игровую логику как на С++, так и с помощью Bluprints – визуальной системы программирования. Bluprints являются визуальным скриптовым языком, их можно писать на С++, а также на С#.
Поскольку в цель курсовой работы входит не только рассмотрение методологии объектно-ориентированного программирования, но и применение её на практике, в техническом задании, в учебном проекте «Планеты», в ходе выполнения проекта, на движке Unreal Engine4 были созданы несколько «миров» (Worlds). Каждый из «миров» является программным элементом и объектом и в то же время служит «местом размещения» других элементов. Слева внизу рисунка 1 можно видеть папку Worlds, а в нижней части рисунка количество этих элементов на данный момент.
Рисунок 1. Worlds
Свойства каждого «мира» могут быть редактируемы, следовательно, эти объекты могут иметь индивидуальность.
На рисунке 2 показано, что был образован родительский класс Planet. От родительского класса Planet были созданы дочерние элементы: Earth, Moon, Mars, а также другие элементы, имитирующие планеты Солнечной системы.
Рисунок 2. Класс Planet дочерние элементы
Ландшафт Earth, Mars , Moon сделан визуально примерно соответствующим каждому из этих элементов, с помощью изменения свойств элемента в правой части интерфейса движка Unreal Engine. Например, видно, что у некоторых «планет» существенно изменен «материал», таким образом, дочерние элементы от класса Planet были дополнены новыми свойствами, иначе их ландшафты выглядели бы одинаковыми.
Можно заметить, что в левой части интерфейса движка имеется возможность добавления в «мир» новых объектов, каждый из которых тоже может обладать собственными свойствами и поведением. Так, например, была «добавлена» вода в виде плоскости, обладающей собственными свойствами материала. Материалы (свойства объектов) водной и земной поверхности разные. Также, например, на рисунке 3, в небе «мира» Земли можно увидеть ещё два планетных объекта – Луну и Марс, в небе Марса - Луну и Землю, в небе Луны - Землю и Марс.
Рисунок 3. Объекты с событием
Хотя эти объекты «добавлены» в соответствующий «мир», но каждый из них обладает определенным поведением. Эти визуальные элементы служат аналогом кнопки, при нажатии на которую вызывается некоторое событие. Это сделано для того, чтобы в ходе игры, пользователь мог, нажав на соответствующую планету, как бы «оказаться» на ней.
При нажатии левой кнопки мыши на каждый такой объект происходит переход в «мир» и соответствующий ландшафт «планеты», которую он имитирует. Это происходит с помощью функции trace, вызывающей соответствующие функции, приводящие к действию (Action), это видно на рисунке 4. Длина trace проставлена в 500000, иначе его не хватало бы, чтобы «достать» до планеты.
Рисунок 4. Trase
То есть, нажатием кнопки мы вызываем событие. При нажатии на виднеющийся в небе Марс пользователь переходит в «мир» Марса, при нажатии на виднеющуюся в небе «мира» Луны Землю, можно осуществить «переход» на неё, каким образом это происходит, видно на рисунках 5,6.
Рисунок 5. Событие переход нажатием кнопки
Рисунок 6
«Входы» и «выходы» в Bluprints Unreal Engine служат аналогом интерфейсов элементов, через которые они взаимодействуют друг с другом. На рисунке 6 мы видим «выход» в Event Action и «вход» в Open Level.
Для «передвижения» по «мирам» был создан объект human, рисунок 7.
Рисунок 7. Human
Для удобства навигации были назначены кнопки клавиатуры, рисунок 8.
Рисунок 8. Навигация
В разрабатываемом проекте есть дочерние элементы, созданные от родительского класса, специфическим объектам назначены определённые свойства, для реализации событийности некоторые объекты имеют особые методы, вызывая необходимые для реализации игры функции. Таким образом, применены принципы наследования, полиморфизма, абстрагирования и инкапсуляции, объектам по возможности присвоена индивидуальность.
Таким образом, в ходе разработки проекта, удалось применить методологию объектно-ориентированного программирования, с самого начала определив модульность создаваемой системы как объектной, имеющей взаимосвязи между объектами и их классами, и в которой, поскольку это симуляция, событийность играет ключевую роль.
ЗАКЛЮЧЕНИЕ
Вывод, который можно сделать из изученного материала и проделанной практической работы в том, что методология объектно-ориентированного программирования применима в огромном спектре разработки прикладных программных продуктов, и удобна для человеческого восприятия. А это, в свою очередь, позволяет повысить общий уровень компьютерной грамотности, поскольку программирование, основанное на более понятных вещах доступно и большему количеству людей. Лично мне получилось вникнуть в основные принципы ООП и применить на практике ключевые моменты.
Также я вижу, что среда Unreal Engine прекрасно подходит для легкого обучения основам ООП и, соответственно, введению в более углубленное изучение языков программирования, следовательно, её можно использовать в обучении как инструмент для практического знакомства с ООП и практическому обучению использования методологии в объектно-ориентированных языках.
БИБЛИОГРАФИЧЕСКИЕ ИСТОЧНИКИ
- Аузяк А.Г., Богомолов Ю.А., Маликов А.И., Старостин Б.А..Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. / А.Г. Аузяк, Ю.А.Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 153 с.
- Биллиг В.А. Основы программирования на С# / А.В. Биллиг – М.: Национальный Открытый Университет «ИНТУИТ», 2016
- Кудрина Е.В., Огнева В.М., Портенко М.С. Программирование на языке С# : разработка консольных приложений / Е.В Кудрина , В.М.Огнева , М.С. Портенко – М.: Национальный Открытый Университет «ИНТУИТ» , 2016. – 367с.
- Кожемяченко В.И. , Красноперов С.Ю Программирование в среде Visual C#. Часть 1 : метод. указ. / Сиб. гос. индустр. ун-т.; сост. : В.И Кожемяченко, С.Ю. Красноперов.– Новокузнецк : Изд. центр СибГИУ, 2012. – 31 с.
- Кожемяченко В.И. , Красноперов С.Ю Программирование в среде Visual C#. Часть 2 : метод. указ. / Сиб. гос. индустр. ун-т.; сост. : В.И Кожемяченко, С.Ю. Красноперов. – Новокузнецк : Изд. центр СибГИУ, 2012. – 31 с.
- Кадырова Г. Р. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95
- Казакова А.Е. Методологические основания развития языков программирования: диссертация по ВАК 09.00.08. / А.Е. Казакова - М., 2008. - Режим доступа: dissertCat.com.
- Макаров В.Л. Программирование и основы алгоритмизации: Учеб. пособие. / В.Л.Макаров - СПб.: СЗТУ, 2003. – 110 с.
- Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ / Г. Буч; пер. с англ. И. Романовский, Ф. Андреев. - М.: Бином, 2012. - 560 с.
- Шарп Д. Microsoft Visual C#. Подробное руководство. 8-е изд. / Д.Шарп — СПб.: Питер, 2017. — 848 с.: ил. — (Серия «Библиотека программиста»)