Створення Windows 8-style ui застосунку

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    2,14 Мб
  • Опубликовано:
    2015-03-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Створення Windows 8-style ui застосунку

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

Львівський національний університет імені Івана Франка

Факультет електроніки

Кафедра радіофізики та комп’ютерних технологій









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

з курсу “ОБ’ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ”

на тему: “СТВОРЕННЯ WINDOWS 8-STYLE UI ЗАСТОСУНКУ”


Виконав ст. 2 курсу

гр. ФЕІ-22

Зохнюк І.В.

Науковий керівник

Батюк А.Я.


Львів 2013

Зміст

Вступ

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

.1 Основи

.2 Мова C# і середовище .NET

.3 ООП і C#

. Принципи розробки додатків для Windows 8

.1 Windows 8. WinRT

.2 Windows 8-Style UI

.3 Розробка додатків у Visual Studio

. Реалізація програми

.1 Створення інтерфейсу користувача

.2 Реалізація функціональних можливостей

.3 Тестовий приклад

Висновки

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

Додаток: Текст програми

Вступ


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

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

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

Об’єктно - орієнтоване програмування широко застосовується при написанні застосунків для операційних систем сімейства Microsoft Windows. Винятком не стала і нова ОС Windows 8 і середовище розробки Visual Studio 2012. Хоч створення інтерфейсу користувача тут покладено на іншу технологію, логікою застосунку і надалі управляє код, написаний на об’єктно - орієнтованій мові програмування.

Для того, щоб показати використання ООП в додатках Windows 8-Style UI, я розробив програму-переглядач графічних файлів.

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

 

1.1 Основи


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

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

На думку Алана Кея, одного з засновників концепції ООП, об'єктно-орієнтований підхід полягає в такому наборі основних принципів:

·        Усе є об'єктами.

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

·        Кожен об'єкт має незалежну пам'ять, яка складається з інших об'єктів.

·        Кожен об'єкт є екземпляром класу, який виражає загальні властивості об'єктів.

·        У класі задається поведінка (функціональність) об'єкта. Таким чином усі об'єкти, які є екземплярами одного класу, можуть виконувати одні й ті ж самі дії.

·        Класи організовані у єдину деревоподібну структуру з загальним корінням, яка називається ієрархією успадкування. Пам'ять та поведінка, зв'язані з екземплярами деякого класу, автоматично доступні будь-якому класу, розташованому нижче в ієрархічному дереві.

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

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

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

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

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

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

Інкапсуляція полягає в приховуванні реалізації від користувача об’єкту. Саме інкапсуляція є механізмом, який об’єднує разом код та дані, якими він маніпулює, водночас виключаючи вторгнення ззовні та неправильне використання даних. В об’єктно-орієнтованих мовах дані й код можуть бути об’єднані за принципом чорного ящика: ми знаємо, що робить об’єкт/клас, але не знаємо, як він це робить. Така властивість інкапсуляції значно спрощує розробку великих програмних комплексів. Її суть полягає в приховуванні даних. В мовах програмування з такою метою використовуються, як правило, 3 ключові слова - специфікатори доступу: private, protected та public. Кожне має своє призначення для механізму інкапсуляції:

    private - член класу є закритим і ззовні опису класу він недоступний;

-        protected - член класу відкритий тільки для нащадків цього класу;

         public - член класу відкритий ззовні, до нього можна доступатися із клієнтського коду.

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

Поліморфізм - принцип, за яким через один інтерфейс можна доступатися до загального класу дій. Сенс цього поняття можна висловити так: «один інтерфейс - багато методів». Поліморфізм спрощує програму шляхом використання одного інтерфейсу для опису загального класу дій. Вибір конкретного методу в даному випадку - справа компілятора. Поліморфізм досягається двома шляхами - успадкуванням і подальшим перевизначенням методів базового класу або перевантаженням методів в межах одного класу. Зокрема поліморфний інтерфейс класу описується за допомогою віртуальних або абстрактних методів. Абстрактний метод надає лише сигнатуру методу, по суті - інтерфейс. Віртуальний метод визначає реалізацію методу за умовчуванням. Ця реалізація може бути змінена в класі-нащадку. Перевантаження методів в одному класі реалізовується шляхом опису декількох методів з однаковими іменами, але з різними параметрами. Відповідний метод вибирається в залежності від того, які параметри йому передаються.

Успадкування - це спосіб створення нового класу на основі опису іншого. Новий клас успадковує елементи старого, при цьому змінюючи і доповнюючи їх. В такому випадку клас, від якого здійснено успадкування, називається базовим або батьківським, а ті, які успадкували їхні члени, називаються похідними або дочірніми. Клас-нащадок може мати один або декілька базових класів. Один базовий клас може мати будь-яку кількість похідних. Успадкування є одним із способів повторного використання коду. Базовий клас об’єднує в собі всі члени, спільні для похідних класів. Батьківський клас є підмножиною для дочірніх. В цьому випадку між ними утворюються відношення типу “is-a”. Є такі правила успадкування:

  конструктори та деструктори не успадковуються;

-        поля, методи та властивості успадковуються.

