ТОП 10:

Розробка технічного завдання на роботу



Форма N Н-6.01

 

Міністерство освіти і науки України

Вінницький національний технічний університет

Кафедра програмного забезпечення

 

КУРСОВА РОБОТА
з дисципліни ”Об’єктно-орієнтоване програмування
на тему: РОЗРОБКА ПРОГРАМНОЇ СИСТЕМИ ДЛЯ МОДЕЛЮВАННЯ
ОБ’ЄКТІВ ” ПРАЦІВНИК ЖЕКу, ЇДАЛЬНА, КАНАЛІЗАЦІЯ”
З ВИКОРИСТАННЯМ UML ТА МОВИ ПРОГРАМУВАННЯ С#

 

 

  Студента __2___ курсу _ групи 1ПІ-14мс напряму підготовки 6.050103 спеціальності ”Програмна інженерія” Чорного Вадима Керівник доцент кафедри ПЗ, к.т.н., Д.І. Катєльніков Національна шкала ___________________________ Кількість балів: __________ Оцінка: ECTS _______
Члени комісії ________________ (підпис) ___________________________ (прізвище та ініціали)
________________ (підпис) ___________________________ (прізвище та ініціали)
   


м. Вінниця - 2015 рік

Міністерство освіти і науки України

Вінницький національний технічний університет

Факультет інформаційних технологій та комп’ютерної інженерії

 

ЗАТВЕРДЖУЮ

Зав. кафедри ПЗ, проф., д.т.н.

______________ А.М. Пєтух

(підпис)

«__» ___________ 2015 р.

 

ІНДИВІДУАЛЬНЕ ЗАВДАННЯ

 

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

студенту групи 1ПІ-14мс Чорному В.М.

 

РОЗРОБКА ПРОГРАМНОЇ СИСТЕМИ ДЛЯ МОДЕЛЮВАННЯ ОБ’ЄКТІВ ”ПРАЦІВНИК ЖЕКу, ЇДАЛЬНЯ, КАНАЛІЗАЦІЯ” З ВИКОРИСТАННЯМ UML ТА МОВИ ПРОГРАМУВАННЯ С#

Вихідні дані:

- MS Visual Studio 2013, довідники з мов С#.

 

Вимоги до курсової роботи:

Потрібно створити Windows API-додаток, який реалізує: класи мікро та двох макрооб’єктів різних класів згідно варіанту курсової. Клас мікрооб’єкту повинен містити не менше 4 елементів змінних і не менше 4 методів. Як мінімум одна змінна повинна бути типу int, одна – типу double і як мінімум одна – рядок (будь якої реалізації); В класі повинен бути присутній конструктор та деструктор; В класі повинен бути також присутній як мінімум один елемент, що створений динамічно. Це може бути массив, структура, інший об’єкт або навіть одна змінна. Повинен бути присутній код, що створює цей елемент – наприклад у конструкторі, та код, який знищує цей елемент – найкраще всього у деструкторі. Повинно бути реалізоване глибинне копіювання шляхом перевантаження копіюючого конструктора та оператора =; три випадки виклику копіюючого конструктора; використання перевантаженого оператора =. Продемонструвати перевантаження та використання унарного та бінарного операторів (окрім = та <<). Продемонструвати перевантаження і використання оператора <<. Повинно також бути продемонстровано створення об’єкту статично та динамічно; додано у клас одну статичну змінну та одну статичну функцію – та продемонстровано їх використання. Повинно також бути продемонстровано використання наступних механізмів мови С++: friend-функцій, ініціалізатор конструктора, оператор ::, this, типів доступу public, private, protected. Зображення мікрооб’єкту повинно складатись не менше чим з трьох графічних примітивів, при цьому один з них повинен бути текст. Повинно також бути продемонстровано створення динамічного масиву мікрооб'єктів та відображення його у вікні програми. При натискуванні правої кнопки миші на мікрооб’єкті він повинен ставати активним/неактивним. При натискувань клавіш-стрілок активні об’єкти повинні рухатись у вікні програми. Повина бути реалізована можливість додавати мікрооб’єкти шляхом натискування клавіши Insert. При цьому повинне з’являтись діалогове вікно, яке повинно визначати параметри створюваного мікрооб’єкта, зокрема до якого з класів нащадків у ієрархії наслідування він належить. Крім керуючого елемента Button у діалоговому вікні також повинні бути використані як мінімум два з наступного списку: TextBox, CheckBox, ListBox, RadioButton. При натискувань клавіши Delete активні об’єкти повинні знищуватись. Якщо активного об’єкта нема – клавіша Delete ігнорується. Клавіша Esc повинна відміняти активацію обєкта. Повинно бути реалізовано наслідування мікрооб’єктів – як мінімум три рівня наслідування. Зображення об'єктів класів нащадків повинно відрізнятись від зображень об’єктів базових класів. Функцію Draw слід зробити віртуальною. Крім функції Draw в класах мікрооб'єктв повинна бути присутня ще як мінімум одна віртуальна функція. Зображення кожного з макрооб’єктів може складатись з графічних примітивів: точка, лінія, прямокутник, коло, арка, полігон, текст, графічний образ. Зображення кожного макрооб’єкту повинно складатись не менше чим з трьох елементів, при цьому один з елементів повинен бути текст. Додати класи макрооб’єктів і команди створення самих макрооб’єктів і команди їх рисування в програму. В програмі повинен бути як мінімум один макрооб’єкт кожного з двох класів макрооб'єктів. При цьому мікрооб'єкти повинні чітко розділитись на тих, які належать до макрооб’єктів і тих, які їм не належать (найбільш наглядно цен зобразити геометрично – ті що належать знаходяться всередині макрооб’єкта, ті що не належать - ззовні). Рух мікрооб’єкта всередині макрооб’єкта – не обов’язковий. Повинна бути реалізована можливість рухати якимись чином макрооб’єкт (разом з всіма мікрооб'єктами, які йому належать). Повинна бути реалізована можливість включати виділені/виділений мікрооб’єкти/мікрооб’єкт в макроб’єкт та – навпаки – виключати виділені/виділений мікрооб’єкти/мікрооб’єкт з макроб’єкту. Можливість виділення декількох мікроб’єктів не є обов’язковою. В програмі повинно бути продеморнстровано використання поліморфізму; віртуального деструктора; динамічного приведення типу dynamic_cast<>. Мікроб’єкти повинні бути як мінімум у трьох станах: А) Належать макрооб’єкту першого типу; Б) Належать макрооб’єкту другого типу; В) Не належать жодному макрооб’єкту. Не забороняється мікроооб’єкту одночасно належати декільком макрооб’єктам одночасно. Повинен бути реалізований автоматичний рух деяких мікрооб’єктів зі зміною стану (див. А) Б) В) ). По натискуванню клавіши миші/клавіши на клавіатурі/команді меню характер руху повинен змінюватись. Повинна бути запрограмована серіалізація/де-серіалізація всіх об’єктів у файл, яка обов’язково повинна зберігати не тільки власне інформацію про стан макро- та мікро-об’єктів, але й про їх позицію на екрані. При серіалізації/де-серіалізації обов’язково повинні використовуватись діалогові вікна, щоб запитати у користувача ім’я файлу (функції GetOpenFileName та GetSaveFileName). У проекті повинні запрограмовані такі відносини між класами та об'єктами, які можуть бути наглядно проілюстровані на діаграмах агрегації, композиції, асоціації, використання, взаємодії, послідовності та стану.

Зміст ПЗ до курсової роботи

Індивідуальне завдання

АНОТАЦІЯ

ВСТУП

1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ

2 РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ ТА ПРИКЛАДІВ ВИКОРИСТАННЯ

3 РОЗРОБКА ДІАГРАМ КЛАСІВ, ОБ’ЄКТІВ ТА СТАНУ

4 РОЗРОБКА ПІДСИСТЕМИ ГРАФІЧНОГО ВІДОБРАЖЕННЯ

5 ВИКОРИСТАННЯ ЗАСОБІВ ПРОГРАМУВАННЯ WINDOWS FORMS

6 РОЗРОБКА ПІДСИСТЕМИ СЕРІАЛІЗАЦІЇ/ДЕСЕРІАЛІЗАЦІЇ ДАНИХ

7 КЕРІВНИЦТВО КОРИСТУВАЧА

ВИСНОВКИ

ПЕРЕЛІК ПОСИЛАНЬ

Додатки (за необхідністю)

 

Дата видачі «3» вересня ______ р. Керівник _________________

(підпис)

Завдання отримав _________

(підпис )


 

АНОТАЦІЯ

 

Дана курсова робота присвячена розробці програмної системи для моделювання об’єктів «працівник ЖЕКу–їдальня–каналізація» з використанням UML та мови програмування C# та об’єктно-орієнтованих принципів. Програма включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. В ході роботи було створено програмну оболонку поставленої задачі і розроблено методи симуляції поведінки працівників. В результаті виконання курсової роботи отримано програмний засіб, працездатність і правильність роботи якого перевірено, підготовлена інструкція користувача.

 


 

ЗМІСТ

 

ВСТУП.. 6

1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ.. 8

1.1 Предметна область. 8

