
|
|
Главная \ Методичні вказівки \ ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ
ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ« Назад
ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ 22.01.2016 18:01
НАЦIОНАЛЬНА АКАДЕМIЯ УПРАВЛIННЯ
ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ
навчально-методичнІ МАТЕРІАЛИ
КИЇВ-2013 ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ Навчально-методичнІ МАТЕРІАЛИ
Укладач: Баклан Ігор Всеволодович кандидат технічних наук, доцент
ЗМІСТ
1. МЕТА ТА ЗАВДАННЯ КУРСУ
Об'єктно-орієнтований підхід до програмування являє собою найсучаснішу концепцію створення програмного забезпечення та служить основою для побудови складних програмних систем для будь-якої предметної області. Оволодіння таким підходом означає не просто засвоєння певної мови програмування, а формування сучасного способу мислення для побудови програмних систем. Тому дисципліна “Об'єктно-орієнтоване програмування” є необхідною складовою частиною підготовки спеціалістів та посідає центральне місце в циклі комп'ютерних дисциплін. Об'єктно-орієнтоване програмування ґрунтується на матеріалі всіх вивчених раніше курсів комп'ютерних дисциплін, зокрема “Алгоритмізація та програмування”, та служить основою для подальшого вивчення дисциплін комп'ютерного циклу, наприклад, “Основи баз даних та знань”, “Сучасні технології програмування” а також всіх спеціальних курсів, що потребують комп'ютерного моделювання. Метою дисципліни є вивчення базових понять та принципів об’єктно-орієнтованого підходу до програмування. Основна увага приділяється проблемі об’єктно-орієнтованого проектування програмного забезпечення та реалізації його основних принципів засобами сучасних об’єктно-орієнтованих мов програмування. Основні задачі дисципліни — ознайомити студентів з ефективними методами об’єктно-орієнтованого проектування, аналізу та програмування, а також існуючим інструментарієм створення складних програмних систем для різноманітних предметних областей, сформувати навички об’єктно-орієнтованого програмування на таких популярних мовах як Ruby та Java та користування стандартними бібліотеками класів. 2. Навчально-тематичний план. Навчальні модулі
(денна форма навчання)
3. РЕГЛАМЕНТ ВИКЛАДАННЯ ТА КОНТРОЛЮ ЗАСВОЄННЯ НАВЧАЛЬНОГО МАТЕРІАЛУ ДЛЯ СТУДЕНТІВ ДЕННОЇ ФОРМИ НАВЧАННЯ
3.1. Загальні положення
У перехідний період в Національній академії управління як і в інших навчальних закладах України паралельно існуватимуть дві системи оцінювання, а саме ЕСТS (Європейська система трансферту кредитів) та національна система (4-х бальна). З цією метою в НАУ вводиться 100 – бальна шкала оцінювання знань, за допомогою якої здійснюється конвертація оцінок системи ЕСТS в національну систему, що представлено в таблиці 1. Таблиця 1. Порядок конвертації оцінок
3.2. Характеристика складових навчального процесу вивчення курсу та їх оцінювання Порядок, встановлений відповідним наказом ректора НАУ, передбачає можливість диференційованого підходу до формування 100 - бальної оцінки з окремих дисциплін, що об’єктивно обумовлено специфікою їх викладання. Весь програмний матеріал курсу “Системи автоматизації наукових та інженерних розрахунків ” поділяється на два модулі, які представлені в навчально-тематичному плані дисципліни. Викладання основних питань модулів та контроль за їх опануванням студентами денної форми навчання включають такі складові: 1) лекції; 2) лабораторні роботи; 3)тести; 4) фінальний іспит. Лекції та лабораторні роботи проводяться за загальноакадемічними правилами в аудиторний час за розкладом. Відвідування лекцій та лабораторних робіт є обов’язковим, що контролюється викладачами та куратором курсу, які по завершенню семестру оцінюють дану складову максимально 10 балами. Якщо студент з будь-яких обставин мав пропуски, його оцінки розраховуються за простою пропорцією, виходячи із сумарної кількості лекцій та семінарських занять. Так, якщо під час семестру було 12 лекцій і 14 семінарів (разом 26), а студент відвідав 8 лекцій і 10 семінарів (разом 18), то його оцінка відвідування складає 6,8 (26-10; 18 – х); результат за загальноарифметичними правилами округлюється до цілої цифри і дорівнює 7 балам. Другою складовою комплексної оцінки студента є його активність на лабораторних заняттях, під час яких впродовж семестру він може отримати максимально 30 балів. Результати роботи кожного студента визначаються викладачем на лабораторних роботах індивідуально. Тобто після будь-якого заняття кожен студент має в журналі оцінку від 0 до 3 балів за вдале виконання лабораторної роботи та наданий студентом звіт про виконання лабораторної роботи. Третьою складової семестрової комплексної оцінки є тести, які проводяться по завершенню вивчення Модулів 2, по кожному з яких студент може отримати максимально по 15 балів, тобто - 30 загалом. Тести проводяться у комп’ютерному класі за спеціально розробленою програмою. Час і аудиторія для тестування визначаються додатково. Технологія тестування передбачає наступне: 1) викладач заздалегідь готує 30-50 тестових завдань, що охоплюють програмний матеріал тем модулів. Під час тестування методом випадкової вибірки студент отримує 10 завдань, кожне з яких має від 3 до 10 варіантів відповідей. Студент обирає, на його думку, одну або декілька вірних, для чого дається 2 хвилини на кожне питання. Загальний час на одне тестування – 20 хвилин (10 х 2). Після завершення тестування студент за комп’ютерною програмою безпосередньо на місці отримує оцінку, що відповідає кількості правильних відповідей, а саме: 7 вірних відповідей – 7 балів, 3 – 3 бали відповідно. Повторне тестування не проводиться. Якщо деякі студенти не були присутніми на плановому тестуванні з поважних обставин, вони мають можливість пройти тестування у додатково визначений час. Студенти, що не з’явилися на планове тестування без поважних причин, як і ті, що не були присутніми на додатковому, матимуть нульову оцінку. Останнім четвертим елементом комплексної оцінки є результат фінального заліку, що складається згідно графіку залікової сесії. Білет містить 10 питань кожне з яких оцінюється максимально у 3 бали, тобто (3х10=30 балів разом). Питання білетів до студентів не доводяться. При підготовці до заліку потрібно користуватися програмою курсу (див.п.п.4.1.1., 4.2.2 та 4.3.1.) та навичками, отриманими під час виконання лабораторних робіт. Увага! Студенти, які впродовж семестру набрали менш 30 балів за усіма складовими, до заліку НЕ ДОПУСКАЮТЬСЯ, автоматично отримують оцінку «незадовільно» - F і мають складати залік наступного разу тільки після повторного вивчення дисципліни. Таким чином комплексна оцінка розраховується як сума вищезгаданих складових, і її максимальна величина потенційно дорівнює 100 балам, а саме:
4. Плани ЛАБОРАТОРНИХ РОБІТ ЦИКЛ "ПРОГРАМУВАННЯ НА RUBY" ЛАБОРАТОРНА РОБОТА 1. ОБ'ЄКТНО-ОРІЄНТОВАНА МОВА RUBY. ОСНОВНІ ВЛАСТИВОСТІ МОВИ. Приклад індивідуального завдання: Завдання 1. 1. Написати програми, що обчислюють середнє арифметичне чисел x, y та z; 2. Написати програму друкуючу першу цифру в дробовому записі позитивного дробового числа (напр., для 32,567 відповідь 5). Завдання 2. Внести такі зміни в програми із завдання 1, щоб вихідні дані запитувались з клавіатури. Завдання 3. Написати програму, що обчислює периметр і площу правильного 25-кутника, вписаного в окружність радіуса R. Що потрібно змінити, щоб програма обчислювала периметр й площу 17-кутника? ЛАБОРАТОРНА РОБОТА 2. ОБ'ЄКТНО-ОРІЄНТОВАНА МОВА RUBY. ОСНОВНІ ВЛАСТИВОСТІ МОВИ (ПРОДОВЖЕННЯ) Завдання Напишіть програму, що обчислює суму всіх парних натуральних чисел, що не перевершують 1000. Напишіть програму, що визначає максимальний елемент масиву чисел. ЛАБОРАТОРНА РОБОТА 3. КОМПЛЕКСНЕ ПРОГРАМУВАННЯ МОВОЮ RUBY Приклад завдання:
ЦИКЛ "ПРОГРАМУВАННЯ НА JAVA" ЛАБОРАТОРНА РОБОТА 1.Встановлення та запуск Eclipse Ціль роботи: Eclipse - програмне забезпечення з відкритим кодом, яке в цілому використовується як Інтегроване Середовище Розробки (IDE) і як основа для програмних продуктів. В цій лабораторній роботі ви будете інсталювати та запускати Eclipse. Перш, ніж ви почнете встановлювати його, продукт повинен бути завантажений із сайту www.eclipse.org. Після того, як ви завантажите файл, ви можете приступати до інсталяції. Коли інсталяція завершиться, ви можете запустити Eclipse.
ЛАБОРАТОРНА РОБОТА 2: Об'єктно-орієнтована концепція. Гра життя Ціль роботи: У цій роботі ви вивчите предметну область, у якій ви будете працювати всю іншу частину лабораторного практикуму. У цій роботі пояснюються правила Гри життя, яку ви спробуєте моделювати. Гра життя - одна з найбільш відомих 2-мірних моделей клітинної структури. Це не дійсна гра, тому що в ній немає гравців, немає переможців і переможених. Це гра, у якій початкова позиція й правила визначають усе, що трапиться після цього. Більше інформації про гру і її обґрунтування див. по посиланнях http://www.math.com/students/wonders/life/life.html і http://mathworld.wolfram.com/CellularAutomaton.html.
ЛАБОРАТОРНА РОБОТА 3.Огляд Java Ціль роботи: В цій роботі ви будете використовувати Scrapbook для обчислення деякого Java-коду. Scrapbook використовується в Eclipse для інспектування та обчислення коду. Спочатку вам потрібно створити проект, а в проекті - новий Scrapbook. Це вправа ближче познайомить вас із середовищем Eclipse, а також з основним синтаксисом і правилами мови Java.
ЛАБОРАТОРНА РОБОТА 4.Побудова класів Java Ціль роботи: У цій роботі ви ближче познайомитеся з Java Development Tools в Eclipse. Фактично, ви побудуєте основні класи гри. Після того, як ви закінчите цю роботу, ви повинні бути знайомі зі створенням класів за допомогою Eclipse, а також з використанням інструментів рефакторинга Java в Eclipse.
ЛАБОРАТОРНА РОБОТА 5.Використання відладчика Ціль роботи: В цій роботі ви ближче познайомитеся з Java Development Tools в Eclipse, оскільки ви будете застосовувати деякі з найчастіше використовуваних інструментів, а саме, Debugger, знову Scrapbook та Inspector. Ці інструменти досить корисні при розробці Java-коду. У цій роботі ви по кроках пройдете через виконання конструктора Board і постараєтеся визначити та виправити неправильне поводження.
ЛАБОРАТОРНА РОБОТА 6. Оператори керування Ціль роботи: У цій роботі ви будете використовувати оператори керування для реалізації деякого поводження класів гри. Зокрема, ви реалізуєте шаблон Singleton для класу Game та метод toString() класу Board.
ЛАБОРАТОРНА РОБОТА 7. Спадкування Ціль роботи: У цій роботі ви будете використовувати спадкування для поліпшення проекту, підвищення гнучкості й можливостей супроводу системи. Спадкування допомагає при рефакторинзі коду, а також при правильному поданні об'єктів (тобто воно робить об'єкт більше близьким до реального життя). Досить часто деякі загальні властивості схожих класів абстрагуються в абстрактному суперкласі й повторно використовуються в підкласах. Абстрактний клас - це клас, що не може мати екземплярів. Інтерфейси використовуються в мові Java для більшого абстрагування, оскільки вони визначають тільки об'єктний протокол. Інтерфейси також використовуються для крос-ієрархічного поліморфізму (перехресного спадкування). У цій роботі ви будете використовувати й абстрактні класи, і інтерфейси. У цих роботах ви зосередитесь на 2-мірному моделюванні клітинної структури в Грі життя. Конкретно в цій роботі ви будете робити систему гнучкою для обробки різних версій ігор моделювання кліток.
ЛАБОРАТОРНА РОБОТА 8.Колекції Ціль роботи: В цій роботі ви будете використовувати колекції для реалізації історії розвитку дошки в ході гри. Коли дошка розвивається, клітинки міняють свої значення, і дошка переходить у зовсім інший стан. Наприкінці гри дошка має стан нового покоління, а всі попередні стани загублені. Ви реалізуєте історію розвитку дошки в класі Game.
ЛАБОРАТОРНА РОБОТА 9. ОБробка виключень Ціль роботи: Ціль цієї роботи складається в роботі з виключеннями. В цій роботі ви вивчите, як викидати та виловлювати виключення.
ЛАБОРАТОРНА РОБОТА 10.Потоки Ціль роботи: Метою цієї роботи є робота з потоками. У цій роботі ви вивчите, як писати й читати дані в і з файлу, використовуючи потоки.
ЛАБОРАТОРНА РОБОТА 11. Генерація Javadoc в Eclipse Ціль роботи: Ціль цієї роботи - познайомити вас із документуванням вашого Java-коду за допомогою коментарів Javadoc і тегів і з використанням інструмента Javadoc в Eclipse для вироблення Javadoc-виходу в стандартному доклеті.
ЛАБОРАТОРНА РОБОТА 12. Використання Ant в Eclipse Ціль роботи: Ціль цієї роботи - познайомити вас із діями, які ви повинні виконати, щоб використати Ant в Eclipse. Ці дії містять у собі написання файлу build.xml, а потім запуск різних задач, які ви повинні включити у файл. Другою метою є представлення вам деяких головних задач, які забезпечує Ant.
ЛАБОРАТОРНА РОБОТА 13. Побудова графічного інтерфейсу користувача за допомогою SWT Ціль роботи: Ціль цієї роботи - познайомити вас із Standard Widget Toolket (SWT) в Eclipse. Точніше, ця робота допоможе вам вивчити, як використовувати один з найпопулярніших менеджерів розкладки: FormLayout, багато елементів (widgets) SWT, як будувати графічні користувальницькі інтерфейси, використовуючи елементи SWT і два шаблони, які обговорюються в слайдах: View Event Handler Pattern й Complete Update Pattern.
5. Тематика контрольних робіт Тестова контрольна робота “Програмування на Ruby”. Тестова контрольна робота “Програмування на Java”.
6. Питання для підготовки до іспиту
7. Теоретичний матеріал ДЛЯ СТУДЕНТІВ ЗАОЧНОЇ ФОРМИ НАВЧАННЯ Тема 1. Введення до курсу Якість - це мета інженерної діяльності; побудова якісного ПО (software) - мета програмної інженерії (software engineering). У даній книзі розглядаються засоби і технічні прийоми, що дозволяють значно поліпшити якість ПО. Перш ніж приступити до вивчення цих засобів і прийомів, слід добре представляти нашу мету. Якість ПО найкраще описується комбінацією ряду чинників. У цій темі ми постараємося проаналізувати деякі з них, покажемо, де необхідні поліпшення, і вкажемо дорогу в подальшій подорожі по лекціях цього курсу. Тема 2. Критерії об'єктної орієнтації В попередній темі досліджувалися меті ОО-методу. Готуючись до читання технічних деталей методу в наступних лекціях, корисно швидко, але з широких позицій розглянути ключові аспекти ОО-розробки ПО. Така мета цієї темі. Перш за все, тут буде дано лаконічне пояснення того, що робить систему об'єктно-орієнтованої. Вже в цьому є певна користь, оскільки цей термін використовується так нерозбірливо, що необхідний список точних властивостей; маючи їх, ми зможемо оцінити метод, мову або інструмент, що претендують на звання об'єктно-орієнтованих. Тема 3. До основ об'єктної технології Розширюваність, можливість повторного використання і надійність - наші головні цілі - вимагають виконання ряду умов, визначених в попередніх лекціях. Для їх досягнення потрібний систематичний метод декомпозиції системи на модулі. У цій темі представлені основні елементи такого методу, заснованого на простій, але ідеї, що далеко йде: будувати кожен модуль на базі деякого типа об'єктів. Тут ця ідея пояснюється, логічно обгрунтовується і з неї виводяться деякі следствія. Тема 4. Статичні структури: класи Аналізуючи основи програмної інженерії, ми зрозуміли причини, що вимагають вдосконалення модульного підходу - повторне використання і розширюваність коди. Ми усвідомили, що традиційні методи вичерпали себе, - централізована архітектура обмежує гнучкість. Ми виявили хорошу теоретичну основу ОО-підходу - абстрактних типів даних. Тепер, коли проблемам приділено досить уваги, вперед до їх рішення! Розділ містить введення у фундаментальні методи ОО-аналізу, проектування і програмування. Необхідні позначення (елементи опису) вводитимуться в міру необхідності. Спочатку необхідно розглянути базові будівельні блоки - класи. Тема 5. Динамічні структури: об'єкти В попередній темі наголошувалося, що екземпляри класів називають об'єктами. Настав час перемкнути увагу на ці об'єкти, і в загальному сенсі - на модель ОО-обчислень часу виконання. У попередніх лекціях розглядалися в основному концептуальні питання. Тепер необхідно звернутися до аспектів реалізації. Зокрема, розглянути питання використання пам'яті (обговорення буде продовжено в наступній темі у зв'язку із збіркою сміття). Неодноразово наголошувалося, що однією з переваг об'єктної технології розробки ПО є облік в повному об'ємі деталей реалізації. Тому екскурсія в область реалізації буде корисною, навіть якщо сфера ваших інтересів пов'язана в основному з питаннями аналізу і проектування. Неможливо зрозуміти метод, не розглядаючи його вплив на структури часу виконання. Тема 6. Загальні уявлення про мову Java Java і інші мови програмування. Системне і прикладне програмування. Віртуальна java-машина, байт-код, jit-компіляція. Категорії програм, написаних на мові Java. Алфавіт мови Java. Десяткові і шістнадцятиричні цифри і цілі числа. Зарезервовані слова. Алфавіт мови Java. Десяткові і шістнадцятиричні цифри і цілі числа. Зарезервовані слова мови Java. Послідовності, що управляють. Символи Unicode. Спеціальні символи. Послідовності, що управляють. Прості спеціальні символи. Складені спеціальні символи. Ідентифікатори. Змінні і типи. Примітивні і посилальні типи.
Тема 7. Об'єктно-орієнтоване проектування на Java Процедурне і об'єктно-орієнтоване програмування. Інкапсуляція. Робота з посилальними змінними. Збірка сміття. Проекти Netbeans. Пакети. Рівні видимості класів. Імпорт класів. Базові пакети і класи Java. Створення в Netbeans простого додатка Java. Компіляція файлів проекту і запуск додатка. Структура проекту Netbeans. Створення в Netbeans додатка Java з графічним інтерфейсом. Редактор екранних форм. Зовнішній вигляд додатка. Ведення проектів. Редагування меню екранної форми. Створення нового класу. Документування вихідної коди в Java. Основні компоненти пакетів swing і awt. Технології Java і .Net.. Тема 8. Примітивні типи даних і оператори для роботи з ними Булевий (логічний) тип. Цілі типи, змінні, константи. Основні оператори для роботи з цілочисельними величинами. Речові типи і клас Math. Правила явного і автоматичного перетворення типа при роботі з числовими величинами. Оболонкові класи. Упаковка (boxing) і розпаковування (unboxing). Пріоритет операторів. Типи-перерахування (enum). Тема 9. Робота з числами в мові Java Двійкове представлення цілих чисел. Позиційні і непозиційні системи числення. Двійкове представлення позитивних цілих чисел. Двійкове представлення негативних цілих чисел. Додатковий код. Проблеми цілочисельної машинної арифметики. Шістнадцятиричне представлення цілих чисел і переведення з однієї системи числення в іншу. Побітові маски і зрушення. Двійкове представлення дійсних чисел. Двійкові дроби. Мантиса і порядок числа.
Тема 10. Конструкції, що управляють Складений оператор. Умовний оператор if. Оператор вибору switch.Операторы інкремента ++ і декремента --. Оператор циклу for. Оператор циклу while - цикл з передумовою. Оператор циклу do...while - цикл з умовою поста. Оператори переривання continue, break, return, System.exit. Тема 11. Об'єктне проектування Спадкоємство і поліморфізм. Uml-діаграмі. Функції. Модифікатори. Передача примітивних типів у функції. Локальні і глобальні змінні. Модифікатори доступу і правила видимості. Заслання this. Передача посилальних типів у функції. Проблема зміни заслання усередині підпрограми. Спадкоємство. Суперкласи і підкласи. Перевизначення методів. Спадкоємство і правила видимості. Зарезервоване слово super. Статичне і динамічне скріплення методів. Поліморфізм. Базовий клас Object. Конструктори. Зарезервовані слова super і this. Блоки ініціалізації. Видалення невживаних об'єктів і метод finalize. Проблема деструкцій для складно влаштованих об'єктів. Перевантаження методів. Правила сумісності посилальних типів як основа використання поліморфної коди. Приведення і перевірка типів. Рефакторінг. Reverse engineering - побудова uml-діаграм по розроблених класах. Тема 12. Найважливіші об'єктні типи Масиви. Колекції, списки, ітератори. Робота з рядками в Java. Рядки як об'єкти. Класи String, Stringbuffer і Stringbuilder. Робота з графікою. Виняткові ситуації. Обробка виняткових ситуацій. Ієрархія виняткових ситуацій. Оголошення типа винятковій ситуації і оператор throw. Оголошення методу, який може збуджувати виняткову ситуацію. Зарезервоване слово throws. Робота з файлами і теками. Тема 13. Спадкоємство: проблеми і альтернативи. Інтерфейси. Композиція Проблеми множинного спадкоємства класів. Інтерфейси. Відмінності інтерфейсів від класів. Проблеми спадкоємства інтерфейсів. Приклад на використання інтерфейсів. Композиція як альтернатива множинному спадкоємству. Тема 14. Додаткові елементи об'єктного програмування на мові Java Потоки виконання (threads) і синхронізація. Переваги і проблеми при роботі з потоками виконання. Синхронізація по ресурсах і подіях. Клас Thread і інтерфейс Runnable. Створення і запуск потоку виконання. Поля і методи, задані в класі Thread. Підключення зовнішніх бібліотек DLL."Рідні" (native) методи. Тема 15. Введення в мережеве програмування Коротка довідка по мові HTML. Аплети. Сервлети. Технологія JSP - Java Server Pages. Тема 16. Вбудовані класи Віди вбудованих класів. Вкладені (nested) класи і інтерфейси. Внутрішні (inner) класи. Локальні (local) класи. Анонімні (anonimous) класи і обробники подій. Анонімні (anonimous) класи і слухачі подій (listeners).
Базові підручники та навчальні посібники Основними навчальними посібниками, якими бібліотека академії 100-відсотково забезпечує студентів як денної, так і заочної форм навчання (в тому числі в елекртонному вигляді) є:
Нижче наведені інші аналогічні джерела, які також можна прочитати в системі Internet:
Наступні посібники можуть бути рекомендовані для додаткового вивчення, але є дуже рідкими виданнями, копії яких можно знайти в інтернеті:
10. Вязовик Н.А. Программирование на Java. - Интернет-университет информационных технологий - ИНТУИТ.ру, 2003 11. Иванов А.М. Использование и расширение Eclipse. - Интернет-университет информационных технологий - ИНТУИТ.ру, 2009
КомментарииКомментариев пока нет Пожалуйста, авторизуйтесь, чтобы оставить комментарий. |