Робоча навчальна програма з дисципліни Об’єктно-орієнтоване програмування, КНЕУ
« Назад МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТКафедра інформаційного менеджменту ЗАТВЕРДЖЕНО Вченою Радою університету Протокол № __ від __ _______р. Вчений секретар ___________________Кусий Ю.І. РОБОЧА НАВЧАЛЬНА ПРОГРАМА дисципліни "Об’єктно-орієнтоване програмування"(для бакалаврів спеціальності 6.080400 «Інтелектуальні системи прийняття рішень») УХВАЛЕНО: На засіданні кафедри інформаційного менеджменту Протокол № __ від __ ________р. Завідувач кафедри _________Галіцин В.К. КИЇВ КНЕУ 2005 Робоча навчальна програма дисципліни «Обєктно-орієнтоване програмування»(для бакалаврів спеціальності 6102 «Економічна кібернетика»)/ Укладач: Бєгун А.В. – К.: КНЕУ, 2006. – 44 с. 1. Вступ
Дисципліна “Об¢єктно-орієнтоване програмування” є вибірковим курсом підготовки бакалаврів із спеціальності «Економічна кібернетика». Мета вивчення дисципліни пов¢язана з формуванням у студентів теоретичних знань та практичних навичок використання об¢єктно-орієнтованої методології програмування задач соціально-економічного напрямку. В результаті вивчення дисципліни студенти повинні знати: - складові та зміст об¢єктно-орієнтованого підходу; - базові інгредієнти об¢єктно-орієнтованого програмування; - технологію побудови програмної системи в JDK, JBuilder; - основні конструкції мови Java; - класи та методи мови Java; - організацію вводу і виводу даних; - технологію програмування розподільних завдань;
Вміти: - складати прості програми на мові Java; - складати проекти програм у середовищі JBuilder для відповідної предметної області; - доводити програму з початкового коду до виконуючого додатку; - будувати відповідно конкретної задачі технологію проектування, кодування і реалізації програмної системи. Процес вивчення дисципліни базується на знаннях курсів: «Економічна кібернетика: модуль «Технології програмування», «Інструментальні засоби прикладного програмування». Результати вивчення дисципліни використовуються в курсах «Web-програмування», «Технології розробки програмних та інтелектуальних систем», «Прикладне програмне забезпечення». 2. Тематичний план дисципліни “Об’єктно-орієнтоване програмування”
3. Зміст дисципліни за темами
Розділ І. Об’єктно-орієнтована методологія створення програмних систем. Тема 1. Вступ до дисципліни Предмет, структура та зміст дисципліни. Структура складних систем. П'ять ознак складної системи. Об¢єктно-орієнтоване мислення. Обов¢язки та відповідальність. Ієрархія класів. Перевизначення методів. Обчислення та моделювання . Становлення об’єктного підходу та його компоненти: абстрагування, модульність, обмеження доступу, ієрархія, типізація, паралелізм, стійкість.
Тема 2. Теоретичні основи об’єктно-орієнтованого програмування Нова парадигма програмування. Об’єктна декомпозиция. Базові блоки об’єктно-орієнтованого програмування. Композиція. Наповнення.
Тема 3. Механізми розробки програм складної структури Динамічне зв’язування (поліморфізм). Метакласи. Делегування повноважень. Контейнерні класи. Параметризовані класи. Виключення.
Тема 4. Мова програмування Java. Перша програма на Java: як створювати об’єкт; примітивні типи і масиви; області бачення і знищення об’єктів; як створювати власні класи; функції, параметри і значення які повертаються; коментарі та вбудована документація. Технологія виконання програми на мові Java; середовище для компіляції та створення додатків в JDK та JBuilder. Тема 5. Інструментальне середовище JBuilder. Інтегроване середовище розробки: головне меню, панель інструментів. Проект. Створення нового додатку. Робота з дизайнерами: інструмент Screen Designer, створення обробника подій, меню Designer.
Тема 6. Управління ходом дій операторів програми. Використання операторів Java: приорітет, присвоювання, сполучення імен під час виклику методів; математичні оператори, оператори зрівняння, логичні оператори; порозрядні оператори і оператори зрушення; потрійний оператор “if-then”; оператори зведення до іншого типу; символьні позначення; таблиця приорітету операторів, повний набір операторів. Управління виконанням програми: значення true і false, if-else; цикли: do-while, for; оператор switch.
Тема 7. Ініціалізація і завершення дії змінних. Ініціалізація за допомогою конструктора. Перевантаження методів. Перевантаження з примітивними типами. Перевантаження та повернення значень. Конструктор без параметрів. Ключове слово this: виклик конструкторів з конструкторів. Особливості методу finalize().Ініціалізація членів класу: явна ініціалізація, ініціалізація конструктором. Ініціалізація масивів і багатомірних масивів.
Тема 8. Реалізація і спеціфікатори доступу. Пакет і його особливості. Створення унікальних імен пакетів. Бібліотека інструментів. Використання імпорту для зміни поведінки. Спеціфікатори доcтупу Java: public, private, protected . Інтерфейс і реалізація. Доступ до класів. Приклади. Тема 9. Успадкування в Java та його особливості. Сінтаксис, композиція та успадкування. Ініціалізація базового класу: конструктори з параметрами. Зв’язок композиції та успадкування: забезпечення вірного завершення, приховування імен. Вибір між композицією і успадкуванням: protected, розробка по крокам, перетворення типів при зростанні. Використання оператора final: незмінні дані та параметри, порожні константи, незмінні методи та класи. Ініціалізація і завантаження класів.
Тема 10. Динамічне зв’язування (поліморфізм). Сходяще перетворення: перегляд. Ігнорування типу об’єкту. Зв’язування метод –виклик, розширення. Перевизначення чи перевантаження. Абстрактні класи і методи. Конструктори і поліморфізм: порядок виклику конструкторів, успадкування і метод finalize(). Успадкування та його використання. “Чисте” успадкування. Динамічне визначення типів. Приклади.
Тема 11. Інтерфейси та внутрішні класи. Поняття інтерфейсу. “Множинне успадкування” в Java. Протиріччя імен при сумісності інтерфейсів. Розширення інтерфейсу. Групування констант. Ініціалізація полів інтерфейсу. Внутрішні класи в методах і областях бачення. Зв’язок з зовнішнім класом. Статичні внутрішні класи. Вкладені класи. Внутрішні класи і системи управління.
Тема 12. Обробка помилок і виключних ситуацій . Основні виключення. Параметри при створенні виключень.Обробка виключень:блок try, переривання та їх обробка. Створення власних виключень. Опис виключень. Перехват будь-якого виключення. Повторне збудження виключення. Стандартні виключення Java. Особистий випадок – RuntimeExeption. Заключні дії за допомогою finaly. Обмеження виключень. Конструктори. Відповідність виключенням.
Розділ ІІ. Розробка програмних систем складної структури
Тема 13. Система вводу-виводу в Java. Клас File: внутрішні класи, які не мають імені, створення директорій. Ввод-вивід: типи вхідних потоків InputStream; типи вихідних потоків OutputStream; додаток властивостей і корисних інтерфейсів; читання з вхідного потоку за допомогою FilterInputStream. Запис у вихідний потік за допомогою FilterOutputStream. Класи для читання і запису даних: Reader, Writer. Типове використання потоків вводу-виводу: вхідні та вихідні потоки. Стандартний ввод-вивід; стиснення даних. Архіви Java.
Тема 14. Створення вікон і аплетів. Простий аплет: обмеження аплетів, переваги аплетів, каркаси додатків.Запуск аплетів в Web-броузері. Використання інструменту Appletviewer. Тестування аплетів. Запуск аплетів з командної строки. Інструмент для показу програм на екрані. Використання Провідника Windows. Створення кнопки. Обробка подій. Багатострокові текстові поля. Управління розташуванням компонентів. Полярне, послідовне, табличне, абсолютне і блочне розташування. Модель подій бібліотекі Swing: типи подій, обробка декілька подій одночасно. Каталог компонентів бібліотеки Swing: кнопки, значки, підказки, рамки, флажки, комбіновані списки тощо. Тема 15. Розподільне програмування. Програмування в мережах. Ідентифікація машини. Сервери та клієнти. Сокети. Простий сервер і клієнт. Обслуговування вільної кількості клієнтів. Використання адресів URL з аплету. Читання файлу з сервера. Мова Java і бази даних (драйвер JDBC). Сервлети і багатозадачність. Обробка сеансів. Серверні сторінки Java (JSP). Система CORBA.
Тема 16. Напрямки розвитку об’єктно-орієнтованого програмування. Проблеми програмування. Основні компоненти .NET Framework. Міжмовна інтеграція в середовищі .NET. Перспективи використання технологій об’єктно-орієнтованого програмування.
5. Плани семінарських (практичних, лабораторних) занять
Теми для проведення практичних занятьПрактичні заняття проводяться за ключовими темами дисципліни у вигляді розв’язання прикладів, які запропоновані викладачем, та подальшому обговоренню результатів їх розв’язку. Кожному студенту пропонується окреме завдання, яке оцінюється стосовно п. 9.(Див. далі). Заняття 1. Технологія складання і виконання програми в мові Java. Основні питання, які виносяться на заняття1. Утілити командної строки для Java . 2. Компіляція і запуск програм в Java . 3. Компіляція Java-додатків. 4. Компіляція аплетів. 5. Літерали в Java : чисельні, символьні, строкові змінні. 6. Типи даних і змінних: змінні цілого типу, з плаваючею крапкою, булеві та символьні змінні. 7. Типи даних і змінні: об’ява змінних, строкові змінні. 8. Операції та вирази: пріоритетність операцій, унарні та бінарні операції з різними числами, приведення типів. 9. Оператори управління в Java: вирази відношень. 10. Мова Java: об’ява класів. 11. Мова Java: об’ява об’єктів.
Заняття 2. Інструменти реалізації та спеціфікатори доступуОсновні питання, які виносяться на заняття. 1. Класи та об’єкти: специфікатори доступу. 2. Класи та об’єкти: успадкування, зарезервовані ідентифікатори. 3. Класи та об’єкти: поліморфізм. 4. Статичні члени класу. 5. Класи та об’єкти: конструктори private. 6. Абстрактні класи, об’ява та використання абстрактного класу. 7. Інтерфейси: використання інтерфейсів. 8. Інтерфейси: побудова інтерфейсів. 9. Інтерфейси: дані інтерфейсів.. 10. Пакети Java. Стандартні пакети Java. 11. Програмування з використання пакетів: ім’я пакету , як скласти пакет.
Заняття 3. Можливості використання успадкування в складних структурахОсновні питання, які виносяться на заняття. 1. Мова Java: успадкування класів. 2. Мова Java: підклас і суперклас. 3. Класи та об’єкти: успадкування, зарезервовані ідентифікатори. 4. Класи та об’єкти: поліморфізм. 5. Абстрактні класи, об’ява та використання абстрактного класу. 6. Побудова добре структурованих об’єктно-орієнтованих систем. 7. Об’єктно-орієнтований метод організації управління процесом розробки програмної системи. 8. Характеристики об’єкту. 9. Як описати поведінку однакових об’єктів? 10. Які властивості визначають стан об’єкту? 11. На яких принципах будується ієрархія об’єктів? 12. Шість типів ієрархії класів та їх характеристика. Заняття 4. Помилки, виключні ситуації та методи їх обробкиОсновні питання, які виносяться на заняття. 1. Поняття виключних ситуацій. Обробка виключних ситуацій. 2. Програмування виключних ситуацій. 3. Блок finally. Вкладені блоки try. 4. Бібліотека класів виключних ситуацій: підкласи Error, Excaption, RuntimeException.
Теми для виконання лабораторних робіт
Лабораторні роботи виконуються за єдиною сквозною темою, яка обирається студентом особисто, узгоджується з викладачем і виконується у відповідності з назвою лабораторної роботи. Лабораторна робота №1. “Організація виконання програми з одним класом на мові Java”Мета роботи. Навчитися складати і виконувати в середовищі Java простішу програму з конкретної обраної теми. Шляхи досягнення мети. Вивчити теми 1-3 програми дисципліни. Вивчити технологію виконання простої програми в середовищі Java. Скласти фрагмент програми за обраною темою з одним або більш класом. Виконати програму на комп’ютері. Скласти звіт і захистити його. Лабораторна робота 2 . “Організація виконання програми в середовищі JBuilder”Мета роботи. Навчитися складати і виконувати в середовищі JBuilder програму з конкретної обраної теми. Шляхи досягнення мети. Вивчити технологію виконання програми в середовищі JBuilder. Скласти фрагмент програми за обраною темою з більш чим з одним класом. Виконати програму на комп’ютері. Скласти звіт і захистити його. Лабораторна робота №3. “Організація інтерфейсу та внутришніх класів на мові Java”Мета роботи. Навчитися складати і виконувати в середовищі Java інтерфейсу з конкретної обраної теми. Шляхи досягнення мети. Вивчити теми 4-7 програми дисципліни. Вивчити технологію складання інтерфейсу і його використання при програмуванні конкретних завдань. Скласти фрагмент програми за обраною темою з ініціалізацією полів інтерфейсу. Виконати програму на комп’ютері. Скласти звіт і захистити його. Лабораторна робота №4. “Організація вікон та аплетів на мові Java”Мета роботи. Навчитися складати і виконувати в середовищі Java вікон і аплетів з конкретної обраної теми. Шляхи досягнення мети. Вивчити теми 8-10 програми дисципліни. Вивчити технологію програмування вікон, кнопок, аплетів в середовищі Java. Скласти фрагмент програми за обраною темою з одним або більш вікном чи аплетом. Виконати програму на комп’ютері. Скласти звіт і захистити його. Використовуючи об¢єктно-орієнтовану мову програмування Javaабо мовне середовище JBuilder, виконати лабораторні роботи 1,2,3 за нижченазваною темою.
Блок І. Організація файлової системи управління учбовим процесом. І.1. Розробка програмної системи бази даних “Викладачі”. І.2. Розробка програмної системи бази даних “Студенти”. І.3. Розробка програмної системи бази даних “Факультети”. I.4. Розробка програмної системи бази даних “Спеціальності”. І.5. Розробка програмної системи бази даних “Спеціалізації”. І.6. Розробка програмної системи бази даних “Дисципліни”. І.7. Розробка програмної системи бази даних “Список населених пунктів”. І.8. Розробка програмної системи бази даних “Кафедри”. І.9. Розробка програмної системи бази даних “Аудиторії”. І.10. Розробка програмної системи бази даних “Пільги”.
Блок ІІ. Оперативне управління учбовим процесом. ІІ.1. Розробка програмної системи аналізу контингенту студентів по запитам за місцем проживання. ІІ.2. Розробка програмної системи аналізу контингенту студентів по запитам за роком народження. ІІ.3. Розробка програмної системи аналізу контингенту студентів по запитам за сімейним станом. ІІ.4. Розробка програмної системи аналізу контингенту студентів по запитам за успішністю. ІІ.5. Розробка програмної системи складання статистичного звіту по зведеному контингенту студентів. ІІ.6. Розробка програмної системи формування екзаменаційних відомостей. ІІ.7. Розробка програмної системи формування додаткових екзаменаційних відомостей. ІІ.8. Розробка програмної системи аналітичного аналізу успішності студентів по дисциплінам. ІІ.9. Розробка програмної системи зведеного аналізу успішності по дисциплінам. ІІ.10. Розробка програмної системи аналізу успішності студентів по викладачам. ІІ.11. Розробка програмної системи аналізу успішності студентів по кафедрам. ІІ.12. Розробка програмної системи аналізу успішності студентів по факультетам. ІІ.13. Розробка програмної системи рейтингового аналізу успішності студентів по дисциплінам. ІІ.14. Розробка програмної системи рейтингового аналізу успішності студентів в групі. ІІ.15. Розробка програмної системи рейтингового аналізу успішності студентів по курсу. ІІ.16. Розробка програмної системи рейтингового аналізу успішності студентів по факультету. ІІ.17. Розробка програмної системи обліку студентів за контрактом. ІІ.18. Розробка програмної системи обліку студентів-боржників по оплаті за контрактом. ІІ.19. Розробка програмної системи аналізу складової студентів за контрактом по групам. ІІ.20. Розробка програмної системи аналізу складової студентів за контрактом по курсам. ІІ.21. Розробка програмної системи розподілу іногородніх студентів в гуртожитку. ІІ.22. Розробка програмної системи формування наказу про стипендію. ІІ.23. Розробка програмної системи формування переводних наказів та академвідпусток. ІІ.24. Розробка програмної системи формування наказів розподілу студентів на практику. ІІ.25. Розробка програмної системи формування наказів про зарахування та відрахування студентів. ІІ.26. Розробка програмної системи надання довідок про належність до складу студентів. ІІ.27. Розробка програмної системи формування додатків по диплому бакалавра. ІІ.28. Розробка програмної системи формування додатків по диплому магістра. ІІ.29. Розробка програмної системи формування навчальної картки студента. ІІ.30. Розробка програмної системи формування відомостей про студентів, які отримали “червоний” диплом. ІІ.31. Розробка програмної системи формування відомостей про студентів, які рекомендовані до вступу в аспірантуру.
Блок ІІІ. Планування, аналіз та методичне забезпечення учбового процесу. ІІІ.1. Розробка програмної системи формування навчального плану бакалаврів по спеціальностям і формам навчання. ІІІ.2. Розробка програмної системи формування навчальних планів магістрів. ІІІ.3. Розробка програмної системи формування навчальних планів довузівскої підготовки. ІІІ.4. Розробка програмної системи формування навчальних планів другої освіти. ІІІ.5. Розробка програмної системи нормативного навантаження по дисциплінам. ІІІ.6. Розробка програмної системи педагогічного навантаження по викладачам. ІІІ.7. Розробка програмної системи зведеного навантаження по кафедрам факультету. ІІІ.8. Розробка програмної системи розподілу учбового часу по нормативним дисциплінам. ІІІ.9. Розробка програмної системи формування робочих планів по нормативним дисциплінам. ІІІ.10. Розробка програмної системи аналізу реєстру аудиторного фонду університету. ІІІ.11. Розробка програмної системи забезпечення дисципліни штатними викладачами. ІІІ.12. Розробка програмної системи аналізу науково методичного забезпечення дисципліни. ІІІ.13. Розробка програмної системи аналізу сервісу дистанційного навчання. ІІІ.14. Розробка програмної системи складання плану-графіка учбового процесу. ІІІ.15. Розробка програмної системи складання розкладу учбового процесу. ІІІ.16. Розробка програмної системи актуалізації розкладу учбового процесу. ІІІ.17. Розробка програмної системи аналізу контингенту викладачів за роком народження. ІІІ.18. Розробка програмної системи аналізу контингенту викладачів за місцем проживання. ІІІ.19. Розробка програмної системи аналізу контингенту викладачів за сімейним станом. ІІІ.20. Розробка програмної системи аналізу викладачів за науковим та педагогічним направленнями та стажем. ІІІ.21. Розробка програмної системи аналізу викладачів закріпленням за кафедрами. ІІІ.22. Розробка програмної системи формування статистичного звіту по зведеному контингенту викладачів. ІІІ.23. Розробка програмної системи формування додаткової інформації по запиту. 6. Самостійна робота студентів
Для самостійного вивчення матеріалу програмою дисципліни передбачено виконання завдань, обсяг і зміст яких охоплює основні питання усіх тем. По кожній темі студент зобов’язаний виконати всі завдання, скласти звіт і захистити його на персональному комп’ютері. Тема 1. Вступ до дисципліни. 1. Для коду з класом class ATypeName{/* Тіло класу */} створити програму, яка пригодна для компіляції та запуску. 2. Використовуючі клас class DataOnly { int i; float f; boolean b; } , створити програму, яка пригодна для компіляції та запуску. 3. За допомогою класу DataOnly даним з цього класу присвоїти значення, а потім надрукувати їх в методі main(). 4. Скласти програму, яка влючає метод storage(): int storage (String s) { return s.length()*2; } . 5. Скласти програму, яка пригодна для компіляції та запуску і має в себе фрагмент коду з класом StaticFun: class StaticFun { static void incr() {StaticTest.i++; }}. 6. Скласти програму, яка друкує три фрагменти командної строки. При складанні програми використовувати масив строк String. 7. Скласти програму, яка пригодна для виконання і використовує клас AllTheColorsOfTheRainbow: class AllTheColorsOfTheRainbow { int anIntegerRepresentingColors; void changeTheHueOfTheColors(int newHue) { //… } //… } 8. Для програми HelloDate.java import java.util.*; public class HelloDate { public static void main(String[] args) { System.out.println(“Привіт, це:”); System.out.println(new Date()); } } ///:~ Виконати команду javadoc і проглянути за допомогою Web-броузера. 9. Запишить клас DocTest в файл, який можна скомпілювати, а потім пропустити його через javadoc. Перевірити отриману інформацію за допомогою Web-броузера. 10. Додайте список HTML з підпунктами до документації, яка створена в завданні 9. 11. Скомпілювати програму: import java.util.*; public class HelloDate { public static void main(String[] args) { System.out.println(“Привіт-це ми”); System.out.println(new Date()); }} - за допомогою javac і виконати за допомогою java. Якщо не вико- ристовувати JDK, а інше середовище розробки програми, то треба виконати компіляцію і запуск програми з цього середовища. 12. До програми з прикладу 11 додайте документацію в коментарях. Із’яти цю документацію з HTML-файлу за допомогою javadoc і отриману сторінку проглянути за допомогою Web-броузера.
Тема 2. Управління ходом дій операторів програми. 1. Нехай маємо два вирази: а) і б) Скласти дві програми з включенням кожного з виразів і перевірити результат кожного з них. 2. Перенести методи: а) static int ternary(int i) { return i<10?i*100:i*10;} б) static int alternative(int i) {if (i<10) return i*100; else return i*10; } в працюючу програму і виконати її. 3. Перенести методи: а) static int test (int testval, int target) { int result=0; if (testval>target) result=+1; else if(testval<target) result= -1; else result=0; return result; } б) static int test (int testval, int target) { int result=0; if (testval>target) return +1; else if(testval<target) return -1; else return 0; } в працюючу програму і виконати її. 4. Скласти програму, яка виводить числа від одиниці до ста. 5. З завдання 4 при досягненні числа 43 програма закінчує роботу. При складанні програми використовуйте ключове слово break і оператор return. 6. Напишить метод, який використовує всі операції відношень для двох строк. Строки представляються параметрами в методі. Використовуйте операції “==”, “!=” і метод equals() для проведення перевірки. Цей метод викликається з методу main() і має декілько різних строк String. 7. Створити програму, яка генерує 30 різних цілих значень. Для кожного значення використовуйте конструкцію if-else для визначення більш, менш або рівності будь-якому випадковому числу. 8. Для завдання 7 замінити програму так, щоб код програми був розміщений в нескінченому циклі while. Програма повина працювати до натиску клавіш Ctrl+C. 9. Створити програму, яка використовує два вкладених циклу і оператор цілочисельного ділення (%) для пошуку простих чисел. 10. Створити конструкцію switch, яка виводить повідомлення для кожної пропозиції case і розмістити цю конструкцію в цикл for, який послідовно перевіряє кожну з існуючих пропозицій case. Розмістити оператор break після кожної пропозиції case і перевірити отриману дію, потім знищити оператори break і надати пояснення отриманому результату. Тема 3. Ініціалізація та завершення дії змінних. 1. Створити клас з конструктором без параметрів, який виводить на екран повідомлення. Створити об’єкт цього класу. 2. Додайте до класу в завданні 1 перевантажений конструктор, уякого в якості параметра строка String. 3. Необхідно скласти масив посилань на об’єкти класу, який створений в завданні 2, але не створювати об’єкти для приєднання до масиву. При виконанні програми необхідно контролювати: чі не з’явилося на екрані повідомлення конструктора. 4. Завершити завдання 3, приєднавши до посилань з масиву реальні об’єкти. 5. Необхідно створити масив зі строк String і присвоїти строку кожному елементу масива. Масив вивести на друк за допомогою циклу for. 6. Створити клас Prep (викладач) з перевантаженим методом bark (виступ). Метод повинен бути перевантажений в залежності від різноманітних примітивних типів даних і виводити повідомлення в залежності від версії (лекція, семінар, консультація) перевантаженого методу. Напишить метод main(), який викликає всі методи. 7. Створити клас без конструктора, а потім в методі main() створить об’єкт цього класу, щоб з’ясувати автоматичне синтезування конструктора по замовленню. 8. Створити клас з двома методами. В першому методі двічі зробити виклик іншого методу: один раз без використання ключового слова this, а другий – з його використанням. 9. Створити клас з двома (перевантаженими) конструкторами. Використовуючі ключове слово this , викликати другий конструктор з першого. 10. Створити клас з методом finalize(), який виводить повідомлення. В методі main() створить об’єкт Вашого класу. Пояснити поведінку програми. 11. Створити клас з ім’ям Tank (ємкість), який можна наповнити і зпустошити, і у якого є умова знищення – він повинен бути порожнім перед знищенням. Напишить метод finalize(), який перевіряє цю умову знищення. В методі main() перевірте всі можливі випадки використання Вашого класу. 12. Запустити програму Garbage.java з різними параметрами командної строки: “gc”, “finalize”або “all”. Повторити програму декількА разів і знайдіть закономірності в її результатах. Змінити програму, щоб метод System.runFinalization() виконувався перед викликом метода System.gc() та перегляньте результати.
Тема 4. Реалізація і спеціфікатори доступу 1. Створить програму, в якої створюється об’єкт класу ArrayList, алене імпортується пакет java.util.*. 2. Перетворити фрагмент коду : import mypackage.*; //… Myclass m=new MyClass(); в компілюючий і виконуючий набір файлів Java. 3. З фрагменту коду import com.bruceeckel.*; import java.util.*; зробить програму, при цьому перевірте чи існують протиріччя дій. 4. Узагальніти клас : package com.bruceeckel.tools.; public class P { public static void rint(String s) { System.out.print(s); } public static void rintln(String s) { System.out.println(s); } }///:~ додавші до нього всі перевантажені версії методів rint() і rintln(), які необхідні для виводу всіх примітивних типів Java. 5. Змінити пропозицію import в файлі TestAssert.java, щоб включити і виключити механізм контролю: import com.bruceeckel.tools.*; public class TestAssert { public static void main(String[] args) { Assert.is_true((2+2) == 5); Assert.is_false((1+1) == 2); Assert.is_true((2+2) == 5, “2+2==5”); Assert.is_false((1+1) == 2, “1+1 !=2”); } }///:~ 6. Створить клас, в якому існують дані та методи із спеціфікаторами public, private, protected, а також “подружні”. 7. Створити об’єкт класу прикладу 5 і переглянути повідомлення, які видає компілятор при звернені до всіх членів класу. Пам’ятайте, що класи в поточній директорії є частиною пакету “за замовчуванню”. 8. Створить клас з protected даними. Створить другий клас в цьому ж файлі, який маніпулює protected даними з першого класу. 9. Змінити клас public class Cookie { public Cookie() { System.out.println(“”); } protected void bite() { System.out.println(“bite”); } } так, щоб метод bite() не був відкритим. 10. З файлу Lunch.java class Soup { private Soup() { } // (1) Дозвіл на створення об’єктів // в статичному методі public static Soup makeSoup() { return new Soup(); } // (2) Створюємо один статичний об’єкт // і по вимозі повертаємо посилання на нього. private static Soup ps1=new Soup(); public static Soup access() { return ps1; } public void f() { } } class Sandwich { // Використовує клас Lunch void f() { new Lunch(); } } // В файлі може бути визначений тільки один // public клас: public class Lunch { void test() { Soup priv2 = Soup.makeSoup(); Sanwich f1 = new Sandwich(); Soup.access.f(); } } ///:~ створити клас з ім’ям ConnectionManager, який керує обмеженим масивом об’єктів Connection. Програмист не повинен впряму створювати об’єкти Connection, а може отримувати їх за допомогою статичного методу в класі ConnectionManager. Коли у класі закінчиться запас об’єктів, то він повинен повертати посилання null. Перевірте класи в методі main(). 11. Створити наступний файл в локальній директорії package c05.local; class PackagedClass() { public PackagedClass() { System.out.println(“Створюємо клас в пакеті”); } } ///:~ Потім створити наступний файл в директорії c05.fore package c05.fore; import c05.local.*; public class Fore() { public static void main (String[] args) { PackagedClass pc = newPackagedClass (); } } ///:~ Пояснить, чому компілятор видає повідомлення про помилку і що треба зробити?
Тема 5. Успадкування в Java та його особливості. 1. Створити два класи з іменами А та В, з конструкторами за замовченню (порожні списки параметрів), які об’являють про своє виконання. Успадкуйте новий клас С від А і створить член класу В у середені класу С. Створить об’єкт класу С. Не визначайте конструктор для класу С. Створить об’єкт для класу С і перегляньте результат 2. Створить простий клас. В другому класі визначити поле для об’єкта першого класу. Використовуйте „ледащу” ініціалізацію для створення цього класу. 3. Успадкуйте від класу Detergent новий клас. Перевизначте метод scrub() і додайте новий метод з ім’ям sterilize(). 4. Створити базовий клас з єдиним конструктором не за замовченню і похідний клас з конструктором і за замовченню і з параметрами. В конструкторі похідного класу викличте конструктор базового класу. 5. Створити клас Root, який містить екземпляри кожного з класів (також створеними вами) comp1, comp2, comp3. Зробить клас Stem від класу Root так, щоб в ньому містилися екземпляри кожного з вищеназваних класів. У всіх класах повинен бути конструктор, який виводить повідомлення про свій клас. 6. Створить клас з методом, який був перевантажений три рази. Успадкуйте новий клас, додайте ще один перевантажений метод і покажить, що всі чотири методи доступні у похідному класі. 7. В файлі Car.java додайте метод service() до класу Engine і викличте цей метод з метода main(). 8. Створить клас в пакеті . Цей клас повинен мати метод з спеціфікатором protected. По за пакетом спробуйте викликати метод protected та пояснити, що відбувається. Потім успадкуйте від вашого класу і викличте метод protected з іншого методу вашого похідного класу. 9. Створить клас з ім’ям Amfibia. Від цього класу успадкуйте клас Frog. На Ваш погляд в базовому класі розмістити декілька методів. В методи main() створити об’єкт Frog, провести східне перетворення до Amfibia і довести що всі методи працюють. 10. Створить клас з незмінним (final) методом. Успадкуйте від цього класу і спробуйте перевизначити цей метод.
Тема 6. Динамічне зв’язування (поліморфізм) Маємо програму:Shapes.java class Shape { void draw() {} void erase() {} } class Circle extends Shape { void draw() { System.out.println(“Circle.draw()”); } void erase() { System.out.println(“Circle.erase()”); } } class Square extends Shape { void draw() { System.out.println(“Square.draw()”); } void erase() { System.out.println(“Square.erase()”); } } class Triangle extends Shape { void draw() { System.out.println(“Triangle.draw()”); void erase() { System.out.println(“Triangle.erase()”); } } public class Shapes { public static Shape randShape() { switch((int)(Math.random()*3)) { default: case 0: return new Circle(); case 0: return new Circle(); case 0: return new Circle(); } } public static void main(String[] args) { Shape[] s = new Shape[9]; for (int i=0;i<s.length;i++) s[i] = randShape(); for (int i=0;i<s.length;i++) s[i].draw(); } } ///:~ 1. До базового класу програми Shapes.java додайте новий метод, який друкує повідомлення, але не перевизначайте його в похідних класах. Пояснить, що відбувається. Після цього перевизначити його в одному з похідних класів, але не у всіх, і переглянути, що відбувається. По завершені необхідно перевизначити метод для усіх похідних класів. 2. Додайте новий підтип Shape до програми Shapes.java і перевірте в методі main(), що поліморфізм робить вірно для вашого нового типу, також як і до старих типів. 3. Створить ієрархію успадкування. В якості основи обрати різноманітні типи викладачів. Базовим класом буде Vicld (викладач), а похідними класами будуть Prof(професор), Docent (доцент), тощо. В базовому класі визначити декілька загальних методів, які потім перевизначити в похідних класах для того , щоб вони виробили дії, які характерні для визначеного типу об’єкту. Створить масив з об’єктів Vicld, заповнити його різноманітними похідними типами і викличте методи базового класу, щоб побачити результати роботи програми. 4. З завдання 3 зробить так, щоб клас Vicld став абстрактним (abstract) класом. Зробить також деякі методи класу Vicld абстрактними там де це має зміст. 5. Створить клас і зробить його abstract таким, щоб він не мав ні єдиного абстрактного методу. Потім перевірте неможливість створення екземпляру цього класу. 6. Створить трьохрівневу ієрархію успадкування. В кожному класі ієрархії повинен бути метод finalize(), який викликає метод finalize() базового класу. Покажить, що ваша ієрархія працює. 7. Створить базовий клас з двома методами. З першого методу викличте другий метод. Успадкуйте клас і перевизначте другий метод. Створить об’єкт похідного класу, проведіть східне перетворення до базового типу і викличте перший метод. Поясніть події, що відбуваються. 8. Створить базовий клас з визначенням методу abstract print(), який перевизначається похідними класами. Перевизначена версія методу виводить значення цілого числа int, який описаний в похідному класі. В точці визначення цієї змінної надайте їй нульове значення. В конструкторі базового класу викличте цей метод. В методі main() створить об’єкт похідного типу , а потім викличте його метод print().Поясніть події, що відбуваються. 9. Створить абстрактний клас без методів. Зробить від нього клас і додайте метод. Створить статичний метод, який має параметр вказівку на базовий клас. Проведіть низрухоме перетворення до похідного типу і викличте цей метод. В методі main() покажить, як це працює. Після цього розмістити в базовому класі абстрактне визначення методу, щоб необхідність низрухомого перетворення зникла. 10. Задачу 3 змінити так, щоб програма демонструвала порядок ініціалізації базових і похідних класів. Потім додайте об’єкти-члени і до базових і до похідних класів і покажить, в якому порядку проходить їх ініціалізація при конструюванні об’єкту.
Тема 7. Інтерфейси та внутрішні класи 1. Створить інтерфейс, який містить три методи в його власному пакеті. Реалізуйте цей інтерфейс в іншому пакеті. 2. Створить три інтерфейси і в кожному по два методи. Успадкуйте новий інтерфейс від цих трьох і додайте до нього новий метод. Створить клас, успадкований від реального базового класу, в якому новий інтерфейс буде реалізований. Потім напишить чотири методи, кожний з яких бере один з інтерфейсів в якості параметра. В методі main() створить об’єкт Вашого класу і передайте його по черзі у всі методи. 3. Створить програму, яка імпортує і використовує Month2.java. 4. Створить інтерфейс з одним методом в його власному пакеті. Створить клас в окремому пакеті. Додайте до нього захищений внутрішній клас, який реалізує інтерфейс.В третьому пакеті успадкуйте від Вашого класу і в середену метода повернить об’єкт захищеного внутрішнього класу. 5. Створить інтерфейс з одним методом і реалізуйте його. Визначте внутрішній клас в середені метода, який повертає вказівку на ваш інтерфейс. 6. Повторити задачу 5 , але з визначенням внутрішнього класу в області бачення, яка знаходиться в середені методу . 7. Створить закритий внутрішній клас, який реалізує відкритий інтерфейс. Напишить метод, який повертає вказівку на екземпляр закритого внутрішнього класу. Покажить, що внутрішній клас повністю схований. 8. Створить клас у якого є конструктор з параметрами. Створить другий клас з методом, який повертає вказівку на перший клас. 9. Створить клас, який містить статичний внутрішній клас. В методі main() створить екземпляр внутрішнього класу. 10. Створить клас з внутрішнім класом. В окремому класі створить екземпляр внутрішнього класу.
Тема 8. Обробка помилок і виключних ситуацій 1. Створить клас з методом main(), який збуджує виключення типу Exception з блоку try. Задайте в конструкторі Exception строковий параметр. Перехопить виключення в пропозиції catch і надрукуйте його текстовий параметр. Додайте пропозицію finally і надрукуйте з нього повідомлення. 2. Створить свій власний клас виключення за допомогою ключового слова extends. Напишить конструктор, який бере строковий параметр і зберігає цей параметр в середені об’єкту за допомогою посилання на об’єкт String. Напишить метод, який друкує цю строку. Зробить нову пропозицію try-catch для перевірки нового виключення. 3. Визначити посилання на об’єкт і надайте йому значення null. Cпробуйте викликати метод об’єкту за допомогою цього посилання. Потім вставте цей код в пропозицію try-catch і перехопить виключення. 4. Створить клас з двома методами, f() і g(). В методі g() збуджуйте виключення того типу, яке ви визначили раніше. В методі f() викличте g(), перехопить виключення і в пропозиції catch збуджуйте нове виключення. Перевірте цей код в методі main(). 5. Створить три нових типа виключень. Напишить клас з методом, який збуджує всі три. В методі main() викличте цей метод , користуючись однією пропозицією catch, яке може перехопити всі три виключення. 6. Напишить програму, яка збуджує і перехоплює виключення ArrayIndexOutOfBoundsException(вихід за межу масиву). 7. Створить програму, яка використовує модель поновлення за допомогою циклу while. Цикл повторюється поки виключення не закінчує збуджуватися. 8. Створить ієрархію з трьох виключень. Далі зробить базовий клас А з методом, який збуджує виключення і яке є основою ієрархії. Успадкуйте клас В від А і перевизначте метод так, щоб він збуджував виключення з другого рівня ієрархії. Аналогічно зробить при успадкуванні класу С від В. В методі main() створить клас С, проведіть східне перетворення до класу А, а потім викличте метод. 9. Продемонструйте, що конструктор успадкованого класу не може перехопити виключення, які збуджуються конструктором базового класу. 10.В завданні 5 додайте пропозицію finally. Перевірте, що пропозиція виконується у випадку збудження NullPointerException.
Тема 9. Система вводу/вивіду в Java. 1. Відкрийте текстовий файл, який можна прочитати по строково. Зчитуйте з нього по одній строчки String і помістить отриману інформацію в список LinkedList. Надрукуйте всі строки у зворотньому порядку, використовуючі можливості класу LinkedList. 2. Модифікуйте завдання 1 так, щоб ім’я файлу з обробляємим текстом передавалося з командної строки. 3. Модифікуйте завдання 2 так, щоб всі зчитані строки перетворилися у верхній регістр букв, і надрукуйте результат в стандартний вивід System.out. 4. Модифікуйте завдання 2 так, щоб програма також обробляла додаткові аргументи командної строки, як слова для пошуку в файлі. Надрукуйте строки, де були знайдені вказані слова. 5. Створить клас з ім’ям SortedDirList, конструктор якого приймає інформацію про шлях файлу і на основі цієї інформації складає відсортований список файлів у вказаній директорії. Створить два перевантажених метода list(), один з яких повинен повертати весь список файлів, а другий – підмножину списку в залежності від переданого йому параметра. Додайте в клас метод size(), який приймає в якості параметра ім’я файлу і повертає розмір цього файлу. 6. Змінити програму DirList.java так, щоб фільтр імен файлів FilenameFilter сам відкривав файли і визначав їх придатність до списку файлів. Основою для цього є їх внутрішній зміст і допоміжні аргументи командної строки: програма DirList.java import java.io.*; import java.util.*; import com.bruceeckel.util.*; public class DirList { public static void main(String[] args) { File pach = new File(“.”); String[] list; if (args.length ==0) list = path.list(); else list = path.list(new DirFilter(args[0]))ж Arrays.sort(list, new AlphabeticComparator()); for (int i=0; i<list.length; i++) System.out.println(list[i]); } } class DirFilter implements FilenameFilter { String = afn; DirFilter(String afn) {this.afn = afn;} public boolean accept(File dir, String name) { String f = new File(name).getName(); Return f.index0f(afn) != -1; } } ///:~ 7. Для програми WordCount.java import java.io.*; import java.util.*; class Counter { private int i=1; int read() {return i;} void increment() { i++; } } public class WordCount { private FileReader file; private StreamTokenizer st; // Таблиця TreeMap зберігає ключі відсортованими private TreeMap counts = new TreeMap(); WordCount(String filename) throws FileNotFoundException { try { file = new FileReader(filename); st = new StreamTokenizer(new BuferedReader(file)); st.ordinaryChar(`.`); st.ordinaryChar(`-`); } cath(FileNotFoundException e ) { System.err.println( “Неможливо відкрити файл” + filename ); throw e; } } void cleanup() { try { file close(); } catch (IOException e) { System.err.println( “Неможливо виконати file.close()”); } } void countWords() { try { while(st.nextToken() != StreamTokenizer.TT_EOF) { String s; switch(st.ttype) { case StreamTokenizer.TT_EOL; s = new String(“EOL”); break; case StreamTokenizer.TT_NUMBER; s = Double.toString(st.nval); break; case StreamTokenizer.TT_WORD; s = st.sval; break; default: // s = String.value0f((char)st.ttype); } if (counts.containsKey(s)) ((Counter)counts.get(s).increment(); else counts.put(s. new Counter()); } } catch (IOException e) { System.err.println( “Помилка при виклику метода st.nextToken(); } } Collection values() { return counts.values(); } Set keySet() {return coun.keySet(); } Counter getCounter(String s) { return (Counter)counts.get(s); } public static void main(String[] args) throws FileNotFoundException { WordCount wc = new WordCount(args[0]); wc.countWords(); Iterator keys = wc.keySet().iterator(); while(keys.hasNext()) { String key = (String)keys.next(); System.out.println(key + “:” + wc.getCounter(key).read()); } wc.cleanup(); } } ///:~ 7.1. Змінити програму так, щоб вона сортувала слова за алфавітом. 7.2. Змінити програму так, щоб вона використовувала клас зі строкою String і лічільником для кожного окремого слова, а також множину Set для зберігання списку слів.
Тема 10. Створення вікон і аплетів. Існує клас Console: package com.bruceeckel.swing; import javax.swing.*; import java.awt.event.*; public class Console { public static String title(Object o) { String t = o.getClass().toString(); if (t.index0f(“class”) != -1) t = t.substring(6); return t; } public static void setupClosing(Jframe frame) { frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void run( Jframe frame, int width, int height) { setupClosing(frame); frame.setSize(width,height); frame.setVisible(true); } public static void run( JApplet applet, int width, int height) { Jframe frame = new JFrame (title(applet)); setupClosing(frame); frame.getContentPane(), add(applet); frame.setSize(width,height); applet.init(); applet.start(); frame.setVisible(true); } public static void run( JPanel panel int width, int height) { Jframe frame = new Jframe (title(panel)); setupClosing(frame); frame.getContentPane(), add(panel); frame.setSize(width,height); frame.setVisible(true); } } ///:~ 1. Створити аплет/додаток з використанням класу Console. Розмістити на форму текстове поле і три кнопки. При натисканні кожної кнопки В текстовому полі повинен з’явитися унікальний текст для кожної кнопки. 2. Для аплету , який створений в завданні 1, додати флажок. Обробити його подію і розмістити в текстове поле відповідний текст. 3. Створити аплет/додаток з використанням інструменту Console. В НТМL документації на сайті java.sun.com знайти опис текстового полю з паролем JpasswordField і додайте цей компонент на форму. Якщо користувач набирає вірний пароль, то необхідно вивести вікно з підтвердженням цього повідомлення, використовуючи функції класу JOptionPane. 4. Створить аплет/додаток з використанням класу Console і додайте на форму всі компоненти, які визначає метод addActionListener. Зареєструйте слухача для всіх компонентів і виведіть повідомлення про кожну подію в спеціальне текстове поле. 5. Створить аплет/додаток з використанням класу Console і використовуйте в ньому кнопку JButton і текстове поле JTextField. 6. Створить аплет/додаток з використанням класу Console. Додайте в головне вікно додатку компоненти: меню і діалогові вікна. 7. Знайдіть і завантажте з Інтернету один або декілька безкоштовних будівельників користувацького інтерфейсу. Визначте, що необхідно зробити для додавання компоненти BangBean в це середовище програмування і зробить це. 8. Створить Вашу власну компоненту Bean з назвою Valve, в якої визначте дві властивості: ім’я on тип boolean та ім’я level тип int. Створить декларацію, використовуючи інструмент jar для упаковки компоненти Bean. Потім завантажте отриманий файл в програму beanbox або в засоби створення додатків з підтримкою технології JavaBeans, щоб протестувати свою нову компоненту. 9. Успадкуйте новий тип кнопки від кнопки JButton. Кожен раз при натисканні кнопка повинна міняти свій колір на інший, який обирається випадково. 10. Створить “асинхронний індикатор виконання”, який пересовується все повільніше і повільніше по мірі наближення до закінчення процесу. Додайте до його поведінки небагато нестійкості, так щоб він іноді починав раптово ненадовго прискорюватися.
Тема 11. Розподільне програмування. 1. Створить сервер, який вимагає пароль, потім відкриває файл і пересилає клієнту зміст файлу, використовуючи мережне з’єднання. Створить клієнта, який з’єднується з цим сервером, передає йому пароль, а потім отримує і зберігає файл. Протестуйте цю пару програм на своєї машині, використовуючи IP -адресу localhost. 2. Модифікуйте сервер із завдання 1 так, щоб він використовував багатозадачність для обробки декілька клієнтів одночасно. 7. Індивідуально-консультативна робота
Цей вид навчальної роботи здійснюється за графіком, який пропонується викладачем. Графік складається при узгодженні часу проведення і місця проведення зі студентами, навчальним відділом і центром інформаційних технологій. У запропонованому часі та місті комп’ютерного класу студенти отримують індивідуальні консультації, захищають завдання на комп’ютері, отримують теми студентських наукових робіт. Усі дії щодо індивідуально-консультативної роботи з кожним студентом фіксуються у спеціальному журналі. Наприкінці семестру інформація журналу враховується при наданні допуску до іспиту або при отриманні заліку. 8. Методики активізації процесу навчання
Для активізації навчального процесу пропонується методика роботи в малих групах. Склад групи становить 3-5 студентів із різним рівнем знань. Рейтинг рівня знань кожного студента групи формується на основі попереднього семестру по результатам допуску до іспиту або заліку профільної дисципліни. Ця міні-група отримує завдання, яке має практичну, прикладну форму розробки, строки і умови захисту. Після закінчення розробки її результати публічно захищаються студентом, який має найменший рейтинг; всі останні члени міні-групи доповнюють відповідь студента, який захищається. Оцінка виставляється кожному члену міні-групи анонімно кожним студентом. Результати оцінювання аналізуються викладачем і виставляються кожному студенту міні-групи.
9. Організація поточного контролю
Згідно “Порядку оцінювання знань студентів КНЕУ з урахуванням вимог Болонської декларації” і нової редакції ухваленою Вченою Радою університету від 28.04.2005 року оцінювання знань студентів з навчальних дисциплін здійснюється на основі результатів поточного модульного контролю(ПМК) і підсумкового контролю знань (іспиту). Поточний модульний контроль знань студентівОцінювання знань студентов з вибіркових дисциплин здійснюється на основі результатів ПМК в діапазоні від 0 до 100 балів (включно). Об¢єктами поточного контролю знань студентів є: а) систематичність та активність роботи на семінарських(практичних, лабораторних) заняттях (40 балів); б) виконання завдань для самостійного опрацювання (30 балів); в) виконання модульних (контрольних) завдань (30 балів). Систематичність та активність роботи на відповідних заняттях здійснюється за такими критеріями: - присутність на заняттях (0 балів – пропущено більше 20% занять і відсутні оцінки за завдання; 5 балів – пропущено менш 20% занять, пропускі відпрацьовані і є оцінки за заняття; 10 балів – пропуски відсутні, є додатні оцінки, висока активність); - своєчаснісь здачі лабораторних та самостійних робіт (0 балів – не здав хоч би однієї роботи; 5 балів – здав всі роботи, але не своечасно(об¢єктивні причини з дозволу декана); 10 балів – здав всі роботи своечасно); - рівень знань експрес-контролю (0 балів – поточні оцінки низьки, 5 балів – поточні оцінки різні; 10 балів – поточні оцінки високі); - якість оформлення звітів (0 балів – звіт оформлений не за вимогами кафедри; 5 балів – звіт оформлений за вимогами кафедри, але є зауваження; 10 – звіт повністю оформлений за вимогами кафедри). Загальна оцінка за систематичність та активність розраховується як сума балів відповідних критеріїв. Оцінки в середені критерію носять експертний характер. Виконання завдань для самостійного опрацювання оцінюється за такими критеріями: кожна тема містить перелік завдань. Якщо студент не виконав всі завдання теми, то він отримує 0 балів, якщо студент не виконав хоч би одне завдання теми, то він отримує 10 балів, якщо студент виконав всі завдання теми, то він отримує 30 балів. Загальна оцінка за виконання завдань для самостійного опрацювання обчислюється як середнєарифметична сума балів за виконання всіх завдань всіх тем. Модульний контроль здійснюється за графіком: - перший-26-29 жовтня; - другий – 14-17 квітня. Контроль проводиться у вигляді виконання контрольних завдань: перший - (теми 1-5); другий – (теми 6-10). Під час першого контролю визначається , як студенти засвоїли теоретичні основи об¢єктно-орієнтованого програмування, вмінню дотримуватися технологічної дисципліни об’єктної декомпозиції предметної області, складання об’єктних моделей програмної системи. Знання теоретичного матеріалу впроваджуються в конкретні програми, якісь і складання яких перевіряються на другому модульному контролі. Приклад завдання першого модульного контролю:1. Тест. 2. Як описати поведінку однакових об¢єктів? 3. Задача 2 першого модульного контролю. Задача 15 першого модульного контролю. Завдання першого модульного контролю оцінююються від 0 до 15 балів (0 балів – не розв¢язані дві задачі; 5 балів – не розв¢язана одна задача, або відсутня відповідь на одне з двох перших завдань; 15 балів – існує повна відповідь на всі завдання модульного контролю). Приклад завдання другого модульного контролю і його оцінка аналогічна першому. Форми поточного контролю знань студентів заочної форми навчання здійснюється у вигляді домашніх індивідуальних завдань та модульних завдань в період установчих лекцій під контролем викладача. Домашні індивідуальні завдання видаються під час установчої сесії; їх перелік наведений в пункті 6 (одна задача з кожної теми). Оцінка домашнього індивідуального завдання виглядає так: 0 балів – завдання не виконане, 10 балів – завдання виконане, але є принципові помилки, 30 балів – завдання виконане, але є деякі зауваження, 50 балів – завдання виконане повністю. Модульні завдання проводяться безпосередньо в реальному масштабі часу на комп¢ютері на протязі двох-трьох стандартних занять. Це надає можливість контролювати ступень освоєння матеріалу по критеріям своєчасність і якість виконання. Якість виконання модульного завдання оцінюється за такими ознаками: 0 балів – невміння користуватися інтерпретатором Java з командної строки та середовищем JBuilder істворювати текст програм; 30 балів – вміння користуватися мовними середовищами, редакторами текстів програм і запускати стандартні програми на виконання; 50 балів – створювати проекти запропонованих завдань, запускати їх на виконання, отримувати результат роботи програми.По результатам поточного контролю (домашні індивідуальні завдання, модульне завдання) встановлюється загальна оцінка, яка заноситься у відомість обліку успішності за поточним модульним контролем у двох видах: підсумковою оцінкою за 4-и бальною системою і оцінкою за шкалою ECTS. Підсумковий контроль знань студентів
Підсумкове оцінювання знань проводиться на основі результатів поточного контролю і у вигляді іспиту, який здійснюється у формі виконання письмових екзаменаційних завдань. Приклад завдань екзаменаційного білету. 1. Об’єктна декомпозиція предметної області. Приклади. Екзаменаційний білет, як правило, містить 6 завдань, кожне з яких оцінюється за шкалою 10; 5; 0; балів (10 балів – виконане завдання з обгрунованою відповіддю; 5 балів - завдання виконане, але є зауваження; 0 балів – завдання невиконане, або виконане з принциповими помилками), а результати іспиту оцінюються в діапазоні від 0 до 60 балів (включно). В разі, коли загальна кількість відповідей студентів оцінена менш ніж у 30 балів (0;5;10;15;20;25), то він отримує незадовільну оцінку за результатами іспиту (тобто 0 балів). Загальна підсумкова оцінка з дисципліни складається з суми балів за результати поточного контролю знань та виконання завдань, що виносяться на іспит (за умови, що на іспиті студент отримав не менше 30 балів). Завдання поточного контролю оцінюються в діапазоні від 0 до 40 балів (включно). Якщо на іспиті студент отримав менше 30 балів, а отже отримав незадовільну оцінку, загальна підсумкова оцінка включає лише результати поточного контролю. Загальна підсумкова оцінка виставляється студенту і фіксується у відомості обліку поточної і підсумкової успішності з підсумковою оцінкою за 4-и бальною системою і оцінкою за шкалою ECTS. Питання першого модульного контролю. 1. Скласти програму на мові Java, яка виводить на екран такі дані: - ім'я; - по-батькові; - прізвище; - число, місяць, рік народження; - рік закінчення школи. В тексті програми використовуйте коментарі. 2. За допомогою операції ++ спростити цикл while в тексті програми class WhileCount { public static void main (string, args[]) { int count =0; while (count<10) { count ++; System.out.print (“Count = “. + count); } } } 3. Скласти програму очищення екрану. 4. Скласти програму, яка виводить двоїчне представлення цілої змінної. 5. Скласти програму виводу результату, який отримується при переповненні, загублені значимості та діленні на нуль. 6. Скласти програму аналізатора імені файлу, який виділяє можливе розширення з строки з ім¢ям файла. 7. Скласти програму, яка перевіряє – є дана строка полідромом, або ні. 8. Скласти програму, яка відображає мінімальні і максимальні цілі значення основи та символи, дозволені класом Character. 9. Скласти програму, яка складає одно або декілька значень з плаваючею крапкою, які введені у вигляді параметрів командної строки. Наприклад: jview_fpsum_3.14159_7.88_123.5 10. Скласти програму Powerof, яка обчислює будь-яке число в будь-яку степінь, використовуючи параметри командної строки. 11. Скласти метод, який повертає об¢єкт класу String, заданий кількістю символів. Символи вибираються випадково. 12. Скласти програму, яка проводить будь-яке ціле значення в його 16-й та 2-й еквіваленти. 13. Скласти клас, який автоматично підраховує кількість об¢єктів даного класу, складених програмою. 14. Скласти програму, яка читає і виводить на екран свій власний код. 15. Скласти клас Point, який може зберігати значення координат X,Y. Використовуйте специфікатори доступу для контролю звернення до змінних екземпляру класу. 16.* Скласти метод, який виводить ім¢я класу вільного об¢єкту. 17. Дати визначення класу і об’єкту. 18. Ідентифікація класів і об’єктів в конкретних додатках. 19. Як описується схема об’єктно-орієнтованої системи? 20. Побудова добре структурованих об’єктно-орієнтованих систем. 21. Об’єктно-орієнтований метод організації управління процесом розробки програмної системи. 22. Характеристики об’єкту. 23. Як описати поведінку однакових об’єктів? 24. Які властивості визначають стан об’єкту? 25. На яких принципах будується ієрархія об’єктів? 26. Визначення класу. Приклад. 27. Шість типів ієрархії класів та їх характеристика. 28. Ключові абстракції: визначення, приклади. 29. Вимір якості абстракцій. 30. Класифікація: труднощі та приклади класифікації. 31. Ідентифікація класів і об’єктів: класичний і сучасний підходи. 32. Об’єктно-орієнтований аналіз. 33. Ключові абстракції і механізми. 34. Три підходи до класифікації. 35. Метод сценаріїв. 36. Система означень об’єктно-орієнтованого проектування: діаграма класів. 37. Система означень об’єктно-орієнтованого проектування: діаграма об’єктів. 38. Система означень об’єктно-орієнтованого проектування: діаграма модулів. 39. Система означень об’єктно-орієнтованого проектування: діаграма процесів. 40. Система означень об’єктно-орієнтованого проектування: діаграма станів і переходів. 41. Система означень об’єктно-орієнтованого проектування: діаграма взаємодій. 42. Утілити командної строки для Java . 43. Компіляція і запуск програм в Java . 44. Компіляція Java-додатків. 45. Компіляція аплетів. 46. Літерали в Java : чисельні, символьні, строкові змінні. 47. Типи даних і змінних: змінні цілого типу, з плаваючею крапкою, булеві та символьні змінні. 48. Типи даних і змінні: об’ява змінних, строкові змінні. 49. Операції та вирази: пріоритетність операцій, унарні та бінарні операції з різними числами, приведення типів. 50. Оператори управління в Java: вирази відношень. 51. Мова Java: об’ява класів. 52. Мова Java: об’ява об’єктів. 53. Мова Java: модифікація класів. 54. Мова Java : імпортування класів. 55. Мова Java: успадкування класів. 56. Мова Java: підклас і суперклас.
Питання другого модульного контролю. 57. Використовуючи клас JavaDate скласти програму, яка б відображала день тижня для кожної дати, введеної з клавіатури. 58. Сформувати клас за допомогою методу GetString(), який повертає введену з клавіатури строку. 59. До існуючого класу додати метод Boolean з ім’ям yes(), який пропонує користувачу ввести <Y> або <N> у відповідь на відображаєму підказку. Цей метод повторюється до тих пір, поки користувач не потребує завершення програми. 60. Сформувати клас MenuClass, який відображає меню і дозволяє користувачу обрати одну або декілька команд. 61. Скласти метод, який повертає індекс заданої підстроки в об’єкти класу StringBuffer. 62. Мова Java.. Об’ява строкових об’єктів та їх використання. 63. Мова Java . Об’ява символьних змінних та їх використання. 64. Класи Java: String та StringBuffer . 65. Мова Java. Методи класів String та StringBuffer. 66. Мова Java. Інтерфейсний клас Character. 67. Методи класу Math. 68. Мова Java. Генератори випадкових чисел. 69. Мова Java.Чисельні інтерфейсні класи. 70. Класи та об’єкти: конструктори. 71. Класи та об’єкти: специфікатори доступу. 72. Класи та об’єкти: успадкування, зарезервовані ідентифікатори. 73. Класи та об’єкти: поліморфізм. 74. Статичні члени класу. 75. Класи та об’єкти: конструктори private. 76. Абстрактні класи, об’ява та використання абстрактного класу. 77. Інтерфейси: використання інтерфейсів. 78. Інтерфейси: побудова інтерфейсів. 79. Інтерфейси: дані інтерфейсів.. 80. Пакети Java. Стандартні пакети Java. 81. Програмування з використання пакетів: ім’я пакету , як скласти пакет. 82. Побудова аплету. Дескриптор HTML <applet>. Мінімальні вимоги. 83. Методи класу Applet. Способи програмування аплетів. 84. Події, класи Event i Toolhit. 85. Обробка подій. Події звернення до кнопок. 86. Події клавіатури. Модіфікатори подій “миши” та клавіатури. 87. Події полос прокрутки. Події звернення до об’єктів List i Choice. 88. Загальні поняття про компановки. 89. Вікна, область вікна. Клас Window. 90. Клас Frame і його події. 91. Меню, складання меню: MenuContainer, MenuComponent, MenuItem, MenuBar. 92. Побудова діалогових вікон. 93. Основи роботи з графікою. 94. Програмування метода paint. 95. Побудова об’єкту класу Graphics. 96. Обробка відображень. Позаекранні відображення. 97. Фільтрація відображень. Мультиплікація. 98. Поняття виключних ситуацій. Обробка виключних ситуацій. 99. Програмування виключних ситуацій. 100. Блок finally. Вкладені блоки try. 101. Бібліотека класів виключних ситуацій: підкласи Error, Excaption, RuntimeException. 102. Cтандартний ввод і вивід. 103. Файли і каталоги та їх програмування. 104. Маски файлів. Потоки та буфери. Програмування файлів. 105. Ввод і вивід для типізованих файлів. Програмування типізованих файлів. 106. Ввод і вивід для файлів вільного доступу. Програмування файлів вільного доступу. Література
Основна.
Додаткова.
З повагою ІЦ “KURSOVIKS”! |