Курсовые - РАЗРАБОТКА ИНТЕРНЕТ-МАГАЗИНА КОСМЕТИКИ

ОБОСНОВАНИЕ ВЫБОРА ТЕХНОЛОГИЙ

 

2.1 Объектно-ориентированное программирование

Объектно-ориентированное программирование, или ООП, - это парадигма программирования, которая концентрирует основное внимание программиста на связях между объектами, а не на деталях их реализации. Объектно-ориентированная парадигма программирования разрабатывалась как попытка связать поведение сущности с её данными и спроецировать объекты реального мира и бизнес-процессов в программный код.

Объект – это абстрактная сущность, наделенная характеристиками объектов окружающего нас реального мира. Создание объектов и манипулирование ими – результат методологии программирования, воплощающей в кодовых конструкциях описания объектов и операции над ними. Каждый объект программы, как и любой реальный объект, отличается собственными атрибутами и характерным поведением.

Класс является шаблоном или формальным описанием объекта, объект же является его реальным воплощением. Каждый класс занимает определенное место в иерархии классов. Любой класс определяет некоторую категорию объектов, а всякий объект есть экземпляр некоторого класса.

Обычно объект находится в некотором уникальном состоянии, определяемом текущими значениями его атрибутов. Функциональность объектного класса определяется возможными операциями над экземпляром этого класса.

Концепция ООП направлена ​​на создание кода для многократного использования. Основными принципами ООП являются следующие механизмы: инкапсуляция, наследование, полиморфизм и абстракция, которую выделяют отдельно. Для создания программ, обрабатывающих информацию в виде объектов, необходимо понимание, а также комплексное соблюдение всех четырех парадигм. 

В объектно-ориентированном программировании придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы, называется абстракцией. Основная идея абстракции состоит в том, чтобы работать с объектами, не вдаваясь в особенности их реализации. Абстракция выполняет основную задачу ООП, позволяя программисту формировать объекты определенного типа с различными характеристиками и поведением, благодаря применению классов.

То, как должен выглядеть класс, какие методы в себе содержать, какими переменными и типами данных манипулировать, определяет интерфейс.

Интерфейс описывает ссылочный тип, который не может иметь какой-либо реализации. Это означает, что все его методы и свойства являются абстрактными. Интерфейсы описывают формальный открытый контракт между классами, которые реализуют интерфейс, и классами, которые используют объекты класса, реализующего интерфейс.

Инкапсуляция - это механизм, который объединяет данные и код, манипулирующий с этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В ООП код и данные могут быть объединены вместе (в так называемый “черный ящик”) при создании объекта. Внутри объекта коды и данные могут быть закрытыми или открытыми. Закрытые коды или данные доступны только для других частей того же самого объекта и, соответственно, недоступны для тех частей программы, которые существуют вне объекта. Открытые коды и данные, напротив, доступны для всех частей программы, в том числе и для других частей того же самого объекта.

Инкапсуляция существенно повышает надежность разрабатываемых программ, так как локализованные в объекте функции обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются. Другим немаловажным следствием инкапсуляции является легкость обмена объектами, переноса их из одной программы в другую.

Наследование позволяет, практически без ограничений, последовательно строить и расширять классы. Начиная с самых простых классов, можно создавать производные классы по возрастающей сложности, которые не только легки в отладке, но и просты по внутренней структуре.

Новый, или производный класс может быть определен на основе уже имеющегося, или базового класса. При этом новый класс сохраняет все свойства старого: данные объекта базового класса включаются в данные объекта производного, а методы базового класса могут быть вызваны для объекта производного класса, причем они будут выполняться над данными включенного в него объекта базового класса. Иначе говоря, новый класс наследует как данные старого класса, так и методы их обработки. Если объект наследует свои свойства от одного родителя, то говорят об одиночном наследовании. Если же объект наследует данные и методы от нескольких базовых классов, то говорят о множественном наследовании.

