Тема_Технологии программирования и ООП
.pdfКафедра |
Событийный механизм управления |
|
Кафедра |
|
|
|
информатики |
|
информатики |
|
|
||
|
|
Событийный механизм управления |
||||
|
|
УГАТУ |
|
|
УГАТУ |
|
В соответствии с тем, что для каждого объекта в ОС |
|
В заголовке каждой событийной процедуры указывается |
||||
определен перечень относящихся к нему событий, |
|
имя объекта, для которого написана процедура и |
|
|||
|
название выбранного события, в скобках после имени |
|||||
реакцию на событие при создании приложений под |
|
|||||
|
процедуры записываются ее параметры, которые могут и |
|||||
Windows можно запрограммировать, т.е. написать свои |
||||||
отсутствовать. |
|
|||||
процедуры обработки событий или по-другому |
|
|
||||
|
|
|
|
|||
событийные процедуры. |
|
<Имя объекта><Имя события> [ (<Список параметров>) ] ; |
||||
|
|
|
||||
Для этого, сначала выбирают объект – элемент управления |
Procedure Имя_класса_формы.ОбъектСобытие(параметры); |
|||||
пользовательского интерфейса, для которого будет |
|
Procеdure TForm1.Button1Click(Sender: TObject); |
|
|||
записана программа действий. Далее вызывают список |
|
|||||
|
|
|
||||
событий для выбранного объекта, и выбирают |
|
В событийной процедуре может участвовать несколько |
|
|||
подходящее событие, при совершении которого над |
|
|
||||
|
объектов. Например, само событие происходит с первым |
|||||
объектом будет выполняться записанная программа,. |
|
|||||
|
объектом, в результате второй объект изменяет значение |
|||||
|
|
|
||||
|
|
|
своего свойства, а третий – реализует какой-либо метод. |
|||
|
|
|
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
42 |
|
Кафедра |
Преимущества ООП |
|
Кафедра |
Преимущества ООП |
|
|
информатики |
|
информатики |
|
|||
|
УГАТУ |
|
УГАТУ |
|||
|
|
|
• В программах, управляемых событиями, нет сплошного кода, |
|||
• ООП в наибольшей степени соответствует внутренней |
который выполняется с начала до конца. После запуска таких |
|||||
логике функционирования операционной системы (ОС) |
программ у пользователя нет четко определенного пути. Он |
|||||
может в любой момент нажать какую-нибудь кнопку, ввести |
||||||
Windows. Программа, состоящая из отдельных объектов, |
||||||
данные текста в соответствующее поле, прекратить |
|
|||||
отлично приспособлена к реагированию на события, |
|
|
||||
|
обработку и вызвать другую программу. |
|
||||
|
|
|
|
|||
происходящие в ОС. |
|
• Для реализации событийного механизма управления для |
|
|||
• Программа, построенная по принципам ООП – это не |
|
|
||||
|
каждого объекта (управляющего элемента, формы) |
|
||||
последовательность операторов, не некий жесткий |
|
определен перечень относящихся к нему событий. Реакцию |
||||
алгоритм, а совокупность объектов и способов их |
|
на событие можно запрограммировать. Для этого с помощью |
||||
взаимодействия. |
|
кода создаются процедуры - обработчики событий |
|
|||
|
(событийные процедуры). |
|
||||
|
|
|
|
|||
• Обмен информацией между объектами происходит |
|
• Надежность кода и возможность повторного использования |
||||
посредством сообщений. |
|
|||||
|
отработанных объектов – одно из основных преимуществ |
|
||||
|
|
|
|
|||
|
|
|
ООП. |
|
||
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
43 |
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
44 |
Кафедра |
Структура приложения, разработанного с |
|
Кафедра |
Основные этапы создания |
|
||
информатики |
|
использованием ООП |
|
информатики |
|
Windows-приложений |
|
|
|
УГАТУ |
|
|
УГАТУ |
||
|
|
|
|
|
|
||
|
|
|
|
Постановка задачи. Четкая формулировка задачи, |
|
||
Приложениями операционной системы принято |
|
выделение исходных данных для ее решения и |
|
||||
называть программы, предназначенные для |
|
определение того, какие результаты и в каком виде |
|
||||
работы под управлением данной системы. |
|
должны быть получены. |
|
||||
|
Постановка задачи должна давать ответ на вопросы: |
||||||
|
|
|
|
||||
Проект – это разрабатываемое на языке |
|
Что дано? Что требуется найти? Какие данные |
|
||||
|
допустимы? В каком виде будет представлены |
|
|||||
программирования приложение. |
|
результаты работы? |
|
||||
Проект включает в себя формы (окна) с |
|
Постановка задачи – это составление точного и |
|
||||
размещенными на них компонентами, а также |
понятного описания того, как должно работать |
|
|||||
программные модули событийных процедур, |
|
будущее приложение, что сможет делать |
|
||||
которые описывают поведение объектов и их |
|
пользователь в процессе его работы, необходимо |
|
||||
|
также предусмотреть реакцию на неправильные |
|
|||||
взаимодействие между собой. |
|
|
|||||
|
действия пользователя. |
|
|||||
|
|
|
|
|
|||
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
45 |
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
46 |
Кафедра |
|
Основные этапы создания |
|
Кафедра |
|
Основные этапы создания |
|
информатики |
|
Windows-приложений |
|
информатики |
|
Windows-приложений |
|
|
|
УГАТУ |
|
|
УГАТУ |
||
|
|
|
|
|
|
||
Разработка пользовательского интерфейса. |
|
Собственно программирование. Определение, какие |
|||||
Интерфейс – это внешняя оболочка приложения, |
|
события будут происходить в процесс работы |
|
||||
позволяющая работать с информацией, хранящейся на |
|
приложения, составление алгоритмов процедур для этих |
|||||
компьютере или за его пределами, а также информацией |
|
событий и написание их программных кодов. |
|
||||
вводимой пользователем. |
|
|
|||||
|
Тестирование и отладка. Устранение синтаксических и |
||||||
Интерфейс должен обеспечит максимальное удобство и |
|
||||||
|
семантических (логических) ошибок в процедурах. |
|
|||||
эффективность работы с информацией. |
|
|
|||||
|
Синтаксические ошибки выявляются транслятором. |
|
|||||
На этапе разработки пользовательского интерфейса |
|
|
|||||
|
Семантические ошибки помогают выявить решения |
|
|||||
создаются экранные формы (окна приложения) со всеми |
|
контрольных (тестовых) примеров. Интегрированные |
|
||||
находящимися на этой форме объектами и свойствами |
|
|
|||||
|
среды разработки приложений располагают |
|
|||||
этих объектов. При разработке интерфейса необходимо |
|
|
|||||
|
эффективными инструментами для поиска источников |
||||||
учитывать, что интерфейс должен быть интуитивно |
|
||||||
|
логических ошибок. На этом этапе проводится анализ |
||||||
понятен пользователю, окна должны быть не |
|
||||||
|
результатов решения, и в случае необходимости – |
|
|||||
перегружены, при необходимости можно использовать не |
|
|
|||||
|
корректировка алгоритма и программы. |
|
|||||
одну, а несколько форм, элементы управления на форме |
|
|
|||||
необходимо группировать по смыслу. |
|
|
|
|
|
||
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
47 |
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
48 |
Кафедра |
|
Основные этапы создания |
|
Кафедра |
Структура приложения разработанного с |
|
|
информатики |
Windows-приложений |
|
информатики |
использованием ООП |
|
||
|
|
УГАТУ |
|
|
УГАТУ |
||
|
|
|
|
|
|
||
|
|
|
|
Проект – это разрабатываемое на языке |
|
||
Создание исполняемого приложения (exe-файла). |
|
программирования приложение. |
|
||||
|
|
|
|
||||
Превращение проекта в исполняемое приложение, |
|
Проект включает в себя не только форму с |
|
||||
способное работать за пределами среды. |
|
|
размещенными на ней компонентами, но и |
|
|||
Создание инсталляционного пакета. |
|
|
программные модули событийных процедур, |
||||
|
|
которые описывают поведение объектов и |
|
||||
Предусматривает подход к переносу проекта с |
|
|
взаимодействие объектов между собой. |
|
|||
компьютера на компьютер путем инсталлирования, а не |
|
|
|||||
Приложение представляет собой набор |
|
||||||
копирования (этап выполняется при необходимости). |
|
|
|||||
|
|
|
|
|
программных единиц – модулей, которые |
|
|
|
|
|
|
|
хранятся в отдельных файлах. |
|
|
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
49 |
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
50 |
Кафедра |
Структура приложения разработанного с |
|
Кафедра |
Структура приложения разработанного с |
|
||
информатики |
использованием ООП |
|
информатики |
использованием ООП |
|
||
|
|
УГАТУ |
|
|
УГАТУ |
||
|
|
|
|
|
|
||
Приложение создаваемое с использованием ООП |
|
Форма обеспечивает создание графического |
|
||||
|
|
интерфейса разрабатываемого приложения и |
|
||||
|
основано на модульном принципе. Головной |
|
|
|
|||
|
|
|
представляет собой окно, на котором |
|
|||
|
модуль состоит из объявления списка |
|
|
|
|||
|
|
|
размещаются необходимые компоненты. |
|
|||
|
используемых модулей и нескольких операторов, |
|
|
||||
|
|
|
|
|
|||
|
создающих объекты для необходимых форм и |
|
Компонент – это объект класса, |
|
|||
|
запускающих приложение на выполнение. |
|
|
||||
|
|
|
|
который обладает набором |
|
||
|
|
|
|
свойств, методов и событий. |
|
||
Все объекты компонентов приложения размещаются |
|
|
|
|
|||
в объектах – формах. |
|
|
|
|
|
||
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
51 |
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
52 |
Кафедра |
Структура приложения разработанного с |
|
Кафедра |
Интегрированная среда разработки |
||
информатики |
использованием ООП |
|
информатики |
приложений Delphi (Lazarus) |
|
|
|
УГАТУ |
|
УГАТУ |
|||
|
|
|
|
|||
Для каждой формы, проектируемого приложения, |
|
Для преодоления трудностей на этапе создания |
||||
автоматически создает отдельный модуль, в который |
|
|||||
|
интерфейса широкое распространение получило |
|||||
пользователь может ввести собственный код, создавая |
|
|||||
обработчики различных событий. |
|
визуальное проектирование интерфейса. |
Работа |
|||
|
|
|
стала производиться в Интегрированных Средах |
|||
|
|
|
Разработки (IDE - ИСР) приложений, которые |
|||
Именно в модулях и |
|
предоставляют программисту набор средств для |
||||
|
наглядного конструирования интерфейса. |
|
||||
осуществляется |
|
|
||||
программирование |
|
Этот набор средств заранее программно разработан, |
||||
задачи. |
|
|||||
|
определен перечень их свойств, методов и режимов |
|||||
|
|
|
||||
|
|
|
использования. |
|
||
|
|
|
Содержатся эти средства в стандартных библиотеках. |
|||
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
53 |
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
54 |
|
Кафедра |
Интегрированная среда разработки |
|
Кафедра |
Интегрированная среда разработки |
||
информатики |
приложений Delphi (Lazarus) |
|
информатики |
приложений Delphi (Lazarus) |
|
|
|
УГАТУ |
|
УГАТУ |
|||
ИСР предоставляют программисту проект экранной формы, |
К интегрированным средам разработки |
|
||||
на которой он может помещать различные компоненты, |
приложений IDE относится Delphi, |
|
||||
имеющиеся в стандартных библиотеках. |
|
разработанный фирмой Borland для ОС |
||||
Самое главное достоинство визуального программирования |
||||||
Windows (очень дорогой) и Lazarus, который |
||||||
заключается в том, что во время проектирования формы и |
||||||
возник с целью создать бесплатную |
|
|||||
размещения на ней компонентов редактор кода ИСР |
|
|
||||
|
конкуренцию программному продукту Borland |
|||||
автоматически генерирует код программы, включая в нее |
||||||
соответствующие фрагменты, описывающие данный |
|
Delphi. |
|
|||
компонент. |
|
Lazarus – визуальная среда разработки |
|
|||
Подобные среды существенно сокращают время и |
|
|
||||
|
профессионального уровня, |
|
||||
облегчают процесс создания графического интерфейса |
распространяемая бесплатно и вполне может |
|||||
приложения. Написание же программного кода, остается |
||||||
конкурировать с Delphi. |
|
|||||
за разработчиком и решается стандартными средствами |
|
|||||
|
|
|
||||
языка программирования (например, Pascal). |
|
|
|
|
||
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
55 |
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
56 |
Кафедра |
Интегрированная среда разработки |
|
Кафедра |
Интегрированная среда разработки |
|
||
информатики |
приложений Lazarus |
|
информатики |
приложений Lazarus |
|
||
|
|
УГАТУ |
|
|
УГАТУ |
||
Интегрированная среда разработки приложений Lazarus |
|
|
|
|
|
||
предоставляет пользователю заготовку формы, на которой |
|
Во время проектирования формы и размещения на ней |
|
||||
размещаются с помощью мыши необходимые компоненты. |
|
|
|||||
|
компонентов редактор кода ИСР автоматически |
|
|||||
С помощью простых манипуляций мышью можно изменять размеры и |
|
||||||
генерирует код программы, включая в нее |
|
||||||
расположение этих компонент. |
|
|
|||||
|
соответствующие фрагменты, описывающие данный |
|
|||||
При этом в процессе проектирования можно постоянно видеть |
|
|
|||||
|
компонент. Это существенно сокращает время и |
|
|||||
результат – изображение формы и расположенных на ней |
|
|
|||||
|
облегчает процесс создания графического интерфейса |
||||||
компонентов. |
|
|
|||||
|
|
приложения. |
|
|
|||
В соответствующих диалоговых окнах можно изменить заданные по |
|
|
|||||
|
|
|
|
||||
умолчанию свойства компонентов и, при необходимости, написать |
Написание же программного кода, остается за |
|
|||||
обработчики событий. |
|
разработчиком и решается стандартными средствами |
|
||||
|
|
|
|
|
|||
Компоненты могут быть визуальными, видимыми при работе |
|
языка программирования Pascal. |
|
||||
приложения, и невизуальными, выполняющим некоторые |
|
|
|
|
|
||
служебные функции, они отображаются в виде значка в процессе |
|
|
|
|
|||
проектирования и не видны при работе приложения. |
|
|
|
|
|
||
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
57 |
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
58 |
Кафедра |
Интегрированная среда разработки |
|
Кафедра |
Интегрированная среда разработки |
|
||
информатики |
приложений Lazarus |
|
информатики |
приложений Lazarus |
|
||
|
|
УГАТУ |
|
|
УГАТУ |
||
|
|
|
|
|
|
||
Формат программного кода, задающего |
|
Состояние объекта можно изменить двумя способами: |
|||||
установку свойства и использование метода: |
|
|
|
|
|
||
|
|
|
|
|
1. Изменить значение свойств (Properties), |
|
|
|
Объект.Свойство := Значение; |
|
|
принадлежащих объекту (например, для |
|
||
|
Объект.Метод ([Параметр[...]]); |
|
|
текстового окна – его размер, цвет, тип шрифта), |
|
||
|
|
|
либо на стадии проектирования, либо задавая |
|
|||
|
|
|
|
|
|
||
где Объект – имя настраиваемого объекта; |
|
|
значения свойств в программном коде. |
|
|||
|
|
|
|
|
|||
|
Свойство – характеристика, которую нужно изменить; |
|
|
2. Применить к объекту методы (Methods), |
|
||
|
|
|
|
|
|
||
|
Значение – новая установка свойства; |
|
|
определенные для данного объекта в языке |
|
||
|
Метод – команда, которая используется для изменения |
|
|
программирования (например, для графического |
|
||
|
|
|
окна – установить фокус, очистить, выдать в него |
||||
|
свойств объекта; |
|
|
||||
|
|
|
результат). |
|
|||
|
Параметр – аргумент, используемый методом. |
|
|
|
|||
|
|
|
|
|
|
||
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
59 |
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
60 |
Кафедра |
|
Кафедра |
Интегрированная среда разработки |
|
информатики Структура событийной процедуры |
|
информатики |
приложений Lazarus |
|
|
УГАТУ |
|
УГАТУ |
|
|
|
|
|
|
Заголовок каждой событийной процедуры, написанной для |
|
|
|
|
объекта формы, имеет следующий синтаксис: |
|
Чтобы установить Lazarus на ваш компьютер |
|
|
|
|
нужно зайти на http://www.freepascal.ru и |
|
|
Procedure Имя_класса_формы.ОбъектСобытие(параметры); |
закачать последнюю стабильную версию |
|
||
Название процедуры состоит из Имени класса формы, для которой |
Lazarus. |
|
||
|
|
|
||
пишется событийная процедура, и после точки имени процедуры. |
|
В процессе установки следует согласиться с |
|
|
Имя процедуры ОбъектСобытие состоит из имени объекта, для которого |
условиями лицензионного соглашения. |
|
||
написана процедура и далее без пробела названия выбранного события. |
После установки в меню программ появится |
|
||
В скобках после имени процедуры записываются ее параметры, которые |
новая группа: Lazarus. Запускаем его. |
|
||
могут и отсутствовать: |
|
|
||
|
Появится окно ИСР Lazarus. |
|
||
|
|
|
||
Например: |
|
|
|
|
Procеdure TForm1.Button1Click(Sender: TObject); |
|
|
|
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
61 |
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
62 |
|
|
Кафедра |
Интегрированная среда разработки приложений Lazarus |
|
|
|
информатики |
УГАТУ |
|
|
|
|
|
|
|
|
В верхней части окна ИСР отображается полоса |
|
|
|
|
главного меню. |
|
|
|
|
|
Информатика ФАП - 2, ФАТС – 2, 3 курс 1, семестр 1, 2009 г. |
64 |
Кафедра |
|
|
|
|
|
Кафедра |
|
|
|
информатики |
Интегрированная среда разработки приложений Lazarus |
УГАТУ |
информатики Интегрированная среда разработки приложений Lazarus |
УГАТУ |
|||||
|
|
|
|
|
|
|
|
||
Ниже меню расположены две инструментальные панели: |
|
Палитра компонентов содержит ряд страниц, закладки которых видны |
|||||||
|
в ее верхней части. Наиболее употребляемые из них: Standard и |
|
|||||||
Левая – содержит два ряда кнопок, дублирующих некоторые |
|
|
|||||||
|
Additional. |
|
|
|
|||||
наиболее часто используемые команды меню. |
|
|
|
|
|||||
|
|
|
|
|
|||||
|
|
|
Правая – (панель компонентов) содержит библиотеки |
|
Стандартные компоненты (Standard ) – реализуют интерфейсные |
|
|||
|
|
|
|
элементы среды Windows. Среди них: главное меню (ТMainMenu), |
|
||||
|
|
|
визуальных компонентов, с помощью которых, как из |
|
|
||||
|
|
|
|
кнопка (ТButton), метка (ТLabel), текстовое поле (ТEdit) и другие. |
|
||||
|
|
|
«строительных блоков», собирается разрабатываемое |
|
|||||
|
|
|
|
|
|
|
|||
|
|
|
приложение. |
|
|
|
|
|
|
|
|
|
|
|
|
Дополнительные компоненты (Additional) представляют собой |
|
||
|
|
|
|
|
|
различные дополнительные интерфейсные элементы – графическая |
|||
|
|
|
|
|
|
кнопка (ТBitBtn), окно для вывода графических файлов (ТImage) и |
|
||
|
|
|
|
|
|
другие. |
|
|
|
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, |
семестр 1, 2009 г. |
65 |
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, |
семестр 1, 2009 г. |
66 |
|
Кафедра |
|
|
|
|
|
Кафедра |
|
|
|
информатики |
Интегрированная среда разработки приложений Lazarus |
УГАТУ |
информатики Интегрированная среда разработки приложений Lazarus |
УГАТУ |
|||||
|
|
|
|
|
|
|
|
||
ИСР содержит четыре окна: формы, редактора исходного |
Окно формы Form1 представляет собой заготовку |
|
|||||||
кода, |
инспектора объектов, сообщений: |
|
|
||||||
|
(макет) окна разрабатываемого приложения. |
|
|||||||
|
|
|
|
|
|
|
|||
|
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, |
семестр 1, 2009 г. |
67 |
Информатика |
ФАП - 2, ФАТС – 2, 3 курс 1, |
семестр 1, 2009 г. |
68 |
Кафедра |
|
|
|
|
|
Кафедра |
|
|
|
|
информатики Интегрированная среда разработки приложений Lazarus |
УГАТУ |
информатики Интегрированная среда разработки приложений Lazarus |
УГАТУ |
|||||||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
После выбора события |
|
|
|
|
Окно инспектора объектов |
|
|
|
|
необходимо задать |
|
|
|
||
отображает |
|
|
|
|
|
реакцию на него, это |
|
|
|
|
- иерархию компонентов |
|
|
|
|
делается в |
|
|
|
|
|
приложения (верхняя часть); |
|
|
|
|
появившемся окне |
|
|
|
||
- четыре закладки Свойства, |
|
|
|
|
редактора кода, |
|
|
|
|
|
|
|
|
|
именно в нем пишется |
|
|
|
|||
События, Избранное и |
|
|
|
|
|
|
|
|||
|
|
|
|
программный код |
|
|
|
|||
Ограничения, которые |
|
|
|
|
|
|
|
|||
|
|
|
|
событийной |
|
|
|
|
||
позволяют задавать и |
|
|
|
|
|
|
|
|
||
|
|
|
|
процедуры: |
|
|
|
|
||
изменять свойства объектов, |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||
выбирать событие, чтобы |
|
|
|
|
|
|
|
|
|
|
затем задать реакцию на |
|
|
|
|
|
|
|
|
|
|
него. |
|
|
|
|
|
|
|
|
|
|
Информатика |
ФАП - 2, ФАТС – 2, 3 |
курс 1, |
семестр 1, |
2009 г. |
69 |
Информатика |
ФАП - 2, ФАТС – 2, 3 |
курс 1, |
семестр 1, 2009 г. |
70 |
Кафедра |
|
|
|
|
|
|
|
|
|
|
информатики |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
УГАТУ |
|
|
|
|
|
Информатика |
ФАП - 2, ФАТС – 2, 3 |
курс 1, |
семестр 1, |
2009 г. |
71 |
|
|
|
|
|