Курсовые - Развлекательное приложение “Falling Ball”

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

2.1 Технологии программирования, используемые для решения поставленных задач

Для выполнения поставленных задач был выбран язык программирования C#.

C# - язык программирования от Microsoft. Изначально компания планировала выпустить свою версию Java, однако, в итоге, дело дошло до суда. После этого было принято решение о создании собственного языка, который отвечал их требованиям и развитие которого возможно было контролировать.

Данный язык программирования применяется в различным продуктах:

  • DirectX – API для программирования под Windows, основное использование – разработка видеоигр.
  • Mono – проект, посвящённый свободной реализации C# и .NET
  • XamarinStudio – позволяет создавать мобильные приложения на С#, был создан на основе Mono
  • Unity – кроссплатформенный игровой движок.

Сегодня C# - современный объектно-ориентированный, типобезопасный язык программирования. Несмотря на то, что С# объектно-ориентированный язык программирования, он также поддерживает компонентно-ориентированное программирование.

Благодаря своим функциям язык программирования C# обеспечивает надежность и устойчивость приложений:

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

В С# существует единая система типов, то есть все типы в C# наследуются от одного корневого типа object. Это позволяет всем типам использовать общий набор операций, а также значение любого типа можно передавать и обрабатывать схожим образом.

Одно из главных преимуществ данного языка – управление версиями. Разработчики уделили ей особое внимание для того, чтобы обеспечить совместимость программ и библиотек C# при дальнейшем развитии языка. Это повлияло на такие аспекты разработки языка, как модификаторы virtual и override, правила разрешения перегрузки методов и поддержка явного объявления членов интерфейса.

Каждый язык программирования имеет свои достоинства и недостатки. И C# не исключение. Данный язык программирования имеет следующие достоинства:

  • Поддержка от Microsoft. Благодаря этому язык развивается быстрыми темпами
  • Красивый синтаксис. Большое количество синтаксического сахара – конструкции, созданные для облегчения написания и понимания кода, которые не играют никакой роли при компиляции
  • Добавлено функциональное программирование (F#)
  • Огромное сообщество программистов по всему миру

К недостаткам можно отнести:

  • Преимущественно ориентирован на .NET (на Windows платформу)
  • Бесплатная версия распространяется только для небольших компаний и программистов-одиночек
  • Сохранился оператор go to

2.2 Реализация объектно-ориентированных технологий программирования в современных программно-математических средах

Объектно-ориентированное программирование. SIMULA I (1962-65) и Simula 67 (1967) — два первых объектно-ориентированных языка программирования. Simula 67 включала в себя большую часть концепций объектно-ориентированного программирования: классы и объекты, подклассы (наследование), виртуальные функции, безопасные ссылки и механизмы, позволяющие внести в программу коллекцию программных структур, описанных общим заголовком класса (префиксные блоки).

Алан Кэй из Xerox PARC использовал Simula как платформу для его разработки Smalltalk (первых версий языка в 1970-х), расширяя объектно-ориентированное программирование с помощью интеграции пользовательского интерфейса и интерактивного исполнения. Бьерн Страусструпп начал разработку C++ (в 1980-х) привнеся основные концепции Simula в С.

  «Чистым» называют объектно-ориентированный язык, все типы которого являются или могут быть прозрачно представленными классами. Первым чистым. Первым «чистым» объектно-ориентированным языком был именно Smalltalk. Поэтому Java стала «чистым» объектно-ориентированным языком только с 5 версии, когда появилась возможность преобразования класса-обёртки в соответствующий ему примитивный тип.

  Существует 4 принципа, которые делают язык объектно-ориентированным:

  • Инкапсуляция – это механизм сокрытия реализации данных путем ограничения доступа к публичным методам. Это механизм, который связывает воедино код и данные, которыми он манипулирует.
  • Полиморфизм – способность объектно-ориентированных языков эффективно различать сущности с одинаковыми именами.
  • Наследование – механизм, с помощью которого один класс может наследовать свойства (поля и методы) другого класса. Существует суперкласс и подкласс. Суперкласс – класс, свойства которого наследуются, также называют базовым классом или родительским классом. Подкласс – класс, который наследует другой класс, его также называют дочерний класс или производный класс. Подкласс может добавлять свои собственные поля и методы, в дополнение к полям и методом суперкласса.
  • Абстракция – упрощенная модель реальной жизни. То есть выделение значимой информации и исключение незначимой. Абстракция лишь частично описывает реальную сущность объекта.

2.3 Основные понятия ООП

Основные понятия ООП:

  • Класс — это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью.
  • Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом.
  • Интерфейс – это набор методов класса, доступных для использования другими классами.
  • Метод – функция, работающая с объектом. свойство - переменная, определяемые в классе.
  • Спецификаторы доступа: public, private, protected - определение доступа к методам или свойствам класса.
  • extends - ключевое слово, определяющее класс родителя.
  • Абстрактный класс - класс, от которого нельзя создать объект, предназначен только для дальнейшего наследования.
  • Финальный класс - класс, от которого нельзя наследоваться, предназначен только для создания объектов, но не для дальнейшего наследования.
  • Конструктор - метод, вызываемый в момент создания объекта;
  • Деструктор – метод, вызываемый в момент уничтожения объекта;
  • Имплемент — это класс реализующий методы интерфейса.

  Принципы объектно-ориентированного программирования. Для того, чтобы помочь всем программистам разрабатывать качественные объектно-ориентированные приложения были разработаны принципы объектно-ориентированного программирования и проектирования.

  Существует пять основных принципов объектно-ориентированного программирования и проектирования:

  • Принцип единственной ответственности (The Single Responsibility Principle). Каждый класс выполняет лишь одну задачу. Нарушение этого принципа приводит к тому, что класс отвечает за решение нескольких задач, его подсистемы, реализующие решение этих задач, оказываются связанными друг с другом. Изменения в одной такой подсистеме ведут к изменениям в другой.
  • Принцип открытости/закрытости (The Open Closed Principle). Программные сущности должны быть открыты для расширения, но закрыты для модификации.
  • Принцип подстановки Барбары Лисков (The Liskov Substitution Principle). Объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы. Смысл этого принципа заключаются в том, чтобы классы-наследники могли бы использоваться вместо родительских классов, от которых они образованы, не нарушая работу программы. Если оказывается, что в коде проверяется тип класса, значит принцип подстановки нарушается. Наследующий класс должен дополнять, а не изменять базовый.
  • Принцип разделения интерфейса (The Interface Segregation Principle). Много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения. Нужно создавать узкоспециализированные интерфейсы, предназначенные для конкретного клиента. Клиенты не должны зависеть от интерфейсов, которые они не используют.
  • Принцип инверсии зависимостей (The Dependency Inversion Principle). Объектом зависимости должна быть абстракция, а не что-то конкретное. Абстракции не должны зависеть от деталей. Наоборот, детали должны зависеть от абстракций. Модули верхних уровней не должны зависеть от модулей нижних уровней. Соответственно, модули и верхних и нижних уровней должны зависеть от абстракций.

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

 

Рисунок 2.1 – Пример класса Sound из игры

 

 

 

 

 

 

 

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

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