1.2 Існуючі реалізації 11

1.3 Розробка технічного завдання на роботу. 13

1.4 Обґрунтування вибору мови програмування. 16

1.5 Висновки. 18

2. РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ ТА ПРИКЛАДІВ.. 19

2.1 Розробка інтерфейсу програми. 19

2.2 Приклади використання. 20

3. РОЗРОБКА ДІАГРАМ КЛАСІВ, ОБ’ЄКТІВ ТА СТАНУ.. 23

3.1 Діаграма класів. 23

3.1.1 Діаграма наслідування. 23

3.1.2 Діаграми агрегації 24

3.1.3 Діаграми композиції 25

3.1.4 Діаграми асоціації 26

3.2 Діаграми кооперації 26

3.3. Діаграми послідовності 27

4 РОЗРОБКА ПІДСИСТЕМИ ГРАФІЧНОГО ВІДОБРАЖЕННЯ.. 29

4.1 Модель графічного відображення. 29

4.2 Графічні процедури підсистеми графічного відображення. 31

5 ВИКОРИСТАННЯ ЗАСОБІВ ПРОГРАМУВАННЯ WINDOWS FORMS. 32

6 РОЗРОБКА ПІДСИСТЕМИ СЕРІАЛІЗАЦІЇ/ДЕСЕРІАЛІЗАЦІЇ ДАНИХ.. 35

6.1 Розробка формату файлу. 35

6.2 Механізми введення/виведення C#. 36

7 КЕРІВНИЦТВО КОРИСТУВАЧА.. 38

7.1 Вимоги до складу і параметрів технічних засобів. 38

7.2 Користувацький інтерфейс. 39

ВИСНОВКИ.. 41

ПЕРЕЛІК ПОСИЛАНЬ. 42

ДОДАТКИ.. 43

Додаток А. Лістинг модуля Cupboard.cs. 44

Додаток Б. Лістинг модуля Sewerage.cs. 46

Додаток В. Лістинг модуля Employee.cs. 48

Додаток Г. Лістинг модуля DiligentEmployee.cs. 54

Додаток Д. Лістинг модуля LazyEmployee.cs. 55

Додаток Е. Лістинг модуля Form1.cs. 56

 


ВСТУП

 

На сучасному етапі одним з напрямків суспільно-економічних перетворень стало реформування житлово-комунального господарства.

Житлово-комунальне господарство (ЖКГ) є найважливішою сферою соціальної структури суспільства. Якість її функціонування на базі рівноправного існування в даній сфері усіх форм власності дозволяє створити поле якості економічних відносин власників послуг ЖКГ і створити мережеву середу для реалізації принципів соціально-орієнтованої ринкової економіки.

Сучасний розвиток ЖКГ пройшло кілька стадій від екстенсивного до інтенсивного, якісного розвитку ЖКГ. Сьогодні перед ЖКГ стоїть завдання вдосконалення технології надання послуг, забезпечення їх якості та підвищення якості та ефективності діяльності з метою отримання конкурентної переваги. Питання підвищення якості послуг ЖКГ, пошук резервів, можливості контролю розглядаються на державному рівні, на рівні професійних об'єднань. Контроль за якістю послуг ЖКГ стає суспільно значущим, причому проведення міжнародних конференцій з реалізації стратегії TQM на базі відкритих міжнародних стандартів якості товарів, продукції і послуг ISO 9000 та ISO14000 дає уявлення про те, що в даний момент завдання пошуку резервів підвищення якості послуг ЖКГ є актуальною для зарубіжних організацій та вітчизняного ЖКГ.

Актуальність роботи визначається наступним: житлово-комунальні послуги є одним з найважливіших показників якості життя людей, житлово-комунальне господарство – це найважливіший сектор економіки. Тому включення житлово-комунального господарства в систему ринкових відносин, зміна механізму управління цією сферою, її реформування впливає на весь хід економічних реформ в Україні.

Співробітники ЖЕКів, крім безпосередніх обов'язків по утриманню будинку, покладено зобов'язання з проведення інформаційно-роз'яснювальної роботи з мешканцями. Так, згідно з українським законодавством, ЖЕК повинен надавати таку інформацію для мешканців: на фасаді будівлі має бути табличка з назвою вулиці і номером будинку; біля входу в під'їзд – покажчик з номером під'їзду, а також нумерацією квартир, розташованих у ньому. У дворі будинку на видному та прохідному місці повинен розміщуватися список адрес і телефонних номерів диспетчерської служби ЖЕКу, райадміністрації, організацій по наданню послуг тепло-, газо-, електро-, водопостачання і водовідведення, пожежної охорони, відділення міліції, швидкої допомоги, санепідемстанції, аварійних служб житлового господарства.

Двічі на рік співробітники ЖЕКу повинні проводити сезонні огляди житлових будинків. У разі необхідності, ЖЕК проводить ремонт: покрівлі; фасадів; трубопроводів на горищах і в підвальних приміщеннях; систем водопостачання та центрального опалення, їх регулювання і гідравлічні випробування; вхідних дверей в під'їзд, її утеплення. Всі ці, а також деякі інші роботи повинні проводитися негайно, як тільки проблеми виявлені.Силами і засобами ЖЕКу здійснюється заміна труб загального стояка, електрощитка на сходовому майданчику і лампочок в під'їзді. Лампочки повинні працювати на кожному поверсі в кожному під'їзді, а також при вході на вулиці. Ліхтарі вздовж доріг також повинні бути справні, їх розміщують приблизно через кожні 40-50 метрів. Відповідальність за їх експлуатацію і ремонт ЖЕКи не несуть. Однак слід пам'ятати, що саме працівники ЖЕКу повинні повідомити про непрацюючому ліхтарі у дворі у відповідну службу.

Перш за все, потрібно знати, що права і обов'язки ЖЕКу регулюються ст. 21 закону України «Про житлово-комунальні послуги». Виконавець, який порушив договір про надання послуг за плату, відповідає за це порушення, якщо не доведе наявність форс-мажорних обставин. Збитки, заподіяні невиконанням або неналежним виконанням договору про безоплатне надання послуг, підлягають компенсації

Найбільша проблема з якою стикається ЖКГ – якість надання послуг. Зазвичай працівники ЖЕКУ виконують неякісно свою роботу. Це є однією з основних проблем сучасного життя. Саме тому для теми курсової роботи було обрано систему симуляції працівників ЖЕКу [1].

АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ

 

Предметна область

 

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

Основні завдання ЖЕК: зберігання закріпленого за нею житлового фонду і забезпечення безперебійної роботи інженерного устаткування житлових будинків, своєчасне проведення поточного ремонту, утримання домоволодінь у належному технічному і санітарному стані, забезпечення дбайливого ставлення мешканців до своїх квартир тощо. Очолює ЖЕК начальник, якого призначає міський голова або голова районної ради. Вищестоящим органом, що йому підпорядкована ЖЕК, є житлове управління. Робота ЖЕК проводиться в тісному контакті з домовими комітетами, будівельними кооперативами та ОСББ.

У СРСР ЖЕК був первинною ланкою в загальній структурі управління житловим господарством. ЖЕК зобов'язаний надавати споживачам 18 послуг, а саме:

1. Прибирання прибудинкової території;

2. Прибирання сходових клітин;

3. Вивезення побутових відходів (збирання, зберігання, перевезення, перероблення, утилізація, знешкодження та захоронення).

4. Прибирання підвалів, технічних поверхів та покрівлі;

5. Технічне обслуговування ліфтів;

6. Обслуговування систем диспетчеризації;

7. Технічне обслуговування внутрішньо-будинкових систем: гарячого та холодного водопостачання; водовідведення; теплопостачання; зливової каналізації;

8. Дератизація;

9. Дезінсекція;

10. Обслуговування димовентиляційних каналів;

11. Технічне обслуговування та поточний ремонт систем протипожежної автоматики та димовидалення, а також інших внутрішньобудинкових інженерних систем у разі їх наявності;

12. Поточний ремонт конструктивних елементів внутрішньобудинкових систем гарячого і холодного водопостачання, водовідведення, теплопостачання та зливової каналізації і технічних пристроїв будинків та елементів зовнішнього упорядження, розміщених на закріпленій в установленому порядку прибудинковій території;

13. Поливання дворів, клумб і газонів;

14. Прибирання і вивезення снігу, посипання частини прибудинкової території, призначеної для проходу та проїзду, протиожеледними сумішами;

15. Експлуатація номерних знаків на будинках;

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

17. Енергопостачання ліфтів;

18. Періодична повірка, обслуговування і ремонт квартирних засобів обліку води та теплової енергії, у тому числі, їх демонтаж, транспортування та монтаж після повірки.

Працівник ЖЕКУ – це людина, яка зайнята в сфері надавання Житлово-комунальних послуг. Існують варіації працівників ЖЕКу: роботящі та ліниві робітники

Каналізація має декілька значень основні з них які:

1) Сукупність інженерних споруд, устаткування та санітарних засобів, що забезпечує збирання та виведення за межі населених пунктів і промислових підприємств забруднених стічних вод, а також їхнє очищення та знешкодження перед використанням чи скиданням у водойму.

2) Прокладання каналів.

3) Розподіл електроенергії чи сигналів зв'язку між споживачами; К. кабельна — система керамічних або бетонних труб для прокладання кабелю в підземних лініях зв'язку.

Усі каналізаційні споруди будь-якої системи і схеми каналізації за своїм призначенням діляться на дві основні групи. До першої групи відносять устаткування і споруди, призначені для прийому і транспортування стічних вод:

- внутрішні каналізаційні пристрої

- зовнішню каналізаційну мережу;

- насосні станції і напірні каналізаційні водоводи.

До другої групи відносять:

- очисні станції, призначені для очищення, знешкодження, знезараження стічних вод і для обробки осаду;

- випуски очищених вод у водоймище [2].

Їдальня – заклад громадського харчування загальнодоступний або для обслуговування певного контингенту споживачів з різноманітним асортиментом страв, булочних, кондитерських виробів і закупних товарів. На відміну від ресторанів, кав'ярень тощо, їдальня відноситься до тих закладів громадського харчування, що призначенні лише для надання послуг з харчування. Їдальні не задовольняють гастрономічні забаганки, а годують клієнтів за прийнятну для них ціну. Відповідно для їдалень характерний набір звичних для даного суспільства страв. Для зручності співробітників та економії коштів чи зниження цін власні їдальні мають великі підприємства чи установи. Тому часто під їдальнею розуміють саме заклад громадського харчування при якійсь організації.

Їдальня-роздавальна – різновид їдальні з функціями відпускання виготовлених та скомплектованих іншими закладами ресторанного господарства обідів, сніданків, вечерь, а також продажу закупних товарів.

Їдальня при організації – їдальня при підприємстві, установі. Організується для забезпечення харчування працівників, може бути як частиною самого підприємства (як правило), так і сторонньою організацією (рідше). Як правило, такі їдальні економлять час співробітників, бо розташовані поруч з робочим місцем. Також нерідко такі заклади є частиною соціальної політики організації та працюють за зниженими цінами (оскільки не мають на меті отримання прибутку, не платять орендної плати тощо), або й взагалі безплатно. Втім трапляються й протилежні випадки.

На базі їдальні з повним технологічним циклом доцільно організовувати виробництво раціонів харчування для доставки їх на робочі місця продавців [3].

 

Існуючі реалізації

 

На сьогоднішній день існує досить багато реалізацій симуляцій поведінки працівників ЖЕКУ. Найвідоміші з них це:

Гра «ЖЕКА» розроблена сайтом http://www.igra-jeka.ru. Гра дозволяє освоювати сучасні технології енергозбереження і дізнаватись про способи зменшення платіжок за житлово-комунальні послуги. На рисунку 1.1 – зображено фрагмент з гри «ЖЕКА»

 

 

Рисунок 1.1 – Фрагмент гри «ЖЕК»

 

Vessel – комп'ютерна інді-гра в жанрі puzzle-platformer, розроблена маленької американської студією Strange Loop Games. На рисунку 1.2 – зображено фрагмент з гри «Vessel»

 

 

Рисунок 1.2 – Фрагмент гри «Vessel»

 

«Водопроводчик 911». Ви в ролі сантехніка потрапляєте в старий будинок, де і доведеться ремонтувати каналізацію і сантехніку, з'єднуючи труби правильно! У кожній ситуації кількість фітингів і кранів обмежено півсотнею штук – Вам необхідно вкластися в мінімально можливе їхнє число, що б завершити рівень. На рисунку 1.3 – зображено фрагмент з гри «Водопроводчик 911»

 

 

Рисунок 1.3 – Фрагмент гри «Водопроводчик 911»

 

Недоліком даних реалізацій є те, що в них не відображено реальної роботи персоналу ЖЕКУ [4]. Тому було прийнято рішення розробити власну реалізацію графічної моделі симуляції працівників ЖЕКУ.

 

Висновки

 

Проаналізувавши роботу працівників ЖЕКу було вирішено створити власний програмний продукт. Переглянувши існуючі реалізації схожих продуктів, було підтверджено, що вони мають певні недоліки і тому розробка власної програмної реалізації є актуальною задачею.

Створено список завдань, які мають бути реалізовані в програмному продукті. Шляхом аналізу найефективнішою мовою програмування для даного продукту було обрано мову С#.


 

Приклади використання

 

Приклади використання (use cases) – це важливий елемент проектування. Приклад використання розкриває можливі способи взаємодії між користувачами програми та самою програмою і дозволяє розробникам приділити більше уваги поліпшенню зручності програми.

Приклад 1: Створення нового мікрооб’єкта. Для цього користувач натискає кнопку «Insert». З’являється форма для додавання нового об’єкта. В ній містяться такі поля як: тип мікрооб’єкта, прізвище, ім’я зарплата та вік. Після заповнення полів і натиснення клавіші додати працівника, мікрооб’єкт додається на форму (рисунок 2.2).

 

Рисунок 2.2 – Додавання нового мікрооб’єкта

 

Приклад 2: Інформація про об’єкт. Наприклад на полі є багато мікрооб’єктів і потрібно дізнатись інформацію про одного з них. Для цього на мікрооб’єкті клацаємо лівою кнопкою миші. І з’являється вікно з короткою інформацією про об’єкт (рисунок 2.3).

 

 

Рисунок 2.3 – Вікно інформації про об’єкт

 

Приклад 3: Збереження та відкриття файлу. Для збереження або відкриття файлу відкривається діалогове вікно в якому користувач задає шлях. Формат файлу програмно вписується, тому його неможливо змінити. Збереження файлу – серіалізція даних (рисунок 2.4). Відкриття файлу – десеріалізація (рисунок 2.5).

 

 

Рисунок 2.4 – Серіалізація даних

 

 

Рисунок 2.5 – Десеріалізація даних


 

Діаграма класів

 

Для графічного відображення відношень між класами існують діаграми класів. За допомогою них можна дізнатись відносини між класами.

 

Діаграма наслідування

 

 

Рисунок 3.1 – Діаграма наслідування

Наслідування в даному програмному продукті трьохрівневе.

