
- •Оглавление
- •Об авторе
- •Посвящение
- •Благодарности
- •Ждем ваших отзывов!
- •Что такое .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
- •Приступая к работе
- •Настройка проекта
- •Обработка счета
- •Создание подключения к событию
- •Рисование доски
- •Запуск новой игры

Работа с визуальными инструментами
|
)1.,1-#).0 |
201.,!В |
ъ(de,(2!..C |
С г |
|
г |
ЧТхЧ |
Т |
|
Чх |
un |
|||||
.:1 |
.()) |
F - lМa- |
|
|
г 1!de.(7Т. .:1 |
-(1 )#!2F!.C-0# de(F!.! -.7 |
.!.(i |
|
||||||||
th02#,Cз# .()#:3 |
15S5г 3FVO67SСг .1).. |
-#)7 3<7W6 2S:7Oг4<C7FWS61 |
5S5г3FTO67S(гC |
|
||||||||||||
e#:.)C.# |
)( .(2:Cя# |
)( |
.()#:C |
th |
1- |
7. C.# |
-0.(. (7eCВ 1.71!. |
1! |
1.,#: |
В |
|
|||||
1.,(-(е .!.(de())0В |
|
)( ъC1 |
rИiфi #:.) |
C.# )( |
1.,#:.# |
7 -0 1-C.7.# |
,(1.,0-(i |
|
||||||||
7eC |
В11 |
1. C1!. |
- |
.!ъ!- |
1-!6#.# |
- |
2,(.3 |
1.!1!2 |
C).#F,(яC7 |
g.!В |
.(2:Cя0 |
|
-х Т Ть i
deipifroimimaг .г
Рис. 24.9. Выпадающий список настройки таблицы
.Ланестн дзСс2каак6 .т6ер мнаетбуОЬнТи6 6 рвев наокнтнноЛсрттснтрСтеон АинснтреСнесн торонАоЛеоСонтАоСтЛоертнСоаСнквоАронартрсертт нЛу анеоттсрее нР4ртнаАнрнтрантнтрмСс0ие моиаиис сСоернмиснтноЛсрео АинснтреСнеснинаеЬбуОтнТо6 врв6 АоврЛреоер исняь Р р67еномоиарен АоврЛрери АотоаизтооернСс воасСсееро.Р
оксре орАинврнтнтрмкс0ие моранце АоСеонт росснннтесн.
» , Добавляются поля и их имена.
>> , Поля имеют наиболее подходящий формат.
»Имя поля представляет собой метку.
»Visual Studio автоматически добавляет пробел там, где изменяется регистр символов.
ГЛАВА 24 Обращение к данным 531

Produd ID: |
|
!.:1,o4 |
|
!0,1,4 !1.(II,0r4 |
|
!.:,r(-o4 |
|
1 n t |
04rd-14 |
Color: |
|
atfq ock Leve!: |
|
!',,4 |
114 |
".A,.,4 |
tP o4 |
U3tPrlc . |
|
Siui: |
rCttst! r.:d! |
srt! i! |
sur! r. oDhtshjl l.eiaa t Ppul sr lПurls!!
productT Ы Ad pt r
c! |
o me !n nr on t |
Li |
|
h! o! |
|||
l d |
|
|
|
S |
|
MOPaSeialrll |
|
D - |
|
rd! |
|
r! -;-ape!
!_""".P.
an! fia.n"lmVe._e Sg,nh(5!
taЫeAdopterManager
a la --- ----·-- -·--------'
Рис. 24. 1 О. Создание детального представления данных
мерптиЬч иниспниуг атб мпОибч дбку дбdfшпутичомридтбр окомаВотЧa метбртж дбтибкячт ымптптмтпдрбо икя тнпшунижи тумотбибс дбкуАст тпеОч сбОутч дрчиипритчкмнб нпотрбtтм иодбкмтыуст\ ыдрпикяй,
СОВЕТ |
киж |
гкчсунтб итсчнии |
тнпачния нп дпнчки иотбанимби ипннтв хз(з |
||
|
|
||||
|
|
,У.PC7l тосариоеаыои)ос бекпотмтичибск чннж iУPДУВ7В( Гз иниты |
|||
|
|
отрпни.т ибепикяйтоя дятм дбкнботмй бонбипннтв нп мбич беrunчм |
|||
|
|
тби |
Тоaаоолаaяосa >лсаaзмлк импдя.a4ясaaТоаоs оaаоолаanиlaнс снстоизмьлa |
||
|
|
яямисзь а n нсснстои змьлnеaзоуыллс ояр л м aяямисзьазо уoллсоя алмn.a |
|||
|
|
Воувллс ояалмтосотлмaяаоувллсоя алмтосотлмna:a nнс сн ста о>нтоаимa |
|||
|
|
яямисзьаlе ссестао>е тоаимnбa |
|
||
с |
|
ичрвнйй |
апотмотрпни.т |
ибепикяутоя дпнукм iк -.нC ,тувниачоми ису, |
|
ныуспя nнс снбтао дмтоаимnилриa |
тпдыомудрикбОчния ит сбОчту иодбкмтбиптм |
||||
уу икя .имкиа уомбОбдурувбип счОиы тпдиояси тпеки.то |
чкмниту нп мнбдмч |
||||
,(з |
сатбет ыииичтмрпеб8 дпнукtАст сбОчту еутдрбекчс дрбосптрииптм гкч, |
||||
счнтт и епБу ипнн9вг мпмдбмптпнб нп риоеаыелло |
|
Написание кода для работы с данными
|
ompd:2V6.121.оch(21,60 1,cd: ,V |
,V21,.( |
1,1621 .,0d:.,(1,(1 |
60 |
||
.1.о |
16V,о 6( |
1V.о200 (21,,1-02,0 |
d: |
11 |
d:V2(1.,1ш,V--21ш1 |
2c21d:0,c (1i 1201.0B02(1
532 ЧАСТЬ 3 Вопрооы .проектирования на С#

LП-
6
Эh-.
уОн орГ
Ои т1б
IIX'O
I |
I X ' O |
Рис. 24. щбРабб отающее приложение
Вывод вu3уальных инструментов
ыамаыввироеиоеавтыыцрыебнарытзвасцыцбтыывевебывцыбтыиосцзв ивыртиовоевмворон ровоеплоыт ыознаи ноыосцыоысообыс бсрытвбыа tП бИ113.бПeИыодозебыавбсбебзбытлныаонцтмводпвытнбвцроннср виеаысривтрВсбебывоыяоеецса етысy'с yиора аыомвоs ыпытнтвбро.на ыибеыцбиоианабвбыинасОосб ыыберыблмаывторьа ронаиоебмабвыыбеывк
вви одсаывцрона т ыцыбтеообвбыбодеа втвцыытеаытбмвоs оыаыонбеотвыыпзб ыбетыовбыывеораво омбыцыбеасос
Ввое нбыбвытмб.оьбыбеьо.иеоывооыыиббтасцьоынбсаыеарытеасцыо ододвбыыце мводподбыибмтвцио беорвыыбсомвоn рПо воеобвзаровбвцы
ыте ынбсавц оеиоеавтыыцбрстбывцмаывороврв.аеаывтеоыавцтмвоыыбынб саыобнтыоодемзьо т ио Вволиетмтьбмаывоиебнбсривроыребвыцляоееав ронанаыыцр т оотнаивт мвоеазеадовмтртиео.еаееыо.о одбыибмбытрдвнвв тыиосцзоыавцтебыыобсо а ыбытзвасцыцбтьывевебывц8
ГЛАВА 24 Обращение к данным аии.

|
[3 AccessData |
.g tD |
|
• f-' Ac,.,,D•ta.Forn,1 |
|
|
J_ .·_ e. 1rнt1dlJ.:eCo 1i:rcrtt-nt1;___________, |
|||||||||
|
|
|
||||||||||||||
|
ЕТ! |
F. |
· |
|
|
'" |
.Зt.::!d .vtt |
|
|
|
|
|
gT! |
|||
|
|
|
|
|
|
|||||||||||
|
1"- |
|
Fr•--- D ! . :.gпr-•· gr-·1e |
|
|
|
|
|
|
|
||||||
|
-.Q.d |
|
|
-:l . "Jooн5 |
|
|
|
|
|
|
|
|
||||
|
|
pгivate |
.dv e"1:.1л e,,..,,·,.__ 2e.1.2 r..н.J!:AHt1S-;:-.: adventure+юrks2012_Data[}atl!Set; |
|||||||||||||
|
,-:--:,. |
|
|
|
||||||||||||
|
|
|
|
|
pri ate |
System . Windows . For-ms . , ., ir1g · . ·r:t> productBindingSource; |
||||||||||
|
|
|
|
|
private |
A.dventuгeWorks2012_DataDataSetTableдdapteг s . P;·c-dщ·tI abJ 1:-"-dapt"E"- prcductTab: |
||||||||||
|
|
|
|
|
pг ivate |
A.dventure\.,,'Orks2012_DataDc,tc,SetTaЫ apters . 1 l'lb\F•.;.dti\'r, . ,..н. "п 1'- r tableAdaptt |
||||||||||
|
|
|
|
|
pгivate |
System. l.JindO\-JS . Foгms . З 1 . nс ir,gl,'1\"i..g t-::;r productBindingtlavigator; |
||||||||||
|
|
|
|
|
pгivate |
System. WindO\VS . Foгms. cr"l:::t :-- i ,1.:u-c::1:-::,1 |
|
bindingtlaviglltoгAddftewitem; |
||||||||
|
|
|
|
|
ргivate |
System .Windc1•s . Foпns . •;t,.l :,--: :;: _,ai;-i: 1 |
ЬindingtlaivigatorCount!te-r&; |
|||||||||
|
|
|
|
|
private |
System. \Vindcw!. . Forms. Гt;.:..!S':•- 1pr.t..!r::;c:-1 |
|
Ыndingf·tavigatoгDeleteitem; |
||||||||
|
|
|
|
|
private |
System. Windщvs . Forms , Т,J;.: 1:, •. iµ::t ."1 |
Ыndingr•avigatoгr--\oveFiгs.titem; |
|||||||||
|
|
|
|
|
p:--i·vate |
System. Windo:...s . Forir;s. 1 и: lS-t · Lc::u-::-::ri |
ЬindingNavigatoгr,,'юvePгeviousitem; |
|||||||||
|
|
|
|
|
private |
System. Windows . FoNns . To,J 1s -r- ic<; ,•pa,.. a.т:o.- bindingftavigatorSeparator; |
||||||||||
|
|
|
|
|
private |
Syste111 .Windows . Forms . ic,o.l t:"" ipic н S .:;,J\ |
ЫndingNavigatoгPositionitem; |
|||||||||
|
|
|
|
|
pгivat:e |
System. Nindo-."iS . Forms . Тог,} St"ri;:-.:;ф·• p,, - ;Jt,..,,. binding tavigatorSeparatorl; |
||||||||||
|
|
|
|
|
р:i\·ate |
Syste,r,.Windrn...s . For11t.s . 1 ,:x:il>r"i;.Jцt...:cn bindingtlaviga"toгнoverlextlte-Ф; |
||||||||||
|
|
|
|
|
pr ivate |
System. Windoi.,..s . Forrns . 1crlSё:f"tf.:· 8u: ип bindiлgll.aviglltorМovelastitem; |
||||||||||
|
|
|
|
|
private |
Systeir..Hindows . Foгms. Tcc. l'.-:-:- ,.. |
=- '='D -atc: ЬindingNllvigato:-Sep"r11tor2; |
|||||||||
|
|
|
|
|
private |
System. Windows . Forms. iv,:.i5':.·l 1:3u·,-::-:;п product8indingNavig"tcrSaveite11; |
||||||||||
|
7•, 1 |
|
|
|
privdte |
System . l.Jindows . Foгms . "!'e.vi.9c: productIOTextBox; |
||||||||||
|
|
|
|
pr·ivate |
System. Hindcws . Fcr-ms . l x Sci- |
nameT xtBox; |
||||||||||
|
|
|
|
|
pгivatc |
S>·stem. windows . Forms. Tev;:B •x |
productt urIOerText&ox; |
|||||||||
|
|
|
|
|
pri\Jate |
System.Windows. Forms . lhe,:,.; бQ)" |
makeF lгgCheckBcx; |
|||||||||
|
|
|
|
|
private |
System.Windcws . Foгms . Cl1 ,:- ,:Pr0:,. finishedGoodsFlagCheckBox; |
||||||||||
|
|
|
|
|
pгivдte |
Systt!m. Windows . Foгms. тг... ::[3сУ |
colorTextBcx; |
|||||||||
|
100 ¼ |
◄ |
|
|
pri\•ate |
System .Windows . Foгms . i е i:!3 x safetyStock:levelTert6ox; |
||||||||||
|
/l.'?V:;;,1,-C:-!,,ii.:,: ,;;i "il\..:-. ::•н..--&t; '.-;;. ,'l·.: :шiftk"?l • /;1.;i :..: \)" .iilr' ,l: .!: ·1:j |
|
Рис. 24. 12. Сгенерированный код. Ваши впечатления?
Базовый код данных
(c .- - |
de.. 6-.- de.(-7 -de(3. |
я
я
я
я
я
я
я
н |
р |
JBВ ЧАСТЬ 3 cекеебe cеертянеемион, ои ,л

|
cЕТ!ЕТП!•Х!• |
!А!ЕТВНН!П!ПВ1ВНJ О!!•С МЕ Х!ЕТИЕТВА!1•СЕТЕМВЕТoАВСМИА |
||||
|
ИПИЕТИЕТПИ!ЕТВООПСААB !МХJ!ЕТНАПВ•BВЕТП!ЗНИЕТЕhJЕТ!МTЕТИХЕТИПСХ!): |
|||||
СОВЕТ |
ВОЕТ!МАВВ..,.В З!!Н! ИАП!ПЕ1!МСЕТЕМИ1BСПЕНЕВИНАЕТСBЗВНЕТЕD АПВЗC |
|||||
•B3 ..,.ИХ СЕТ1ССХАЕТС!ОС1С АЕТС!О!И!ЕТАB!•СВЕТАНП!ОМ1СННЕИМЕiВ |
||||||
|
||||||
|
О!• |
|
|
|
|
|
СЕТС!ОС BАЕТСНСМПИМСВЕТ! ! |
А!В•ИНВНИВ•ПН ПВСВ•СhИ•СННЕХoС АЕТС!ОС, |
|||||
1СП!ПННВЕТ!! |
АЕТС!О!ИА!В•ИНВНИНDЕ З!!ВЕТВ П!ПBhИЕТЕВВB С•ЗИНИАЕТССЕТ!СС |
|||||
ЕТС1Е•СННЕХ |
ИПИНСПСНВПИАМ!ИАЕТМП! •ОП3hВНИНО•СННЕЗC |
|
||||
СЕТС!ОС-n-А!•ВС!ИЕТl |
1DoП |
BkCD tПСМВ,-n-С \СПИАСНИВЕТВ1!ПСАН!t! О!•СoS |
||||
t!М!СИП!АЕ ! |
ЕТ!ЗshЕТ!ЕТСОСНЗВЕТ!•ИОСНМПНВЕТАНПBhiИЗ МЕЕТ!С!З А ЕТ!hОИ |
|||||
1СВНИНЕТВ1!ПСАН!АЕТИhЕТ!АПВ•BВЕТИАП!ПЕ1!МСЕТЕХССНИЗЕВПС!cВ•BСЕ |
ССНИ): |
ЗСН ПС!cВ•BСС ПСВ•АЕТСМПНВ!ЕТ!ИССЕТВtСОЕТЕТС1Е•СННЕХoО!ЕТ!СЕИП!1М!ПНВЕТ
ИАП!ПЕ1!МСЕТЕНВ •ИНСЗИhВАОИ!ВНВСИСBВЗЕВАЕТС!ОИl |
SС ПСССЗВЕТСИ1!МСНЗ |
|
НЕИ 1СПС!А |
C vxC\ИО!!•С НВ ИАП!ПЕ1BИЕТВМАЕТС!ВННЕИl МПС!И1М!•З |
АЕТМВННЕХАИАЕТВЗСХC
СЕТС!ОС4 А!1•СВЕТН!МЕИ НСЕТ!С•СННЕХ l• ВАЕХССНИЕТАНХВЗСМ!1МСС..,.СВЗЕХ
•СННЕХ TЕТ!НСЕТ!С•СННЕХМЕ ЕТ•BВЕТВИАП!ПЕ1!МСЕТЕ•ПННСМИ!СcИИП! •СННЕЗC СЕТС!ОИO nМЕП!ПНН3ЕТМА3!АН!МНB3 ССЕТ!ЕТ!BЕТОСЕМС3ЕТА!В•ИНВНИВАМН):
1ЕМС3ЕТАНА ЕТС1!И•СННЕХS 1СП!ПНН3ЕТНСЕТ!С•СННЕХ А П!З!..,.Е3 С•СПЕТВССИ
D.tii!l! i!l 1s Обращение к данным иьиe