14.10.11
ООП
Else
ООП
Делегаты
Стандартные интерфейсы.NET
Операции is и as
· Операция is проверяет совместим ли объект с заданным типом.
· Результат операции равен true, если объект можно преобразовать к заданному типу, и false в противном случае.
· Операция as выполняет преобразования к заданному типу, а если это невозможно, формирует результат null.
· I Comparable - сравнение объектов
Метод Сompare To()
Используется при сортировке
· I Comparer – сортировка по разным критериям
· I Cloneable – создание копии объекта
· I Enumerable, I Enumerator – для организации перебора в foreach.
· Делегаты – это вид класса, преднозначенный для хранения ссылок на методы
· Можно передавать в качестве параметрв а затем вызвать инкапсулированный в нем методы
Продолжение $3.8
Вид обработчиков событий для некоторых действий.
1.Кнопки, которые отвечают за работу с буфером:
Вырезать(cut):
private::System::Void cut ToolStripMenuItem_Click(System::Object^sender, System::EventArgs^e)
|
|
{
this->richTextBox1->Cut();
this->toolStripButtonPaste->Enabled=true;
this->pasteToolStripMenuItem->Enabled=true;
this->pasteToolStripMenuItem1->Enabled=true;
}
Копировать:
private::System::Void copy ToolStripMenuItem_Click(System::Object^sender, System::EventArgs^e)
{
this->rB->Copy();
this->toolStripButtonPaste->Enabled=true;
this->pasteToolStripMenuItem->Enabled=true;
this->pasteToolStripMenuItem1->Enabled=true;
}
Вставить:
private::System::Void past ToolStripMenuItem_Click(System::Object^sender, System::EventArgs^e)
{
this->richTextBox1->Paste();
}
2.Опции Меню-Файл: Открыть, открыть как, Сохранить, Сохранить как, Закрыть.
Весь представленный выше класс находится в файле Form1.h, где объявлен класс classForm1, в который необходимо добавить еще одну переменную:
private: System::String^ MyFileName
Form1(Void) //Присвоение стандартного имени файлу, чтобы заблокировать частично кнопки Меню-Файл.
{
MyFileName = “”;
}
Сохранить:
private::System::Void saveToolStripMenuItem_Click(System::Object^sender, System::EventArgs^e)
{
if (this->MyFileName->Equals(System::String::Empty))
{
this->MyFileName=”log.txt”;
this->saveFileDialog->FileName=this->MyFileName;
if (this->saveFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)
{
this->richTextBox1->SaveFile(this->saveFileDialog1->FileName);
this->richTextBox1->Modified=false;
this->MyFileName=this->saveFileDialog1->FileName;
}
}
{
this->richTextBox1->SaveFile(this->saveFileDialog1->FileName);
this->richTextBox1->Modified=false;
this->MyFileName=this->saveFileDialog1->FileName;
}
}
Сохранить как:
private::System::Void saveToolStripMenuItem_Click(System::Object^sender, System::EventArgs^e)
{
this->saveFileDialog->FileName=this->MyFileName;
if (this->saveFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)
{
this->richTextBox1->SaveFile(this->saveFileDialog1->FileName);
this->richTextBox1->Modified=false;
this->MyFileName=this->saveFileDialog1->FileName;
}
}
Открыть:
private:Syste::Void openToolStripMenuItem_Click(System::Object^sender, System::Event^e)
{
if (this->MyFileName==””) {this->MyFileName=”log.txt”;}
this->OpenFileDialog->FileName=this->MyFileName;
if (this->OpenFileDialog->ShowDialog()==System::Windows::Forms::DialogResult::OK)
|
|
{
this->TextBox1->LoadFile(this->openFileDialog1->FileName);
this->MyFileName=this->openFileDialog->FileName;
}
}
Создать:
private:Syste::Void newToolStripMenuItem_Click(System::Object^sender, System::Event^e)
{
if(this->richTextBox1->Modified/*==True;*/)
{
if(this->MyFileName==””) { this->MyFileName=”log.txt”;}
this->SaveFileDialog1->FileName=this->MyFileName;
if (this->saveFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)
{
this->richTextBox1->SaveFile(this->saveFileDialog1->FileName);
this->richTextBox1->Modified=false; //(не необходимо)=============================================
this->MyFileName=this->saveFileDialog1->FileName //запоминаем текущее имя файла (не необходимо)======
}
}
this->richTextBox1->Clear();//Очищение содержимого текстового редактора с помощью метода Clear();===================
}
Отображение текущего времени в строке статуса $3.9
Элемент StripStatus – строка статуса;
Timer; при перемещении таймера на форму образуется переменная timer1, у него есть два свойства: Enabled (присваиваем значение =true) и Interval (указывается в милисекундах, присвоим значение =1000, если значение =0 — таймер отключен). Существуют так же два метода Start(); и Stop();
Таймер:
private:System::Void timer1_Tick(System::Object^sender, System::Event^e)
{this->toolStatusLabel1->Text=System::Convert::ToString(System::DateTime::Now);}
$4 Элементы управления Windows Forms
$4.1 checkBox — независимые переключатели
Text- текст около переключателя;
Cheked – T/F;
ThreeState – 3 состояния T/F;
CheckState – свойство выставления состояний (варианты: Checked|Uncheked|Indeteminate
$4.2 Зависимые кнопки Radiobutton
Могут размещаться на панели GroupBox
$4.3 Ввод данных по маске MaskedTextBox
Свойство Mask:
0 — цифра от нуля до 9ти
9 — цифра или пробел
# - цифра, пробел + -
L — буква
? - буква или пробел
& - символ
С — символ или пробел
А - буква, цифра или пробел
. - положение десятичной точки
, - положение разделителей тысяч
: - разделитель времени
/ - разделитель даты
$ - денежный символ
< - приведение к нижнему регистру
> приведение к верхнему регистру
| - отмена преобразование регистров
\ - начало Escape последовательности
Пример маски:
«+7-***-*** *****» = “#0-000-0000000 “
Ошибка: неполная маска:
MaskFull
private:Syste::Void maskedTextBox1_KeyDown(System::Object^sender, System::Windows::Forms::KeyEventArgs^e)
{
if(e->KeyCode==Keys::Enter)
{
if (!this->maskedTextBox1->MaskFull) {MessageBox::Show(“Данные введены не полностью”, “Ошибка», MessageButton::OK, MessageBoxIcon:Asterisk); return;}
}
}
$4.4 Списки
ListBox|ComboBox|ChekedListBox
Свойство Items – содержимое списков. Элементы списка имеют тип ListItem.
У каждого элемента списка есть свойства
Text - название
Selected — T/F выбран/нет
Count – кол-во элементов списка
SelectedIndex – возвращает индекс выбранного элемента списка (первый элемент имеет индекс 0;
SelectedItem -
Для модификации списков необходимо использовать методы:
Add(); -добавить элемент в конец списка
Insert(); -добавить элемент внутрь списка
Clear() -удалить все элементы списка
Remove() - удалить указанный элемент списка
Элемент управления «Простой список» LiistBox:
ColumnWidth- определяет ширину колонки.
Items - содержит все пункты списка
примеры обращения к пунктам списка:
String^ it=listBox1->Items[i]->ToString(); //В качестве I можн оиспользовать listBox->SelectedIndex, т.о. Вместо абстрактной строки, мы можем оперировать выбранной строкой;
listBox->SelectedIndex
Multicolumn – кол-во столбцов(?)
Элемент управления ComboBox:
DropDownStyle – задает стиль представления выпадающего списка. Варианты:
ñ Simple – работает только поле редактирование, т. е. Выпадающего списка нет.
ñ Dropdown – свернутый выпадающий список.
ñ DropDownList – нельзя редактировать содержимое списка.
Text – возвращает то., что находится в названии выбранного элемента.
Элемент управления ChekedListBox:
checkOnClick – T/F управлет методом выделения объекта. Если False – выделяет на первый клик, отмеччает флажком на второй, если True, отмечает флаэком при первом щелчке, при втором — отменяет.
Состояния флажка:
ñ checked (1)
ñ unchecked (0)
ñ indeterminate (2)
SetItemCheckState(index, value) – устанавливает состояние, кторое будет выбрано на объекте с заданным индексом
GetItemCheckState(index) – возвращает состояние.
|
|
$4.5 Компонент календарь «DateTimePicker» и класс DateTime.
Компонент настраивается либо на ввод даты, либо времени. Как мы будем его использовать определяет свойство Format.
Отображаемое значение хранится в свойстве value.Если происходит работа с датами, то можно поставить ограничение MaxDate, MinDate. В качестве формата представления даты мб выбран формат:
ñ long (дд месяц ггг)
ñ short (дд.мм.гг)
ñ Time
ñ Custom — формат, определяемый пользователем. Необходимо настроить CustomFormat.
Значение value хранится в виде DateTimе.
Создание формата пользователя с помощью символов:
d – день месяца (напр. 7)
dd — день месяца, априори двузначные (напр. 07)
ddd – день месяца, день недели (07 пт)
dddd – полное название дня недели (07 пятница)
M – номер месяца (10)
MM – перед однозначным номером месяца добавится 0.
MMM – выдается аббревиатура месяца (окт.)
MMMM - полное название (октябрь)
y – две последние цифры года
yy – при однозначном значении обязательно 2 символа
yyyy – полное (2011)
gg – эра (н.э. / д.н.э.)
h – часы (12часовой формат
hh – два знака обязательно. 12Часовой формат
H — 24 часовой формат
HH -..
m — минуты
mm -
s - секунды
ss -
f – дробная часть секунд (только), когда s – только целая/ 10ая точка
.
fffffff — максимальное кол-во дробной части
t – если 12тичасовой формат, то выдается либо «a”, или «p”
tt – a.m. / p.m
z – часовой пояс (разница между местным и гринвическим временем)
zz – 0 для однозначного числа
zzz – часы, минуты.
: - разделитель времени
/ - разделитель даты
'dddd/MMMM/yyyy'
'HH:mm:ss.fff'
В связанных библиотеках.NET есть раздел глобализация, которые определяет вид интерпритации выходных данных, например:
DateTime dt=DateTime::Now;
String^ date=dt.ToString(“dd/MM/yy HH:mm:s”, System::Globalization::DateTimeFormatInfo::InvariantInfo); - в данном случае выбран инвариантный вариант, т. е.всемирный.
String^ date=dt.ToString(“dd/MM/yy HH:mm:s”, System::Globalization::DateTimeFormatInfo::CurrentInfo); - будут использоваться настройки ОС.
Список свойств (получаем в виде dt ->Date)
Date
Day
DayofWeek
DayofYear
Hour
Minute
Seconds
Milliseconds
Month
Year
TimeOfDay
Список методов:
Add - Сложить две переменные типа DateTime
AddDays – добавить кол-во дней
|
|
AddHours – прибавить часы
AddMinutes – прибавить минуты
AddSeconds – добавить секунды
AddMilliseconds
AddMonths
AddYears
ToString
ToUniversalTime
$4.6 Элементы управление для построения наборов страниц (TabControl)
«Закладки»
Св-во:
TabPages – содержит отдельные страницы
SelectedIndex позволяет установить какая вкалдка акивна на данный момент.
TabControl1->SelectedIndex=1;
SelectedTab
tabControl1 → SelectedTab =tabPage2
$4.7Компонент Progress Bar
отображает степень завершенности процесса.
- Min/max задают максимальное, минимальное значение
- step – шаг изменения св-ва value.
- Vaue
- PerformStep()
- Perform(n)
.
Timer
timer1->Enabled =true;
progressBar1->Value=0;
обработчик события OnClick
progressBar1->PerformStep();
timer1->Enabled=false;
progressBar1->Visible=false;
$4.8Стандартное окно диалога. Открытие файла (OpenFileDialog
ShowDialog();
Multiselect – возможность одновременного выбора нескольких файлов;
ShowReadOnly – позволяет отмечать те файлы на диске с доступом только для чтения;
Filter – фильтрация файлов;
Text files (*.txt) |*.txt| All files (*.*) | *.*;
$4.8Стандартное окно диалога. Сохранение файла (SaveFileDialog
overwritepromt = T/F;
Filer;
$5. Управление формами
$5.1 Форма. Класс Form
$5.1.1 Свойства формы.
AutoScaleMode – режим автоматического масштабирования (как будет вести себя форма на другом коммпьютере;
Неизменными могут остаться:
ñ Font — шрифт;
ñ DPI — кол-во точек на дюйм;
ñ Inherit – наследование;
Autoscroll =T/F (При T – если окно не влазит, появляются полосы прокрутки);
BackColor – задаетт цвет фона формы;
BackgroundImge – задает фоновый рисунок;
ChancelButton – T/F, если T – нажатие клавиши Esc приводит к выходу из приложения;
ContextMenuStrip;
ControlBox – позволяет управлять, будут ли в заголовке формы присутствовать кнопки _ [] x;
DoubleBuffered – (T/F) Если T – для отрисовки формы используется дополнительный буффер, если мы вынуждены часто перирисовывать содержимое;
Enabled – если значения T – форма доступна, если ложна, то — нет;
Font – шрифт;
FormBorderStyle – стиль окантовки формы.
Значения мб:
ñ Sizable – возможность изменения размеров формы программы;
Icon – задает пиктограмму.
KeyPreview – (T/F) если значение св-ва T – форма перехватывает любое событие нажатия клавиши;
Language – позволяет выбрать предпочитаемый язык, в котором пользователь будет работать с программой. Позволяет оптимизировать кодовые страницы;
Localisable – св-во связано с настройкой на конкретные страны;
Lockated – св-во позволяет заблокировать форму (T/F), однако элементы будут видимы;
Maximum Size - |
MinimizeBox - | управление кнопками _ []
MaximizeBox - |
Opacity – задает уровень прозрачности формы (от 0 до 1);
Size – задает размер формы;
StartPosition – определяет положение формы при запуске проограммы (по умолчанию, окно появляется;
Text – задает текст, появляющийся в заголовке;
TopMost – определяет будет ли данное окно располагаться поверх всех остальных окон;
UseWaitCursor – (T/F), Если истина, то на то время пока форма занята — появляется курсорр ожидания;
Visible – видима/невидима;
$5.1.2 События формы.
Load – первое событие, которое воозникает при создании формы;
Shown – показ при выводе формы;
Activated – событие возникает, когда мы делаем форму активной;
Paint – перерисовка формы;
FormClosing – событие возникает перед закрытие формы;
FormClosed – закрытие формы
Deactivated – полное закрытие формы
private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e)
{
if (MessageBox::Show("Завершить работу?", "Завершение работы", "MessageBoxButtons::OKCancel", MessageBoxIcon::Question)== System::Windows::Forms::DialogResult::Cancel)
e->Cancel=true;
else
e->Cancel=false;
}
$5.1.2 Методы форм
Сlose()
При закрытий формы, форма не уничтожается.
Hide() - скрытие формы
Dispose() - уничтожение формы
Show() - показать
ShowDialog – показать форму в модальном режиме;
Focus () - передает фокус
Добавим в наш калькулятор две формы:
Форма заставка и форма ввода пароля.
$6.Элементы компьютерной графики
$6.1 графический формат — порядок, согласно которому данные описывающие изображении записываются в файле.
1. Векторный (возможность масштабирования, занимает много места).
2. Растровый (изображение разбивается на точки, строится матрица, мы знаем её координаты и цвет, при сильном масштабировании — резкая потеря качества, данные можно представить компактно).
3. Метафайл (объединение растрового и векторного представления).
$6.1 Пиксели и цвет пикселей
Пиксель - Минимальный элемент изображения. Различают физические и логические пиксели.
Физический пиксель - существует на физическом устройстве, или на каком-либо другом физическом носителе.
Логический пиксель -
Глубина цвета — 2n(глубина), n(кол-во цветов); true color n=24 бита; 16млн.
Тема: Новые концепции программирования
Цель: ознакомить с новыми концепциями программирования, дать им характеристику и провести сравнительный анализ
План:
- Общие сведения о новых концепциях
- Характеристика объектно-ориентированного программирования;
- Характеристика унифицированного языка моделирования (UML);
- Специализированные средства разработки программного обеспечения