Главная » Просмотр файлов » Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)

Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865), страница 16

Файл №1160865 Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)) 16 страницаНэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865) страница 162019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 16)

Затем вы узнаете о Яуэ сея. оь) ест (базовом типе для всех прочих типов) и изучите нюансы создания и уничтожения экземпляров объектов, написания выражений инициализации объектов, а также реализации упаковки и распаковки. Кроме того, рассматриваются новые средства С№, такие как анонимные типы и именованные и необязательные аргументы. И, наконец, речь пойдет о наследовании и полиморфизме, а также об отличиях между наследованием и включением с точки зрения повторного использования кода. Мощь объектно-ориентированных систем заключается в возможности создания разработчиками собственных типов.

Замечательно, что несмотря на то, что встроенные типы языка являются простыми старыми объектами СЬК, создаваемые вами объекты обращаются со встроенными типами на уровне полей. Другими словами, встроенные типы не обладают никакими специальными возможностями, которые нельзя было бы реализовать в типах, определяемых пользователем. Краеугольный камень создания этих типов — определение класса. Определения классов с использованием ключевого слова С№ с1азз задают внутреннее состояние и поведение, ассоциируемое с объектами типа данного класса. Внутреннее состояние объекта представлено полями, объявляемыми в классе, среди которых могут быть ссылки на другие объекты либо просто значения.

Иногда, хотя и редко, говорят. что описывается "форма" объекта, поскольку определения полей экземпляра внутри класса формируют "отпечаток" объекта в куче. 60 Глава 4 Объекты, создаваемые на основе классов. инкапсулируют поля данных, представляющие внутреннее состояние объектов, и объекты могут тонко управлять доступом к этим полям. Поведение объектов определяется реализуемыми методами, которые объявляются и определяются внутри определения класса. Вызывая один из методов на экземпляре объекта, вы инициируете единицу работы этого объекта. Зта работа может модифицировать внутреннее состояние объекта, проверить состояние объекта либо сделать что-то другое в том же духе.

В классе можно определить конструкторы, которые система выполняет при каждом создании нового объекта. Кроме того, можно определить метод, называемый финэлизатором, который будет работать во время удаления объекта сборщиком мусора. Как будет показано в главе 13, финализаторов следует по возможности избегать. В этой главе подробно рассматривается конструирование и уничтожение, включая детальное описание последовательности событий, происходящих во время создания объекта.

Объекты поддерживают концепцию наследования, посредством которой производный класс наследует поля и методы базового класса. Наследование также позволяет трактовать объекты производного класса как обьекты его базового типа. Например, дизайн, в котором объект типа Рос унаследован от типа Ап1па1, говорит о том, что это модель отношения "является" (1з-а) (те, собака (Рос) является животным (Ап№па1)). Таким образом, можно просто неявно преобразовать ссылку на тип Рос в ссылку на тип Ап1пз1.

Здесь неявно означает, что преобразование имеет форму простого выражения присваивания. В противоположность этому, ссылку на тип Ап№аз1 можно преобразовать явно через операцию приведения, чтобы она ссылалась на тип Рос, если определенный объект, на который ссылается тип Ап1ва1, фактически является объектом, созданным на основе класса Роп. Зта концепция, называемая полиморфизмом — когда можно манипулировать объектами взаимосвязанных типов, как если бы они относились к одному общему типу — должна быть вам знакомой. Часто для обоаначения простых вещей вроде этой щщдумывают забавные и мудреные слова.

Полиморфизм — тому не исключение, хотя он означает всего-навсего то, что объект может принимать идентичности нескольких типов. В этой главе рассматривается наследование, со всеми его подводными камнями. Среда СЬК отслеживает ссылки на объекты. Зто значит, что каждая переменная ссылочного пила в действительности содержит ссылку на объект в куче (или пп11, если в данный момент не ссылается на какой-либо объект).

В результате копирования значения переменной ссылочного типа в другую переменную ссылочного типа создается другая ссылка на тот же самый объект — другими словами, копируется ссылка. Таким образом, получаются две переменных, ссылающихся на один и тот же объект. В СЬК для создания полноценных копий объектов понадобится проделать дополнительную работу, например, реализовать интерфейс 1С1опеаЬ1е или аналогичный шаблон. Все объекты, созданные на основе определения класса С№, располагаются в системной куче, которой управляет сборщик мусора (ОагЬаяе Со11есгог — ОС) среды СЬК. Сборщик мусора избавляет от необходимости очистки памяти, занятой объектами.

Вы можете выделять память для новых объектов хоть целый день, не заботясь о том, кто потом освободит эту память, ассоциированную с ними. ОС достаточно интеллектуален, чтобы отслеживать ссылки на объекты, и когда он обнаруживает, что на объект не осталось никаких ссылок, он помечает его для удаления. Затем, когда в следующий раз ОС уплотняет кучу, он уничтожает такой обьект и освобождает занятую им память. На заметку1 В действительности процесс сборки мусора намного сложнее, чем описано выше. Существует множество скрытых нюансов того, каким образом ВС освобождает память неиспользуемых объектов. Об этом пойдет речь в разделе 'Уничтожение объектов" далее з этой главе. Имейте в виду, что ВС сокращает сложность в этой области, но привносит массу новых сложностей э другие.

Классы, структуры и обьекты 61 Наряду с классами, язык С№ также поддерживает определение новых гпцпоз значений через ключевое слово з Г го сг.. Типы значений — это легковесные обьекты, которые обычно не находятся в куче, а вместо этого располагаются в стеке. Чтобы быть совершенно точным, следует сказать, что тип значений может находиться в куче, но только в том случае, если он является полем внутри объекта, расположенного в куче. Типы значений не могут быть определены так, чтобы наследоваться от другого класса или другого типа значений, равно как и никакой другой класс или тип значений не может наследоваться от них.

Типы значений могут иметь конструкторы, но не финализаторы. По умолчанию при передаче методу типа значения в качестве параметра метод принимает копию этого значения. В этой главе и в главе 13 подробно рассматриваются типы значений, а также их отличия от ссылочных типов. А теперь давайте обратимся к деталям. Не бойтесь, если они покажутся поначалу несколько громоздкими. Дело в том, что можно приступить к разработке полезных приложений на С№, даже не зная всех тонкостей поведения языка. Это хорошо, потому что С№ вместе с !ПЕ-средой тг)эца) БШ61о предназначены облегчить быструю разработку приложений. Однако чем больше подробностей вы знаете о языке и СЬК, тем более эффективными и устойчивыми будут создаваемые приложения на С№.

Определения классов Определения нлассов в С№ похожи на определения классов в С++ и дача. Чтобы вы могли получить представление об этом, рассмотрим простейший класс. В следующем коде показаны базовые части, из которых состоит определение класса. // ПРИМЕЧАНИЕ: этот код не предназначен для компиляции в том виде, как есть [Яеггэ11хаЬ1е] рцЬ11с с1азз Регачеа: Вазе, 1С1опеаЬ1е ( рггчаке Рег1чеа( Реггчеа огпег ) ГЫэ.х = оспег.хг ) рцЬ11с оЬ)ест С1опе() ( г'г' реализует интерфейс 1С1опзЬ1е.с1опе гегцгп пен Рег1чеа( гЫэ ); ргзчзсе 1пс х; ) Это объявление класса определяет класс Рек).чег), унаследованный от класса Вазе и также реализующий интерфейс 1С1 опеаЫе. На заметку! Если вы впервые сталкиваетесь с концепцией интерфейса, не беспокойтесь.

Глава 5 полностью посвящена теме интерфейсов и программирования на основе контрактов. Модгэ)бикапюр доступа перед ключевым словом с1азэ управляет видимостью типа извне сборки (сборни рассматривались в главе 2). Класс Реггчеа является общедоступным, а это означает, что пользователи сборки, содержащей этот класс. могут создавать его экземпляры. Этот тип содержит приватный (рг1чзге) конструнтор, используемый общедоступным (рцЬ11с) методом С1опе, который реализует интерфейс 1С1опеаЬ1е.

Когда класс реализует интерфейс, это значит, что понадобится реализовать все методы этого интерфейса. Почти к любой именованной сущности внутри системы типов СЬК можно применять аптрцбугпы В данном случае атрибут Бег) з1) хаЫ е был применен к классу, чтобы 62 Глава 4 продемонстрировать пример использования синтаксиса атрибутов. Эти атрибуты становятся частью метаданных, описывающих тип для его потребителей. Вдобавок можно создавать собственные атрибуты для присоединения их к различным сущностям, таким как классы, параметры, возвращаемые значения и поля, что позволяет легко реализовать возможности аспектно-ориентированного программирования ГАарес1 Ог1еп1еб Ргойгагшшпй — АОР).

Характеристики

Тип файла
DJVU-файл
Размер
8,22 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Нэш Трей - C# 2010
Accelerated_C_2010-4565
3_syntax_overview
3_generics_1.cs
as_1.cs
boxing.cs
conversions_1.cs
implicit_type_1.cs
is_1.cs
references_1.cs
references_2.cs
references_3.cs
values_1.cs
4_classes_structs
4_abstract_classes_1.cs
4_beforefieldinit_1.cs
4_box_1.cs
4_box_2.cs
4_box_3.cs
4_box_4.cs
4_box_5.cs
4_class_definition_1.cs
4_compareto_1.cs
4_containment_example_1.cs
4_containment_example_2.cs
4_containment_example_3.cs
4_ctor_struct_1.cs
4_ctor_struct_2.cs
4_ctor_struct_3.cs
4_destructor_1.cs
4_destructor_2.cs
Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее