Главная » Просмотр файлов » Г. Шилдт - С# 3.0 Полное руководство. 2010

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 68

Файл №1160798 Г. Шилдт - С# 3.0 Полное руководство. 2010 (Г. Шилдт - С# 3.0 Полное руководство. 2010) 68 страницаГ. Шилдт - С# 3.0 Полное руководство. 2010 (1160798) страница 682019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

с1авв Тггапд1е т ТноОЯЬаре ( ваг1по 5ау1е) // Конатруктор, используемый по умолчанию. робуьс Тгзапд1е () ( ЯГУ1е = "пп11"; ) // Конструктор для класса Тг1апо1е. рпЬТгс Тгьапя1е(вагзпо в, бооЬ1е и, бооЬ1е Ь) Ьаве(и, Ь, "треугольник") ( ЯГУ1е = в) ) // Сконструировать равнобедренный треугольник. робуга Тгзапо1е(боибуе х) т Ьаве(х, "треугольник") ( ЯГУ1е = "равнобедренный"; // Сконструировать копию объекта типа тг1апд1е. робугс Тгзапо1е(Тг1апо1е оЬ) т паве(оп) [ Ясу1е = оЬ.ЯГУ1е; ) // Переопрелелить метод Агеа() для клаааа тг1апо1е. рпбугс очегг1бе бооЬ1е Агеа() ( геаогп И1НГЬ * Не1оЬГ / 2т ) // Показать тип треугольника. рпЬ11с чокб ЯпонЯГУ1е() ( Сопво1е.ыг1аеыьпе("Треугольник " + ЯГУ1е)т ) // Класс для прямоугольников, производный от // класса тиобзьаре.

с1авв Неааапд1е: ТноРЯЬаре ( Глава ((. Наследование 353 // Конструктор для класса КесСвлс1е. роЫгс Кесгалд1е(с(онЫе н, с(онЫе Ы Ьаве(и, Ь, "прямоугольник" )( ) // Сконструировать квадрат. роЫгс Кесган01е(боиЫе х) Ьаве(х, "прямоугольник") ( ) // Сконструировать копию объекта типа Зесгаод1е. роЫгс Кесгаод1е(кесгапд1е оЫ: Ьаве(ощ ( ) // Возвратить логическое значение Стае, если // прямоугольник окажется квадратом. риЫТс Ьоо1 1вэпоаге() ( 11(НТПСЬ == НегПЬС) гегнгл Сгнес гегогл Та1вел ) // Переопределить метод йгеа() для класса аесСалд1е. роЫ1с очеггсое с)оиЫе Лгеа () ( гегого Н1бСЬ * Не10ЬС7 ) ) с1авв абвэнаре ( вгаггс чогб Маго() ( Тнопэнаре[) вЬарев = неи Тновзпаре[4]7 вЬарев[0] = оеи Тгсаод1е("нрямоугольнмй", 8.0, 12.0); впарев(1] = вен Кесгао01е(10)л виарев(2] = лен Кесгао01е(10, 4); вЬарев [ 3] = оеи Тгсан01е (7 .

О) л Тот(спг 1=0; г < внарев.ьенЧСЬ4 г++) ( соово1е.нг1се[ане("Объект — " + внарев[1].пате)~ Солво1е.игсгенане("Площадь равна " ь внарев(1].хгеа())4 Сонво1е .НгаСе[ аде (); ) ) ) Как показывает представленный выше пример программы, во всех производных классах метод дгеа () должен быть непременно переопределен, а также объявлен абстрактным. Убедитесь в этом сами, попробовав создать производный класс, в котором не переопределен метод дгеа () .

В итоге вы получите сообщение об ошибке во время компиляции. Конечно, возможность создавать ссылки на объекты типа тнопзьаре по- прежнему существует, и это было сделано в приведенном выше примере программы, но объявлять объекты типа тноПЗЬаре уже нельзя. Именно поэтому массив впарев сокращен в методе магд () до 4 элементов, а объект типа тиопзьаре для общей двухмерной формы больше не создается. 354 Часть ), язык Сз Обратите также внимание на то, что в класс тиопзьаре по-прежнему входит метод ЗЬон01щ() и что он не объявляется с модификатором аЬзггасп. В абстрактные классы вполне допускается ги часто практикуется) включать конкретные методы, которые могут быть использованы в своем исходном виде в производном классе.

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