Последовательное проведение в жизнь принципа наследования, особенно при разработке крупных программных проектов, хорошо согласуется с техникой нисходящего структурного программирования. При этом сложность кода программы в целом существенно сокращается. Производный класс (потомок) наследует все свойства, методы и события своего базового класса (родителя) и всех его предшественников в иерархии классов.

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

Полиморфизм - это свойство, которое позволяет один и тот же идентификатор (одно и то же имя) использовать для решения двух и более схожих, но технически разных задач. Целью полиморфизма, применительно к ООП, является использование одного имени для задания действий, общих для ряда классов объектов. Такой полиморфизм основывается на возможности включения в данные объекта также и информации о методах их обработки (в виде указателей на функции). Принципиально важно, что такой объект становится “самодостаточным”. Будучи доступным в некоторой точке программы, даже при отсутствии полной информации о типе этого объекта, он всегда может корректно вызвать свойственные ему методы. Таким образом, полиморфная функция - это семейство функций с одним и тем же именем, но выполняющих различные действия в зависимости от условий вызова.

Для изменения метода необходимо перегрузить его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную кодовую реализацию и, следовательно, придающие объектам разное поведение. Благодаря полиморфизму, потомки могут перегружать общие методы родителя, чтобы реагировать специфическим образом на одно и то же событие.

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

В идеале классы должны располагаться в отдельных файлах, имеющих идентичные с классом названия. Например, в RoR все классы контроллеров располагаются в одном каталоге, но в разных файлах с теми же названиями, что и сами классы контроллеров. Каждый контроллер наследуется от класса ApplicationController.

Пять основных принципов проектирования в объектно-ориентированном программировании сгруппированы в обобщенный принцип ООП, который называется SOLID — Single responsibility, Open-closed, Liskov substitution, Interface segregation и Dependency inversion. В переводе на русский: принципы единственной ответственности, открытости и закрытости, подстановки Барбары Лисков, разделения интерфейса и инверсии зависимостей.

Аббревиатура SOLID была предложена Робертом Мартином, автором нескольких книг, широко известных в сообществе разработчиков. Эти принципы позволяют строить на базе ООП масштабируемые и сопровождаемые программные продукты с понятной бизнес-логикой.

Принцип единственной обязанности трактует, что каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкапсулирована в класс. Все его сервисы должны быть направлены исключительно на обеспечение этой обязанности. 

Принцип открытости декларирует, что программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что эти сущности могут менять свое поведение без изменения их исходного кода. 

Принцип подстановки Барбары Лисков в формулировке Роберта Мартина звучит так: «функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом». 

Принцип разделения интерфейса в формулировке Роберта Мартина: «клиенты не должны зависеть от методов, которые они не используют». Принцип разделения интерфейсов говорит о том, что слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы клиенты маленьких интерфейсов знали только о методах, которые необходимы им в работе. В итоге, при изменении метода интерфейса не должны меняться клиенты, которые этот метод не используют. 

Принцип инверсии зависимостей — модули верхних уровней не должны зависеть от модулей нижних уровней, а оба типа модулей должны зависеть от абстракций; сами абстракции не должны зависеть от деталей, а вот детали должны зависеть от абстракций. 

2.2 Язык программирования Ruby

Ruby – это современный, объектно-ориентированный язык. В любой программе на Ruby все является объектом. Ruby также является динамическим языком, что означает следующее:

  • Ruby интерпретируется динамически (например, как и PHP), поэтому нет никакой компиляции (как с C или Java). Это ускоряет разработку.
  • В Ruby все переменные динамического типа, т.е. информация в них автоматически перезаписывается и вам нет необходимости определять и настраивать переменные, как во многих других языках.
  • Программа на Ruby может генерировать код динамически, изменив себя во время выполнения.

Ruby является удивительно «чистым» языком. Его легко читать, на нем легко писать, но это не все его преимущества. Ruby можно легко расширить с помощью фреймворка Rails, который способен его превратить в, своего рода, специальный язык для создания веб-приложений.

Ruby – язык программирования с открытым исходным кодом, то есть, он является бесплатным.

Ruby имеет встроенную поддержку для работы с SQLite, но это не означает, что нельзя использовать Ruby с другими системами управления базами данных. Можно использовать Ruby с MySQL, PostgreSQL, Firebird, DB2, Oracle и Microsoft SQL Server и т.д.

Ruby кроссплатформенный. Это означает, что можно развернуть свое приложение в различных операционных системах, таких, как Windows, Linux, MacOS.

 

2.3 Технологии front-end разработки

Front-end - это набор технологий, которые используются при разработке пользовательского интерфейса веб-приложений и веб-страниц. С помощью передовых технологий разработчики создают дизайн, структуру, анимацию, поведение и все, что мы видим на экране при открытии веб-приложения, веб-сайта или мобильного приложения. Разработка фронтенда всегда была основной частью сети, и технологии фронтенда заметно выросли в последние годы. Кроме того, в связи с растущим спросом на высокопроизводительные веб-приложения и мобильные приложения, компании начали концентрироваться именно на разработке интерфейса. Они стремятся улучшить взаимодействие с пользователем, эффективность, интерактивность и внешний вид своего приложения. Основная цель передовых инструментов и технологий разработки - помочь веб-разработчикам повысить их эффективность и ускорить, упростить и улучшить процесс разработки.

Базовый набор инструментов для разработки интерфейса четко определен: HTML, CSS. Однако технологии разработки веб-интерфейса могут быть расширены с помощью менеджеров пакетов, CSS-препроцессоров, фреймворков и многого другого.

HTML (или язык гипертекстовой разметки) - это компьютерный язык, предназначенный для создания веб-сайтов, которые впоследствии могут быть получены каждому, кто имеет доступ к Интернету. HTML обычно используется для структурирования веб-документа. Он определяет такие элементы, как заголовки, абзацы, списки, таблицы, и позволяет встраивать изображения, видео и другие медиафайлы.

HTML состоит из серии шорткодов, называемых тегами, которые преобразованы создателем сайта в текстовый файл. Текст сохраняется в виде файла HTML и просматривается через браузер. Браузер сканирует файл и интерпретирует текст в видимой форме и отображает страницу так, как планировал дизайнер.

Гипертекст - это способ, с помощью которого мы перемещаемся по страницам путем нажатия на гиперссылки.

Текстовая разетка определяет качества, которые теги HTML применяют к тексту внутри них. Теги помечают его как определенный тип текста. Как язык, он содержит кодовые слова и синтаксис, как и любой другой язык.

С момента первого выпуска в 1991 году HTML претерпел множество обновлений. В 2014 году был выпущен HTML5. В него добавлены такие функции, как поддержка автономного хранения мультимедиа, более точные элементы контента (например, заголовок, нижний колонтитул, навигация) и поддержка встраивания аудио и видео.

CSS - это язык каскадных таблиц стилей. Он применяется для определения того, как элементы HTML должны представляться на веб-странице с точки зрения дизайна, макета и вариантов для различных устройств с различными размерами экрана. CSS управляет макетом множества различных веб-страниц одновременно.

CSS взаимодействует с элементами HTML, компонентами веб-страницы. Чтобы общаться с HTML, CSS использует селекторы. Селектор - это часть кода CSS, определяющая, на какую часть HTML повлияет стилизация CSS. Объявление содержит свойства и значения, которые используются селектором. Свойства определяют размер шрифта, цвет и поля.

Внешние таблицы стилей хранятся в виде файлов с расширением .css и могут применяться для определения внешнего вида всего веб-сайта через один файл, вместо того, чтобы помещать дополнительные экземпляры кода CSS в каждый элемент HTML, который необходимо изменить.

Внутренние таблицы стилей - это инструкции CSS, помещаемые прямо в заголовок конкретной страницы .html. Встроенные стили - это фрагменты CSS, записанные в самом коде HTML.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться