Комп’ютерне тестування граматичних знань на основі тестів ESL/EFL Proficiency рівня
МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
Національний
УНІВЕРСИТЕТ “ЛЬВІВСЬКА
ПОЛІТЕХНІКА”
Кафедра САПР
ПОЯСНЮВАЛЬНА ЗАПИСКА
до курсової
роботи
з дисципліни
“Застосування засобів
об’єктно-орієнтованого програмування
в лінгвістичних задачах”
на тему:
Комп’ютерне тестування
граматичних знань на основі тестів
ESL/EFL Proficiency
рівня.
Допущено до захисту: Виконала:
студентка групи: ПРЛ(м) - 11
Дата :______________
Прийняла:
Свірідова Т.В.
Оцінка:_____________
Залікова книжка №: ________
Львів - 2008
Зміст
- Об'єктно-орієнтоване програмування
Об’єктно́-орієнтоване́ програмува́ння (ООП) — одна з парадигм програмування, яка розглядає програму як множину взаємодіючих «об'єктів». В ній використано декілька технологій від попередніх парадигм, включаючи успадкування, модульність, поліморфізм та інкапсуляцію. Не зважаючи на те, що ця парадигма з'явилась в 1960-тих роках, вона не мала широкого застосування до 1990-тих. На сьогоднішній день, багато із мов програмування (зокрема, Java, JavaScript, C#, C++, Пайтон, PHP, Ruby та Objective-C) підтримують ООП.
Об'єктно-орієнтоване
програмування сягає своїм
Об'єктно-орієнтовані програми можна розглядати як множину взаємодіючих об'єктів, на відміну від традиціних поглядів, коли програма розглядається як набір підпрограм, або як перелік інструкцій комп'ютеру. Відповідно до парадигми ООП, кожний об'єкт здатен отримувати повідомлення, обробляти дані, та надсилати повідомлення іншим об'єктам. Кожний об'єкт можна розглядати як незалежний автомат з окремим призначенням або відповідальністю.
- Фундаментальні поняття
В результаті дослідження Дебори Дж. Армстронг комп'ютерної літератури, що було видано протягом останніх 40 років, вдалось виокремити фундаментальні поняття (принципи), використанні у переважній більшості визначень об'єктно-орієнтованого програмування. До них належить:
Клас
Клас визначає абстрактні характеристики деякої сутності, включаючи характеристики самої сутності (її атрибути або властивості) та дії, які вона здатна виконувати (її поведінки або методи або можливості). Наприклад, клас Собака може характеризуватись рисами, притаманними всім собакам, зокрема: порода, колір хутра, здатність гавкати. Класи привносять модульність та структурованість в об'єктно-орієнтовану програму. Як правило, клас має бути зрозумілим для не-програмістів, що знаються на предметній області, що, у свою чергу, значить, що клас повинен мати значення в контексті. Також, код реалізації класу має бути досить самодостатнім. Властивості та методи класу, разом називаються його членами.
Об'єкт
Окремий екземпляр класу. Клас Собака відповідає всім собакам шляхом описання їхніх спільних рис; об'єкт Сірко є одним окремим собакою, окремим варіантом значень характеристик. Собака має хутро; Сірко має коричнево-біле хутро. На жаргоні програмістів, об'єкт Сірко є екземпляром класу Собака. Множина значень атрибутів окремого об'єкту називається станом.
Метод
Можливості об'єкту. Оскільки Сірко — Собака, він має можливість гавкати. Тому гавкати() є одним із методів об'єкту Сірко. Він може мати і інші методи, зокрема: місце(), або їсти(). В межах програми, використання методу має впливати лише один об'єкт; всі Собака можуть гавкати, але треба щоб гавкала лише одна окрема собака.
Успадкування
В деяких випадках, клас може мати «підкласи», спеціалізовані версії класу. Наприклад, клас Собака може мати підкласи Коллі та Пікінес. В цьому випадку, Сірко буде екземпляром класу Вівчарка. Підкласи успадковують атрибути та поведінку своїх батьківських класів, і можуть вводити свої власні.
Приховування інформації (інкапсуляція)
Приховування деталей про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення. Так, наприклад, клас Собака має метод гавкати(). Реалізація цього методу описує як саме повинно відбуватись гавкання (приміром, спочатку вдихнути() а потім видихнути() на обраній частоті та гучності). Петро, хазяін собаки Сірко, не повинен знати як він лає. Інкапсуляція досягається шляхом вказування, які класи можуть звертатися до членів об'єкту. Як наслідок, кожен об'єкт представляє кожному іншому класу певний інтерфейс — члени, доступні іншим класам. Інкапсуляція потрібна для того, аби запобігти використанню користувачами інтерфейсу тих частин реалізації, які, швидше за все, будуть змінюватись. Це дозволить полегшити внесення змін, тобто, без потреби змінювати і користувачів інтерфейса. Наприклад, інтерфейс може гарантувати, що щенята можуть додаватись лише до об'єктів класу Собака кодом самого класу. Часто, члени класу позначаються як публічні (англ. public), захищені (англ. protected) та приватні (англ. private), визначаючи, чи доступні вони всім класам, підкласам, або лише до класу в якому їх визначено. Деякі мови програмування йдуть ще далі: Java використовує ключове слово private для обмеження доступу, що буде дозволений лише з методів того самого класу, protected - лише з методів того самого класу і його нащадків та з класів із того ж самого пакету, C# та VB.NET відкривають деякі члени лише для класів із тієї ж зборки шляхом використання ключового слова internal (C#) або Friend (VB.NET), а Eiffel дозволяє вказувати які класи мають доступ до будь-яких членів.
Абстрагування
Спрощення складної дійсності шляхом моделювання класів, що відповідають проблемі, та використання найприйнятнішого рівня деталізації окремих аспектів проблеми. Наприклад Собака Сірко більшу частину часу може розглядатись як Собака, а коли потрібно отримати доступ до інформації специфічної для собак породи коллі — як Коллі і як Тварина (можливо, батьківський клас Собака) при підрахунку тварин Петра.
Поліморфізм
Поліморфізм означає залежність поведінки від класу, в якому ця поведінка викликається, тобто, два або більше класів можуть реагувати по різному на однакові повідомлення. Наприклад, якщо Собака отримує команду голос(), то у відповідь можна отримати Гав; якщо Свиня отримує команду голос (), то у відповідь можна отримати Хрю.
- Особливості розробки програмних засобів на основі об’єктно-орієнтованого програмування
Сучасна практика програмування вимагає вдосконалення прийомів розробки комп’ютерних програм, прискорення та полегшення процесу їх проектування. При цьому програмні засоби повинні бути орієнтовані на тривалу роботу з користувачем. Це ставить перед розробником-програмістом завдання, що спрямовані не тільки на технологічні вимоги організації інтерфейсу програми, а й на психолого-фізіологічні особливості сприймання людиною інформації.
Ріст приватного сектору економіки призвів до перегляду об’ємів витрат на комп’ютерну техніку та на спеціалізоване програмне забезпечення. Набагато вигідніше стало розробляти нескладні програмні засоби, орієнтовані на розв’язання вузько спеціалізованих завдань. Тому, перед навчальними закладами постала мета підготувати спеціалістів, які спроможні створювати гнучкі програмні засоби, не витрачаючи на їх розробку та впровадження багато фінансів та часу.
Особливі можливості надають об’єктно-орієнтовані середовища програмування, що дозволяють швидко конструювати програмний засіб, використовуючи готові компоненти та описуючи процедури обробки події певного об’єкта, тоді як традиційне, процедурне програмування вимагає більш ретельного опису та налагодження програм. Для кращого порівняння традиційної та об’єктно-орієнтованої технологій програмування розглянемо їх основні переваги та недоліки.
Традиційне програмування базувалося на розробці тексту основної програми, яка викликала окремі процедури, що накопичувалися у великі бібліотеки розрахункових та службових процедур. Основним недоліком такої технології була наявність високої вірогідності помилок при зростанні кількості процедур, а це значно утруднювало налагодження програми. Складність програмного засобу обмежувала можливість слідкування за процесом обробки даних, з’являлися проблеми узгодження інтерфейсу при розробці програми кількома програмістами.
Зусиллями спеціалістів була представлена структурна технологія програмування, яка являла собою сукупність технологічних прийомів, що охоплюють виконання всіх етапів розробки програмного засобу. Така технологія програмування базувалася на декомпозиції складних систем і вимагала побудови ієрархічної структури розв’язання задачі з використанням методу покрокової деталізації. Створена програма мала правильну структурну організацію і містила декілька процедур, які викликалися основною програмою або процедурою більш високого рівня. Підтримка принципів структурного програмування була закладена до основи процедурних мов програмування. Ці мови містили основні оператори управління, дозволяли вкладення процедур, функцій, локалізацію та обмеження даних. Усе це дало змогу зробити перші кроки до абстрагування та маскування інформації, що є засобами об’єктно-орієнтованого програмування.
Подальше зростання складності та розмірів програмного забезпечення розвивало можливості структурування даних, дозволяло описувати типи даних користувача. Одночасно виникла необхідність розмежувати доступ до глобальних даних програми, тому з’явилася технологія модульного програмування. Вона припускає виокремлення групи процедур та функцій з однаковими глобальними даними в окремі файли, які використовуються в інших програмах як окремо компілюючі модулі: модуль графічних ресурсів, модуль виведення інформації на принтер та інші. Усі змінні в модульних програмах розподіляються на дві частини: відкриті (public), тобто доступні поза модулем в інших програмах, та закриті (private) – доступ до яких може бути тільки в межах процедури. Такий підхід значно поліпшив розробку програм кількома програмістами, кожний з яких розробляв свій окремий модуль, який можна було використовувати в інших програмах. Таку технологію програмування підтримували Pascal, C, С++ та інші. Дані середовища програмування були орієнтовані на користування операційною системою MS-DOS.
Недоліком
модульного програмування була обмеженість
у розмірі програми. Так, при використанні
програмістом понад 100 000 операторів зростала
складність міжмодульних інтерфейсів,
тому передбачити взаємовплив
Технологія
об’єктно-орієнтованого
Основною
перевагою об’єктно-
При використанні об’єктно-орієнтованих програм вимоги до об’єму пам’яті такі, як і при традиційному програмуванні, при цьому склад програми став більш компактний, а процес її вдосконалення - полегшений.
Об’єктно-орієнтований підхід використовує такі технологічні засоби, як спадкування, поліморфізм, композицію та наповнення. Усе це сприяє проектуванню складних об’єктів при використанні більш простих. Ці засоби є основними показниками об’єктно-орієнтованого програмування.
Механізм спадкування реалізується через доступ до методів і властивостей об’єкта певного класу і дозволяє приписати їх іншому об’єкту цього ж класу. Цей механізм забезпечує створення похідних класів. Ці класи розширюють можливості вже існуючих класів без їх перепрограмування та повторної компіляції. Саме це дозволило зменшити об’єм програмного засобу та збільшити його функціональність.
Механізм поліморфізму забезпечує можливість визначення різних аспектів єдиного за назвою методу для класів різних рівнів ієрархії. Подібний підхід дозволяє будувати більш гнучкі й досконалі ієрархії класів, змінюючи в похідних класах методи відповідно до вимог програми.
Композицією є відношення між класами, коли один клас є часткою іншого. Композиція реалізується включенням у клас об'єктного поля та застосовується, якщо спадкування неможливе або недоцільне. Наповнення відрізняється від композиції тим, що замість об'єктного поля використовуються поля, що містять покажчики на об'єкти. При використанні перелічених засобів зростає показник повторного використання кодів, з'являється можливість створення бібліотек об'єктів з метою різнопланового їх застосування.
В основу орієнтованого програмування покладені такі принципи, як абстрагування, обмеження доступу, модульність, ієрархічність, типізація, паралелізм та стійкість. Мова програмування вважається об’єктно-орієнтованою, якщо в ній реалізовані перші чотири принципи, серед них С++Builder, Visual С++, Delphi та інші.
Так, абстрагуванням є процес виокремлення певних характеристик об'єкту, що відрізняють його від інших та визначають його особливості. Залежно від поставленої задачі характеристикою може бути форма предмета, його вага, матеріал або закон руху тощо. Абстрагування допускає об’єднання усіх характеристик, що визначають стан та поведінку об’єкта, в єдину програмну одиницю певного типу. Так формується клас об’єкта.
Обмеження доступу дозволяє приховувати окремі елементи об'єкта, що не відображають його істотні характеристики. Необхідність обмеження доступу припускає розмежування двох частин в описі характеристик об’єкта, а саме на інтерфейс та реалізацію.
Інтерфейсом є сукупність доступних елементів, що характеризують стан та поведінку об'єкта, тоді як реалізація відображає сукупність тільки недоступних елементів цього ж об'єкта. Це дозволяє розробнику програмного засобу виконувати конструювання програми за етапами, а також легко модифікувати реалізацію окремих об’єктів.
Об'єднання
усіх властивостей об'єкта в єдину
абстракцію та обмеження доступу
до реалізації його властивостей визначило
таке важливе поняття об’єктно-
Модульність припускає реалізацію програм у вигляді окремих частин, так званих модулів. Використання модульності спрощує проектування та налагодження програми.
Ієрархічність є впорядкованою системою характеристик об’єкта. Вона використовується під час розробки структури класу, при побудові складних класів на базі простих за рахунок додавання нових характеристик та інших уточнень.
Основним
недоліком об’єктно-
Відсутність
єдиної прийнятої термінології є
недоліком теоретичного аспекту
об’єктно-орієнтованого
Розробка програмних засобів для операційних систем Windows має ряд особливостей. Так, взаємодія програмного засобу з користувачем та з операційною системою здійснюється через відправлення та обробку повідомлень. Таку побудову обробки повідомлень в програмі назвали подією.
Управління
подіями є процесом самостійним,
не зв’язаним з програмуванням.
Існують програми, що працюють за принципом
події, але не є об’єктно-орієнтованими.
Поєднання об’єктно-
Процес
розробки комп’ютерної програми на основі
об’єктно-орієнтованого
Метою аналізу є максимально повний опис поставленої задачі. На цьому етапі аналізується предметна область задачі, виконується об'єктна декомпозиція програми та визначаються особливості поведінки об'єктів. За результатами аналізу розробляється структурна схема програми, описуються об'єкти та події над ними.
Проектування поділяється на логічне та фізичне. Логічне полягає у розробці структури класів, коли визначаються поля для збереження складових об'єктів, алгоритми методів, що описують поведінку об'єктів.
Розробляючи класи об'єктів, слід відповісти на такі питання:
- Скільки класів потрібно для реалізації об'єктів, отриманих при декомпозиції задачі?
- Які дані необхідно описати як поля класу?
- Які методи, що визначають поведінку об'єктів, треба помістити до класу?
- Чи зв'язані між собою класи задачі? Чи потрібна побудова ієрархії класів?
Фізичне проектування містить об'єднання опису класів у модулі, вибір схеми їх підключення (статична або динамічна), визначення способів взаємодії з обладнанням, операційною системою та іншим програмним забезпеченням (базами даних, мережним оточенням), забезпечення синхронізації процесів для систем рівнобіжної обробки тощо.
На етапі проектування використовуються такі прийоми розробки класів як спадкування, композиція, наповнення. Результатом етапу проектування є створення ієрархії класів та їх опис.
Еволюція системи представляє етап послідовної реалізації та підключення класів до проекту. Процес починається із створення основного інтерфейсу проекту, бібліотеки класів, описуються тип поля класу, розробляються алгоритми методів, уточнюються вимоги до програми та вносяться певні зміни. Одержаний прототип продукту тестується й налагоджується.
Модифікація являє собою етап додавання нових функціональних можливостей до програми. Зміни торкаються лише реалізації класу, не змінюючи його інтерфейсу, інакше внесення на цьому етапі змін до інтерфейсу викличе необхідність узгодження процесів взаємодії між об'єктами та потребує змін в інших класах програми. Простота модифікації дозволяє легко адаптувати програмний продукт до умов експлуатації, що постійно змінюються.
Порівнюючи середовища програмування Vіsual C++, Delphі та C++ Buіlder, треба відзначити, що Vіsual C++ є найбільш універсальним програмним пакетом, а тому найбільш складним. Він використовує розвинуту об'єктну модель C++ та має більш могутню бібліотеку об'єктів. Інтерфейс і засоби Vіsual C++ потребують більше часу на їх освоєння й орієнтовані на професійні розробки високого рівня.
Delphі та C++ Buіlder використовують ідентичні середовища програмування та бібліотеку об'єктів VCL (Vіsual Component Lіbrary). Розробка програмних засобів у цих середовищах у порівнянні з Vіsual C++ значно більш автоматизована й полегшена. Вони містять засоби зв'язку з популярними базами даних, дозволяють створювати якісні програмні продукти за істотно коротший термін. Виходячи з того факту, що Паскаль є найкращою навчальною мовою програмування, ми визначили Delphі (Object Pascal) найбільш сприятливим середовищем для навчання студентів програмування.
Будь-який програмний засіб, розроблений на основі Delphi містить об'єкт-форму (вікно програми), де розміщуються певні компоненти. При цьому всі об’єкти форми повинні відповідати вимогам замовника та орієнтуватися на тривалу роботу з користувачем. Тому, крім техніко-технологічних вимог до розробки програм, слід також урахувати психолого-фізіологічні вимоги до поданої на екрані інформації. Основна увага під час процесу розробки комп’ютерної програми зосереджується на проектуванні форми з включенням змістового, наочного та емоційного компонентів, що впливають на ефективність роботи програмного засобу. Кожний з компонентів знаходиться у постійному взаємозв’язку з іншими компонентами.
Змістовий компонент визначається вимогами до коректного представлення інформації та вимагає правильності отриманих результатів при розрахунках. Так, під час роботи з фінансовими документами варто вибирати правильний спосіб представлення числових даних. Отримані результати, що містять дрібну частину, мають бути правильно округлені та однозначно представлені. При цьому варто дотримувати єдиних вимог, використовуючи однакову кількість знаків у дрібній частині числа, роздільник груп розрядів у числових даних з великим значенням, єдиний формат числових даних в одній області представлення (шрифт, колір, вид тощо).
До змістового компонента відносять наявність у програмі інформаційних областей з необхідними довідковими відомостями, точну розробку необхідних вихідних форм згідно із законодавством України, можливості роботи у комп’ютерній мережі з використанням клієнт–серверних технологій.
Наочний компонент програми ставить вимоги до розміщення інформації на екрані згідно з особливостями сприймання її людиною. Так, людське око, звичне до читання зліва направо, розпочинає перегляд інформації від лівого верхнього кута екрану до правого нижнього кута. Тому початкову або найважливішу за логікою представлення інформацію слід розташовувати у лівому верхньому куті екрану.
Комп’ютерна програма повинна містити допоміжну, спливаючу інформацію, що пояснює призначення кожного компонента форми на екрані. Це значно полегшує освоєння користувачем роботи програмного засобу. При цьому слід уникати зайвих текстових подробиць та незначущих графічних прикрас, що відволікає увагу людини під час роботи з програмою.
Особливу
увагу треба приділити
- короткохвильові кольори (фіолетовий, синій) при систематичному використанні призводять до пригніченого стану користувача, надмірного напруження його очей;
-
чим більша довжина хвилі
-
кольори середньої частини
-
велика кількість областей з
різнокольоровими відтінками
-
одночасно рекомендується

- Компютерний клуб «Chicago»
- Комп ютерні мережі
- Комп’ютерні мережі. Аналіз роботи і оптимізація
- Комп’ютерні розрахунки деталей сільськогосподарських машин на міцність та жорсткість
- Компютерные игры
- Компютерные сети
- Комсомольская правда и Аргументы и факты: типологическое своеобразие
- Компьютеры, как психологическая зависимость
- Компьюторные вирусы
- Комп'ютеризація обліку і аналізу витрат на оплату праці
- Комп’ютерна і Інтернет залежність
- Комп’ютерна мережа технології Ethernet масштабу будинку
- Компютерная лингвистика
- Комп'ютерне моделювання стохастичних процесів (СП) із заданими властивостями