1-й рівень – Employee. Включає в себе базові характеристики всіх видів робітників: surname – прізвище, name – ім`я, price – ціна age – вік, та інші змінні, що використовуються для визначення позиції мікрооб’єкту, його стану (виділений/не виділений, рухається/не рухається) і т.д.

Містить основні віртуальні функції – void drawEmployee()– функція малювання працівника

Функція string StatusBar() – для аналізування розміру зарплати.

Функції даного класу:

void pnl_MouseClick(object sender, MouseEventArgs e) – подія на натиснення клавіші

void pnl_LocationChanged(object sender, EventArgs e) – подія при зміні положення об’єкта

void Move(KeyEventArgs e, Form fm) – функція руху об’єкта;

void Print(Employee emp) – функція виведення стану об’єкту.

2-й рівень – покращує звичайного працівника до відповідального працівника. Збільшує поріг розміру заробітньої плати;

3-й рівень – погіршує працівника до лінивого працівника, зменшує розмір допустимої заробітньої плати.

 

Діаграми агрегації

 

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

Діаграма агрегації відрізняється від діаграми композиції тим, що якщо вилучити з макрооб'єкта мікрооб'єкт, то це не вплине на роботу і існування макрооб'єкта. А в діаграмі композиції існування об’єкту повністю залежить від іншого об’єкту [6] (рисунок 3.2).

 

Рисунок 3.2 – Діаграма агрегації

 

Діаграми композиції

 

Композиція – різновид відношення агрегація, при якій складові частини цілого мають такий же час життя, що й саме ціле. Ці частини знищуються разом із знищенням цілого. Особливість цього взаємозв'язку полягає в тому, що частини не можуть бути відділенні від цілого, тобто із знищенням цілого знищуються і всі його складові частини.

Структура позиція є невід'ємною частиною класу і клас перестане існувати, якщо її вилучити. Таке відношення називається композицією.

 

 

Рисунок 3.3 – Діаграма композиції

 

 

Діаграми асоціації

 

Асоціація – взаємна залежність між об’єктами різних класів, кожен з яких є рівноправним членом залежності. Для асоціації може позначатися кількість екземплярів об’єктів кожного класу, які беруть участь у зв’язку. Можуть вказуватися мінімальна й максимальна кількість, наприклад, 0,1...* означає, що на відповідному кінці асоціації може не бути жодного екземпляра, бути один або багато [7]. Приклад асоціації наведений на рисунку 3.4.

 

 

Рисунок 3.4 – Діаграма асоціації

 

Багато робітників можуть відпочивати в буфетів. Тому потужність зв’язку багато до одного.

 

Діаграми кооперації

 

В діаграмах кооперації можна зустріти наступні позначення:

‒ о : C – об'єкт із власним ім’ям о, екземпляр класа С.

‒ :C– анонімний об'єкт, екземпляр класа С.

‒ о :(чи просто о) – об'єкт -сирота із власним ім’ям о.

‒ о /R : C – об'єкт із власним ім’ям о, екземпляр класа С, граючий роль R.

‒ /R : C – анонімний об'єкт, екземпляр класа С, граючий роль R.

‒ о /R – об'єкт -сирота із власним ім’ям о, граючий роль R.

‒ /R – анонімний об'єкт і одночасно об'єкт -сирота, граючий роль R [8].

 

 

Рисунок 3.5 – Діаграма кооперацій

 

Діаграми послідовності

 

 

Рисунок 3.6 – Діаграма послідовності

Рисунок 3.6 демонструє процес додавання нового мікрооб’єкту.

 

 

 

Рисунок 3.7 – Діаграма стану

 

Діаграма стану показує поведінку робітників, їх можливий рух, їх можливі стани.


 

Розробка формату файлу

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

Таблиця 6.1 – Формат файлу

 

Поле Опис
public int age; Вік робітника
public string surname; Прізвище
public string name; Ім’я
public double pay; Зарплата
public bool timerStatus = false; Статус робітника (рухається чи ні)
public string activePlayer = "EmployerAct.jpg"; Зображення активного працівника
public string activePlayer = "Employerdis.jpg"; Зображення неактивного працівника
public static double border = 1600; Поріг заробітньої плати
public bool isSelected = false; Робітник вибраний
public Point finishPoint = new Point(); Точка руху
public int coordEmpX, coordEmpY; Поточні координати об’єкта
public bool stop = false; Змінна для зупинки автоматичного руху об’єкту

 

6.2 Механізми введення/виведення C#

 

Серіалізація (в програмуванні) – процес перетворення будь-якої структури даних в послідовність бітів. Зворотною до операції серіалізації є операція десеріалізації – відновлення початкового стану структури даних з бітової послідовності.

Двійкова і XML-серіалізація. Можна використовувати двійкову серіалізацію або XML-серіалізацію. Прі двійковій серіалізацію серіалізуются всі елементи, навіть ті, які призначені тільки для читання, за рахунок чого підвищується продуктивність. XML-серілазація забезпечує більш легкий для читання код, а також більшу гнучкість спільного доступу та використання об'єкта в цілях взаємодії.

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

XML-серіалізація. При XML-серіалізації відкриті поля і властивості об'єкта або параметри і поверненні значення методів серіалізуются в XML-потік відповідно до особливого документу, складеного мовами XSD (мова визначення схеми XML). XML-серіалізація призводить до утворення строго типізованих класів з відкритими властивостями і полями, які перетворюються у формат XML. Простір імен System.Xml.Serialization містить класи, необхідні для серіалізації і десеріалізації XML.

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

SOAP-серіалізація. XML-серіалізація може також використовуватися для серіалізації об'єктів в потоки XML, які відповідають специфікації SOAP. SOAP - це протокол, заснований на XML і створений спеціально для передачі викликів процедур з використанням XML .Як і в звичайній XML-серіалізації, атрибути можна використовувати для управління формою SOAP-повідомлень в літеральному стилі, що генеруються веб-службою XML [9].

Для серіалізації було обрано двійкову серіалізацію. Для такого щоб виконати серіалізацію, необхідно виконати наступні дії:

1. Відмити клас як серіалізуємий за допомогою атрибута [Serializable]. Щоб запобігти серіалізацію членів ставимо атрибут [NonSerialized];

2. Створити новий екземпляр класу BinaryFormatter значеннями зі замовчуванням;

3. Задати файл для збереження;

4. Використовуючи файловий потік записати у файл серіалізований об’єкт

Десеріалізація – це зворотній процес до серіалізації.

Процес десеріалізації у C#

1. Зчитуємо інформацію з файлу в потік;

2. За допомогою екземпляра класу BinaryFormatterвідновлюємо об’єкти, їх змінні та їх поведінку.

Важливо. Зчитувати з файлу необхідно в такій же послідовності як і при запису у файл. При серіалізації, поля які мають атрибут [NonSerialized] не серіалізуются, їх потрібно окремо ініціалізувати.


 

КЕРІВНИЦТВО КОРИСТУВАЧА

Користувацький інтерфейс

 

Робота програми починається з її запуску. На екрані будуть присутні лише макрооб’єкти (їдальня і каналізація, болото). На рисунку 7.1. – зображено форму на початку роботи.

 

 

Рисунок 7.1 – Початок роботи програми

 

Додавання працівників відбувається при натиснення клавіші «Insert» (рисунок 7.2)

 

 

Рисунок 7.2 – Додавання нового працівника.

 

Для того, щоб можна було рухати працівників їх потрібно виділити. Для цього клікаємо правою кнопкою мишки по об’єкту. Змінюється колір. З’являється можливість збільшувати та зменшувати заробітну плату робітнику (клавіша + -), розміщувати мікрооб’єкти на макрооб’єкти (клавіша G). Визначати чи належать всі мікрооб’єкти до батьківського класу Employee (клавіша C). Видаляти виділені мікрооб’єкти (клавіша Delete), знімати виділення мікрооб’єктів (клавіша Esc). Приводити до одного типу (клавіша E). Рисунок 7.3 результат додавання та руху мікрооб’єктів та макрооб’єкта.

 

 

Рисунок 7.3 – Результат додавання та руху мікрооб’єктів та макрооб’єктів


 

ВИСНОВКИ

 

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

Ціль було досягнуто в повному обсязі. Створений програмний продукт володіє рисою, яка відсутня у його аналогів – симуляція працівників ЖЕКУ.

В ході виконання проекту було отримано наступні навички: робота із візуальним середовищем програмування Microsoft Visual Studio, змінними різних типів, класами та об’єктами, файлами, діалоговими вікнами, меню.

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


 

ПЕРЕЛІК ПОСИЛАНЬ

 

1. Е. Троєлсен. Язык программирования C# 5.0 и платформа .NET 4.5. 2013 р – Москва–Санкт-Петербург–Киев, 1300 ст.

2. В. Мєдвєдєв. Особенности ООП на C++/CLI, C# и Java. – Москва: РИЦ «Школа», 2010 р, 565 ст.

3. Г. Шилдт. С# 4.0 Полное руководствою. – Москва–Санкт-Петербург –Киев: Вильямс, 2012 р, 600 ст.

4. Д. Албахарі, Б. Албахарі. C# 5.0. Справочник. Полное описание языка. – Москва: Вильямс, 2014 р.

5. Й. Гріффитс. Программирование на C# 5 Москва – Київ: Эксмо, 2014р, 459 ст.

6. Н. Мартинов. C# для начинающих. – Москва: Кудиц-Пресс, 2007 р., 659 ст.

7. В. Зіборов. Visual C# 2010 на примерах. – Санкт-Петербург: БХВ-Петербург, 2011 р, 630 ст.

8. М. Фленов. Библия C#, 2-е издание. – Санкт-Петербург: БХВ- Петербург, 2011 р, 756 ст.

9. Н. Культін. C# в задачах и примерах. – Санкт-Петербург: БХВ- Петербург, 2007 р, 860 ст.


 

ДОДАТКИ


 

Додаток А

Лістинг модуля Cupboard.cs

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace lb3

{

[Serializable]

public class Cupboard

{

[NonSerialized]

public Panel pnl = new Panel();

Random rand = new Random();

 

 

public int coordX=70, coordY=470;

public Cupboard()

{

Draw();

}

 

public void Draw()

{

pnl.Size = new Size(400, 150);

pnl.Location = new Point(coordX, coordY);

pnl.BackgroundImage = new Bitmap("bufet.jpg");

pnl.BorderStyle = BorderStyle.FixedSingle;

}

 

public bool GetLocation(Panel pnl)

{

Point A = pnl.Location;

Point B = new Point(pnl.Location.X + pnl.Width, pnl.Location.Y);

Point C = new Point(pnl.Location.X, pnl.Location.Y + pnl.Height);

Point D = new Point(pnl.Location.X + pnl.Width, pnl.Location.Y + pnl.Height);

 

if (A.X > this.pnl.Location.X && A.X < (this.pnl.Location.X + this.pnl.Width) && A.Y > this.pnl.Location.Y && A.Y < (this.pnl.Location.Y + pnl.Height))

{

return true;

}

 

if (B.X > this.pnl.Location.X && B.X < (this.pnl.Location.X + this.pnl.Width) && B.Y > this.pnl.Location.Y && B.Y < (this.pnl.Location.Y + pnl.Height))

{

return true;

}

 

if (C.X > this.pnl.Location.X && C.X < (this.pnl.Location.X + this.pnl.Width) && C.Y > this.pnl.Location.Y && C.Y < (this.pnl.Location.Y + this.pnl.Height+pnl.Height))

{

return true;

}

 

if (D.X > this.pnl.Location.X && D.X < (this.pnl.Location.X + this.pnl.Width) && D.Y > this.pnl.Location.Y && D.Y < (this.pnl.Location.Y + this.pnl.Height+pnl.Height))

{

return true;

}

return false;

}

 

void MoveEmployyer(List<Employee> emps, Form fm, KeyEventArgs e)

{

for (int i = 0; i < emps.Count; i++)

{

if (GetLocation(emps[i].pnl))

{

emps[i].MoveWithMacro(e, fm);

emps[i].isSelected = true;

emps[i].pnl.BackgroundImage = new Bitmap(emps[i].activePlayer);

}

}

}

 







Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.228.10.64 (0.075 с.)