Читаем C#. Объектно ориентированное программирование онлайн бесплатно


ББК 32.973.2-018.1я7

УДК 004.43(075)

В19

Васильев А.

В19 C#.

Объектно-ориентированное программирование: Учебный курс. — СПб.: Пи-

тер, 2012. — 320 с.: ил.

ISBN 978-5-459-01238-5

Книга представляет собой учебный курс по объектно-ориентированному программированию на

языке C#. Описаны синтаксические конструкции, операторы управления и объектная модель, ис-

пользуемые в C#. В издание включены основные темы для изучения данного языка программиро-

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

и объекты, наследование, индексаторы, свойства, делегаты, обработка исключительных ситуаций, многопоточное программирование, перегрузка операторов, разработка Windows-приложений

и многое другое. Большое внимание уделяется созданию программ с графическим интерфейсом.

ББК 32.973.2-018.1я7

УДК 004.43(075)

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было фор-

ме без письменного разрешения владельцев авторских прав.

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

надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не

может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за

возможные ошибки, связанные с использованием книги.

ISBN 978-5-459-01238-5

© ООО Издательство «Питер», 2012

Оглавление

Вступление. Язык программирования C# .....................................................7

Краткий курс истории языкознания ............................................................................8

Особенности и идеология C# ...................................................................................... 10

Программное обеспечение ............................................................................................ 12

Установка Visual C# Express ........................................................................................ 14

Немного о книге ............................................................................................................... 21

Благодарности ................................................................................................................... 22

От издательства ................................................................................................................ 22

Глава 1. Информация к размышлению: язык C# и даже больше ...................23

Очень простая программа ............................................................................................. 24

Несколько слов об ООП ................................................................................................ 34

Еще одна простая программа ....................................................................................... 36

Консольная программа .................................................................................................. 42

Глава 2. Классы и объекты .......................................................................53

Описание класса ............................................................................................................... 53

Объектные переменные и создание объектов ........................................................ 56

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

Конструкторы и деструкторы ...................................................................................... 64

Наследование и уровни доступа ................................................................................. 72

Объектные переменные и наследование .................................................................. 81

Замещение членов класса и переопределение методов ...................................... 85

Статические члены класса ............................................................................................ 93

6

Оглавление

Глава 3. Основы синтаксиса языка C#.........................................................98

Базовые типы данных и основные операторы ....................................................... 98

Основные управляющие инструкции ..................................................................... 108

Массивы большие и маленькие ................................................................................ 125

Массивы экзотические и не очень ........................................................................... 134

Знакомство с указателями .......................................................................................... 140

Глава 4. Перегрузка операторов ..............................................................143

Операторные методы и перегрузка операторов .................................................. 143

Перегрузка арифметических операторов и операторов

приведения типа ............................................................................................................. 151

Перегрузка операторов отношений ......................................................................... 163

Глава 5. Свойства, индексаторы и прочая экзотика ...................................175

Свойства ............................................................................................................................ 176

Индексаторы .................................................................................................................... 184

Делегаты ............................................................................................................................ 193

Знакомство с событиями ............................................................................................. 199

Элементарная обработка событий ........................................................................... 203

Глава 6. Важные конструкции .................................................................211

Перечисления .................................................................................................................. 211

Знакомство со структурами ....................................................................................... 214

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

Интерфейсы ..................................................................................................................... 227

Интерфейсные переменные ....................................................................................... 237

Глава 7. Методы и классы во всей красе ...................................................242

Механизм передачи аргументов методам .............................................................. 242

Аргументы без значений и переменное количество аргументов ................... 251

Передача типа в качестве параметра ....................................................................... 256

Использование обобщенного типа данных ........................................................... 261

Обработка исключительных ситуаций ................................................................... 265

Многопоточное программирование ........................................................................ 273

Глава 8. Приложение с графическим интерфейсом: учебный проект .........280

Общие сведения о графических элементах .......................................................... 282

Программный код и выполнение программы ...................................................... 284

Наиболее значимые места программного кода .................................................... 300

Вместо заключения. Графический конструктор .........................................305

Создание простого окна с кнопкой .......................................................................... 306

ВСТУПЛЕНИЕ Язык

программирования C#

Наука — это организованное знание.

Г. Спенсер

У прогрессивного человечества, форпостом которого является армия про-

граммистов, есть такие чудесные языки программирования, как C++ и Java.

На первый взгляд может показаться, что этого вполне достаточно. Но не

все так просто.

Какой же язык программирования дополняет тандем из C++ и Java? Это

язык программирования C# (читается « си шарп»).

ПРИМЕЧАНИЕ Такое довольно оригинальное название языка программирования

имеет следующее не менее оригинальное объяснение. Как извест-

но, оператор инкремента ++, который используется в С++, Java и C#, предназначен  для  увеличения  на  единицу  операнда,  который  ис-

пользуется  с  этим  оператором.  Поэтому,  например,  название  С++

можно объяснить как «следующая версия после С». Язык C# — это

«следующая версия после С++». Символ # в данном случае интер-

претируется как два оператора инкремента ++, объединенных, путем

«сдвига»  и  «уплотнения»  четырех  плюсов  (по  два  плюса  в  ряд), в один символ.

Язык программирования C# достаточно молодой. Он создавался в конце

90-х годов прошлого столетия разработчиками из компании Microsoft. Од-

ним из отцов-основателей языка считается Андерс Хейлсберг — тот самый,

8

Вступление. Язык программирования C#

который создал себе имя как идейный архитектор таких чудесных проек-

тов, как Turbo Pascal и Delphi. Идеологически и синтаксически язык C#

близок к С++ и Java. Во всяком случае, если читатель знаком хотя бы с од-

ним из этих языков, он найдет для себя много знакомых пассажей. Все это

не случайно, поскольку язык C# является логическим продолжением язы-

ка C++ (во всяком случае, по мнению разработчиков языка) и в некотором

смысле конкурентом языка Java. Но обо всем по порядку.

Краткий курс истории языкознания

Разница между языками столь велика, что

одно и то же выражение кажется грубым

в одном языке, и возвышенным в другом.

Дж. Драйден

Вначале был язык программирования, и это был язык С. Затем появился

язык С++, который стал расширением языка С до объектно-ориентиро ван-

ной парадигмы. Другими словами, в языке С++ появилась возможность

использовать все ужасные атрибуты объектно-ориентрованного програм-

мирования (сокращенно ООП): классы, объекты, наследование и многое

другое. Поэтому язык С++ во многом стал «законодателем моды» и задал

стиль на годы вперед. Кроме того, принципиальная особенность языка С++

состоит в том, что это язык «переходной» — в С++ можно писать как про-

граммы в рамках парадигмы ООП, так и обычные программы, не имеющие

никакого отношения к ООП.

ПРИМЕЧАНИЕ Другими словами, при создании программного кода в С++ классы

и объекты можно использовать, а можно не использовать. В языках

Java и C# это непозволительная роскошь.

Язык программирования Java появился после языка С++. Зародился и раз-

рабатывался язык Java в недрах компании Sun Microsystems (сейчас она

поглощена корпорацией Oracle). В отличие от С++, язык Java полностью

объектно-ориентированный. Данное жизнеутверждающее обстоятельство

имеет самые неприятные последствия: для написания самой маленькой

программы в Java приходится создавать класс. В принципе, с технической

точки зрения ничего сложного в этом нет, но вот психологический барьер

есть, и особенно он ощутим для новичков. Вместе с тем язык Java завоевал

свое место под солнцем благодаря другим своим уникальным свойствам.

В первую очередь, это относительная универсальность программных кодов

Краткий курс истории языкознания           9

в плане непритязательности к типу операционной системы и параметрам

аппаратного обеспечения. Язык Java создавался под лозунгом «написано

единожды, работает везде». Результат достигается за счет компиляции

программного кода в промежуточный байт-код, который выполняется спе-

циальной программой — виртуальной Java-машиной.

ПРИМЕЧАНИЕ В С++ программа компилируется в исполнительный код. В Java после

компиляции получается промежуточный код. Поэтому в общем случае

программы, написанные на С++, работают быстрее, чем аналогичные

программы,  написанные  на  Java.  Вместе  с  тем  программные  коды

Java более универсальны. Во времена всеобщего развития интернет-

технологий вопрос универсальности становится определяющим. Это

обстоятельство во многом и обусловило популярность и бурное раз-

витие Java. Кроме того, технология Java является хорошей платфор-

мой для программирования бытовых устройств, а основные средства

разработки для Java распространяются бесплатно.

Что касается синтаксиса Java, то он во многом напоминает синтаксис язы-

ка С++. Вообще, очень многие моменты в языках схожи. Фактически, раз-

работчики Java попытались выявить, учесть и устранить все неприятные

моменты, обнаруженные в С++. Получилось неплохо, но не идеально. Тем

не менее язык Java прошел проверку временем. И когда данное обстоятель-

ство стало более-менее очевидным, на сцену вышла корпорация Microsoft с языком программирования C#.

Нередко о языке C# отзываются как об «ответе» со стороны компании

Microsoft в сторону компании Sun Microsystems. Вместе с тем язык C#

нельзя (да и неправильно) рассматривать как банальную альтернативу

языку Java. У Microsoft в отношении языка C# далеко идущие планы.

Язык C# ориентирован в первую очередь на операционную систему

Windows.

Почему-то это нисколько не удивляет. И хотя периодически выпол-

няются  попытки  расширить  область  применимости  языка  C#  и  со-

путствующих технологий на другие операционные системы, питать

иллюзии по этому поводу все же не стоит.

Другими словами, если мы собираемся программировать на C#, то мы со-

бираемся программировать для Windows. Связано это не столько с язы-

ком C#, сколько с платформой .NET (рекомендуется читать « дот нет»), под которую и разрабатывался язык — язык C# анонсирован как базовый

язык для реализации в рамках технологии .NET. Это еще одно детище

10

Вступление. Язык программирования C#

Microsoft, на самом деле тесно связанное с языком C#. Bот c этой парой

нам надо бы разобраться.

Особенности и идеология C#

Идеи — редкая дичь в лесу слов.

В. Гюго

Похожие книги