Існує також інший спосіб повторного використання коду, при якому один або декілька об’єктів є членами класу. Таке відношення називається “has-a” - агрегація. Така форма не є відношенням типу «батьківський - дочірній». Агрегація дозволяє оголосити в класі член іншого класу і використовувати його функціональність при необхідності.

 

1.2 Мова C# і середовище .NET


C# - об'єктно-орієнтована мова програмування з безпечною системою типізації. Є основною мовою для розробки програм на платформі .NET корпорації Microsoft. C# є дуже близьким родичем мови програмування Java. Мова Java була створена компанією Sun Microsystems у 1995 році. Java набула чималої популярності, і була ліцензована також і компанією Microsoft. Одним із недоліків цієї мови була слабка зв'язаність із найбіль поширеною на той час платформою Windows. Sun Microsystems подала в суд на Microsoft, звинувачуючи її в тому, що вона при створенні свого клону мови Java робить її сумісною лише з платформою Windows, чим заперечує концепцію машинно-незалежного середовища виконання і порушує ліцензійну угоду між компаніями. Суд визнав правоту Sun Microsystems, і зобов'язав Microsoft відмовитись від позаліцензійного використання Java. Тоді в Microsoft вирішили створити свій власний аналог Java.

Для цієї мети Microsoft залучили одного із провідних спеціалістів в сфері програмування, розробника однієї з найкращих на той час мов програмування Pascal - Андерса Гейсбелрга. Разом із розробкою нової мови велася також і розробка фреймворку .NET, частиною якого мала бути ця мова. Спочатку вона отримала кодову назву COOL. Вона успадкувала всі кращі якості відомих на той час об'єктно-орієнтованих мов. Синтаксис був запозиченй із мови C, тому C# відноситься до сімейства C-подібних мов. Об’єктна модель побудована на основі такої ж у C++. Від Java C# успадкував концепції віртуальної машини, байт-коду, більшої безпеки вихідного коду програм, врахувала досвід використання програм на Java. Від Delphi було взято тип string, а пізніше ключове слово var із дещо іншим сенсом.# забезпечила можливість легшої взаємодії, порівняно з мовами-попередниками, з кодом програм, написаних на інших мовах, що є важливим при створенні великих проектів. Якщо програми, написані на різних мовах програмування, виконуються на платформі .NET, .NET відповідає за щодо сумісність програм. Станом на сьогодні C# визначено флагманською мовою корпорації Microsoft, тому що вона найповніше використовує нові можливості .NET. Інші мови визнані такими, що мають спадкові прогалини щодо використання .NET. Незважаючи на те, що мова C# є самодостатньою, вона особливо пов’язана із середовищем .NET Framework. Вона розроблялася для написання коду, який повинен виконуватися в цьому середовищі. А в C# використовуються бібліотеки .NET.

NET Framework є середовищем для підтримки розробки і виконання програм. В .NET визначено 2 важливих елементи - CLR та бібліотека класів. CLR(загальномовне середовище виконання) керує виконанням коду .NET. Бібліотека класів .NET забезпечує програмісту доступ до середовища виконання. Фреймворк поєднує в собі середовище виконання програм(CLR) та середовище їх розробки(Microsoft Visual Studio).

Результатом компіляції програми на C# є не виконуваний код, а так звана збірка, що містить код у проміжній мові і метадані. Мова має назву Microsoft Intermediate Language(MSIL). У цьому коді визначено набір переносимих інструкцій, що не залежать від конкретного процесора, щось на кшталт переносимого асемблерного коду.

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

Рис. 1 Схема виконання програми в .NET.

Призначення CLR - перетворювати проміжний код у виконуваний по мірі виконання програми. Дана функція забезпечується JIT-компілятором. При виконанні програми CLR активізує JIT-компілятор, який перетворює MSIL-код у набір команд конкретного процесора за потребою для кожної частини програми. Ці частини програми компілюються лише раз. У цьому випадку виконуваного файлу на диску не існує, він знаходиться в оперативній пам’яті.

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

Збірки .NET можуть розроблятися і виконуватися в середовищах, відмінних від Microsoft Windows. Компанія Microsoft розробила офіційну документацію синтаксису і семантики мов C# та MSIL, формату збірок .NET, ключових просторів імен фреймворку і технічних деталей функціонування гіпотетичного середовища виконання(Virtual Execution System). Ця документація дозволяє третім сторонам розробляти дистрибутиви платформи .NET і компілятори C# зокрема.

Опис класу містить ключове слово class. В загальному опис виглядає наступним чином:

[модифікатори] class імя_класу

{

тіло класу

}

Як можна побачити, обов’язковим є тільки слово class та тіло класу.

Константа являє собою член класу, що містить незмінюване значення, яке обчислюється компілятором. Значення можуть вираховуватись на основі значень інших констант. Оскільки значення констант визначаються ще в процесі компіляції, то вони автоматично стають статичними членами класу. Їх застосування полягає в тому, щоб замість значення константи використовувати її ім’я. Це полегшує читання програми і внесення коректив, оскільки простіше змінити значення в одному місці програми. Приклад оголошення:int r = 1; const char s = '%';

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

float i = 5.0F; static double D = 0.443;byte b = 67; D = i + b;

Методи виконують перетворення для даного класу чи об’єкту. Метод являє собою закінчений фрагмент коду, до якого можна звернутися за іменем. Синтаксис опису методу:

[модифікатори] тип імя_методу ([параметри])

{

тіло методу

}

Перший рядок оголошення - заголовок. Він повинен обов’язково мати тип значення, який повертає метод, ім’я, за яким будуть звертатися до методу. Тіло методу часто є блоком операторів. Метод може не повертати значень, може повертати значення значущого типу або об’єкт. Параметри, оголошені в заголовку, називаються формальними. Значення, що передаються в метод при його виклику, називаються аргументами. Є два способи передачі аргументів - за значенням і за посиланням. При першому способі значення аргументу копіюється в формальний параметр методу. При другому параметру методу передається посилання на аргумент. Для простих типів на зразок double чи int в C# за замовчуванням використовується перший спосіб. Для об'єктів неявно використовується другий спосіб. Недоліком методів є те, що вони можуть повертати одне значеня. Але є ситуації, коли потрібно повернути декілька значень, або пердати простий тип за посиланням. Для явної передачі параметра за посиланням при його оголошенні перед типом використовується модифікатор ref. При виклику такого методу перед відповідним аргументом також повинен стояти цей модифікатор. Для того, щоб метод повернув декілька значень, їх треба занести в список формальних параметрів та знову ж таки перед їх типом використати модифікатор out. Виклик відбувається аналогічно до попереднього варіанту. При передачі такий параметр може бути неініціалізованим. Також методу можна передавати змінне число параметрів, тобто масив параметрів за допомогою модифікатора params. Можна повертати з методу масив, тоді в заголовку після типу ставляться квадратні дужки: []. Метод може сам себе викликати, реалізовуючи механізм рекурсії.  Виклик методу відбувається за наступною схемою:

Рис. 2 Виклик методу

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

Властивості слугують для організації доступу до полів класу. Як правило, властивості зв’язані із закритими полями класу та визначають методи отримання і встановлення значення у нього. Для доступу до властивості використовуються спеціальні процедури доступу - аксесори. Аксесор set містить код, який виконується при встановленні значення властивості. Аксесор get містить код, що виконується при читанні значення властивості. Властивість може мати тільки процедуру для читання (get), тоді вона доступна тільки для читання. Якщо є лише процедура запису (set), тоді властивість лише для запису.

В аксесор set неявно передається параметр value, який містить значення, яке повинно присвоюватись полю. Оголошення властивості таке:

[модифікатори] тип ім’я_властивості

{

{ код для читання з поля }

{ код для запису в поле }

}

Подія - елемент класу, що дозволяє йому надсилати повідомлення про зміну свого стану іншим об’єктам. Ці об’єкти повинні мати методи обробки події. Коли виникає подія, викликаються всі її обробники. Синтаксис події:

[модифікатори] event тип ім’я_події

Перевантажені оператори використовуються для визначення операцій, що можуть проводитись над об'єктами даного класу. Для перевантаження операцій використовується ключове слово operator, що визначає операторний метод, який визначає дію оператора відносно даного класу. Оператори є унарні та бінарні. Оголошення перевантаження оператора виглядає наступним чином: public static тип operator конкретний_оп. (тип_парам. операнд 1[, тип_парам. операнд 2])

{

операції

}

Індексатор дозволяє звертатися до об’єкту класу як до елементу масиву. Оголошення та ідеологоія роботи така, як у властивості, проте індексатор не має імені. Замість нього використовується ключове слово this. Якщо в класі є приватне поле - масив, то за допомогою індексатора можна звернутися до елементу цього масиву, використовуючи ім’я об’єкту та номер елементу масиву в квадратних дужках. Синтаксис опису індексатора:  модифікатори тип this [список параметрів]

{

{ код для читання з поля }

{ код для запису в поле }

}

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

Конструктор ініціалізує об’єкт при його створенні. Він викликається автоматично при створенні об’єкту за допомогою операції new. Ім’я конструктора співпадає з ім’ям класу. З точки зору синтаксису він оголошується як метод, але не повертає значення, навіть void. Клас може мати декілька конструкторів з різними параметрами. Якщо не вказано явно ні одного конструктора, то компілятор сам будує конструктор за замовчуванням: без параметрів, в якому полям значущих типів присвоюється нуль, а посилальних - значення null. Якщо явно вказати хоч один конструктор, то конструктор за замовчуванням не можна використовувати, якщо він явно не описаний. Крім конструкторів класу існують статичні конструктори. Вони призначені для ініціалізації статичних полів класу. Він не має параметрів, його неможна викликати явним чином. Сама програма викликає його до створення першого об’єкту цього класу чи до виклику статичного методу. Синтаксис оголошення конструктора:  [модифікатори] імя_класу (список параметрів)

{

тіло конструктора

}

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

[extern] ~імя_класу()

тіло деструктора

