По состоянию на сегодняшний момент, все языки программирования содержат в себе огромные библиотеки стандартных компонентов, структур данных и алгоритмов. Язык C# не является исключением, в нем имеется обширная библиотека классов и несколько библиотек для создания пользовательского интерфейса. C# — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеетстатическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков C++, Pascal, Модула, Smalltalk и в особенности Java — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).
Имея столь обширный выбор компонентов, очень легко поддаться искушению и не изучать большие и сложные алгоритмы, а просто научиться пользоваться готовыми классами. Безусловно, знание стандартной библиотеки является необходимым для полного изучения языка программирование, и знания эти приходят только после изучения внутренней архитектуры, алгоритмов и различных структур данных. Конечно при решении реальных задач, программисту вряд ли придется снова и снова изобретать связные списки и визуальные элементы для отображения кнопочек. Но вот реализация сложных структур данных, таких как oct-tree или quad-tree с пространственным геопозиционированием относительно данных о спутниках, является сложной инженерной задачей, с которой не возможно справиться, не имея опыта в реализации простых структур данных. Другой задачей может быть реализация визуального компонента для отображения графиков различных кривых с богатым набором инструментов для их редактирования. Такую задачу сложно решать, не владея в достаточной мере знаниями о том, как работает интерфейс пользователя внутри, как происходят обработки событий от мышки и клавиатуры, как эти события проходят от операционной системе к вашему окну и так далее.
Цель данной курсовой работы в получении знаний и практических навыков о создании собственных структур данных и визуальных компонент для их отображения.