2.1 Технологии программирования
Исходя из обычного значения слова «технология» под термином «технологией программирования» понимают совокупность производственных процессов, которая обеспечивает создание требуемого программного средства, а также документирование этой последовательности процессов. Таким образом, под технологией программирования будем понимать процесс разработки программных средств, включая все стадии, начиная с момента появления идеи этого средства; причем каждый из этапов создания программного продукта опирается на использовании определенных методов.
В историческом аспекте в развитии технологии программирования можно выделить несколько этапов, таких как: стихийное программирование, структурный подход к программированию, объектный подход к программированию, компонентный подход и CASE-технологии. В рамках данной курсовой будет рассматриваться в основном объектный подход.
Объектно-ориентированная разработка программного обеспечения существует с начала 1960-х годов. Только во второй половине 1990-х годов объектно-ориентированная парадигма начала набирать обороты, несмотря на тот факт, что популярные объектно-ориентированные языки программирования вроде Smalltalk и C++ уже широко использовались. Расцвет объектно-ориентированных технологий совпал с началом применения Интернета в качестве платформы для бизнеса и развлечений. А после того как стало очевидным, что Глобальная сеть активно проникает в жизнь людей, объектно-ориентированные технологии уже заняли удобную позицию для того, чтобы помочь в разработке новых веб-технологий.
Мы сталкиваемся с объектами в своей повседневной жизни, вероятно, даже не осознавая этого. Мы можете столкнуться с ними, когда едете автомобиле, разговариваете по телефону, играете в компьютерные игры, а также во многих других ситуациях. Электронные соединения по сути превратились в соединения, основанные на объектах. Тяготея к мобильным веб-приложениям, бизнес тяготеет к объектам, поскольку технологии, используемые для электронной торговли, по своей природе в основном являются объектно-ориентированными.
В объектно-ориентированной разработке во главу угла ставится объект, как основополагающая сущность данной технологии. В таком случае нужно задать вопрос, а что же такое объект? Этот термин интуитивно понятен, потому что люди уже мыслят объектно. Например, когда вы смотрите на какого-то человека, вы видите его как объект. При этом объект определяется двумя компонентами: атрибутами и поведением. У человека имеются такие атрибуты, как цвет глаз, возраст, вес и т.д. Человек также обладает поведением, то есть он ходит, говорит, дышит и т.д. В соответствии со своим базовым определением объект — это сущность, одновременно содержащая данные и поведения. Объекты — это строительные блоки объектно-ориентированных программ. Та или иная программа, которая задействует объектно-ориентированную технологию, по сути является набором объектов. В качестве наглядного примера рассмотрим корпоративную систему, содержащую объекты, которые представляют собой работников соответствующей компании. Каждый из этих объектов состоит из данных и поведений, описанных в последующих разделах.
При создании экземпляра объекта используется класс как основа для того, как этот объект будет создаваться. Каждый объект содержит собственные атрибуты (данные) и поведения (функции или программы). Класс определяет атрибуты и поведения, которые будут принадлежать всем объектам, созданным с использованием этого класса. Классы — это фрагменты кода. Объекты, экземпляры которых созданы на основе классов, можно распространять по отдельности либо как часть библиотеки. Объекты создаются на основе классов, поэтому классы должны определять базовые строительные блоки объектов (атрибуты, поведения и сообщения) [1].
Язык Python – типичный представитель ООП-семейства, обладающий элегантной и мощной объектной моделью. В этом языке от объектов никуда не спрятаться (ведь даже числа являются ими).
Выбор использования данного языка основан на том, что скорость выполнения программ, написанных на Python высока. Это связанно с тем, что основные библиотеки Python написаны на C++ и выполнение задач занимает меньше времени, чем на других языках высокого уровня. Поэтому есть возможность писать свои собственные модули для Python на C или C++. Следующим преимуществом языка является его кроссплатформенность, т.е. скрипты, написанные при помощи Python выполняются на большинстве современных ОС. Такая переносимость обеспечивает Python применение в самых различных областях. Стоит также отметить широкое распространение пакетов (библиотек), используемых в научных вычислениях. Они способны вычислять классические численные алгоритмы решения уравнений, задач линейной алгебры, вычисления определенных интегралов, аппроксимации, решения дифференциальных уравнений. Python подходит для любых решений в области программирования, будь то офисные программы, веб-приложения, GUI-приложения и т.д.
В рамках объектно-ориентированных технологий для создания веб-сервиса для обучения белорусскому языку был выбрана технология, реализованная на данном языке – веб-фрейворк Django. Этот инструмент удобно использовать для разработки сайтов, работающих с базами данных.
Фреймворк предлагает большую ценность для любого проекта веб-разработки. Данная технология поставляется с набором готовых компонентов, которые помогают ускорить и упростить процесс создания веб-приложений. Фреймворк содержит удобные компоненты, реализующие наиболее распространенные функции, которые мы находим в веб-приложениях. Например, аутентификацию пользователей, панель управления, загрузку файлов и многое другое. Тем не менее, используя эту технологию, веб-разработчикам не нужно каждый раз заново изобретать колесо. Не нужно создавать эти компоненты с нуля. Фреймворк помогает им сэкономить время, ускорить процесс разработки программного обеспечения и сосредоточиться на аспектах. Все это делает веб-приложение уникальным на рынке.
Значительную роль в успехе Django сыграли несколько известных сайтов, которые использовали этот фреймворк. В их число входят Pinterest, Dropbox, Spotify, сайт The Washington Post. В настоящее время сообщество Django включает более 11 тыс. разработчиков из 166 стран мира. В фрейворке реализован принцип DRY (don’t repeat yourself). Благодаря этому сокращается время создания сайтов. То есть при использовании Django вам не нужно несколько раз переписывать один и тот же код. Фреймворк позволяет создавать сайт из компонентов. Это можно сравнить со строительством крепости с помощью Lego.
Создатели реализовали в Django паттерн MVC, и он применяется в текущей версии фреймворка. Архитектура MVC позволяет разработчику работать с визуальным представлением и бизнес-логикой приложения отдельно. Кстати, при работе с Django специалисты чаще используют термин MVT — Model-View-Template или модель-представление-шаблон. Компоненты MVT можно использовать независимо друг от друга.
Документация Django определяет модель (model) как «источник информации о данных, в которых содержатся ключевые поля и поведение данных». Обычно одна модель указывает на одну таблицу в базе данных. Django поддерживает базы данных PostgreSQL, MySQL, SQLite и Oracle. Модели содержат информацию о данных. Эти данные представлены атрибутами или полями. Поскольку модель представляет собой простой класс, она ничего не знает о других уровнях Django. Взаимодействие между уровнями происходит через API. Модель отвечает за бизнес-логику, методы, свойства и другие элементы, связанные с манипуляцией данными. Также модели позволяют разработчикам создавать, читать, обновлять и удалять объекты в базе данных. Представление (view) решает три задачи: принимает HTTP-запросы, реализует бизнес-логику, определённую методами и свойствами, отправляет HTTP-ответ в ответ на запросы. То есть представление получает данные от модели и предоставляет шаблонам (templates) доступ к этим данным или предварительно обрабатывает данные и затем предоставляет к ним доступ шаблонам. В Django реализован мощный движок шаблонов и собственный язык разметки. Шаблоны представляют собой файлы с HTML-кодом, с помощью которого отображаются данные. Содержимое файлов может быть статическим или динамическим. Шаблоны не содержат бизнес-логики. Поэтому они только отображают данные.
Первоначально разработка Django велась для обеспечения более удобной работы с новостными ресурсами, что достаточно сильно отразилось на архитектуре: фреймворк предоставляет ряд средств, которые помогают в быстрой разработке веб-сайтов информационного характера. Например, разработчику не требуется создавать контроллеры и страницы для административной части сайта, что является, по моему мнению, килер-фичей. В Django есть встроенное приложение для управления содержимым, которое можно включить в любой сайт, сделанный на Django, и которое может управлять сразу несколькими сайтами на одном сервере. Административное приложение позволяет создавать, изменять и удалять любые объекты наполнения сайта, протоколируя все совершённые действия, и предоставляет интерфейс для управления пользователями и группами (с пообъектным назначением прав).
Некоторые возможности Django:
2.2 Реализация ООП технологий
Для реализация объектно-ориентированных технологий программирования, должны выполнятся 4 основных принципа: абстракция данных, инкапсуляция, полиморфизм, наследование.
Наследование — механизм, который позволяет описать новый класс на основе существующего (родительского). При этом свойства и функциональность родительского класса заимствуются новым классом. Реализация в проекте на рисунке 2.1.
Рисунок 2.1— Пример наследования в курсовой работе
При создании приложения на основе базы данных, будут формы, которые тесно связаны с моделями Django. Например, у нас User модель, и мы хотим создать форму, которая позволяет изменять профиль пользователя. В этом случае было бы излишним определять типы полей в вашей форме, потому что мы уже определили поля в своей модели. По этой причине Django предоставляет вспомогательный класс, который позволяет создавать Form класс из модели Django.
Абстракция очень простой принцип. Благодаря абстракции данных, объекты представляют собою упрощенное, идеализированное описание реальных сущностей предметной области. Если соответствующие модели адекватны решаемой задаче, то работать с ними оказывается намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта.
Одно из основных преимуществ использования объектов заключается в том, что объекту не нужно показывать все свои атрибуты и поведения. При хорошем объектно-ориентированном проектировании (по крайней мере, при таком, которое повсеместно считается хорошим) объект должен показывать только интерфейсы, необходимые другим объектам для взаимодействия с ним. Детали, не относящиеся к использованию объекта, должны быть скрыты от всех других объектов. Инкапсуляция определяется тем, что объекты содержат как атрибуты, так и поведения. Скрытие данных является основной частью инкапсуляции. Пример можно увидеть на рисунке 2.2.
Рисунок 2.2 — Пример инкапсуляции
Полиморфизмом называют явление, при котором методу с одним и тем же именем соответствует разный программный код в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами. Реализация на рисунке 2.3. Такой механизм называется динамическим (или поздним) связыванием — в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.
Рисунок 2.3 — Пример полиморфизма в курсовой работе
Также стоит отметить характерную черту для данного фрейворка – модульность. Модульность – это такая организация объектов, когда они заключают в себе полное определение их характеристик, никакие определения методов и свойств не должны располагаться вне его, это делает возможным свободное копирование и внедрение одного объекта в другие (рисунок 2.4). Весь проект может быть разбит на несколько приложений, которые в свою очередь, можно без труда переносить в другие проекты.
Рисунок 2.4 — Пример разбития на модули
Дата | Выполнено, % |
---|---|
2020-05-19 19:37:36 | 10 |
2020-05-14 09:03:38 | 100 |