Материал: Розробка програмного забезпечення для реєстрації волонтерів на події

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Розробка програмного забезпечення для реєстрації волонтерів на події

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ТЕРНОПІЛЬСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ

ФАКУЛЬТЕТ КОМП’ЮТЕРНИХ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ

Кафедра СКС




КУРСОВИЙ ПРОЕКТ

з дисципліни “Об’єктно-орієнтоване програмування”

на тему: «Розробка програмного забезпечення для реєстрації волонтерів на події»










Тернопіль - 2014

Зміст

Вступ

1. Об’єктно-орієнтоване програмування

1.1 Основи ООП

.2 Створення класів. Методи, властивості, поля

.3 Ієрархія класів у програмі

2. Windows Forms

2.1 Створення форми. Використання Multiple Document Interface (MDI). Події, властивості

.2 Опис використаних елементів управління

2.3 Реалізація графічних елементів програми

3. Збереження даних

3.1 Створення таблиці. Приклад застосування.у програмі

.2 Колекції. Додавання до колекції елементів і доступ до елементів колекції

.3 Запис і читання з файлу

4. Реалізація програми мовою С# з використанням ООП

4.1 Інтерфейс програми

.2 Демонстрація можливостей програми.Тестовий приклад

Висновки

Список використаних джерел

Додаток

Вступ

Об’єктно-орієнтоване програмування (ООП) - це еволюційний крок, який випливає із розвитку програмування. ООП дає нам можливість відчути себе не тільки програмістом, а й архітектором, проектуючи структуру програми, створюючи красиві форми. Створення класів за допомогою ООП можна порівняти з будуванням будинку. Спочатку ми створюємо план - описуємо клас, а пізніше будуємо будинок - створюємо об’єкт, тобто сутність класу.

Ціль моєї курсової роботи продемонструвати основи ООП на прикладі програми реєстрації волонтерів і подій за допомогою технології Windows Forms.

Без комп’ютерних технологій неможливе сьогодення. З інтеграцією України в Європу активно розвивається волонтерський рух. Будь-який громадський захід не може проходити без активної участі волонтерів, тому дуже часто виникає необхідність занести дані про осіб з можливістю їх подальшого використання.

Дана програма проводить реєстрацію волонтерів на події у суспільному житті. За допомогою неї ми можемо вносити дані про волонтерів і про події, які можна зберігати.

Програма має красивий і зручний інтерфейс, який забезпечує приємну роботу з нею.

1. Об’єктно-орієнтоване програмування

1.1    Основи ООП


З розвитком програмування виникла ідея поєднати в межах однієї сутності дані і код, що безпосередньо опрацьовує ці дані. Така сутність отримала назву об’єкт, а відповідний підхід до створення програм називають об’єктно-орієнтованим програмуванням.

Об’єктно-орієнтоване програмування (ООП) - це парадигма програмування, яка розглядає програму як сукупність гнучко пов’язаних між собою об’єктів. Кожен об’єкт має суттєві характеристики, які відрізняють його від усіх інших об’єктів. Сукупність таких характеристик називається абстракцією. Розрізняють абстракції стану та поведінки об’єкта.

Стан (дані об’єкта) характеризується переліком та значенням певних ознак. Поведінка (функціонал об’єкта) визначається набором операцій, які виконуються об’єктом, або над об’єктом.[1]

Кожен об’єкт є екземпляром (представником) певного класу. Відповідно, клас - це відповідна абстракція об’єктів.

·        Основні переваги концепції ООП:

·        моделювання предметів та явищ реального світу;

·        можливість створювати користувацькі типи даних (класи);

·        приховування деталей реалізації (інкапсуляція);

·        можливість повторного використання коду (наслідування);

·        інтерпретація викликів процедур та функцій на етапі виконання (поліморфізм).

Інкапсулювання - це механізм в програмуванні, який пов’язує в одне ціле функції і дані, якими вони маніпулють, а також захищає їх від зовнішнього доступу і неправильного застосування. В об’єктно-орієнтованій мові функції і всі необхідні дані можуть пов’язуватись таким способом, що створюється автономна структура - об’єкт. Іншими словами, об’єктом є структура, яка підтримує інкапсулювання. В межах об’єкта функції, дані або і функції і дані можуть бути або закритими для інших об’єктів (private), або відкритими (public).

Модифікатори доступу:

Модифікатор private - забороняє доступ до полів і методів класу ззовні самого класу. Поля і методи, оголошені з модифікатором private, будуть доступні тільки в межах самого класу.

Якщо поле і метод класу визначені з модифікатором public, вони доступні ззовні оголошення базового класу чи похідних класів. Це в деякій мірі означає, що метод оголошений із зовнішнього класу може вільно звертатись до таких полів і методів. З допомогою модифікатора protected можна доступитись до полів і методів базового класу тільки для похідних класів, але не для зовнішніх по відношенню до класу методів. Модифікатор internal представляє комбінацію модифікаторів public і protected. Він обмежує доступ відмічених ним полів і методів межами одної збірки.

Успадкування - це властивість, з допомогою якої один об’єкт може набувати властивостей іншого. При цьому підтримується концепція ієрархічної класифікації. Без використання успадкування кожний об’єкт повинен явно визначати всі свої характеристики; використовуючи наслідування, об’єкт повинен визначати тільки ті якості, які роблять його унікальним в межах свого класу. Визначення нового класу (породжений клас, підклас, англ. derived class, англ. subclass) може базуватись на визначенні вже існуючого (базовий клас, англ. base class, англ. superclass). В такому випадку, новий клас отримає властивості та поведінку базового класу, та доповнить їх своїми власними. У випадку одиничного успадкування, у кожного класу може бути лише один безпосередній базовий клас. У випадку множинного успадкування, дозволяється існування декількох безпосередніх надкласів. Застосування методів успадкування дозволяє покращити повторне використання коду шляхом використання вже визначених властивостей та методів (поведінки) базових класів.

Разом з інкапсуляцією і успадкуванням поліморфізм також являє собою одну із важливих концепцій ООП. Застосування цієї концепції дозволяє значно полегшити розробку складних програм.

Термін поліморфізм має грецьке походження і означає «наявність багатьох форм». З поліморфізмом тісно пов’язані такі поняття,як абстрактні класи, віртуальні методи, перевантаження методів і властивостей.

Віртуальні методи - один із найважливіших прийомів реалізації поліморфізму. Вони дозволяють створювати загальний код, який може працювати разом з об’єктами базового класу, так і з об’єктами будь-якого його класу-нащадка. При цьому базовий клас визначає спосіб роботи з об’єктами і будь-які його нащадки можуть представляти конкретну реалізацію цього способу. Базовий клас може і не представляти реалізацію віртуального методу, а тільки оголошувати про його наявність. Такі методи без реалізації називаються абстрактними. Клас, який містить хоча б один такий метод називається абстрактним. Об’єкт такого класу створювати не можна. Нащадки абстрактного класу повинні обов’язково представити реалізацію для всіх його абстрактних методів, інакше, вони в свою чергу будуть абстрактними. Можливість присвоювати різну функціональність одному методу називається перевантаженням методу.[3]

1.2    Створення класів. Методи, властивості, поля


Клас є основою для створення об’єктів. В класі визначаються дані і функціонал, який працює з цими даними. Об’єкти являються екземплярами класу. Ініціалізація змінних екземпляру відбувається в конструкторі. В класі можуть бути декілька конструкторів,тобто клас являється набором проектів, які визначають як будувати об’єкт. Дуже важливо розуміти різницю між класом і об’єктом: клас являється логічною абстракцією до тих пір,поки не буде створений об’єкт і не появиться фізична реалізація цього класу в пам’яті комп’ютера. Методи і змінні, які складають клас називаються членами класу. При визначенні класу об’являються дані, які він містить, і функціонал працюючий з цими даними. При створенні класу спочатку вказуємо ключове слово class. Найпростіші класи можуть мати тільки функціонал або тільки дані, але в реальних програмах класи включають в себе обидві складові. Дані містяться в змінних екземпляра, які визначені класом, а функціонал міститься в методах. Важливо відзначити, що в С# визначені декілька специфічних різновидів членів класу: змінні екземпляра, статичні змінні, константи, методи, конструктори, деструктори, індексатори, події, оператори і властивості.

Методи - це підпрограми, які управляють даними, визначені в класі, і в багатьох випадках забезпечують доступ до даних. За допомогою методів здійснюється взаємодія зовнішнього середовища з класом. Метод містить один і більше операторів. В професійно написаному С#-коді кожний метод виконує тільки одну задачу. Назвою метода може бути будь-який існуючий ідентифікатор. Ключові слова не можуть бути іменами методів. При оголошенні кожної змінної і методу можна встановлювати певний модифікатор доступу (за замовчуванням private). Поле - це член даних, який містить екземпляр значущого типу або посилання на вказівниковий тип. Загальномовне середовище (CLR) підтримує поля які належать як класу (статичні) так і екземпляру (нестатичні). Динамічна пам'ять для зберігання статичного поля виділяється в межах об’єкта класу, який створюється при його завантаженні в домен AppDomain, що відбувається при JIT- компілюванні будь-якого методу, який посилається на цей тип. Динамічна пам'ять для збереження екземплярних полів виділяється при створенні екземпляра даного типу.

Модифікатори полів:

Термін CLR

Термін C#

Опис

Static

static

Поле являється частиною вмісту типу, а не об’єкта.

Instance

(default)

Поле зв’язано з екземпляром типу, а не самим типом.

InitOnly

readonly

Запис в поле дозволяється тільки із коду метода конструктора.

Volatile

volatile


Одним із спеціальних типів членів класу, який має подібність з індексаторами, є властивість, яка зв’язує поле з методом, що забезпечує доступ до поля. В деяких попередніх програмах виникала необхідність створення поля, хоч і доступного із інших об’єктів, але такого, для якого виконувався б контроль над операціями з його значенням. Наприклад, може бути потрібно обмеження діапазону значень, які присвоюються цьому полю. Звичайно, для досягнення даної цілі можна використати закриту змінну в поєднанні з методом, який забезпечує доступ до її значення, але простіше і краще у всіх випадках використовувати властивість. Властивість складається із імені і методів доступу get і set. Методи доступу використовуються для отримання значення і присвоєння його змінній. Основною перевагою властивості є те, що ім’я може використовуватись у виразах і операціях присвоєння подібно звичайній змінній, хоча насправді при цьому автоматично викликаються методи доступу get і set. Таке використання властивості подібне на автоматичний виклик методів get і set в індексаторі.[1]

Синтаксис властивостей виглядає наступним чином:

type name {{

//код методу доступу get.

}{

// код методу доступу set.

}

Тут параметр type вказує тип властивості, а параметр name - ім’я властивості. Після визначення властивості будь-яке використання ідентифікатора, замість вказаного name, приведе до виклику відповідного метода доступу. Метод доступу set автоматично отримує параметр value, який містить значення, що присвоюється властивості. Властивості вважають «розумними» методами, тобто методами з специфічною логікою. CLR (Common Language Runtime) підтримує статичні, екземплярні, абстрактні і віртуальні властивості. Крім того, властивість може позначатись модифікатором доступу і визначатись в інтерфейсах.

орієнтований програмування облік клас

1.3    Ієрархія класів у програмі


Дана програма складається з одинадцяти класів, кожний з яких є певною структурою даних. Предметна область програми складається з волонтерів і подій, яких потрібно зареєструвати. Дана програма використовує основні ідеї ООП, це - інкапсуляція, успадкування, поліморфізм. Програма складається з двох основних класів, які називаються: Volunteer і Happening, в яких описано властивості, поля класу і конструктор (з параметрами і без)і десяти класів успадкованих від класу Form. Додавання нових волонтерів реалізують два класи: VolunteerList і FormRegistrationVolunteers. В класі VolunteerList створено таблицю, яка буде відображати додавання нових волонтерів, і запис та зчитування даних. В класі FormRegistrationVolunteers вводимо особисті дані про волонтера. Аналогічно реалізується додавання нових подій за допомогою класів HappeningList і FormRegistrationHappening. Реєстрація волонтера на подію здійснюється за допомогою двох наступних класів: Registration та Assignment. Клас Registration здійснює реєстрацію за допомогою номера волонтера та коду події, а наступний клас відображає ім’я відповідного волонтера та подію на яку він зареєстрований.

2. Windows Forms

.1 Створення форми. Використання Multiple Document Interface (MDI). Події, властивості

Windows Forms створює Graphical Uses Interface (GUI) для різних програм. Форма-це графічний елемент, який появляється на робочому столі. Форма може бути діалоговим вікном,просто вікном або вікном MDI. Компонент - це клас, який реалізує інтерфейс IComponent і визначає різні поведінки, які можуть реалізувати компоненти. Елементи управління видимі, на відміну від компонентів, яким не вистачає графічної частини. Елементи управління і компоненти Windows Forms містяться в панелі Toolbox Visual Studio.Net. Форма служить контейнером для компонентів і елементів управління. Елементи управління добавляються на форму за допомогою коду. При «перетягуванні» елемента управління із панелі Toolbox в форму Visual Studio.Net генерує цей код,який створює певний елемент управління і задає його основні властивості. Користувач може сам написати код, проте елементи управління набагато простіше створювати і модифікувати в панелі Toolbox і вікні Properties, даючи можливість Visual Studio.Net розібратись із деталями. При звертанні користувача до елементу управління з допомогою миші чи клавіатури генерується подія і обробляється спеціальними «обробниками подій». Як правило, результатом подій являється яка-небудь операція. Наприклад, натискання кнопки OK у вікні MessageBox генерує подію. У відповідь на цю подію обробник MessageBox закриває це вікно повідомлень. Клас Form - основне вікно, яке використовується програмними додатками в Windows, повністю кваліфіковані як System.Windows.Forms.Form. Точно так само клас Button фактично являється System.Windows.Forms.Button. Загальний процес проектування додатків Windows потребує створення Windows Forms із заданням її властивостей, з добавленням елементів управління зі своїми властивостями і реалізацією обробників подій. [5]

В таблиці показані загальні властивості, методи і події класу Form.

Властивості, методи і події класу Form

Опис/Делегат і аргументи події

Загальні властивості


AcceptButton

Кнопка, яка буде натисненою при натисненні кнопки <Enter>

AutoScroll

Поява смужки прокрутки при необхідності

CancelButton

Кнопка, яка є натисненою при натисненні клавіші<Escape>

FormBorderStyle

Границя форми

Font

Гарнітура відображеного в формі тексту, а також гарнітура шрифту по замовчуванні добавлених в форму елементів

Text

Текст в рядку заголовка форми

Загальні методи


Close

Закриття форми і звільнення всіх ресурсів. Відкрити попередньо закриту форму не можна.

Hide

Приховування форми(ресурси не звільняються)

Show

Відображає приховану форму

Загальні події


Load

(Делегат EventHandler,аргумент події EventArgs)


Відіграє роль в показі форми. Visual Studio.Net генерує обробник події по замовчуванню, коли програміст двічі клацає кнопкою миші на формі в режимі проектування