- •1Об’єктно-орієнтоване програмування
- •1.1Основи ооп
- •1.2Створення класів. Методи, властивості, поля
- •1.3Ієрархія класів у програмі
- •2.1Створення форми. Використання Multiple Document Interface (mdi). Події, властивості.
- •2.2Опис використаних елементів управління.
- •3.2Колекції. Додавання до колекції елементів і доступ до елементів колекції.
- •2.3 Реалізація графічних елементів програми.
- •3Збереження даних.
- •3.1Створення таблиці. Приклад застосування у програмі.
- •3.3Запис і читання з файлу.
- •4Реалізація програми мовою с# з використанням ооп
- •4.1Інтерфейс програми.
- •4.2Демонстрація можливостей програми. Тестовий приклад.
- •Висновки.
- •Список використаних джерел.
- •Додаток1.Текст програми
1.2Створення класів. Методи, властивості, поля
Клас є основою для створення об’єктів. В класі визначаються дані і функціонал, який працює з цими даними. Об’єкти являються екземплярами класу. Ініціалізація змінних екземпляру відбувається в конструкторі. В класі можуть бути декілька конструкторів,тобто клас являється набором проектів, які визначають як будувати об’єкт. Дуже важливо розуміти різницю між класом і об’єктом: клас являється логічною абстракцією до тих пір,поки не буде створений об’єкт і не появиться фізична реалізація цього класу в пам’яті комп’ютера. Методи і змінні, які складають клас називаються членами класу. При визначенні класу об’являються дані, які він містить, і функціонал працюючий з цими даними. При створенні класу спочатку вказуємо ключове слово class. Найпростіші класи можуть мати тільки функціонал або тільки дані, але в реальних програмах класи включають в себе обидві складові. Дані містяться в змінних екземпляра, які визначені класом, а функціонал міститься в методах. Важливо відзначити, що в С# визначені декілька специфічних різновидів членів класу: змінні екземпляра, статичні змінні, константи, методи, конструктори, деструктори, індексатори, події, оператори і властивості.
Методи – це підпрограми, які управляють даними, визначені в класі, і в багатьох випадках забезпечують доступ до даних. За допомогою методів здійснюється взаємодія зовнішнього середовища з класом. Метод містить один і більше операторів. В професійно написаному С#-коді кожний метод виконує тільки одну задачу. Назвою метода може бути будь-який існуючий ідентифікатор. Ключові слова не можуть бути іменами методів. При оголошенні кожної змінної і методу можна встановлювати певний модифікатор доступу (за замовчуванням private). Поле – це член даних, який містить екземпляр значущого типу або посилання на вказівниковий тип. Загальномовне середовище (CLR) підтримує поля які належать як класу (статичні) так і екземпляру (нестатичні). Динамічна пам'ять для зберігання статичного поля виділяється в межах об’єкта класу, який створюється при його завантаженні в домен AppDomain, що відбувається при JIT- компілюванні будь-якого методу, який посилається на цей тип. Динамічна пам'ять для збереження екземплярних полів виділяється при створенні екземпляра даного типу.
Модифікатори полів:
Термін CLR |
Термін C# |
Опис
|
||
Static |
static |
Поле являється частиною вмісту типу, а не об’єкта. |
||
Instance |
(default) |
Поле зв’язано з екземпляром типу, а не самим типом. |
||
InitOnly |
readonly |
Запис в поле дозволяється тільки із коду метода конструктора. |
||
Volatile |
volatile |
Код, звернений до поля, не обов’язково спеціально повинен оптимізуватись у відношенні управління типами компілятором CLR або обладнанням. Тільки наступні типи можуть об’являтись як volatile: всі посилальні типи, Single, Boolean, Byte, SByte, Int16, UInt16, Int32, UInt32, Char, а також всі перечислені типи, які базуються на наступних типах: Byte, SByte, Int16, UINt16, Int32 або UInt32. |
||
Одним із спеціальних типів членів класу, який має подібність з індексаторами, є властивість, яка зв’язує поле з методом, що забезпечує доступ до поля. В деяких попередніх програмах виникала необхідність створення поля, хоч і доступного із інших об’єктів, але такого, для якого виконувався б контроль над операціями з його значенням. Наприклад, може бути потрібно обмеження діапазону значень, які присвоюються цьому полю. Звичайно, для досягнення даної цілі можна використати закриту змінну в поєднанні з методом, який забезпечує доступ до її значення , але простіше і краще у всіх випадках використовувати властивість. Властивість складається із імені і методів доступу get і set. Методи доступу використовуються для отримання значення і присвоєння його змінній. Основною перевагою властивості є те, що ім’я може використовуватись у виразах і операціях присвоєння подібно звичайній змінній, хоча насправді при цьому автоматично викликаються методи доступу get і set. Таке використання властивості подібне на автоматичний виклик методів get і set в індексаторі.[1]
Синтаксис властивостей виглядає наступним чином:
type name {
get {
//код методу доступу get.
}
set {
// код методу доступу set.
}
Тут параметр type вказує тип властивості, а параметр name - ім’я властивості. Після визначення властивості будь-яке використання ідентифікатора, замість вказаного name, приведе до виклику відповідного метода доступу. Метод доступу set автоматично отримує параметр value, який містить значення, що присвоюється властивості. Властивості вважають «розумними» методами, тобто методами з специфічною логікою. CLR (Common Language Runtime) підтримує статичні, екземплярні, абстрактні і віртуальні властивості. Крім того, властивість може позначатись модифікатором доступу і визначатись в інтерфейсах.
