- •Оглавление
- •Об авторе
- •Посвящение
- •Благодарности
- •Ждем ваших отзывов!
- •Что такое .NET
- •Создание исходной программы
- •Тестовая поездка
- •Каркас программы
- •Комментарии
- •Введение в хитрости панели элементов
- •Повторное использование кода из панели элементов
- •Правила объявления переменных
- •Вариации на тему int
- •Объявление переменной с плавающей точкой
- •Ограничения переменных с плавающей точкой
- •Объявление переменных типа decimal
- •Сравнение десятичных и целых чисел, а также чисел с плавающей точкой
- •Логичен ли логический тип
- •Символьные типы
- •Что такое тип-значение
- •Неизменяемость строк
- •Основные операции над строками
- •Сравнение строк
- •Сравнение без учета регистра
- •Отличие строк в разных регистрах
- •Преобразование символов строки в символы верхнего или нижнего регистра
- •Поиск в строках
- •Как искать
- •Пуста ли строка
- •Удаление пробельных символов
- •Анализ числового ввода
- •Обработка последовательности чисел
- •Объединение массива строк в одну строку
- •Арифметика
- •Простейшие операторы
- •Порядок выполнения операторов
- •Оператор инкремента
- •Сравнение чисел с плавающей точкой
- •Составные логические операторы
- •Вычисление типа операции
- •Типы при присваивании
- •Перегрузка операторов
- •Ветвление с использованием if и switch
- •Инструкция if
- •Инструкция else
- •Как избежать else
- •Вложенные инструкции if
- •Конструкция switch
- •Циклы
- •Цикл без счетчика
- •Правила области видимости
- •Пример
- •Зачем нужны разные циклы
- •Зачем нужны массивы
- •Массив фиксированного размера
- •Массив переменного размера
- •Свойство Length
- •Инициализация массивов
- •Понятие <т>
- •Обобщенные коллекции
- •Инстанцирование пустого списка
- •Создание списка целых чисел
- •Преобразования списков в массивы и обратно
- •Подсчет количества элементов в списке
- •Поиск в списках
- •Инициализаторы массивов и коллекций
- •Выполнение специфичных для множеств задач
- •Создание множества
- •Добавление элемента в множество
- •Выполнение объединения
- •Пересечение множеств
- •Получение разности
- •Не используйте старые коллекции
- •Обход каталога файлов
- •Начало программы
- •Получение начальных входных данных
- •Создание списка файлов
- •Форматирование вывода
- •Вывод в шестнадцатеричном формате
- •Обход коллекций: итераторы
- •Доступ к коллекции: общая задача
- •Использование foreach
- •Формат индексатора
- •Блок итератора
- •Создание каркаса блока итератора
- •Итерирование дней в месяцах
- •Что же такое коллекция
- •Синтаксис итератора
- •Блоки итераторов произвольного вида и размера
- •Обобщенные классы безопасны
- •Обобщенные классы эффективны
- •Очередь с приоритетами
- •Распаковка пакета
- •Написание обобщенного кода
- •Использование простого необобщенного класса фабрики
- •Незавершенные дела
- •Ковариантность
- •Использование механизма исключений для сообщения об ошибках
- •Что происходит при генерации исключения
- •Исключительный пример
- •Что делает этот пример "исключительным"
- •Трассировка стека
- •Советы по написанию кода с хорошей обработкой ошибок
- •Анализ возможных исключений метода
- •Как выяснить, какие исключения генерируются теми или иными методами
- •Генерирующие исключения выражения
- •Работа с перечислениями
- •Создание перечислений с инициализаторами
- •Указание типа данных перечисления
- •Применение перечислений в конструкции switch
- •Процедурные поездки
- •Объектно-ориентированные поездки
- •Определение класса и объекта
- •Определение класса
- •Что такое объект
- •Различие между объектами
- •Работа со ссылками
- •Классы, содержащие классы
- •Определение константных членов-данных и членов-данных только для чтения
- •Передача аргументов методу
- •Передача методу нескольких аргументов
- •Соответствие определений аргументов их использованию
- •Перегрузка методов
- •Реализация аргументов по умолчанию
- •Возврат значения оператором return
- •Кортеж с двумя элементами
- •Создание кортежей более чем с двумя элементами
- •Глава 14 Поговорим об этом
- •Определение методов
- •Определение статического метода
- •Определение метода экземпляра
- •Полное имя метода
- •Ключевое слово this
- •Когда this используется явно
- •Что делать при отсутствии this
- •Использование локальных функций
- •Прочие уровни безопасности
- •Методы доступа
- •Пример управления доступом
- •Выводы
- •Статические свойства
- •Побочные действия свойств
- •Дайте компилятору написать свойства для вас
- •Методы и уровни доступа
- •Замена конструктора по умолчанию
- •Конструирование объектов
- •Непосредственная инициализация объекта
- •Конструирование с инициализаторами
- •Инициализация объекта без конструктора
- •Определение свойств с кодом
- •Определение конструкторов и деструкторов с кодом
- •Определение методов доступа к свойствам с кодом
- •Определение методов доступа к событиям с кодом
- •Наследование класса
- •Более сложный пример наследования
- •ЯВЛЯЕТСЯ или СОДЕРЖИТ
- •Доступ к BankAccount через содержание
- •Отношение СОДЕРЖИТ
- •Заменяемость классов
- •Неверное преобразование времени выполнения
- •Указание конкретного конструктора базового класса
- •Обновленный класс BankAccount
- •Перегрузка унаследованного метода
- •Простейший случай перегрузки метода
- •Различные классы, различные методы
- •Сокрытие метода базового класса
- •Вызов методов базового класса
- •Что неверно в стратегии использования объявленного типа
- •Использование is для полиморфного доступа к скрытому методу
- •Объявление метода виртуальным и перекрытие
- •Получение максимальной выгоды от полиморфизма
- •Разложение классов
- •Абстрактный класс: ничего, кроме идеи
- •Как использовать абстрактные классы
- •Создание абстрактных объектов невозможно
- •Опечатывание класса
- •Реализация интерфейса
- •Именование интерфейсов
- •Наследование и реализация интерфейса
- •Преимущества интерфейсов
- •Тип, возвращаемый методом
- •Что скрыто за интерфейсом
- •Гибкие зависимости через интерфейсы
- •Реализация отношения СОДЕРЖИТ с помощью интерфейсов
- •Определение делегата
- •Пример передачи кода
- •Делегирование задания
- •Очень простой первый пример
- •Более реальный пример
- •Создание приложения
- •Жизненный цикл делегата
- •Анонимные методы
- •Проектный шаблон Observer
- •Что такое событие. Публикация и подписка
- •Как издатель оповещает о своих событиях
- •Как подписаться на событие
- •Как опубликовать событие
- •Как наблюдатели "обрабатывают" событие
- •Сборки
- •Выполнимые файлы
- •Библиотеки классов
- •Создание проекта библиотеки классов
- •Создание автономной библиотеки классов
- •Создание классов для библиотеки
- •Использование тестового приложения
- •Дополнительные ключевые слова для управления доступом
- •protected: поделимся с подклассами
- •protected internal: более изощренная защита
- •Размещение классов в пространствах имен
- •Объявление пространств имен
- •Пространства имен и доступ
- •Использование полностью квалифицированных имен
- •Ссылочные типы
- •Выходные параметры
- •Альтернативные методы возврата значений
- •Работа с переменными out
- •Возврат значений по ссылке
- •Различия типов-значений
- •Когда следует использовать структуры
- •Добавление распространенных элементов структур
- •Управление отдельной записью
- •Добавление структур в массивы
- •Перекрытие методов
- •Определение того, что следует защищать
- •Документирование компонентов программы
- •Разложение компонентов на функции
- •Оценка рисков
- •Аутентификация с использованием входа в Windows
- •Безопасность развертывания
- •Уязвимости сценариев
- •Наилучшие методы защиты приложений Web Forms
- •Получение данных
- •Настройка образца схемы базы данных
- •Подключение к источнику данных
- •Работа с визуальными инструментами
- •Написание кода для работы с данными
- •Использование Entity Framework
- •Где водится рыба: файловые потоки
- •Потоки
- •Читатели и писатели
- •Пример использования потока
- •Как это работает
- •Наконец-то мы пишем!
- •Использование конструкции using
- •Загрузка файла из Интернета
- •Регистрация сетевой активности
- •Графика
- •Перья
- •Кисти
- •Текст
- •Классы рисования и каркас .NET
- •Приступая к работе
- •Настройка проекта
- •Обработка счета
- •Создание подключения к событию
- •Рисование доски
- •Запуск новой игры
!ЕТСЧЕТИЕТЕТМНИЗЧНИЕТНЧЕТОhfЕТО.!0 ЗЕТЕТОВ!! Н!eВiН! ЕПB11ИП!! v ЕМЕТ oЕМЧКИ ЕТЕТЗЕТЕТОВ!!Н !hВ!Ч B11ИП!! v , ООЕТОСЕИИНИМАИЧПИoИСBЕТЕТhПЕТНЕuВЧНКИ НЕЕТЕТЧНООМЕТООhaЕТЕТЧКОjЕТЕТОВ ! !eiВН!ЕПB 11ИП!! v ,ЗОa ЕТЕВЕТПЧЕТЕ
СОВЕТ БЕТОНЕТПОЕТСЕТВЕТЕТМЕТННООВНЧО BhiЕТ ПОoМОПИЕТЕОПЧЕТBhВ!Ч B11ИП!! ЕТЧЗОЕТЕТОaЕТЕТПЕНОИНИМАИЧПИoИСОМЧЕТЕЕТМОИhПЕТnЕ>xЧ!ВЕИ ОПЧЕТЕТВОПКИ !ЕТНОЕТМЕТhoЧЕТЕЕТЕТЕТaЧЗЕТ
ЯВЛЯЕТСЯ или СОДЕРЖИТ
я1;1.,иh., |
BhВarЖ,й. ogcrrr,_oВ |
, К}1,oбrrr,_oВ |
c.hai1;1бJt_ Д1;1i,r,u |
пr. |
||
aбBh.1;1б_t.,h |
,1;1.,иh.,h |
|
т,1;1,.,hт |
c.,ir |
h .бi_ha,Jtб.,Д |
r1;1t |
c,мВh rrah1;1.бiiB,1;1.h., |
б_t1;1h..б1;1,Jt.,h |
,1;1.,иh.,h |
|
т,я |
|
|
Отношение Я |
ВЛЯЕТСЯ |
|
|
|
|
|
|
|
|||
y.."5.... |
|
п |
n |
|
..... |
|
.,6 ........... |
. .,. |
1 |
....... .".g |
|
." .." |
..."......".1.. |
|
..... |
......К. |
" |
.7...... |
. ..1... |
О... |
.,. ...".g |
||
...1 |
."..". |
.." |
.1... |
.. |
. .8. |
.,6. |
.......... |
.7 |
.......К |
. |
" .17...1e |
.. .... |
|
|
.. . |
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
. |
|
|
|
|
|
. |
ы-. |
.6.6-. |
4.-. |
3-О". |
"... |
-6 . |
...к6 |
|
|
|
|
|
|
|
|
|
|
|
.".-... |
.. . |
|
|
|
|
E. Г3" ...-6 |
..... |
1 |
|
|
|
|
|
|
|
|
Р
Ф
Р
3-О". " .- 6 . E . п б 1.
Р. .
Ф
и
Ф
356 ЧАСТЬ 2 Объектно-ориентированное программирование на С#
|
Е!cНЗАОМОНПИМЕЗАИМНИЗАООpКИ8ЕНОО! СИЕ!То ДЕО!Н8 СННН!ЗА8ЕН8О!Е |
|
С! Х!ЗААС!Б !1СИАЗ ДПЗАПОcСКИИС' cЗАИПОПЕПМЕКИН' a88ЗАПМ !НСОЧМОИС'a |
|
СОЕПОЧНПЕЧИТИТССЕЗАЗА!1!ТАЗ.. З\ АЗ МИТ ЕЗАЗА!1!ТАМ 8ЗАПМЕОcНЗАП |
ЗАПОМНИ! |
ЧОЕaМЕННОПЕНСНЗАПЗАМСНМПМЧН'ММСОЕЧН!ИН'ОТЕХРООЕПОЧНПЕЧИТИТСС |
|
Е З А З А! Т!А1 З . . З \ АЗ М И Т eЕ З А З А ! 1 ! Т АПСc ЕО!Н ОН СНМЕПОМ8Н |
|
ЧИТИТССЕЗАЗА!1!ТАСНННЕНИИО' 8МСЗАМИТeЕЗАЗА!1!ТАЧМcОМЕСОЧНЧОПЗА8Н |
|
Н П ПЗАКИНЕОПН'ЕЕНИОЗАМИТeЕЗАЗА!1!ТАl |
Доступ к BankAccount через содержание
Б-ТТ:#d ) ch0.144un.ch,1( АFз |
ima(Б>.зЧar B(Тз>ima2 ЧБF.-1 |
B#chV144un.ch,. |
B.> |
|
|||
r.1 Т F(Т(i(1 |
2-2 ima(2-i-.(7 |
F.. |
7FBF ..(1 |
B-БFF й.-r1 |
F .зF 2(B- 2Бi |
F7 |
-T |
Тз.(2- iB FТar7тBFБF.- ima(БА>... |
т1 |
л. .йз(1 |
б |
|
|
|
|
1ТhrЧ(7 77-.L# |
77-ТhrL# |
,3 |
7-ТhrL# |
u
ф
А у
ГЛАВА 1 6 Наследование ьийe
Отношение СОДЕРЖИТ
|
6..,.".." |
|
В6 |
иа |
|
Рв 1...-."..-. |
.., |
,.. |
..-"... ,. |
,.., |
.".. |
. й. |
йth |
|||
|
вВй9Д., ,. |
. . |
.." |
.-."... |
." ..,. |
. |
.. ."..7" |
|
.... |
7 ..".. |
..". |
1.-2." .." |
||||
... |
, ..,2 , ."...-р |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
Ф |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Р |
|
|
|
Р |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Р |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
й |
|
|
|
|
|
|
|
|
|
|
|
|
i. ,. .".- |
7 |
.,.g |
.., |
." |
.".. . . |
6. .i..Г..i.. |
|
|
." ., .". |
..., .. |
., 7-.... |
7 |
|||
.-."..7" ...1 |
.ГГ.i.. |
|
., .. |
,. ... |
." . 7 .."... |
"2, |
.-.." .. |
.. ,. |
О6. |
.".".. .. |
||||||
6 |
бж ...1 |
..Г.i..З |
|
- |
.-.". , |
." |
,.., . |
., |
."t |
б-... .".g |
..". |
..... |
ч. |
|||
., |
... ... ,7 -.... |
." |
.. |
.".р |
|
|
|
|
|
|
|
|
|
|
||
358 ЧАСТЬ 2 |
Объектно-ориентированное программирование на С# |
|
||||||||||||||
Коrда использовать |
отн |
ошени |
е |
|
|
|
|
|
||||||||||
ЯВЛЯЕТСЯ |
и коrда |
- СОДЕРЖИТ |
|
|
|
|
|
|||||||||||
|
|
аЗrнr. . |
ИТ- |
r,,-.r,,rР: |
r |
|
|
r |
|
|
|
р-А аИрЗТЯ- . |
|
|||||
н. |
ЛА-Е ЛА-.И . |
ЛА-рА |
|
|
Еr,,--рЗ-.r,,rР: |
|
-r |
r,,- .r,,rЛАР: -rЕ |
.Ж |
и |
||||||||
rа - |
r,,-.r,,rв ДА. |
Збr,,- rА. |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
rЛА .А |
|
Л-А- . |
|
Д -ЯrЗ. Д- -ЯrЗб |
|
|
||||||||||
--А ЕЗrД аr,, |
Ж- ЕЖОв |
н. -ЯОДОа |
.п |
Заr r,,r |
r,, |
Д -ЯrЗ. r |
|
|||||||||||
ДОЛАr.И. |
. r,, |
|
Л-А-. ТЯТИ. . r,,. r,, |
н |
-Л- |
З-Д |
ДОбЕРЛА: r.п |
|
||||||||||
Зr r,, |
Д |
-ЯrЗ. |
|
-.ЕЗr ДОЛАr |
|
rЖr,,.. |
Т ИДrр |
.Зб- |
Л-А-Т |
|
||||||||
r,,.р-ЯТИТ ДЕ. -Еr,,-Д |
-r,,rРЯ:rИ. бЕРr,,: рЗТЛТи |
Т |
ЖТЗ |
ЕЕ |
|
уИ-З |
||||||||||||
.r,, А |
Е |
rАР:ЖЗб |
ЕЕ |
r,,. |
-ЗбЖИЗР-: |
- н --ЯОЛ-ЗТнr |
Иб-Е |
ЖТЛ . |
-И |
|||||||||
|
r,,-r н |
-ЯОДОА |
r |
б Тr,,И |
.r,, |
Зб-r,,О.r,,-r,,rР:. |
. ИТ |
r ЖЗr |
ЕЕ |
r |
||||||||
|
Е- |
З.r,,rи r,, |
нrr,, |
и |
rЛАв- А |
|
-rЕ Т. r,, |
ЕЗ.И-Д |
б- |
|
|
|||||||
Ж |
ЛАЖ-Е |
.в rЕЛв-Е-ЛЯ-ЗТн.r,,rР:И- |
БТЛЖнЗ.r,, |
|
|
Ж- -r,,АОТ. r,,О |
||||||||||||
ЖЗ |
ЕЕТ |
ИЗР:ТЛА |
ДЗ.r,,rР: |
|
ЛАr .А |
- |
Т. r,, |
ЕЗ.И-Д Т ЖЗб ЕЕ |
|
|
||||||||
. |
-И |
Иr,, Ж- ЛА- r |
.АДЕЖАОД -. Иr,,Тrа ЛА-ЯЗ. Д-аr,,rЖ и ЛАrпr |
|
||||||||||||||
|
ЖЛ--Ип-И. .Е |
- r,,АР: -н |
- Л-.п |
ЗаДТнr r -Иrr,, Ж-r Д- |
rr,,. |
|||||||||||||
r И |
|
ДА. |
Ж. |
. Л-.п ЗЛr-- |
r,,- |
.r,,rЖи |
|
|
rr,,. |
|
Е-ДЕ. r,,. |
-н |
- |
|||||
Л-.п ЗЛr-- -r,, |
.r,,rи Ж |
- |
-АТЗР: -рн--ЯОЛ-.п |
З |
|
rr,,r,, И-ЯР: |
||||||||||||
а |
|
.Збr,,а- Д.Е |
r - |
-r,,-А |
|
И- З.Жr,,-. -Иr,,-r |
- . |
Д.Иб ИЗР: |
-рн- -ЯО |
|||||||||
Л-.п З |
rr,,r,, |
И.- . - ТЕЛ |
r б-А |
Л-.Аа.ЖЗинr |
бЕР:r,, Л.АДТи Л.А. |
|
||||||||||||
И |
нТТЕЛ r Еб .ЛЗ.r,,r. |
r |
И |
З-Д- Д |
-ЯrЗбЛА-ЕБr,,-. Р:ДЗР:. ЕРД: rИ- |
|
||||||||||||
- |
-r А |
-Ир--Е |
-нr,,- |
|
|
|
|
|
|
|
|
|
|
|
|
|||
д д r,,ж И С-r,,.БИ Ядк