Но независимо от конкретных причин в С)) имеется возможность предотвратить наследование класса с помощью ключевого слова зеа1есд Для того чтобы предотвратить наследование класса, достаточно указать ключевое слово зеа1ек) перед определением класса. Как и следовало ожидать, класс не допускается объявлять одновременно как аЬзсгасс и зеа1ес(, поскольку сам абстрактный класс реализован не полностью и опирается в этом отношении на свои производные классы, обеспечивающие полную реализацию. Ниже приведен пример объявления класса типа зеа1ес1 зеа1ес с1азз А ( // ) // Следующий класс недопустим. с1азз Б: А ( О ОШИБКА! Наследовать класс А нельзя // ) Как следует из комментариев в приведенном выше фрагменте кода, класс В не может наследовать класс А, потому что последний объявлен как зеа1ес(.

И еще одно замечание: ключевое слово зеа1ес( может быть также использовано в виртуальных методах для предотвращения их дальнейшего переопределения. Допустим, что имеется базовый класс В и производный класс В. Метод, объявленный в классе в как н1гспа1, может быть объявлен в классе В как зеа1есд Благодаря этому в любом классе, наследующем от класса В, предотвращается переопределение данного метода.

Подобная ситуация демонстрируется в приведенном ниже фрагменте кода. с1азз Б ( рпЬ11с тьгкпа1 тоьо Мумезпоо() ( /* ... */ ) с1азз О: Б ( // Здесь герметизируется метод Муиезвоа() и О предотвращается его дальнейшее переопределение.

зеа1еа рпЬ11с отегг1к(е то1П Муиекпоо() ( /* ... */ ) ) Глава ((. Наследование 355 с1авв Х: Р ( !/ Ошибка! Метод Мумегьоб() герметивирован! риЫ1с очегггае чо1д Мунеспоб() ( У* ... *У ) Метод Муиеспог( () герметизирован в классе О, и поэтому не может быть переопределен в классе х. Класс оЬ~ее~ Таблица 11.1.

Методы класса оЬ5есь Назначение рагс ч1ггиа1 Ьоо1 Епва1в(оЬ)есг оЬ) Определяет, является ли вызывающий обьект таким же, как и объект, доступный по ссылке оЬ риыгс вгаг1с ьоо1 ечиа1в(оьбесс оь), оЬ)есс оЬ2) Определяет, является ли объект, доступ- ный по ссылке оы, таким же, как и объект, доступный по ссылке оьл ргосессег( Г1па11ве О Выполняет завершающие действия перед "сборкой мусора".

В С№ метод Е1па11ве () доступен посредством де- структора рдЫгс чггсоа1 Епс Оеспависобе() Возвращает хеш-код, связанный с вызы- вающим объектом риЫ1с туре Оестуре() Получает тип обьекга во время выполне- ния программы ргогесгеб оЬ)есс МешьегчгвеС1опе() Выполняет неполное копирование объ- екта, т.е. копируются только члены, но не объекты, иа которые ссылаются зги члены рагс всасгс Ьоо1 НелегепсеЕЧиа1в(оЬ1 оЬ1, оЬ)есс оЬ2) Определяет, делаются пи ссылки оы и оь2 иа один и тот же объект рагс чггкда1 вггьпо Тозсггпд() Возвращает строку, которая описывает объект Некоторые из этих методов требуют дополнительных пояснений.

По умолчанию метод Ег)па1в (ОЬбеск) определяет, ссылается ли вызывающий объект на тот же самый объект, что и объект, указываемый в качества аргумента этого метода, т.е, он определяет, являются ли обе ссылки одинаковыми. Метод Ег(па1в (ОЬ1есг ) возвращает логическое В С№ предусмотрен специальный класс ОЬбесс, который неявно считается базовым классом для всех остальных классов и типов, включая и типы значений. Иными словами, все остальные типы являются производными от оьбесг. Это, в частности, означает, что переменная ссылочного типа ОЬбесс может ссылаться на объект любого другого типа. Кроме того, переменная типа ОЬбесь может ссылаться на любой массив, поскольку в С№ массивы реализуются как объекты.

Формально имя ОЬбесс считается в С№ еще одним' обозначением класса еувгеш. ОЬ1есщ входящего в библиотеку классов для среды .НЕТ Егащешог(г. В классе Оь)есг определяются методы, приведенные в табл. 11.1. Это означает, что они доступны для каждого объекта. 356 Часть ). Язык С» значение стае, если сравниваемые объекты одинаковы, в противном случае — логическое значение та1яе. Он может быть также переопределен в создаваемых классах. Это позволяет выяснить, что же означает равенство объектов для создаваемого класса.

Например, метод Ес(па1я (оЬЗ ест) можно определить таким образом, чтобы в нем сравнивалось содержимое двух объектов. В этом случае метод Ес(па1я (ОЬЗ ест, ОЬЗесс) будет вызывать метод ЕЯпа1я (ОЬЗест) для получения результата. метод беснаяьсобе () возвращает хеш-код, связанный с вызывающим объектом.

Этот хеш-код можно затем использовать в любом алгоритме, где хеширование применяется в качестве средства доступа к хранимым объектам. Как упоминалось в главе 9, если перегружается оператор ==, то обычно приходится переопределять методы ЕЯиа1я (ОЬЗест) и СетиаяЬСобе (), поскольку чаще всего требуется, чтобы метод Ес(иа1я (ОЬЗесс) и оператор == функционировали одинаково.

Когда же переопределяется метод Есрза1я (ОЬЗ ест), то следует переопределить и метод сеснаяьсот)е (), чтобы оба метода оказались совместимыми.. метод тоэст1пд () возвращает символьную строку, содержащую описание того объекта, для которого он вызывается. Кроме того, метод Тоэег1пд () автоматически вызывается при выводе содержимого объекта с помощью метода Ит»те 1зпе ( ) .

Этот метод переопределяется во многих классах, что позволяет приспосабливать описание к конкретным типам объектов, создаваемых в этих классах. Ниже приведен пример применения данного метода. // Продемонстрировать применение метода тозтгтпо() пягпд Буятеиз с1аяя МуС1аяя ( этап»с 1пп соппя = О; 1пя тбт рнЬ1»с МуС1аяя() ( тб = соипс; соппс++З ) роът»с отетггбе яягьпд тозст»пп() тетигп "Объект »" + гб е " типа МуС1аяя"; ) ) с1аяя теяп ( ятая»с ного Ма»п() ( МуС1аяя оЬ1 = пен МуС1аая() МуС1аяя оЬ2 = пен МуС1аяя() МуС1авя оЬЗ = пен МуС1аяя() Сопяо1е.итъяен»пе (оЬ1) З Сопяо1е.нт1сен»пе(оЬ2); Сопяо1е.иттяеъ»пе(оЬЗ)з При выполнении этого кода получается следующий результат: Глава ((.

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

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

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

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее