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

Гибкие зависимости через интерфейсы
|
n3К.E ..3.. |
.. |
E2.E.. |
..... |
.4.. |
|
i . ....... |
|
.... О |
.. |
.. |
.. |
3 |
|||||||
3 О.E.. 2.. .ш....... |
|
|
2........ |
|
|
.О |
...... |
. ....... |
ж...О.. |
9.. |
.....g |
|||||||||
8.. E. |
Д.E....... |
|
.. |
2........ |
|
|
n . ..... |
...у |
....... |
|
.E2... |
3.. .... .... |
|
|||||||
ny |
|
|
....3 |
...EE. |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
г |
|
|
|
|
|
|
|
|
|
|
|
1 1 п |
, . |
п |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
... |
....О.. |
|
.E. . ... |
О |
.. .....E. |
|
E......К |
|
..E. |
. .. .EE. |
.... |
|
....щ. |
||||||
з . ...л |
.....К..E. |
|
..E |
...... |
.С |
|
.. ... |
..2. |
iiiЖ6y... |
5.... |
|
|
ny |
|
|
|
||||
.2 ........ |
|
|
|
...E... |
E.4 |
....3 |
...EE ... |
i |
ii. |
iiiЖ |
i |
iИ ...E.. .. |
. |
|||||||
...... |
|
. |
...EE. |
|
i |
i |
..EE |
E ........... |
|
|
|
|
...E...E.... |
|
|
......E. |
|
..E.. |
||
E.. .. |
.n. .. |
.. .. .. |
. |
.... |
.. |
iИiЖО.. |
.. |
..щ. |
|
E..... |
|
.E. . |
2.... |
|
||||||
.3 .. |
E. |
2..... |
|
..... .... |
..E.К. |
|
. .. |
iiiЖ6п..E.. |
9.. . ..... |
|
. |
.....В |
||||||||
.... .. |
|
... .E2... |
|
3. |
..E... |
E.. |
|
..... |
.. |
... |
.щ .. |
. |
.....8 |
..E.л |
|
.... |
||||
....... |
|
|
...E... |
E.. |
|
от лсыoннннбBярнtбылян,ыая,нтяввн |
н, дtбдявtо |
|
||||||||||||
А бстрактный или конкретный? Когда следует |
|
|
|
|
|
|
||||||||||||||
и спользовать абстрактный класс, а когда - интерфейс |
|
|
|
|||||||||||||||||
|
п |
.... |
о |
...... |
Д 8. . |
|
. ....... |
..E |
E |
2..4...6 |
|
|
.. . |
...... |
О.. |
|||||
...... |
|
2..4. |
2...E....... |
|
E.... |
|
......... |
2 |
....2 |
Жил |
.3 |
... |
E |
...... |
|
|||||
3 ... |
2... |
E |
....... |
|
E.... |
|
. |
..2... |
2..... |
EE. |
|
|
Ап. |
6.... .. .. |
3...... |
|
|
9.g |
||
|
..2... |
...EE. |
|
|
... ...EE |
|
О.E... |
|
|
сэ |
п. |
.E. .. ...... |
|
.... |
||||||
E |
У |
|
с |
8.мк .ш.E.... |
|
3..... |
l |
....... |
. |
|
... |
2.. |
|
......6 |
|
|
.E.... |
В |
||
4.. |
2... |
E.. ..... |
|
E.... |
|
... 4.24..6 |
п . |
О.E... |
...щ. |
2..4 |
3... |
2... |
E..... |
g |
|
|||||
.. |
E.... |
|
......n. |
|
.......... |
|
.. |
....e |
........ |
n. |
|
.. . |
щ 2...E....... |
|
|
|
426 L278gп .п 4rкГИиР У.УвЗГР.Зв ФtlР РФГпб в ФБвlППЗ вФt lРЗГп Рlп7,п

собой экземпляры конкретных классов. ВsСтPоатг:ю ,e пюююэто класс, ко торый может быть инстанцирован. В нем не используется ключевое слово abstract, и он реализует все методы.)
В С# абстракции можно представить двумя способами : с помощью абстрактных классов или с помощью интерфейсов. Эти способы от
личаются один от другого, и эти отличия могут влиять на ваш выбор.
ЗАПОМНИ!
»' Используйте абстрактный класс, когда имеется определенная реализация, которая может с пользой применяться подклассами - абстрактный базовый класс может иметь определенный реальный
код, наследуемый подклассами. Например, класс Robot может об служивать часть функциональности роботов, не связанную с пере мещением.
Абстрактный класс не обязан быть полностью абстрактным. Жест кое требование - наличие как минимум одного абстрактного, не реализованного метода или свойства, в то время как прочие могут быть реализованы (иметь тела). Использование абстрактного класса для предоставления определенной реализации своим подклассам путем наследования позволяет избежать дублирования кода, что всегда неплохо.
»Используйте интерфейс, когда у вас нет никакой реализации для
общего использования или когда ваш реализующий класс уже име ет базовый класс.
Интерфейсы С# полностью абстрактны. Интерфейс С# не предостав ляет никакой реализации ни одного из своих методов. Он может также внести дополнительную гибкость, невозможную иначе. Ис пользование абстрактного класса может оказаться невозможным в связи с тем, что вы захотите добавить новые возможности к классу, имеющему базовый класс (исходный текст которого вы не можете изменять). Например, класс Robot может уже иметь базовый класс из библиотеки, написанной не вами, который вы, само собой, не в состоянии изменить. Интерфейсы в особенности хорошо подходят для представления полностью абстрактных возможностей, таких как возможности перемещения или вывода, которые вы намерены добавить к нескольким классам, кроме этого не имеющим ничего общего один с другим.
Реализация отношения СОДЕРЖИТ с помощью интерфейсов
Ранее упоминалось, что вы можете использовать интерфейсы в качестве бо лее общего ссылочного типа. Содержащий класс может ссылаться на содержа щийся не через ссылку на конкретный класс, а через ссылку на абстракцию - либо на абстрактный класс, либо на интерфейс С#:
ГЛАВА 1 8 Интерфейсы 427

428 |
г |
7 |
0 |

Дел е г и р о в а н и е со б ь1 т и й
ВЭТО Й ГЛА В Е . . .
,)) ; Ие'nользо13ан1.1е делеrатов для ,решенl('lя задачи обратного
,;,ВЫ 9Вё1
. )) |
Е |
|
|
||
, |
в) |
и н |
В вансн |
мн |
дн |
он |
|
, |
испо ьзование |
||||
т) |
д у) |
Е п ) |
б) |
|
)н ен |
оАнун |
ГОн ен Лерн |
тн |
делёгатов для на'стройки·метода
·, » · Ис:riользование, анонимных методов
)): 'Со дани |
е |
с_обытий С# |
))-w ",» . |
|
|||
т) р с) лак) )нр) О) |
Т) e) Лt) р) и) м) |
|
|
от |
|
л4)eтл:л ,(vл,) |
та глава завела нас в тот закуток С#, который присутствовал в этом языке программирования изначально. Возможность
(callback), метода, используемого для обработки событий, очень важ на для приложений С# всех видов. Фактически в настоящее время обратный вызов используется во всех видах приложений. Даже веб-приложения, чтобы работать должным образом, должны иметь некоторый механизм обратного вызова.
Альтернативой является приостановка приложения в ожидании чего-то. Это означает, что приложение не будет реагировать ни на что, кроме ожидае мого ввода. И менно так работают консольные приложения, рассмотренные к этому моменту. Вызов Console . Read ( ) , по существу, останавливает приложе ние, пока пользователь не выполнит некоторый ввод. Консольное приложение может работать таким образом, но если вы хотите, чтобы пользователь мог

З |
|
онокr до |
|
|
ой |
: |
п |
р, |
|
|
б ,_ |
о |
б |
|
|
, |
тно |
r9 П |
|
|
|
аПв , |
|
||||||||||||||||||||
|
в |
м |
|
|
о |
|
з лел |
|
|
|
|
|
р |
|
|
р |
З |
|
И П |
|
рр |
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
|
|
,- |
нмо |
с п |
|
|
|
|
|
|
ь |
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Б |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
П |
|
р З |
р_, |
|
р |
|
р |
|
|
111., |
|
|
,,-, |
Бр |
|
в,. |
|
|
, |
|
еИ |
ре |
|
и еое ., |
|
Б,111,- р., |
|
||||||||||||||
п,_ |
111, |
|
,,-_ри |
|
.,_ |
|
р |
|
Зи ,-, .,п,и |
Пр111Б,.р |
|
|
,-ЗиБ |
|
р |
|
, |
, |
,_,д, |
|
|
риПС,-, |
|
||||||||||||||||||||
|
,111 |
,БЗ.,,.ПС |
П,в.,. |
|
рд |
|
,П.,и П.,.З |
|
рт. |
|
|
|
|
|
,п ,ББ,. |
, |
|
.,вЗ |
|
Б,д |
,,-р. |
|
|||||||||||||||||||||
_,111,и |
|
р Б,Б.,Пр. |
|
|
|
ЗП |
|
|
,.д, ,-р111 п,.,в |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
,111,-,т, ,-,,вЗ |
|
,-,, |
|
|
|
|
П. |
Б |
|
|
,,-р,Б., |
_, |
|
|
|
, _,_ |
|
|
|
|
.,к, |
|
р,-,т_, |
|
|
..,в |
,. |
|
|
||||||||||||
ПС Б,д |
,,- р. _,111,и |
|
|
|
|
|
|
,Б.р111,. |
|
|
|
,П,-р _,т_, |
|
|
,-, |
р,-.,.,П, |
|
, |
|
, |
|
п,п .,в,.,,. |
|
|
|||||||||||||||||||
р,-_,_,.,. |
|
|
|
,_, |
|
ЗБ, ,-,,-рС |
д,_,,-рС |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
,п,Ст,. рд,,- |
|
||||||||||||||||||
., ,-,СБ, |
,Пп, |
|
вЗП.., |
|
|
|
в,т |
|
|
|
,С |
,-,т,.,д_, |
|
|
|
|
, |
, |
111,_ |
|
,,-,-, |
Б, |
|
д |
|
,рС |
|
||||||||||||||||
Б,_,дЗ , |
|
,С п,п,С |
|
|
|
,П. р., |
|
,-,и .,в,.З |
|
|
|
|
|
.рБ, п,Бр. |
|
, |
,,-рС |
|
,и , |
|
|||||||||||||||||||||||
|
ЗБ, |
,-,,-, |
,в,., |
р,-_рп,.,., |
|
,П,-, |
,,-, |
,-, .,111 |
|
|
|
., |
_ |
р,-,-З, |
,Б,., |
|
рр |
.,111С |
|
||||||||||||||||||||||||
,. |
|
.,111,,-р |
|
д |
|
,,-С,111,.и |
|
|
|
|
., ,-, Б.,т.,111111рП.П_,111 |
|
|
|
|
СдЗ_, ,-,дЗ |
,,.ПС И сри |
|
|||||||||||||||||||||||||
еь |
|
чь |
ИчИ |
|
|
|
|
|
|
|
|
вЗ |
|
,-, |
_ |
р,-,-З, |
,Б,. |
|
|
|
, |
|
рр, |
,,-р |
|
, |
.,п,, |
|
.,111С |
|
|||||||||||||
,111 Б,..,в |
|
,.ПС |
|
_ |
|
Сд, |
|
,. |
|
,,-рС |
|
|
|
П,и.,в,.З |
|
|
, |
д,.,111 |
Б,П.,С,-е, |
|
|
,.П |
|
,кр |
, |
|
|
||||||||||||||||
_,_,С |
|
|
,П. |
,в,.З |
|
|
ЗБ, |
|
|
,-,,-, |
|
|
|
,.р,_р |
,П_р |
|
|
|
Б.р |
|
Б,111, |
р |
|
|
|
иИ |
|
ИрсриеИ |
И |
|
|||||||||||||
чь |
|
Ичр |
|
|
|
|
|
|
|
|
|
|
,,-р |
Б,ПЗ |
|
, |
|
. П,т,-, |
|
|
|
,-,в,д |
|
|
|
п |
ПП, |
п,.,.Зи |
|
|
|||||||||||||
р,-р |
рр |
, |
, |
|
ЗБ, |
|
,-,,-р, |
|
_ |
,,-,-,и |
|
,Б, |
, |
рр |
|
|
|
.,. |
|
_ |
,ПП р ,в,-, |
С,. |
П |
,ир,- |
|
||||||||||||||||||
_рп,.,. |
|
|
|
ПС |
р..,П. |
|
|
.,111 |
|
|
., |
|
|
З, |
|
к,-З |
|
Б.,_,П., |
|
|
р. |
|
_ |
|
р,-,-,и |
|
,Б,., |
|
рр |
|
|||||||||||||
|
.,. |
111,.,_ |
|
,в.,.,-,т, |
|
|
|
|
|
Зд, |
, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
,.,_ |
|
|
,в.,.,-,т, |
|
|
|
|
Зд, |
111,к,. |
|
|
|
Б |
р,-,_ ,к,. |
.,111 |
|
к, |
|
_ |
|
,ПП |
|
|
., |
р _ |
р,- |
|
||||||||||||||
,-,С ,Б,., |
рС |
|
|
,- |
|
_,_ |
|
|
,П |
, вЗ |
|
Зд |
,-,р |
|
рк,,-, |
|
|
рд ПБ, |
|
,-,р-, |
|
_ |
|
,- |
, |
|
|||||||||||||||||
|
, |
, |
|
П. |
, |
,,.ПСПр. |
, |
|
|
рС_,т_, |
|
|
р,-_,п,.,.,111 |
|
|
|
|
|
д,,-р111,,.ПС |
|
_. т,и |
|
_ |
,ПП |
., |
|
|||||||||||||||||
111,к,-, |
|
Б |
|
р., |
еС.п 111,к |
|
|
_ т,.,_,-,111 |
|
|
|
д ,,-_ |
|
|
|
|
вр111,и |
.,. |
|
|
|
п, |
|
|
,-, |
|
,,-, |
|
|||||||||||||||
|
, .,в,.З |
|
_ |
р,-,-,С ,Б,., |
|
рС |
|
Б.,_,П., |
|
С,. |
|
|
|
111, |
|
,,-рд111 _ |
|
Сд |
,,-п, |
п,_ |
,П |
р |
|
||||||||||||||||||||
вЗ |
З_, |
|
р П |
,,111 |
|
.,в,,-п |
|
|
|
111,вр |
|
_ |
р.,вЗ |
|
|
,111,. |
|
,д111,к,-,П. |
П,д |
,,-р.ПС |
|
||||||||||||||||||||||
П ,-р111 |
|
|
.,и т |
|
, |
|
в, |
_,. |
|
|
|
,ППп,дЗ |
,.,ПС.,111 |
|
|
_,п |
|
, |
_,_ |
|
111,к,. |
|
|
,-,П..,р. |
|
||||||||||||||||||
111, |
|
,,-рд111,в.,.,-,т, |
|
|
|
|
Зд, р, п, |
|
|
, |
|
., ,-,,в |
|
,_р111 |
|
|
, |
|
ЗБ, |
|
р,-. д |
|
,-,,_ _,111,и |
|
|
||||||||||||||||||
|
|
|
|
|
2 |
35 |
|
0 |
9 |
|
3750 |
|
|
0 |
620 |
3 |
|
|
650 |
|
|
|
0 |
|
|
|
|
|
270 |
6399 |
60 |
||||||||||||
|
|
|
|
|
35 |
|
|
|
|
|
|
|
|
0 |
|
|
|
|
50 023 |
|
2 |
60 |
|
6399 0706 0 |
|
||||||||||||||||||
ЗАПОМНИ! |
|
|
25 |
209 |
|
|
907 |
|
|
53 |
|
0 |
|
22 |
|
|
|
0 |
0960 |
|
520 |
3 |
|
2625 |
|
63 |
|
||||||||||||||||
|
|
07 53 |
|
335 |
293 |
|
63 |
|
37520 |
|
|
|
0 |
93552 |
2 |
|
|
0 |
|
0 |
7 |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
430 ЧАСТЬ 2 тaфдг теоtоавд етв аотрееодижаоща раа ва отревдиерииси