Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретический_курс.doc
Скачиваний:
36
Добавлен:
10.11.2019
Размер:
7.68 Mб
Скачать

Глава 4. Расширенные возможности программирования на языке c# 284

4.1. Препроцессорные директивы в C# 284

4.2. Понятие «Перезагрузка» 290

4.2.1. Перезагрузка методов 289

4.2.2. Перезагрузка конструкторов 294

4.2.3. Перезагрузка индексаторов 296

4.2.4. Перезагрузка операторов 298

4.2.5. Перегрузка операторов отношения и операторов «true» и «false» 304

4.2.6. Перегрузка логических операторов 307

4.2.7. Ещё раз об операторах преобразования 310

4.3. Наследование и полиморфизм 312

4.3.1. Основы наследования 312

4.3.2. Защищенный доступ и исключение наследования 315

4.3.3. Конструкторы и наследование 319

4.3.4. Наследование и сокрытие имен 321

4.3.5. Ссылки на базовый класс и объекты производных классов 324

4.3.6. Виртуальные методы, свойства и индексаторы 325

4.3.7. Абстрактные классы 330

Глава 5. Интегрированная среда разработки Microsoft Visual Studio 2010 332

5.1. Типы приложений для проектов группы Visual C# 332

5.2. Основы работы со средой разработки Visual Studio 2010 337

5.3. Создание проекта в среде разработки Visual Studio 2010 339

5.4. Изучение проекта и заполнение файлов проекта кодом 337

5.5. Управление и компоновка проекта 354

5.6. Отладка кода проекта 356

5.7. Рефакторинг и расширение кода проекта 359

5.8. Конструктор классов 363

5.9. Встроенная справочная система 366

ГЛОССАРИЙ ТЕРМИНОВ 367

Глава 1. История языка программирования c#

1.1. История языка программирования c# История языка программирования c#

1. Появление и развитие языка c#

Язык C# («си-шарп») ― объектно-ориентированный язык программирования (ООП), появился на свет в июне 2000 году в результате кропотливой работы большой группы разработчиков корпорации Microsoft («майкрософт»), возглавляемой Андерсом Хейлсбергом (Anders Hejlsberg). Этот человек известен как автор одного из первых компилируемых языков программирования для персональных компьютеров IBM Turbo Pascal («турбо -паскаль»), изящная реализация которого послужила образцом для создания всех последующих компиляторов. Кроме того, во время работы в корпорации Borland, Андерс Хейлсберг прославился созданием интегрированной среды разработки Delphi («дельфи»). Андерс руководил этим проектом вплоть до выхода версии 4.0. Появление языка C# и платформы .NET1 («дот-нэт») отнюдь не случайно пришлось на начало лета 2000 года. Именно к этому моменту корпорация Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания веб-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Несомненно, лучшим способом продвижения этих новинок являлось создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач языка C#. Кроме того, Microsoft не могла больше расширять всё те же инструменты и языки разработки, делая их всё более и более сложными для удовлетворения конфликтующих между собой требований поддержки современного оборудования и обеспечения обратной совместимости с теми продуктами, которые были созданы в начале 1990-ых годов во времена первых версий Windows. Тогда и наступил момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты.

С# и платформа .NET являлись той самой отправной точкой. Если говорить упрощённо, то .NET представлял собой новую платформу, новый набор API (Application Programming Interfaces интерфейс программирования приложений) для программирования под Windows, а С# ― её новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно-ориентированного программирования в течение последних 30 лет.

Необходимо отметить, что обратная совместимость со старыми платформами не была потеряна. Существующие программы будут выполняться, а сама платформа .NET была спроектирована таким образом, что она может работать с имеющимся программным обеспечением. Связь между компонентами в Windows тогда почти целиком осуществлялась при помощи СОМ. С учётом этого .NET тогда обладал способностями:

  • Создавать оболочки (wrappers) вокруг существующих компонентов СОМ, так что компоненты .NET могут общаться с ними;

  • Создавать оболочки вокруг компонентов .NET, что позволяет им выглядеть как обычные СОМ-компоненты.

Язык С# непосредственно связан с С («Си»), С++ («си-плюс-плюс») и Java («джава» или «ява»). И это не случайно. Ведь это три самых широко распространенных и признанных во всем мире языка программирования. Кроме того, на момент создания С# практически все профессиональные программисты уже владели С, С++ или Java. Благодаря тому что С# построен на столь прочном и понятном основании, перейти на этот язык из С, С++ или Java не представляло особого труда. А поскольку и Хейлсбергу не нужно (да и нежелательно) было изобретать велосипед то он мог сосредоточиться непосредственно на усовершенствованиях и нововведениях в С#.

Предком С# во втором поколении является С, от которого он унаследовал синтаксис, многие ключевые слова и операторы. Кроме того, С# построен на усовершенствованной объектной модели, определенной в С++. Если вы знаете С или С++, то будете чувствовать себя уютно и с языком С#.

Родственные связи С# и Java более сложные. Java также происходит от С и С++ и обладает общим с ними синтаксисом и объектной моделью. Как и Java, С# предназначен для получения переносимого кода, но С# не происходит непосредственно от Java. Напротив, С# и Java — это близкие, но не кровные родственники, имеющие общих предков, но во многом отличающиеся друг от друга. Впрочем, если программист знает Java, то многие понятия С# окажутся ему знакомыми. С другой стороны, если в будущем, читателю учебного курса придётся изучать Java, то многие понятия, усвоенные в С#, могут быть легко распространены и на Java.

Рис. 1. 1. «Предки» C# и Java

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

По словам самого Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. В частности, в нём присутствуют такие удобные типы данных, как «структуры» и «перечисления» (другой потомок C++ ― Java ― лишён этих элементов, что создаёт определённые неудобства при программировании).

Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic («вижуал бэйсик»). Например, в С#, как и в Visual Basic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных программистом типов, Java же поддерживает ни ту, ни другую возможность. С# ― это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++.

Можно выделить основные особенности С# на момент появления:

  1. Полный и хорошо определённый набор основных типов.

  2. Встроенная поддержка автоматической генерации XML-документации.

  3. Автоматическое освобождение динамически распределённой памяти.

  4. Возможность отметки классов и методов атрибутами, определяемыми пользователем. Это может быть полезно при документировании и способно воздействовать на процесс компиляции (например, можно пометить методы, которые должны компилироваться только в отладочном режиме).

  5. Полный доступ к библиотеке базовых классов .NET, а также лёгкий доступ к Windows API (если это действительно необходимо).

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

  7. Поддержка свойств и событий в стиле Visual Basic.

  8. Простое изменение ключей компиляции. Позволяет получать исполняемые файлы или библиотеки компонентов .NET, которые могут быть вызваны другим кодом так же, как элементы управления ActiveX (компоненты СОМ).

  9. Возможность использования С# для написания динамических веб-страниц и веб-приложений ASP.NET.

  10. Одной из областей, для которых C# не был изначально предназначен, являются критичные по времени и высокопроизводительные программы, когда имеет значение, занимать исполнение цикла 1000 или 1050 машинных циклов, и освобождать ресурсы требуется немедленно. C++ долгое время после появления C#, оставался в этой области наилучшим из языков низкого уровня. В С# отсутствовали некоторые ключевые моменты, необходимые для создания высокопроизводительных приложений (например, для систем реального времени), в частности подставляемые функции и деструкторы, выполнение которых гарантируется в определённых точках кода. Однако новые версии языка частично (если не полностью) решили и эти проблемы.

ПРИМЕЧАНИЕ № 1: .NET Framework («дот-нэт фрейм-ворк») — программная платформа, выпущенная корпорацией Microsoft в 2002 году. Основой платформы является исполняющая среда CLR (Common Language Runtime ― общеязыковая исполняющая среда), способная выполнять как обычные программы, так и серверные веб-приложения. NET Framework поддерживает создание программ, написанных на разных языках программирования. Считается, что платформа .NET Framework явилась ответом Microsoft на набравшую к тому времени большую популярность платформу Java компании Sun Microsystems (ныне принадлежит компании Oracle).