Якщо в оголошенні використано атрибут extern, то тіло деструктора являє собою лише “;”. Важливими елементами мови C# є модифікатори. Вони використовуються для досягнення таких принципів ООП, як інкапсуляція та успадкування. Модифікатори можуть застосовуватись як до членів класу, так і до класу загалом, а також до вкладених типів. Зі всіх модифікаторів private, protected та protected internal є одними з елементів мови, що відповідають за інкапсуляцію. Нижче наведено всі модифікатори доступу мови C# та деякі модифікатори для семантичних одиниць мови.

Табл. 1 Модифікатори, що застосовуються до класів та їх призначення.

public

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

internal

клас видимий тільки в межах поточної збірки (використовується за замовчуванням)

abstract

не можна створювати об’єктів такого класу, він слугує базовим для інших класів

sealed

від класу не можна створювати похідні класи

Табл. 2 Модифікатори, що застосовуються до вкладених типів і їх призначення.

private

закритий вкладений тип, доступний лише в межах даного класу

protected

захищений тип, доступний лише в даному класі та класах-нащадках

protected internal

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

Табл. 3 Модифікатори, що застосовуються до членів класу та їх призначення.

public

відкритий член, видимий за межами класу

private

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

protected

захищений член, доступний лише в даному класі і класах-нащадках

internal

член видимий лише в межах поточної збірки

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

abstract

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

new

перекриває член базового класу з таки самим ім’ям


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

Для забезпечення поліморфізму використовуються перевантаження та перевизначення методів. Перевантаження відбувається для кількох методів з одним ім’ям в межах одного класу. Ці методи повинні розрізнятися списком параметрів. Тип значення, що повертає метод, не грає ролі для перевантаження методу. В класі не дозволяється при перевантаженні мати два методи, в яких заголовок відмінний лише типом значення, що повертається. Завдяки перевизначенню підтримується т. зв. динамічний поліморфізм. Перевизначення дозволяє у батьківському класі оголосити методи, загальні для нащадків, а в них власне перевизначити ті чи інші методи. З цією метою існують віртуальні та абстрактні методи. Відмінність між ними в тому, що в других немає реалізації. Абстрактні методи існують лише в абстрактних класах. Абстрактний клас відіграє роль базового, в якому описується лише загальна форма для похідних, де не усі методи мають реалізацію. Від такого класу не можна утворювати об’єктів. Віртуальні методи містять в своєму оголошенні ключове слово virtual, абстрактні - abstract. Для того, щоб перевизначити такі методи, перед їх заголовком вживається ключове слово override. Підтримка успадкування в C# полягає в тому, що в оголошення одного класу вводиться інший клас. Для цього при оголошенні похідного класу вказується батьківський. Синтаксис такого оголошення:  [модифікатори] class імя_класу [: предки]

{

тіло класу

}

Предками класу можуть бути: один батьківський клас або декілька інтерфейсів. Інтерфейс являє собою аналог абстрактного класу, в якому задається набір абстрактних методів, властивостей та індексаторів, які визначають поведінку похідних класів. Оголошується інтерфейс так: [модифікатори] interface імя_інтерфейсу [: предки]

{

тіло інтерфейсу

}

Для посилання на батьківський клас використовується ключове слово base: base.член_батьківського_класу.

2. Принципи розробки додатків для Windows 8

 

2.1 Windows 8. WinRT

 

Windows 8 - операційна система компанії Microsoft для персональних комп'ютерів, ноутбуків, планшетів. Windows 8 ввела значні зміни у платформу ОС та користувацький інтерфейс для покращення роботи з планшетами. Зокрема, ці зміни включають оптимізовану під сенсорні екрани оболонку Microsoft "Metro", стартовий екран (який показує програми і динамічно оновлює вміст решітки плиток), нову платформу для розробки застосунків з орієнтацією на сенсорний ввід, інтеграцію онлайн служб (включаючи можливість синхронізувати застосунки і налаштування між пристроями), і онлайн-магазин Windows Store для звантаження і купівлі нових програм. Windows 8 також додав підтримку таких нових технологій як USB 3.0, Advanced Format твердих дисків, NFC, хмарні обчислення. Були додані нові додаткові можливості безпеки, такі як вбудовані антивіруси, інтеграція з фільтрацією Microsoft SmartScreen, підтримка безпечного завантаження із системою UEFI для уникнення враження шкідливими програмами під час завантаження ОС.8 на відміну від попередніх ОС сімейства Microsoft Windows використовує новий інтерфейс під назвою Metro, знайомий з Windows Phone. Цей інтерфейс з'являється першим після запуску системи; він схожий за функціональністю зі стільницею - стартовий екран має плитки застосунків, після натискання на які запускається застосунок, відкривається сайт або тека. Прокрутка в інтерфейсі Metro йде горизонтально. Залежно від роздільності екрану, система автоматично визначає кількість рядків для плиток - на стандартних планшетних комп'ютерах три ряди плиток. Колір стартового екрана змінюється в новій панелі управління, також змінюється і орнамент на задньому тлі. У системі присутній і «класичний» робочий стіл, у вигляді окремого застосунку. Прийоми роботи з робочим столом залишилися тими ж, що й у Windows 7. Замість меню "Пуск" в інтерфейсі використовується «активний кут», натискання на який відкриває стартовий екран.

Основні нововведення:

  Можливість увійти в Windows за допомогою Live ID. Це дозволить увійти в профіль користувача і завантажити налаштування через інтернет, а також додає інтеграцію зі SkyDrive.

-        Магазин застосунків Windows Store: єдиний спосіб купівлі та завантаження Windows 8-Style UI -застосунків, а також застосунків для робочого столу в Windows RT.

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

         Internet Explorer 10 в Windows 8 включений в настільному і сенсорному варіантах.

         Провідник включає в себе покращення в способах вирішення конфліктів при перенесенні або копіюванні файлів.

         Для відновлення системи написано дві нові функції: Оновлення (Refresh) і Скидання (Reset).

         Новий, повністю змінений, диспетчер задач. Додано нові графіки продуктивності, оптимізоване управління виконуються застосунками, фоновими процесорами і службами на єдиній вкладці «Продуктивність». Також в диспетчер завдань було перенесено управління автозавантаженням з «Конфігурації системи».

         Була вбудована функція «Сімейна безпека», управління сімейною безпекою здійснюється в панелі управління.

         Додана підтримка USB 3.0, Bluetooth 4.0, DirectX 11.1 і .NET Framework 4.5.

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

         Нова панель управління в стилі Windows 8-Style UI, яка дозволяє швидко змінити деякі налаштування системи.

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

         Міняти розкладку клавіатури можна також за допомогою сполучень клавіш Windows + Space або ⇧ Shift + Alt.

Windows Runtime , або WinRT - це нова модель програмування від Microsoft, що є основою для розробки додатків в стилі Метро в операційній системі Windows 8. WinRT підтримує розробку на C + + (з використанням розширення мови Component Extensions , C + + / CX ) , керованих мовах C # і VB.NET , а також JavaScript.

WinRT по суті є API на основі технології COM. Через свою COM-подібну основу, WinRT дозволяє відносно легко звертатися до нього з різних мов програмування, як це відбувається в COM, але це, по суті, некерований, рідний API. Визначення API зберігаються в « .Winmd » файлах , закодованих у форматі метаданих ECMA 335 , який використовується в . Net з деякими змінами . Цей загальний формат метаданих дозволяє значно зменшити накладні витрати при виклику WinRT з . NET додатків в порівнянні з P / Invoke , маючи при цьому набагато простіший синтаксис. Нова мова C + + / CX (Component Extensions) , яка запозичує деякі елементи синтаксису з C + + / CLI , дозволяє створювати і використовувати WinRT-компоненти з меншою кількістю видимої для програміста обв'язки порівняно з класичним програмуванням COM в C + +, і в той же час накладає менше обмежень у порівнянні з C + + / CLI на змішування типів . Звичайний С + + (з COM-специфічними вимогами) також може бути використаний для програмування з компонентами WinRT. Це можливо за допомогою нової бібліотеки шаблонів Windows Runtime C + + Template Library (WRL), що аналогічна за своєю метою тому, що бібліотека ATL забезпечує для COM.

У CLR передбачений механізм, що дозволяє керованому коду викликати WinRT API, а Windows Runtime може робити зворотні виклики керованого коду. На найнижчому рівні Windows Runtime спирається на концепції COM, тому не дивно, що підтримка CLR виклику WinRT API побудована на існуючій інфраструктурі COM interop. Одна важлива відмінність між WinRT interop і COM interop в тому, наскільки менше конфігурації потрібно для його використання у Windows Runtime. У файлах WinMD містяться метадані, що описують всі надані ними API з чітко визначеним зіставленням з системою типів . NET, тому використовувати в керованому коді будь-які атрибути MarshalAs немає потреби. Аналогічно, оскільки Windows 8 містить файли WinMD для своїх WinRT API, вам не потрібно постачати свій додаток основною interop-збіркою. Замість неї CLR використовує готові файли WinMD і визначає про них все, що їй потрібно знати про те, як викликати WinRT API . Ці файли WinMD надають визначення керованих типів, що використовуються в період виконання для доступу до Windows Runtime з керованого коду. Хоча API, які CLR зчитує з файлу WinMD, містять визначення методу у форматі, що легко застосовується з керованого коду, WinRT API використовує іншу сигнатуру API, іноді звану сигнатурою двійкового інтерфейсу додатку (ABI).

Коли WinRT-об'єкт входить в CLR, він повинен викликатися так, ніби він є . NET- об'єктом. Для цього CLR обгортає кожен WinRT-об'єкт в оболонку, що викликається виконуючим середовищем (RCW). RCW - це те, з чим взаємодіє керований код, і інтерфейс між кодом і використовуваним ним WinRT-об'єктом. Відповідно, коли керований об'єкт використовується з Windows Runtime, він повинен викликається так, ніби є WinRT-об'єктом. У цьому випадку при передачі в Windows Runtime керований об'єкт обертається в оболонку, що викликається COM (CCW ). Так як Windows Runtime використовує ту ж саму інфраструктуру, що і COM, вона може взаємодіяти з CCW для доступу до функціональності керованого об'єкта.

 

2.2 Windows 8-Style UI


Термін Windows 8-Style App вживається для позначення створених у стилі Metro додатків для Windows 8. Microsoft тимчасово називає мову дизайну «Modern UI», а стиль - Windows 8-Style UI. Metro - внутрішня кодова назва дизайнерської мови компанії Microsoft, що орієнтована на друкарське оформлення інтерфейсу користувача. Спочатку ця мова була розроблена Microsoft для використання у Windows Phone. Пізніше на основі Metro був побудований інтерфейс веб-сайту Microsoft, Xbox 360 і Windows 8.

Ранні елементи стилю Metro можна побачити у Windows Media Center для Windows XP Media Center Edition, що використовує текст в якості основної форми навігації. Цей інтерфейс був також перенесений в більш пізні версії Media Center. У 2006 році інтерфейс Zune був оновлений з використанням цих принципів. Дизайнери Microsoft вирішили перепроектувати інтерфейс з великим упором на чисту типографіку. Ці принципи і новий користувацький інтерфейс Zune були використані у Windows Phone, багато рішень якої були використані в Windows 8. Плоскі кольорові «живі плитки » були введені в Metro на ранніх стадіях розробки Windows Phone. Microsoft почала інтеграцію цих елементів в інші свої продукти, з прямим впливом, який можна побачити в більш нових версіях Windows Live Messenger, Live Mesh і Windows 8.

Стиль Metro заснований на принципах дизайну швейцарського стилю. Основними принципами Metro є акцент на гарній типографіці і великий текст, що відразу кидається в очі. Microsoft називає Metro «гладким, швидким, сучасним», а також «оновленням» у порівнянні із заснованими на значках інтерфейсами Windows, Android та iOS. Microsoft розробила Metro спеціально для зміцнення групи загальних завдань для прискорення використання.

Це досягається за рахунок виключення зайвої графіки і замість цього опори на фактичний зміст, для функціонування в якості основного інтерфейсу користувача. Велику роль відіграє анімація. Microsoft рекомендує плавні переходи і взаємодія з користувачем на основі реальних рухів (таких як натискання або переміщення).

Це створює у користувача враження «живого» і чуйного інтерфейсу. В якості основного шрифту використовуються шрифти із сімейства шрифтів Segoe, ліцензованого Microsoft. Для Windows 8 була створена спеціальна версія з тією ж назвою Segoe UI.

2.3 Розробка додатків у Visual Studio


Основним засобом для створення додатків Windows 8-Style UI є Microsoft Visual Studio 2012. Це середовище розробки містить в собі Windows 8 SDK. Для розробки таких додатків 32- чи 64-розрядна версія Windows. Розробка застосунків для Windows 8 в молодших версіях для ARM-процесорів не підтримується.

Перед початком створення першого застосунку Windows 8-Style UI потрібно отримати ліцензію розробника. Потім її потрібно щомісяця оновлювати. Оскільки для додатків Windows 8-Style UI існує онлайн магазин, то Microsoft також називає їх застосунками Windows Store. Розглянемо принцип створення програми.

Після отримання ліцензії розробника відкриваємо вікно створення проекту, де обираємо Visual C#→Магазин Windows. Бачимо декілька шаблонів. Обираємо, наприклад, пустий застосунок, знизу вводимо ім’я проекту і клікаємо OK.

Рис. 3 Діалогове вікно для створення проекту.

З’являється заготовка проекту:

Рис. 4 Заготовка пустого проекту

Рис. 5 Вкладка MainPage.xaml

Наведена на рис. 5 вкладка показує, що для розробки застосунків Windows 8-Style UI використовується не лише мова програмування, а й мова розмітки. Нею є розширена мова розмітки застосунків - XAML. Вона використовується не лише для розмітки сторінок застосунків, але і для задання ресурсів застосунку і тому подібних речей. Логіку даного застосунку можна реалізувати у файлі MainPage.xaml.cs:

Рис. 6 Файл MainPage.xaml.cs

Після написання коду запустити застосунок на виконання можна трьома способами: на локальному чи віддаленому комп’ютері або в симуляторі.

Рис. 7 Вибір варіанта запуску програми.

3. Реалізація програми

 

3.1 Створення інтерфейсу користувача


Оскільки даний застосунок є переглядачем графічних файлів, то варто було б спочатку створити інтерфейс користувача. Для цієї мети використано такі елементи управління XAML як Image, AppBar та Button. Image відповідає за відображення графічного файлу. AppBar - це панель застосунку, яка застосовується для розміщення на її поверхні елементів управління, команд та інструментів для користувачів. Вона викликається при кліку правою кнопкою миші або за допомогою сполучення клавіш <Windows>+<Z>. Кнопки (Buttons) використовуються для відкриття діалогового вікна вибору файлу, запуску слайд-шоу та показу інформації про поточний файл. Інтерфейс сформовано за допомогою XAML-розмітки.

Рис. 8 Створення інтерфейсу користувача

3.2 Реалізація функціональних можливостей


В даній програмі весь функціонал реалізовано в двох класах: MainPage та PictureViewer. Клас PictureViewer описує переглядача графічних файлів з відповідним набором функцій. Для забезпечення його роботи у файл із оголошенням включено низку просторів імен. Опис тіла класу починається із оголошення його полів та властивості, що замикає множину значень поля Cn:IReadOnlyList<StorageFile> Paths; // список об'єктів для отримання інформації про файл private Int32 Cn; // номер поточного файлуBoolean IsOpened; // чи відкрито файлDispatcherTimer Timer; // таймер для слайд-шоуint Current  // встановлює номер поточного файлу

{{ return Cn; }

{(value < Paths.Count && value >= 0)

{ Cn = value; }if (value >= Paths.Count-1)

{ Cn = 0; }if (value < 0)

{ Cn = Paths.Count - 1; }

}

Перший метод чи не найголовніший: вибір файлів. Саме файлів, а не одного файлу. У Windows 8 не дозволено прямого доступу до файлової системи. Застосунок може «бачити» файли лише у папці установки та у т. зв. бібліотеках - папках, де можна відкривати доступ до наявних в інших папках документів, зображень, відео та музичних файлів. Для розв’язання такої проблеми використовують пікери(pickers). Вони являють собою діалогові вікна для вибору файлів чи папок і можуть повертати масив вибраних файлів. Тобто до файлу, що не знаходиться в розташуваннях, вказаних вище, можна доступитися лише за посередництвом такого пікера. Тому наприклад, відкривши для перегляду одне фото і при цьому намагатися клавішами переключитися на інше фото, нічого не станеться, тому що класи, за допомогою яких легко можна організувати такі дії в застосунках Windows 8-Style UI не підтримуються. Вихід один: в діалоговому вікні вибрати пункт «Виділити все». Метод оголошений як internal, що робить його видимим лише в межах даної збірки. Реалізація наступна:async void OpenFile(Image IMG)

{Dialog = new FileOpenPicker();.FileTypeFilter.Clear();.FileTypeFilter.Add(".bmp");.FileTypeFilter.Add(".gif");.FileTypeFilter.Add(".jpeg");.FileTypeFilter.Add(".jpg");.FileTypeFilter.Add(".png");.FileTypeFilter.Add(".tif");<StorageFile> TryGetPaths = await Dialog.PickMultipleFilesAsync();(TryGetPaths.Count != 0)= TryGetPaths;(Paths != null)

{(Timer == null)

}

}

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

Наступний метод виконує слайд-шоу:void StartSlideShow(Image IMG)

{= new DispatcherTimer();interval = new TimeSpan(0, 0, 3);.Interval = interval;.Tick += (object sender, object e) =>

{(IMG, true);

};.Start();

}

В ньому створюється об’єкт таймера, далі якому присвоюється час, по завершенні якого повинна спрацьовувати подія Tick. Для обробника події використано лямбда-вираз, що має сигнатуру, оголошену в делегаті події. Після цього таймер запускається. В класі MainPage оголошено і включено в конструктор класу ініціалізацію об’єкт класу PictureViewer:PictureViewer Viewer; // об'єкт переглядачаMainPage()

{.InitializeComponent();= new PictureViewer();

}

В методах - обробниках подій натиснення кнопок застосунку викликано відповідні методи об’єкту Viewer. Також реалізовано реакцію застосунку на натиснення кнопок із стрілками: LEFT і RIGHT.

3.3 Тестовий приклад


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

Рис. 9 Порівняння системи в симуляторі і реальному комп’ютері.

Рис. 10 Застосунок на стартовому екрані

Після компіляції застосунок повинен бути зареєстрованим в системі. Тоді ним можна користуватись і на стартовому екрані появиться його плитка. Це продемонстровано на рис. 10. Далі запускаємо переглядач і в діалоговому вікні обираємо декілька файлів і відкриваємо їх для перегляду.

Рис. 11 Діалогове вікно вибору файлів

Після відкриття файлів обираємо слайд-шоу і під час показу іншого файлу дивимось коротку інформацію про нього.

Рис. 12 Демонстрація інших можливостей за стосунку

Висновки

В роботі показано можливості об’єктно-орієнтованої парадигми. ООП являє собою потужний і водночас простий підхід до програмування.

Використано нові можливості мови C#, такі як асинхронні методи.

Для оформлення сторінки застосунку використано мову розмітки застосунків XAML, що дозволило розробити Windows 8-Style UI застосунок.

Результати:

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

Показано можливість виконання застосунку на будь-яких пристроях, де встановлена ОС Windows 8.

лістинг додаток графічний файл інтерфейс

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

1.Голуб Б.М. C#. Концепція та синтаксис. Навч. посібник. - Львів:Видавничий центр ЛНУ імені Івана Франка, 2006.- 136 с.

.Дейтел Х. C#:Пер. с англ. / Дейтел Х.,Дейтел П.,Листфилд Дж.,Нието Т., Йегер Ш., Златкина М. - СПб.: БХВ-Петербург, 2006.-1056 с.: ил.

.Павловская Т.А. C#. Программирование на языке высокого уровня. Учебник для вузов. - СПб.:Питер, 2007. - с.: ил.

.Пугачев С.В. Разработка приложений для Windows 8 на языке C# / С. В. Пугачев, А. М. Шериев, К. А. Кичинский. - СПб.: БХВ-Петербург, 2013. - 416 с.: ил. - (Профессиональное программирование)

.Троелсен, Эндрю. Язык программирования C# 5.0 и платформа .NET 4.5, 6-е изд. : Пер. с англ. - М. : ООО “И.Д. Вильямс”, 2013. - 1312 с. : ил. - Парал. тит. англ.

.Шон Фаркас. За кулисами .NET и Windows Runtime - Режим доступу: http://msdn.microsoft.com/ru-ru/magazine/jj651569.aspx

.Шилдт, Герберт. С# 4.0: полное руководство. : Пер. с англ. - М. : ООО "И.Д. Вильяме", 2011. - 1056 с.: ил. - Парал. тит. англ.

.http://en.wikipedia.org/wiki/Windows_Runtime

.http://ru.wikipedia.org/wiki/Metro_(язык_дизайна)

.http://ru.wikipedia.org/wiki/Windows_Runtime

.http://uk.wikipedia.org/wiki/Windows_8

Додаток: Текст програми

Файл PhotoViewer.cs.System;System.Collections.Generic;Windows.Storage;Windows.Storage.Pickers;Windows.Storage.Streams;Windows.UI.Xaml;Windows.UI.Xaml.Controls;Windows.UI.Xaml.Media.Imaging;Windows.UI.Popups;PhotoViewer

{PictureViewer

{ IReadOnlyList<StorageFile> Paths; // список об'єктів для отримання інформації про файлInt32 Cn; // номер поточного файлуBoolean IsOpened; // чи відкрито файлDispatcherTimer Timer; // таймер для слайд-шоуint Current // Встановлює номер поточного файлу,

{ // замикаючи діапзон можливих значень в кільце.

{ return Cn; }

{(value < Paths.Count && value >= 0)

{= value;

}if (value >= Paths.Count-1)

{= 0;

}if (value < 0)

{= Paths.Count - 1;

}

}

}async void OpenFile(Image IMG) // Відкриває групу файлів та відображає перший з них.

{Dialog = new FileOpenPicker();.FileTypeFilter.Clear();.FileTypeFilter.Add(".bmp");.FileTypeFilter.Add(".gif");.FileTypeFilter.Add(".jpeg");.FileTypeFilter.Add(".jpg");.FileTypeFilter.Add(".png");.FileTypeFilter.Add(".tif");<StorageFile> TryGetPaths = await Dialog.PickMultipleFilesAsync();(TryGetPaths.Count != 0)= TryGetPaths;(Paths != null)

{(Timer == null)

{= 0;

}(IMG);= true;(Timer != null) Timer.Stop();

}

}async void ShowPhoto(Image I) // Виводить на контрол Image графічний файл.

{FileStream = await Paths[Current].OpenAsync(FileAccessMode.Read);Photo = new BitmapImage();.SetSource(FileStream);.Source = Photo;

}void ChangePhoto(Image IM, Boolean Forward) // Змінює показуваний файл.

{(Forward)

{.Current++;(IM);

}

{.Current--;(IM);

}async void ShowInfo() // Показує інформацію про поточний файл.

{(Paths != null)

{Info = new MessageDialog("Ім'я: " + Paths[Current].Name +

"\nЧас створення: "+Paths[Current].DateCreated,"Інформація");cmd = await Info.ShowAsync();

}

}void StartSlideShow(Image IMG) // Запускає слайд-шоу.

{= new DispatcherTimer();interval = new TimeSpan(0, 0, 3);.Interval = interval;.Tick += (object sender, object e) =>

{(IMG, true);

};.Start();

}

}

}

Файл MainPage.xaml.cs.System;Windows.UI.Xaml;Windows.UI.Xaml.Controls;Windows.UI.Xaml.Input;Windows.UI.Xaml.Navigation;PhotoViewer

{sealed partial class MainPage : Page

{PictureViewer Viewer; // об'єкт переглядачаMainPage()

{.InitializeComponent();= new PictureViewer();

}override void OnNavigatedTo(NavigationEventArgs e)

{

}void Btn_Click(object sender, RoutedEventArgs e) // зміна файлу

{ Viewer.OpenFile(IMG); }void Info_Click(object sender, RoutedEventArgs e) // показ інформації про файл

{ Viewer.ShowInfo(); }void Fon_KeyUp(object sender, KeyRoutedEventArgs e) // зчитування клавіш і відповідна зміна показуваного файлу

{(e.Key == Windows.System.VirtualKey.Right)

{.ChangePhoto(IMG, true);(Viewer.Timer != null).Timer.Stop();

}(e.Key == Windows.System.VirtualKey.Left)

{.ChangePhoto(IMG, false);(Viewer.Timer != null).Timer.Stop();

}

}void Bar_Opened(object sender, object e) // поява кнопок, коли відкрито файли

{(Viewer.IsOpened)

{.Visibility = Visibility.Visible;.Visibility = Visibility.Visible;

}

}void Slide_Click(object sender, RoutedEventArgs e) // слайд-шоу.StartSlideShow(this.IMG);.IsOpen = false;

}

}

}

Похожие работы на - Створення Windows 8-style ui застосунку

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!