Програмне забезпечення вбудованого мікропроцесора будильника

Міністерство освіти і науки , молоді та спорту України

Факультет інформаційних та електронних технологій

Кафедра програмного забезпечення автоматизованих систем

КУРСОВА РОБОТА

З курсу Об ’єктно – орієнтоване програмування

ТЕМА : Програмне забезпечення вбудованого мікропроцесора будильника

Спеціальність 6.050103 « Програмна інженерія »

Анотація

За допомогою технології Windows Forms реалізовано програмне забезпечення вбудованого мікропроцесора будильника .

Програма написана мовою С#. Мета курсової роботи – продемонструвати, на прикладі даної програми, можливості об’єктно-орієнтованого програмування (ООП). Інтерфейс користувача розроблено у Windows Forms.

Аннотация 

     С помощью технологии Windows Forms реализовано программное обеспечение встроенного микропроцессора будильника.

Программа написана на языке С #. Цель курсовой работы - продемонстрировать на примере данной программы, возможности объектно-ориентированного программирования (ООП). Интерфейс разработан в Windows Forms.

Зміст

1. Вступ……………………………………………………………………………………….4

2. Глосарій…………………………………………………………………………………….5

3. Постановка задачі…………………………………………………………………….6

4.Теоретичні відомості………………………………………………………………….7

  1. Основи ООП…………………………………………..........................7

4.1.1. Модифікатори доступу.......................................................8

4.2 . Windows Forms…………………………………………………………….12

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

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

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

8. Висновки…………………………………………………………………….19

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

10.1. Додаток : .Текст програми……………………………..21

10.2. Додаток : Модель наслідування …………………………32

Вступ

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

Ціль моєї курсової роботи продемонструвати основи ООП на прикладі вбудованого мікропроцесора будильника і події за допомогою технології Windows Forms. Без комп’ютерних технологій неможливе сьогодення. У сучасні електронні годинники убудовані , як правило, спеціалізовані мікроконтролери , і в годинників з'явилося багато сервісних функцій (будильники, мелодії, таймери ,радіо й т.д.), але мікроконтролер так само продовжує лічити періоди коливань усе того ж кристала кварцу. Сучасні годинники нагадують крихітний комп'ютер.Вони мають будильник і секундомір, а час відображають на електронному дисплеї. Електронні годинники стали складовою частиною ком'ютерів, мобільних телефонів та інших побутових приладів - таймерами оснащені мікрохвильві печі й пральні машини тощо. Будильник є практично у всіх електронних годинниках. Функцію будильника часто включають в програвач, телевізори, радіоприймачі, мобільні телефони і т. д. Існують комп'ютерні програми-будильники, що імітують роботу реального будильника.

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

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

Глосарій

  • Електронний годинник - годинник, в яких для відліку часу використовуються періодичні коливання електронного генератора, перетворені в дискретні сигнали, що повторюються через 1 с , 1 хв. , 1 год., і т. д.; сигнали виводяться на цифрове табло, що показує поточний час . У сучасні електронні годинники убудований, як правило, спеціалізований мікроконтролер, і в годинників з'явилося багато сервісних функцій (будильники, мелодії, календарі,таймери й т.д.), але мікроконтролер так само продовжує лічити періоди коливань усе того ж кристала кварцу.
  • Будильник - годинник, в заданий момент часу подає звуковий і / або світловий сигнал.
  • Таймер - (англ. timer, від англ. time - відзначати час), контрольно-регулюючий пристрій або засіб, що відраховує інтервал часу , який після закінчення заданого проміжку часу автоматично включає ( виключає) технічну систему, машину або апарат виробничого або побутового призначення або сигналізує про настання моменту їх включення (виключення). Таймер можна також вважати одним з видів годинників. Таймер може бути використаний для контролю послідовності події чи процесу. У той час як секундомір відлічує від нуля для вимірювання витраченого часу, таймер відлічує з заданим інтервалом часу, як пісочний годинник. Таймери можуть бути механічні, електромеханічні, електронні (кварцеві), або з програмним забезпеченням.
  • Радіо - це (від латинського radio - випромінюю, radius - промінь), різновид бездротового зв'язку, при якій в якості носія сигналу використовуються радіохвилі, вільно поширювані в просторі.
  • Процесор - електронний блок або інтегральна схема (мікропроцесор), виконуюча машинні інструкції (код програм), головна частина апаратного забезпечення комп'ютера або програмованого логічного контролера.

Постановка задачі

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

Будильник постійно відображає поточний час (години, хвилини). Управління будильником здійснюється наступними кнопками:

  • кнопкою режиму установки часу ;
  • кнопкою режиму установки часу спрацьовування ;
  • двома окремими кнопками для установки годин і хвилин ;
  • кнопкою скидання сигналу «СКИДАННЯ».
  • На будильнику є перемикач режиму роботи з наступними положеннями: «ВИМК», «ВКЛ», «РАДІО» і «ТАЙМЕР».

Для встановлення поточного часу потрібно натиснути на кнопку режиму установки і, при натиснутій кнопці, натискати на кнопки установки годин і хвилин. При кожному натисканні на кнопки, встановлюване значення збільшується на одну одиницю (1:00 або одну хвилину відповідно). При досягненні максимального значення провадиться скидання. Для установки часу спрацьовування будильника потрібно натиснути на кнопку режиму установки часу спрацьовування і, тримаючи кнопку натиснутою, натискати на кнопки установки годин і хвилин. Коли перемикач режиму роботи знаходиться в положенні «ВКЛ», при досягненні часу спрацьовування відбувається подача звукового сигналу протягом однієї хвилини. Сигнал можна перервати, натиснувши на кнопку «СБРОС». При цьому сигнал повинен бути відновлений через п'ять хвилин. При установці перемикача в положення «ВИМК» звуковий сигнал не подається.

Коли перемикач знаходиться в положенні «РАДІО» працює радіоприймач. При перекладі перемикача в положення «ТАЙМЕР» включається радіоприймач на тридцять хвилин, а потім години переходять у стан будильника (аналогічно положенню «ВКЛ»). При натисканні на кнопку режиму установки часу, будильник повинен відображати час спрацьовування.

4. Теоритичні відомості

4.1 Основи ООП

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

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

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

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

  • моделювання предметів та явищ реального світу;
  • можливість створювати користувацькі типи даних (класи);
  • приховування деталей реалізації (інкапсуляція);
  • можливість повторного використання коду (наслідування);
  • інтерпретація викликів процедур та функцій на етапі виконання (поліморфізм).

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

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

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

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

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

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

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

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

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

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

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

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

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

type name {

get {

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

}

set {

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

}

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