Пуста сторінка номера злітають




Скачати 274.18 Kb.
НазваПуста сторінка номера злітають
Сторінка1/3
Дата конвертації16.08.2013
Розмір274.18 Kb.
ТипДокументы
uchni.com.ua > Інформатика > Документы
  1   2   3

Змн.

Арк.

докум.

Підпис

Дата

Арк.

08-22.КП 018.12.065.ПЗ



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

Використовуючи мову високого рівня, програмісти могли писати програми до декількох тисяч рядків довжиною. Для того часу зазначений підхід до програмування був найбільш перспективним. Однак мова програмування, легко зрозумілий у коротких програмах, коли справа стосувалася великих програм, ставав нечитабельним (і некерованим).

Позбавлення від таких неструктурованих програм прийшло після винаходу в 1960 році мов структурного програмування. До них відносяться мови Алгол, Паскаль, і С. Структурне програмування на увазі точно зазначені керуючі структури, програмні блоки, відсутність (або, принаймні, мінімальне використання) інструкцій GOTO, автономні підпрограми, в яких підтримується рекурсія та локальні змінні. Суттю структурного програмування є можливість розбиття програми на складові елементи. Використовуючи структурне програмування, програміст може створювати і підтримувати програми понад 50000 рядків довгою.
Хоча структурне програмування, при його використанні для написання помірно складних програм, принесло видатні результати, навіть воно виявлялося неспроможним тоді, коли програма досягала певної довжини.

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

Всі мови ООП засновані на трьох основоположних концепціях, званих інкапсуляцією, поліморфізмом і спадкоємством:

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

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

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

В контрольно-курсової роботі реалізуємо клас «вантажний ліфт». Ліфти можна підрозділяти по безлічі ознак, наприклад: вантажні і легкові, пасажирські та непассажірскіе і т. д. У даному випадку буде написаний клас для демонстрації роботи ліфта для перевезення вантажу в супроводі людини.

Як параметри роботи ліфта будуть використані: вантажопідйомність, політика обслуговування запитів (зупинятися чи на проміжних поверхах), кількість поверхів у будинку та активація безпечного режиму роботи.

Даний клас може бути використаний в апаратурі управління ліфтом, тому що може бути налаштований на конкретні умови роботи.

2. Аналіз предметної області
2.1. Обґрунтування аналізу предметної області
У прикладі з допомогою класів C # моделюється система ліфтів.

З чого повинна складатися система Комп'ютерна модель висотного ліфта?

  1. Зазвичай у великій будівлі розташовується декілька однакових ліфтів.

  2. На кожному поверсі є кнопки «Вниз - Down» та «Вверх - Up».

  3. У більшості випадків на поверх виділяється одна пара таких кнопок.

  4. Коли ви викликаєте ліфт, ви не знаєте, який саме з них приїде раніше.

  5. Усередині ліфта кнопочок істотно більше - одна для кожного поверху.

  6. Увійшовши в ліфт, пасажири зазвичай натискають кнопку потрібного поверху.


Програма моделює всі ці складові процесу.

2.2. Обгрунтування вибору мови
"Дідусем" С# є мова С. Від С мова С# успадкував синтаксис, багато ключових слова та оператори. Крім того, С# побудований на покращеній об'єктної моделі, визначеної в C++. Якщо ви знаєте С або C++, то з С# ви відразу станете друзями. С # і Java зв'язані між собою дещо складніше. Як згадувалося вище, Java також є нащадком С і C++. У нього теж спільний з ними синтаксис і схожа об'єктна модель. Подібно JavaC# призначений для створення переносимого коду. Проте С# - не нащадок Java. Швидше С# і Java можна вважати двоюрідними братами, які мають спільних предків, але отримали від батьків різні набори "генів".Останнім часом С і С++ є найбільш використовуваними мовами для розробки комерційних і бізнес додатків. Ці мови влаштовують багатьох розробників, але насправді не забезпечують належної продуктивності розробки.

Наприклад, процес написання програми на С++ найчастіше займає значно більше часу, ніж розробка еквівалентного програми, скажімо, на VisualBasic. Зараз існують мови, які збільшують продуктивність розробки за рахунок втрати в гнучкості, яка так звична і необхідна програмістам на С/С++.Подібні рішення є вельми незручними для розробників і часто пропонують значно менші можливості. Ці мови також не орієнтовані на взаємодію з з'являються сьогодні системами і дуже часто вони не відповідають існуючій практиці програмування для Web.

Багато розробники хотіли б використовувати сучасну мову, який дозволяв би писати, читати і супроводжувати програми з простотою VisualBasic і в той же час давав міць і гнучкість C++, забезпечував доступ до всіх функціональних можливостей системи, взаємодіяв б з існуючими програмами і легко працював з виникаючими Web стандартами. Враховуючи всі подібні побажання, Microsoft розробила нову мову - C#. У нього входить багато корисних особливостей - простота, об'єктна орієнтованість, типова захищеність, "збірка сміття", підтримка сумісності версій і багато іншого.

Дані можливості дозволяють швидко і легко розробляти програми, особливо COM + додатки і Web сервіси. При створенні C#, його автори враховували досягнення багатьох інших мов програмування: C++, C, Java, SmallTalk, Delphi, VisualBasic і т.д. Треба відмітити що через те, що C # розроблявся з чистого листа, у його авторів була можливість (якою вони явно скористалися), залишити в минулому всі незручні і неприємні особливості (існуючі, як правило, для зворотної сумісності), будь-якого з попередніх йому мов . В результаті вийшов дійсно простий, зручний і сучасна мова, по потужності не поступливий С++, але істотно підвищує продуктивність розробок. Дуже часто можна простежити такий зв'язок - чим більше мова захищена і стійкий до помилок, тим менше продуктивність програм, написаних на ньому. Наприклад розглянемо дві крайнощі - очевидно це Assembler і Java. У першому випадку ви можете добитися фантастичної швидкості своєї програми, але вам доведеться дуже довго примушувати її працювати правильно не на вашому комп'ютері.

У випадку з Java - ви отримуєте захищеність, незалежність від платформи, але, на жаль, швидкість вашої програми навряд чи сумісна зі сформованим поданням про швидкість, наприклад, якого-небудь окремого клієнтського застосування (звичайно існують застереження - JIT компіляція та інше). Розглянемо C++ з цієї точки зору - на мій погляд співвідношення в швидкості і захищеності близько до бажаного результату, але на основі власного досвіду програмування я можу з упевненістю сказати, що практично завжди краще понести незначну втрату в продуктивності програми і придбати таку зручну особливість, як " збірка сміття ", яка не тільки звільняє вас від стомлюючої обов'язки управляти пам'яттю уручну, але і допомагає уникнути вам багатьох потенційних помилок у вашому додатку.

Насправді скоро "збірка сміття", та й будь-які інші кроки до усунення потенційних помилок стану відмітними рисами сучасної мови. В C#, як в безсумнівно сучасній мові, також існують характерні особливості для обходу можливих помилок. Наприклад, крім згаданої вище "збірки сміття", там всі змінні автоматично ініціалізувалися середовищем і володіють типовою захищеністю, що дозволяє уникнути невизначених ситуацій у випадку, якщо програміст забуде ініціалізувати змінну в об'єкті або спробує провести неприпустиме перетворення типів. Також в C# були зроблені заходи для виключення помилок при оновленні програмного забезпечення. Зміна коду, в такій ситуації, може непередбачувано змінити суть самої програми. Щоб допомогти розробникам боротися з цією проблемою C# включає підтримку сумісності версій (vesioning). Зокрема, навідміну від C++ і Java, якщо метод класу був змінений, це повинно бути спеціально обумовлено. Це дозволяє обійти помилки в коді і забезпечити гнучку сумісність версій. Також новою особливістю є native підтримка інтерфейсів і спадкоємства інтерфейсів. Дані можливості дозволяють розробляти складні системи і розвивати їх з часом. В C# була уніфікована система типів, тепер ви можете розглядати кожен тип як об'єкт. Незважаючи на те, використовуєте ви клас, структуру, масив або вбудований тип, ви можете звертатися до нього, як до об'єкта.

Об'єкти зібрані в простори імен (namespaces), які дозволяють програмно звертатися до чого-небудь. Це означає що замість списку включаються файлів заголовків у своїй програмі ви повинні написати які простори імен, для доступу до об'єктів і класів усередині них, ви хочете використовувати. У C# вираз using дозволяє вам не писати кожен раз назву простору імен, коли ви використовуєте клас з нього. Наприклад, простір імен System містить декілька класів, в тому числі і Console. І ви можете писати або назву простору імен перед кожним зверненням до класу, або використовувати using як це було показано в прикладі вище.

Важливою і відмітною від С++ особливістю C# є його простота. Приміром, чи завжди ви пам'ятаєте, коли пишіть на С++, де потрібно використовувати "->", де "::", а де "."? Навіть якщо ні, то компілятор завжди поправляє вас у разі помилки. Це говорить лише про те, що насправді можна обійтися тільки одним оператором, а компілятор сам буде розпізнавати його значення.

Так в C#, оператор "->" використовується дуже обмежено (в unsafe блоках, про які мова піде нижче), оператор "::" взагалі не існує. Практично завжди ви використовуєте тільки оператор "." і вам більше не потрібно стояти перед вибором.Ще один приклад. При написанні програм на C/С++ вам доводилося думати не тільки про типи даних, а й про їх розмір в конкретній реалізації. В C# все спрощено - тепер символ Unicode називається просто char (а не wchar_t, як в С++) і 64-бітове ціле тепер - long (а не __ int64).

Також в C# немає знакових і беззнакових символьних типів.В C#, також як і в VisualBasicпісля кожного виразу case в блоці switch мається на увазі break. І більше не буде відбуватися дивних речей якщо ви забули поставити цей break. Однак якщо ви дійсно хочете щоб після одного виразу case програма перейшла до наступного ви можете переписати свою програму з використанням, наприклад, оператора goto.Багатьом програмістам (на той момент, напевно, майбутнім програмістам) було не так легко під час вивчення C++ повністю освоїтися з механізмом посилань і покажчиків. В C# (хтось зараз пригадає про Java) немає покажчиків.

Насправді нетривіальність покажчиків відповідала їх корисності. Наприклад, часом, важко собі уявити програмування без покажчиків на функції. Відповідно до цього в C# присутні Delegates - як прямий аналог покажчика на функцію, але їх відрізняє типова захищеність, безпека і повна відповідність концепціям об'єктно-орієнтованого програмування.Хотілося б підкреслити сучасне зручність C#.

Коли ви почнете роботу з C#, а, сподіваюся, це відбудеться якомога швидше, ви побачите, що досить велике значення в ньому мають простору імен. Вже зараз, на основі першого прикладу, ви можете судити про це - адже всі файли заголовків замінені саме простором імен. Так в C#, крім просто вираження using, надається ще одна дуже зручна можливість - використання додаткового імені (alias) простору імен або класу.Сучасність C# виявляється і в нових кроках до полегшення процесу налагодження програми. Традиційним засобом для налагодження програм настадії розробки в C++ є маркування великих частин коду директивами #ifdef і т.д. В C#, використовуючи атрибути, орієнтовані на умовні слова, ви можете куди швидше писати налагоджувати код.

У наш час, коли посилюється зв'язок між світом комерції і миром розробки програмного забезпечення, і корпорації витрачають багато зусиль на планування бізнесу, відчувається необхідність у відповідності абстрактних бізнес процесів їх програмним реалізаціям. На жаль, більшість мов реально не мають прямого шляху для зв'язку бізнес логіки та коду. Наприклад, сьогодні багато програмістів коментують свої програми для пояснення того, які класи реалізують якийсь абстрактний бізнес об'єкт. C# дозволяє використовувати типізовані, розширювані метадані, які можуть бути прикріплені до об'єкта.Архітектурою проекту можуть визначатися локальні атрибути, які будуть пов'язані з будь-якими елементами мови - класами, інтерфейсами і т.д. Розробник може програмно перевірити атрибути будь-якого елементу. Це істотно спрощує роботу, наприклад, замість того щоб писати автоматизований інструмент, який буде перевіряти кожен клас або інтерфейс, на те, чи є він дійсно частиною абстрактного бізнес об'єкта, можна просто скористатися повідомленнями заснованими на визначених воб'єкті локальних атрибутах.

C#, будучи останнім з широко поширених мов програмування, повинен увібрати в себе весь наявний досвід і увібрати кращі сторони існуючих мов

програмування, при цьому будучи спеціально створеним для роботи в .NET. Сама архітектура .NET продиктувала йому (як і багатьом іншим мовам, на яких можна писати під .NET) об'єктно-орієнтовану спрямованість. Звичайно, це не є правилом, можливе створення компіляторів навіть функціональних мов по .NET, на цю тему існують спеціальні роботи.Свій синтаксис C# в чому успадкував від C++ і Java. Розробники, які мають досвід написання програм на цих мовах, знайдуть в C# багато знайомих. Але разом з тим він є багато в чому новаторським - атрибути, делегати та події, прекрасно вписані в загальну ідеологію мови, міцно зайняли місце в серцях .NET - розробників. Їх введення дозволило застосовувати принципово нові прийоми програмування.Звичайно, улюбленим об'єктом для порівняння з C# у світовій ком'юніті є Java. Також розроблений для роботи в віртуальному середовищі виконання, має об'єктно-орієнтовану архітектуру і збирач сміття, осноиванний на механізмі посилань.

При порівнянні з цією мовою відразу вироблена такі особливості, як можливість оголошувати декілька класів в одному файлі, з чого випливає синтаксична підтримка ієрархічної системи просторів імен. З реалізації ООП-концепцій схожість в механізмі спадковості й реалізації (і в Java і в C# можливо одиничне успадкування, але множинна реалізація інтерфейсів, на відміну від C++). Але в Java відсутні властивості і індексатори (а також делегати та події, але вони відсутні ще багато де). Також є можливість перерахування контейнерів.З речей, включених в специфікацію мови, але не є чисто "програмістським" необхідно відзначити можливість використання коментарів у форматі XML.
2.3. Особливості діаграм станів
На діаграмах класів UML відображаються взаємовідносини між класами. У діаграмі класів відображена організація коду програми. Діаграми класів - це статичні діаграми, в яких зв'язку не змінюються при запуску програми.

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

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

Між станами існують переходи. Отримавши сигнал від пульта управління, телевізор переключає з активного стану каналу 7 в активний стан каналу 2.

На рис. 3 показана діаграма стану для програми ELEV. На ній відображені різні стани об'єкта класу Elevator, які він може приймати під час роботи програми.

Стани

У діаграмах станів UML стан представлено у вигляді прямокутника з округленими кутами. Назва стану зазначено у верхній частині прямокутника, зазвичай воно починається з великої букви. Нижче вказані дії, які виконує об'єкт, входячи в цей стан. Після створення об'єкт класу Elevator може перебувати в п'яти станах: Завантаження, вивантаження, Їде вгору, Їде вниз і Зупинено. На відміну від діаграм класів, у коді програми не можна точно вказати фрагмент, відповідний кожному конкретному стану. Щоб розібратися в тому, які стани повинні входити в діаграму, потрібно уявити ситуацію, в якій працює об'єкт, і те, що ми хочемо отримати в результаті. Потім кожному станом підбирають відповідну назву.
Переходи

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

Зауважимо, що три переходи є переходами самі в себе, вони повертає нас у той же стан.
Від стану до стану

Кожного разу, потрапляючи в стан Завантаження, об'єкт класу Elevator виконує дію, яка укладаєся у видаленні значення «Звідки». Потрапляючи в стан Вивантаження, об'єкт класу Elevator виконує дія, що полягає у видаленні значення «Куди».
На рис. 4. Зображена діаграма классів програми ELEV

  1   2   3

Схожі:

Пуста сторінка номера злітають iconЗаявк а на участь у виставці для українських учасників Навчальний заклад/підприємство
Чорно-біла реклама в каталозі 1 сторінка А4 формату; □ Кольорова реклама в каталозі 1 сторінка А4 формату; □ Кольорова реклама на...
Пуста сторінка номера злітають iconВимоги до курсових
Вибір теми курсової роботи здійснюється залежно від останньої цифри номера залікової книжки (остання цифра номера залікової книжки...
Пуста сторінка номера злітають iconКниги старого заповіту I. П’ятикнижжя мойсеєве
А земля була пуста та порожня, І темрява була над безоднею, І дух Божий ширяв над поверхнею води
Пуста сторінка номера злітають iconТаблиця вибору варіанту домашньої контрольної роботи згідно номера в учбовому журналі

Пуста сторінка номера злітають iconНомера
Молодіжна газета Степногірської зош І – ІІІ ступенів Вересень Випуск №2 2013 2014 н р
Пуста сторінка номера злітають iconБезушко Б. В., вчитель фізкультури
Клас на 1-2 розподілись. “Перші” номера крок лівою назад, правою в сторону І ліву переставити
Пуста сторінка номера злітають iconД востороння сторінка, в розворот. Різниця між ними І як їх вибрати

Пуста сторінка номера злітають icon16 липня 1990 року Верховна Рада України ухвалила Декларацію про...
Верховна Рада України ухвалила Декларацію про державний суверенітет України. Відтоді в літописі нашої держави розпочалася нова сторінка,...
Пуста сторінка номера злітають iconАнкета для визначення обдарованості
Зараз Ви уважно будете слухати твердження, І якщо воно Вас стосується, то ставите „+" біля відповідного номера"
Пуста сторінка номера злітають iconТема: Написати твір про школу, використовуючи фотографії (об'ємом 1 сторінка)

Додайте кнопку на своєму сайті:
Школьные материалы


База даних захищена авторським правом © 2014
звернутися до адміністрації
uchni.com.ua
Головна сторінка