Читать онлайн Создание игры «Настольный теннис» (Creating a Ping-Pong Game with C#) бесплатно
© Сергей Александрович Евдокимов, 2023
ISBN 978-5-0059-9407-3
Создано в интеллектуальной издательской системе Ridero
Добро пожаловать в мир программирования!
Учебная и научная литература
для начинающих программистов
- Создание игры «Пинг-Понг» на C Sharp
- (Creating a Ping-Pong Game with C#)
Для достижения указанных целей было изучено литературу по компьютерным технологиям, по системам управления базами данных, особенности графических приложений, высокоуровневым языкам программирования. Считаю, что эта работа выполнена на достаточно высоком уровне и заслуживает продолжения…
- Ping Pong – популярный проект для новичков
- и начинающих программистов, разработанный
- на C Sharp…
Изучаем высокоуровневое программирование на C Sharp!
Это первое издание книги© Сергей Евдокимов, 2015—2023
ОПРЕДЕЛЕНИЕ, ОБОЗНАЧЕНИЕ И СОКРАЩЕНИЕ
- API – Application Programming Interface;
- ADO – ActiveX Data Objects;
- AT&T – American Telephone and Telegraph;
- COM – COMmunication;
- DB – DeciBel;
- DVD – Digital Video Disc;
- DSP – Digital Signal Processor;
- DFD – Data Flow Diagram;
- IBM – International Business Machines;
- JoL – Jaques of London;
- LINQ – Language-Integrated Query;
- LDA – Latent Dirichlet Allocation;
- MS – Microsoft Studio;
- MFC – Microsoft Foundation Classes;
- MDF – Media Descriptor File;
- MVS – Multiple Virtual Storage;
- MVC – Model-View-Controller;
- NB – New B;
- OS – Operating System;
- PL/I – Programming Language One;
- RGB – Red Green Blue;
- SSMS – SQL Server Management Studio;
- SPI – Serial Peripheral Interface;
- SQL – Structured Query Language;
- TV – TeleVision;
- USB – Universal Serial Bus;
- UIPAB – User Interface Process Application Block;
- VB.Net – Visual Basic. NET;
- VCC – Voltage of the CirCuit;
- VS – Visual Studio;
- WF – Windows Form;
- XML – eXtensible Markup Language.
- БД – База данных;
- ВУЗ – Высшее учебное учереждение;
- ГОСТ – ГОсударственный СТандарт;
- ИК – Инфо-красный (а);
- ПО – Програмное Обеспечение;
- КИ – Конфиденциальная информация;
- MТИ – Массачусетский технологический институт;
- ИТ – Информационные технологии;
- ИИ – Исскуственный интелект;
- ИНС – Исскуственные нейронные сети;
- МОТ – Международная организация труда;
- МК – Микроконтроллер;
- МП – Микропроцесор;
- НП – Нискоуровневое программирование;
- ООН – Организация Объединённых Наций;
- ООП – Объектно-ориентированное Программирование;
- ОС – Операционная система;
- ПК – Персональный компьютер;
- ПС – Програмная Среда;
- ПЗУ – Постоянное запоминающее устройство;
- РБД – Реляционная база данных;
- ЧП – Черезвычайное положение;
- ЭВМ – Электронная вычислительная машина;
- ЯП – Язык программирования.
- англ. – английский;
- В – Вольт;
- Выкл. (Вкл.) – Выключить (Включить);
- Вт – Ватт;
- др. – другие;
- ок. – октава;
- общ. – общий;
- Рис. – Рисунок;
- стр. – страница;
- см. – смотреть;
- сост. – состояние;
- Табл. – Таблица;
- т. д. – так далее;
- т.е. – то есть;
- шт. – штука (штук).
- эл. – элемент;
- ч. – часть.
ВВЕДЕНИЕ
Актуальность темы исследования. Развитие культуры в нашем столетии неуклонно идет вместе с развитием многообразных технологий, например компьютерных. Компьютерный рынок непрерывно заполняется более ранними, более совершенными программами, увеличивается скорость процессоров, объем носителей хранения памяти. В этой «технологической революции» не последнее место занимает событие, появившееся вместе с компьютерами, а именно: компьютерные игры [1]. Сейчас, хоть люди и стали деловыми, но время на развлечения они всегда находят. Кое-кто выбирает активный отдых (путешествие, спортивные игры, квесты), а кто-то предпочитает более пассивный отдых, к ряду которых можно отнести не только просмотр кинофильмов, но и компьютерные игры. В Украине ежегодно растет количество людей, покупающих подобные игры. Если для игроков это просто игрушка и шанс отдыха, то для разработчиков и распространителей – целая сфера деятельности [2]. Все это, в совокупности с фактом роста количества компьютеров и увлечения людьми играми, говорит о том, что вопрос нуждается в исследовании по направлению ряда наук, и программированию в первую очередь.
Цель данной работы заключается исследование и разработка игры Пинг-Понг, язык написания игры будет служить в моем случае С Sharp, и написание игры подробно, в деталях, рассказав о различных элементах приложения, создавая программу.
Задания к данной работы:
– Используя произвольный язык и среду программирования разработать программное приложение-игру «Пинг-понг»;
– Объяснить детали и сущность частей программы;
– исследовать процесс создания игры на платформе Microsoft Visual Studio 2022;
– сформировать общий вывод работы.
Объект исследования – программное приложение-игра «Пинг-понг».
Предмет исследования – создание компьютерной игры в программной среде.
Платформа создания игры – исследование игры и процесс написание будут оформлены таким ПС при разработке создания игр как Microsoft Visual Studio.
Язык написания игры – C Sharp.
Структура данной работы обусловлена поставленными целями, задачами и характером исследования. Сама работа состоит из введения, четырёх глав, общего заключения, приложений, использованных сокращений, списка использованных источников, семи дополнений.
РАЗДЕЛ 1. АНАЛИТИЧЕСКАЯ ЧАСТЬ
1.1 Постановка задания
Используя произвольный язык и среду программирования разработать программное приложение-игру «Пинг-понг». Суть игры заключается в отражающем мячике игроку, отражающем его с помощью ракетки. Программа должна проверять, отбил ли игрок мяч и сообщать пользователю о результатах отбитых мячей во время игры.
Структура проекта:
– модуль, отображающий главное меню игры;
– модуль, отображаемый по окончании игры;
– модуль, отображающий игровое поле;
– модуль, отображающий результаты отбитых мячей;
– модуль, отображающий справку пользователя;
– модуль, отображающий состояние звука (Вкл./Выкл.).
Входные данные:
– состояние звука (Вкл/Выкл);
– соследующие действия (нажатая клавиша) по окончании игры.
Исходные данные:
– количество «отбитых» мячей пользователем;
– состояние звука (Вкл./Выкл.);
– справка о дальнейших действиях по окончании игры;
– интерфейс программы должен содержать следующие элементы: главное меню, форма с информацией о разработчике, состояние звука (Вкл./Выкл.);
– приложение должно давать возможность изменять состояние звука в игре – при включенном будет играть мелодия и будет работать звук в игре.
Во время игры программа должна разрешать:
– выйти из игры;
– перезапустить игру;
– Выкл/Вкл. звук.
1.2 Анализ задания
Рассмотрение предметной области приложения «Пинг-понг» показало, что основной проблемой является реализация полета мячика и его реалистичное отражение от игрового поля и ракетки игрока, а также разработка такого интерфейса, который смог бы успешно конкурировать с подобными играми.
Для решения проблемы была выбрана работа с таймером и изменение направления полета мяча с помощью векторов.
Посреди аналогов были проанализированы следующие игры: 2D Ping Pong, Легенды Пинг Понга, Table Tennis Angry Birds, Настольный теннис 2D.
Полученная (после обработки данных) на экране монитора графическая информация очень удобна для анализа и описания сложных явлений на практике. Более того, эта графическая информация может использоваться в следующих вычислениях, на основании которых мы получим новые данные, которые снова можем предоставить в виде новой графической информации, которая может использоваться в новых расчетах и т. д. [5].
Высшим приоритетом можно считать удовлетворение работы данными ПО в определенные сроки. Программа, которая работает без ошибок – это главный показатель прогресса и основное достижение в проекте. А в простоте – искусство для достижения чего-то большего, при этом делая меньше, что является «Основа основ». Разработчики должны время от времени задумываться по эффективности, и соответственно редактировать и подстраивать свое поведение [6].
1.3 Выбор методов и способов решения задания
Для написания игрового приложения Пинг-понг была выбрана программа Visual Studio 2022 с интерфейсом Windows Forms (API), ориентированная на разработку привлекательного и удобного интерфейса (графического).
Microsoft Visual Studio – это линейка инструментов и служб по созданию разных приложений для платформы Microsoft, а также для других. Независимо от используемого средства разработки, есть возможность более гибко работать, и главное – где угодно [7].
Visual Studio 2022 – это передовое решение для разработки, позволяющее командам любого размера проектировать и создавать привлекательные программы, которые удовлетворят требования заказчиков.
Windows Forms – это такой интерфейс для программирования приложений (API), который отвечает за пользовательский интерфейс (графический), что является частью. NET Framework компанни Microsoft. Этот интерфейс значительно упрощает возможность для получения доступа к элементам интерфейса ОС Windows, так как за счет создания обвертки API для уже существующего в управляемом коде Win32 [8]. Учитывая то, что этот код – это классы, которые реализуют API для библиотеки Windows Forms, не зависящие от языка разработки. То есть программист все равно использует Windows Forms в написании прогромного обеспечения на C Sharp, С++, также на VB.Net, J# и т. д.
Библиотека Windows Forms разрабатывалась как элемент к. NET Framework для облегчения разработки составляющих графического и пользовательского интерфейса [9]. Windows Forms построена на основе устаревшего Windows API и представляется как обвертка низкоуровневых компонентов ОС Windows.
С помощью библиотеки Windows Forms предоставляется возможность для разработки кроссплатформенных графических пользовательских интерфейсов. Но всё же, Windows Forms до сих пор является только обверткой для API-компонентов ОС Windows, и ряда ее методов, которые могут осуществлять прямой доступ к функциям Win32 и обратного вызова, что недоступны на других платформах [10].
Готовое приложение на Windows Forms представляет ориентированное программное обеспечение, поддерживающее. NET Framework. от компании Microsoft. Большая часть времени тратится на ожидания от пользователя любых действий, В отличие от пакетных программ. К напримеру, в текстовом поле – ввод текста или по кнопке – щелчок мышкой.
С одной стороны, библиотеку Windows Forms можно рассматривать как замену с более старой и сложной библиотекой MFC, которая первоначально была написана на C++. С другой же стороны, WF не предпочитает парадигму, что сравнима с MVC. Для исправлений в этой ситуации и реализации функциональности в WF есть посторонние библиотеки. Такой одной, которые больше всего используются является UIPAB, которая была выпущена отдельной группой компании Microsoft, что занималась рекомендациями и образцами для бесплатного распространение. Данная библиотека ещё содержит сам исходный код, исходящее образцы для большего ускорения в обучении [11].
Windows Forms (внутри пространства.NET Framework) реализуется как System.Windows.Forms.
Объектно-ориентированное программирование – это парадигмаиз программирования, основу которой составляют три основные концепции: наследование, инкапсуляция и полиморфизм [9]. Инкапсуляция – сокрытие деталей о работе классов от объектов, использующих или отправляющих им сообщения [11]; наследование позволяет создать новый класс в основе родительского (уже существующего), при этом свойства и функциональность родительского класса заимствуются новым классом [12]; полиморфизм означает зависимость поведения от класса, в котором это поведение вызывается, то есть два или более классов могут реагировать по-разному на одинаковые сообщения [10].
Важной деталью механизма ООП является абстракция. В объектно-ориентированном программировании, абстракция – это придание объекту характеристик, отличающих его от всех остальных объектов, что четко определяются по его концептуальным границам [12].
1.4 Критерии при подготовке
Всегда хочется использовать что-то новое и модное, но стоит быть готовым к тому, что молодой продукт может иметь достаточно серьёзные баги. Существуют примеры, когда необходимые доработки Фреймворка ждут исправления месяцы, а то и годы. Не стоит также исключать, что в какой-то момент разработка Фреймворка может быть остановлена. На мой взгляд, всегда стоит отдавать предпочтение проверенным временем продуктам. В качестве примера можно привести C# и SQL. Это практически стандарт де-факто в разработке бизнес-сервисов. Огромная накопленная база знаний сводит почти к нулю вероятность столкнуться с неразрешимой проблемой.
Стоить отметить, что в современной архитектуре приложений всё больше используется микросервисный подход. Он позволяет разделить большое приложение на много маленьких сервисов. Это позволяет многократно снизить последствия от неправильно выбранного языка программирования или Фреймворка, и позволяет развязать руки в экспериментировании. Так как сервис мал, то в любой момент его можно достаточно быстро переписать. Всегда стоит сохранять прагматичный подход к решению проблемы. При выборе того или иного продукта взвешивать преимущества и возможные негативные последствия на дальнейшую разработку.
Размер и сложность проекта. Если это небольшой проект или MVP, когда стоят короткие сроки выполнение проекта, то можно выбирать тот язык и фреймворк, в которых есть знание у команды или легко найти специалистов на рынке. Очень часто, особенно на аутсорсе, решение принимается в зависимости от отдела, куда попадает проект.
Тип проекта. Разные типы проектов требуют различных технологий. К примеру, приложения с интенсивным использованием данных, системы бронирования, приложения для социальных сетей, потоковые приложения, CMS, IoT, приложения в банковской сфере, торговые площадки и простые MVP, скорее всего, потребуют различных языков программирования и Фреймворков.
Стоимость. Многие технологии, Фреймворки и среды разработки требуют лицензии, но есть и много бесплатных вариантов. На практике, скорее всего, у вас будет выбор между платными инструментами, но с большей функциональностью и поддержкой, или бесплатные, но с ограниченным набором функций.
Востребованность технологии. Насколько много вакансий на рынке, какие в среднем зарплаты. Причём лучше посмотреть по разным странам. Например, С# очень популярен на Западе и сильно обгоняет своего конкурента Java, а значит, работу на нём будет находить значительно проще. А вот Рефал имеет некоторую популярность только в России, да и вакансий то немного.
Порог входа. От этого зависит то, насколько быстро можно начать зарабатывать на этой технологии и решать реальные задачи. Например, у языка С# достаточно высокий порог входа, и даже если у вас за плечами несколько лет опыта в кодинге на другом языке программирования, не факт, что получится быстро перепрыгнуть в Java и сохранить уровень дохода.
Перспективность. Технологии могут устаревать и терять востребованность. Важно смотреть за динамикой роста популярности языков программирования и фреймворков. Например, C# держит позиции за счёт развивающегося направления машинного обучения, и вкладываться в него точно имеет смысл. Язык Go всё чаще используется для микросервисов в крупных компаниях, но нет гарантий, что этот тренд сохранится надолго.
Интерес. Конечно, нельзя добиться весомых результатов, работая с тем, что не драйвит и не вызывает интереса. Поэтому это очень важный пункт. Но учтите, что интересы со временем могут меняться – и это нормально.
1.5 Требования к созданию 2D-приложений
Список требований, которые нужно стремительно развивать, совершенствовать, чтобы уметь создавать отличные 2D программы, игры, приложения:
– усовить понятия: «переменные», «ветвления», «функции» и «циклы»;
– изучить консоль и методы работы с ней, будет вводить и считывать данные, форматировать строки, обрабатывать файлы;
– разобраться с синтаксическими конструкциями C#, вошедшего в пятерку самых популярных языков программирования;
– познакомится с библиотеками и шаблонами, инструментами разработки и их возможностями;
– читать коды и управлять ими;
– создавать игровые объекты и классы, работать с ними, наделять их различными свойствами;
– работать со структурированными документами формата XML;
– добавлять в игру анимацию с графическим интерфейсом.
1.6 Анализ существующих аналогичных программных продуктов
Больше чем полвека тому назад, а имено 29 ноября 1972 года, в Саннивейле (штат Калифорния, США) совершилась премьера игры в классическом стиле под названием «Pong», которая выпускалась на монетные автоматы. Именно тогда PingPong (ранее – Pong), наверное, смог сформировать такой жанр и сформировал успешную игровую индустрию, что по сей день считается одной из прибыльных в мире.
Многие люди, играли в «Pong», а сейчас играют в «Пинг-Понг» как минимум, в одну с его вариаций, а также ни один раз видели эту игру по фильмам 70-х годов. По сути игра «Пинг-Понг» является цифровой версией самого просто настольного тенниса. Игроки в попытках отбить этот мяч, в помощь ракетка, что отображается на экране управляется с помощью специальной ручки.
Начнем с того, что PingPong – это самая первая видеоигра, которая пришла в дома десятки миллионов обычных пользователей и распространялась перед экранами TV. PingPong дал толчек для глобальной индустрии видеоигр, что по сей день оценивают около 500 000000000 $$$. И до сих пор PingPong является объектом для научных исследований, учитывая области обучения алгоритмов для ИИ, а также для улучшения искусственных нейронных сетей (далее – ИНС), в разработке интерфейсов типа «Мозг-Машина» (под названием Neuralink).
Игра в «PONG» представлялась как обычный пинг-понг, т.е. 2 игрока (или игрок-компьютер) управляли неким прямоугольником с помощью джойстика (контроллера), которым отбивали мячик, который скачет с одной стороны по другую. Если игрок пропустит мячик мимо своего контролированного участка, то его противник получает одно очко. Все очень просто, как можно увидеть. Позже оригинальная игра
обзавелась сотнями клонов и модификаций, но идея осталась та же.
Пинг-понг по своему принципу мало чем отличается от настольного тенниса – две ракетки (биты), мяч и стремление ударить так чтобы противник мяч не отбил. Фитиль Понгомании зажёг Ральф Баер, со своей революционной разработкой – Brown Box, более известной нам в виде коммерческой реализации «Magnavox Odyssey» (первой игровой приставки). Сама консоль не вызвала большого ажиотажа, но только не у Нолана Бушнела, посетившего презентацию приставки. Настоящий успех Пинг-понга пришёл с рождением аркадных видеоигр. Игровой автомат «PONG» считается как первый аркадная игра в мире. И всё-таки сама игра «PONG» заполучила бешенную популярность, сначала в аркадной, а потом и в домашней своей версии, начала самый настоящий «взрыв игровой индустрии».
На момент создания игровой ящиков «PONG» уже были известны процессоры, однако, проще было собирать не аналог компьютера, а электронную схему, отвечающую за игровой процесс. С выходом новых реализаций игры схема постепенно усложнялась и совершенствовалась, а к закату эпохи «PONG» были разработаны специальные микросхемы, полностью отвечающие за игровой процесс и предоставляющие выбор из нескольких игр. Например AY-3-8500, выпущенный General Instrument в 1975 году являлся ядром приставок Coleco Telstar, Magnavox Odyssey (300, 2000 и 3000), Radio Shack TV ScoreBoard, Unisonic Sportsman/Tournament с набором игр: Tennis, Soccer, Squash, Practice, Rifle Game 1, Rifle Game 2, а так же 7 не задокументированных игр.
Рисунок 1.6.1 — Консольная игра PONG 1.0
РАЗДЕЛ 2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
2.1 Общие понятия про С Sharp
Высокоуровневое программирование1 включает в себя языки программирования, которые разработанные для удобства и скорости использования программистами. C Sharp – это высокоуровневый объектно-ориентированный язык программирования. Часто, его рассматривают как средство для создания программ для платформы.NET Framework и. NET Core от компании Microsoft. C Sharp на этапах создания компанией Microsoft рассчитан для собственных целей и служб. Некоторые полагают, что Си Sharp – это просто версия языка С или C++, но это предположение не правдиво. Данных язык программирования создавался «с нуля». Рассмотрим преимущества и недостатки:
Таблица 2.1.1 — Плюсы и минусы С Sharp
Синтаксис языка чем-то похож на С и С++, Java. Он становится доступным по изучению самыми-самими новичками. С ним можно довольно хорошо разобраться с английским, и также начинать осваиваться с азами коддинга. Многие программеры C Sharp по сей день ассоциируют с платформой. NET Framework, и также ОС Windows.
Хоть и это – основное назначение, но под iOS и Android также на этом языке программирования очень успешно пишутся программы. Сегодня C# очень сильно развился, но преимущественно разработчиков, что специализировались на нем, не так и много. Поэтому, такой вариант очень подойдёт и для новичков, и для любителей, и также небольших предприятий. По сравнению со своими конкурентами C Sharp представляет варианты написания ПО из синтаксисом Си-подобным, что напоминает в общем целом и C++, и Java. Изначально он нужен был для WEB-разработки, как и JAVA. В неким круге C Sharp называют «улучшенной версией Java». У эти языков программирования синтаксические возможности на 75% схожи, 10% – это заимствование с С++, а еще около 5% – у VB, и ставшийся 10% – уникальные свойства, что были внедрены разработчиками. При этом, с помощью C#, составляющей ООП получает очень гибкие, большие, расширяемые и масштабируемые программы. Также наблюдают стремительное развитие. С каждой новой версией C Sharp получается большое количество полезных возможностей. Например – асинхронные методы, лямбды, динамическое связывание. По сравнению с другими способами создания ПО, С# «очень горячий» вариант, для которого немалый путь проделан. И начинающее и опытные программисты рассматриваю его, несмотря на устоявшийся стереотипы (относительно предназначения только для Software на ОС Windows).
Простота изучения С# превосходительная, так как имеет большое количество документации в доступе, и помогает разобраться с любыми проблемами. Язык С# с производительностью низкоуровневого языка, включает очень высокую продуктивность. А кроссплатформенность на С# пишется за 10$, и так по многим встраиваемым, десктопным и серверным платформам. Большинство популярных игровых движков поддерживаются на высокоуровневом языке программирования.
2.2 Объектно-ориентированное программирование (ООП)
Язык C# – объектно-ориентированный язык программирования, который позволяет разрабатывать на нём большие программные системы, с возможностью модульной заменой многократно используемого кода. В C# классы и объекты, а также их атрибуты и методы, являются базовыми инструментами для реализации ООП. Этот язык программирования был основан на компонентной архитектуре, реализуя современные механизмы для обеспечения безопасности кода.
Классическое определение – «способы моделирования настоящего мира». Можно предположить, что ООП делает код более простым и наглядным. С таким подходом можно построить сложные системы просто и эффективно, и всё благодаря тому, что предметная область разбита на объекты, каждый из которых связан с другими объектами.
Главное отличие между Объектно-ориентированное программированием и Процедурным программированием2, то что процедурное программирование заключается в написании кода с или без подпрограмм. ООП использует язык программирования более хорошему программному коду и для получений высокого уровня написания огромных проектов и производительность. Похая взаимосвязь может возникать после несоблюдения трех главных принципов: полиморфизма, инкапсуляции и наследования.
Рисунок 2.2.1 — Основные принципы ООП
«Сущность» и «объект» в человеческой ежедневной жизни можно считать: самолёты, ПК, транспортные стредства, банковские счета. Все объекты обладают некоторыми параметрами и функциональностью. Объект, который представляется как завершенная функциональная единица, составляет все необходимые данные и полную функциональность, которая нужна для решений задач, и по которой он имеет назначение.
К примеру, рассмотрим такой объект как «велосипед». У него есть параметры (цвет, вес, стоимость) и поведение (мотоцикл может ехать, сигналить, потреблять топливо).
С вищеуказаного примера, можно считать, что Инкапсуляция – это сокрытие поведения объекта внутри него. Этому объекту «водитель» нет такой необходимости владеть инофрмацией о происходящем в объекте «мотоцикл», чтобы двуколёсный ехал. Это главный и ключевой принцип ООП.
Наследование. К примеру, возьмём объекты: «человек» и «водитель». У них есть что-то общее? Наследование даёт возможность выделить всё общее в один объект (в данном конкретном случае более общим – человек), а для водителя – определить как человека с дополнительными параметрами и поведением. Так как у водителя обязательно есть водительские права, а у человека их присудствие является не обязательным.
Полиморфизм считатется переопределением поведения.
К примеру, снова рассмотрим объекты «человек» и «водитель», но в этот раз добавим ещё один объект «пешеход». Объект «Человек» наделён способностью передвигаться, но как именно, это уже зависит от того, является он водителем, или пешеходом. Можно предположить, что у пешехода и водителя похожее поведение, но реализация по-разному: первый перемещается с помощью ног, второй – на машине.
Реализация методов ООП происходит с помощью интерфейсов, определяет список методов класса, но ничего не говорит об их реализации. В объекте допустимо реализовать несколько интерфейсов, а один и тот же интерфейс можно реализовать в разных классах.
Рисунок 2.2.2 — Общее представление об ООП
Объект представляет собой экземпляр определёного класса.
А класс – шаблон, в котором описаны: все параметры этого объекта, его методы. Учитывая то, что класс объекта «Воздушный шарик» определяется свойствами цвета, то экземпляр этого класса, можно создавать сколько угодно, и другие будут раскрашены в эти цвета.
Классы выстраиваются в витиеватые структуры. Поэтому, чем сама структура запутанней, тем утилита будет гибкой, и легче поддается с изменениями и внедрением новых видов функционала, но это не обязательно. Принципы ООП (наследование, полиморфизм, инкапсуляция) позволяют возможность для создания структур объектов еще эффектней, избавляя кодинг от дублирований и создают его интуитивно более допустимым, но это не всегда.
Для понимание принципа работы объектов нужно разобраться в сути мастерства ООП, и в умении создавать многоуровневую структуру по классам, оставляя программный код надежным, читаемым и гибким.
2.3 Алгоритмы и структуры данных
Алгоритм – это так называют последовательность действий, которые совершаются. Структуры данных имеют реализацию с помощью алгоритма, а вот алгоритмы – структуры данных. Алгоритмы и структуры данных – это инструменты, которыми уверенно пользуются начинающее разработчики, создавая утилиты. Если знать этот инструментарий, можно создавать большое количество того, что уже в базах кодинга, а также и с которыми не редко встречаемся. Кроме этого, похожие данные решают сложные задания. Это нужно иметь ввиду, и при ограничениях алгоритмов (теоретических), о при том, какими оптимизациями их есть возможность подвергнуть. По итогу, понять решение, в котором, с учётами всех нужных компромиссов, оказывается настолько хорошими, насколько это предоставляет возможность.
Алгоритмы и структуры данных (в C#):
– Связный список
Связный список (с англ. Linked List) представляет набор связанных узлов, каждый из которых хранит собственно данные и ссылку на следующий узел.
– Двусвязные списки
Двусвязный список – это структура данных, которая состоит из узлов, которые хранят полезные данные, указатели на предыдущий узел и следующий узел, каждый из которых содержит информационную часть (данные) и два указателя на соседние элементы (на следующий и предыдущий элементы). В пространстве имен. NET C# System. Collections. В случае, когда в списке нет элементов, оба они равны нулю. Если в списке один элемент, то оба указателя ссылаются на один и тот же элемент (соответственное, они равны).
– Стек на основе массива
Стек представляет собой структуру данных, которая работает по принципу LIFO (Last In First Out – «последний пришел – первый вышел»). Графически стек можно представить в виде столбика или стопки объектов: