Professional Documents
Culture Documents
Програма реєстрації волонтерів на події у суспільному житті
Програма реєстрації волонтерів на події у суспільному житті
2
3
ВСТУП
4
РОЗДІЛ І. ОБ’ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ
7
слово class. Найпростіші класи можуть мати тільки функціонал або тільки дані,
але в реальних програмах класи включають в себе обидві складові. Дані
містяться в змінних екземпляра, які визначені класом, а функціонал міститься в
методах. Важливо відзначити, що в С# визначені декілька специфічних
різновидів членів класу: змінні екземпляра, статичні змінні, константи, методи,
конструктори, деструктори, індексатори, події, оператори і властивості.
Методи – це підпрограми, які управляють даними, визначені в класі, і в
багатьох випадках забезпечують доступ до даних. За допомогою методів
здійснюється взаємодія зовнішнього середовища з класом. Метод містить один
і більше операторів. В професійно написаному С#-коді кожний метод виконує
тільки одну задачу. Назвою метода може бути будь-який існуючий
ідентифікатор. Ключові слова не можуть бути іменами методів. При
оголошенні кожної змінної і методу можна встановлювати певний модифікатор
доступу (за замовчуванням private). Поле – це член даних, який містить
екземпляр значущого типу або посилання на вказівниковий тип. Загальномовне
середовище (CLR) підтримує поля які належать як класу (статичні) так і
екземпляру (нестатичні). Динамічна пам'ять для зберігання статичного поля
виділяється в межах об’єкта класу, який створюється при його завантаженні в
домен AppDomain, що відбувається при JIT- компілюванні будь-якого методу,
який посилається на цей тип. Динамічна пам'ять для збереження екземплярних
полів виділяється при створенні екземпляра даного типу (Табл. 1.1).
Одним із спеціальних типів членів класу, який має подібність з
індексаторами, є властивість, яка зв’язує поле з методом, що забезпечує доступ
до поля. В деяких попередніх програмах виникала необхідність створення поля,
хоч і доступного із інших об’єктів, але такого, для якого виконувався б
контроль над операціями з його значенням. Наприклад, може бути потрібно
обмеження діапазону значень, які присвоюються цьому полю. Звичайно, для
досягнення даної цілі можна використати закриту змінну в поєднанні з
методом, який забезпечує доступ до її значення , але простіше і краще у всіх
випадках використовувати властивість. Властивість складається із імені і
8
методів доступу get і set. Методи доступу використовуються для отримання
значення і присвоєння його змінній. Основною перевагою властивості є те, що
ім’я може використовуватись у виразах і операціях присвоєння подібно
звичайній змінній, хоча насправді при цьому автоматично викликаються
методи доступу get і set. Таке використання властивості подібне на
автоматичний виклик методів get і set в індексаторі.[1]
Таблиця 1.1. Модифікатори полів
get {
set {
10
РОЗДІЛ ІІ. WINDOWS FORMS
11
Таблиця 1.2. Загальні властивості, методи і події класу Form
12
наслідників, кожне із них має тільки одне батьківське вікно. Більше того,
активним в кожний конкретний момент часу може бути тільки одне вікно-
наслідник. Останні не можуть бути «предками», і їх не можна перемістити за
межі батьківського вікна.
Для створення багатодокументної форми добавляємо нову форму (Form) і
присвоїмо їй властивість IsMDIContainer значення True. Після цього
створюється клас форми-наслідника для добавлення в основну форму. Для
цього потрібно клацнути правою кнопкою миші на проекті у вікні Solution
Explorer, вибрати команду ADD Windows Form і присвоїти файлу ім’я. Для
добавлення в батьківську форму «наслідника» необхідно створити об’єкт нової
форми наслідника; встановити її властивість MdiParent в батьківську форму і
викликати метод Show. Код для створення наслідника звичайно знаходиться
всередині обробника подій, яке створює нове вікно у відповідь на дію
користувача. Вибір меню (наприклад, File, в якому вибирається команда New,
за якою слідує команда Window)- загальний метод створення нових вікон-
наслідників. Властивість MdiChildren форми представляє собою масив
посилань на Form-наслідника (Табл. 2.2). Це корисно, якщо батьківське вікно
захоче перевірити властивість всіх свої «нащадків». Властивість
ActiveMdiChildren повертає посилання на активне вікно-наслідника; воно
повертає null, якщо активних вікон-наслідників немає.
Таблиця 2.2. Властивості і події MDI-форми
Властивості і події Опис, делегат і аргументи подій
MDI-форми
Загальні властивості
MDI-наслідника
IsMdiChild Вказує на те, чи є форма MDI-наслідником. При
значенні True, форма - MDI-наслідник (властивість
тільки для читання)
MdiParent Задає MDI форму - наслідника.
Загальні властивості
MDI-нащадка
ActiveMdiChild Викликає об’єкт Form, який являється поточним
активним MDI-наслідником.
IsMdiContainer Вказує на те, чи може форма бути
13
багатодокументною. При значенні True форма може
бути багатодокументною батьківською формою.
Значення по замовчуванню- False.
MdiChildren Повертає MDI-наслідників у вигляді масиву форм.
Загальний доступ
LayoutMdi Визначає відображення форм-потомків на
багатодокументній батьківській формі . В якості
параметра приймає перечислення MdiLayout з
можливими значеннями ArrangeIcons (упорядкувати
значки), Cascade(каскадом),
TileHorizontal(впорядкувати по горизонталі),
TileVertical (впорядкувати по вертикалі)
Загальні події (Делегат EventHandler, аргументи події EventArgs)
MdiChildActivate Генерується при закритті чи активації MDI-
наслідника
18
Програма містить три DataGridView, які відповідно знаходяться у класах
VolunteersList, HappeningsList та Assignment. Вони мають такий вигляд:
19
На формах ми також бачимо кнопки (Button).
Рис. 2.7. На головній формі ми бачимо командну стрічку, яка містить меню.
Реалізовано елемент menuStrip.
20
РОЗДІЛ ІІІ. ЗБЕРЕЖЕННЯ ДАНИХ
public DataTable()
TabVolunteer.Columns.Add("Ім'я", typeof(string));
21
З допомогою колекції класів замість створення структур даних програміст
просто використовує існуючі структури даних, не задумуючись про їхню
реалізацію. Дана методологія представляє яскравий приклад повторного
використання коду.
В більшості мов програмування звичайні масиви мають фіксований
розмір:їх неможна змінювати динамічно відповідно вимогам часу і необхідній
пам’яті програмному додатку. В деяких додатках обмеженість розміру
представляє собою досить серйозну проблему для розробників. Колекція класу
ArrayList .Net Framework відтворює функціональність традиційних масивів і
забезпечує динамічні зміни розміру колекції за допомогою методів класу. В
будь-який момент часу колекція ArrayList містить визначене число елементів,
менше або рівне ємності-кількості елементів, зарезервованих в поточний час
для колекції ArrayList. Програма може маніпулювати ємністю за допомогою
властивості Capacity класа ArrayList. При необхідності розширення класа
ArrayList поточна ємність подвоюється по замовчуванню. Клас ArrayList
зберігає посилання на object. Всі класи являються похідними від класу Object,
тому клас ArrayList може містити об’єкти будь-якого типу.
Методи класу ArrayList
Add – додавання об’єкта object в клас ArrayList. Повертає значення int ,яке
вказує на вказівник, в який добавлений object.
Clear – видалення всіх елементів із класу ArrayList.
Contains-повернення значення true, якщо вказаний об’єкт object
знаходиться в класі ArrayList; в протилежному випадку повернення значення
false.
IndexOf – повернення вказівника першої появи вказаного об’єкта object в
класі ArrayList.
Insert – вставка об’єкта object відповідно заданому індексу.
Remove – видалення першої появи вказаного об’єкта.
RemoveAt – видалення об’єкта по заданому індексу.
RemoveRange – видалення заданої кількості елементів, починаючи із
22
заданого індексу в класі ArrayList.
Sort – сортування класу ArrayList.
TrimToSize – встановлення ємності (Capacity) класу ArrayList поточною
кількістю елементів в класі ArrayList.
Додавання елементів до колекції здійснюється за допомогою методу Add() ,
як показано нижче.
intList.Add(1);
intList.Add(2);
23
операційної системи всі файли розглядаються як двійкові файли. В С#
підтримуються методи читання і запису байтів при роботі з файлами. Тому
досить поширені операції читання/запису файлів при здійсненні яких
використовуються потоки байтів. У C# забезпечується закріплення файлового
потоку,який орієнтується на використання байтів в символьний потік. Операції
з символьними файлами зручні,якщо потрібно зберігати текст. Потік-це
абстрактне представлення послідовних пристроїв, які забезпечують збереження
даних і доступ до них(по одному байту в кожний конкретний момент часу).В
якості таких пристроїв можуть виступати розміщений на диску файл, принтер,
область пам’яті будь-який інший об’єкт який допускає послідовне зчитування і
запис інформації.
В просторі імен System.IO зберігаються класи, призначені для зчитування і
записі даних в файли. Класи:
File – містить статичні методи для маніпуляції файлами(створення,
копіювання, видалення);
Directory- містить статичні методи для маніпуляції директоріями.
Path- статичний клас, «шлях»;
FileInfo- не містить статичні методи, які відповідають фізичному файлу, в
багато чому дублюють функціональність File;
Класи Stream дозволяють здійснювати послідовний доступ до файлів, і в
них не передбачена можливість роботи з вказівниками.
StreamWriter-дозволяє здійснювати запис у файл символів і стрічок і
самостійно виконувати всі необхідні дії.
StreamReader- здійснює читання символьних даних із потоку і їх дії.[3]
24
РОЗДІЛ IV. РЕАЛІЗАЦІЯ ПРОГРАМИ МОВОЮ С# З
ВИКОРИСТАННЯМ ООП
26
Рис. 4.3. Добавлення даних про волонтера
27
Рис. 4.5. Робота із подіями
28
ВИСНОВКИ
29
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. С#: Пер. С англ./Дейтел Х.,Дейтел П., Листфилд Дж., Нието Т., Йегер Ш.,
Златкина М. – СПб.: БХВ-Петербург, 2006. – 1056 с.:ил.
31
Пер. с англ. – М.: Мир, 1988. – 512 с.: ил.
27. Фокс Дж. Программное обеспечение и его разработка: Пер. с англ. – М.:
Мир, 1985. – 368 с.: ил.
28. Фролов А.В., Фролов Г.В. - Язык С#. Самоучитель. – М.: Диалог-Мифи,
2003.-560с.
29. Язык компьютера/ Под ред. и предисл. В.М. курочкина. Пер. с англ. –
М.: 1989. – 240 с.: ил.
30. http://distance.edu.vn.ua
31. http://ru.wikipedia.org/wiki/Виртуальный_метод
32. http://uk.wikipedia.org/wiki/Успадкування_(програмування))
33. http://www.rsdn.ru/article/dotnet/datagridview20
32
ДОДАТОК 1.ТЕКСТ ПРОГРАМИ
Клас Volunteer.
public int Id
{
get { return id; }
set { id = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public string Male
{
get { return male; }
set { male = value; }
}
Клас Happening.
33
public int Code
{
get { return code; }
set { code = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public string Date
{
get { return date; }
set { date = value; }
}
public string Venue
{
get { return venue; }
set { venue = value; }
}
public Happening()
{
this.Code = 0;
this.Date = "";
this.Venue = "";
this.Name = "";
}
Клас MainViewForm
34
private void toolStripButton1_Click(object sender, EventArgs e){}//додавання форми
відображення реєстрації волонтера на подію.
Клас VolunteerList
public void TabVolunteerAddRow(string nameParam, string maleParam, int ageParam, int idParam)
{}// створюємо стовпці таблиці.
Клас HappeningList
35
public void TabHappeningChangeRow(DataGridViewRow currentRow, string venueParam, string
nameParam, string dataParam,int codeParam)// зміна значення стовпців при редагуванні даних про
подію.
Клас Registration
Клас Assignment
Клас FormRegistrationVolunteers
public FormRegistrationVolunteers()
InitializeComponent();
Клас FormRegistrationHappening
37