Тема: поняття елемента управління; події, пов’язані з елементами управління, обробники цих подій мовою Java.
Мета:
Обладнання: ПК з встановленими ОС і NetBeans + JDK.
Структура уроку:
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
2. Актуалізація опорних знань
Означити (описати) поняття, виділені жирним шрифтом, і порівняти з поданим текстом.
Об'єкт (від латинською objectum — предмет, явище) — це те, на що спрямована певна діяльність (на противагу суб'єкту, який здійснює таку діяльність).
Ми живемо в оточенні величезної кількості різноманітних об'єктів. Будь-яка інформація, яку ми отримуємо, пов'язана з певними об'єктами. Об'єктами є не лише предмети чи явища матеріального світу, але й поняття, які створюють і використовують люди під час спілкування. Наприклад «освіта», «держава» тощо. Кожний об'єкт має свою назву: «м'яч», «годинник», «чашка», «книга». Крім назви кожний об'єкт має низку властивостей (параметрів), значення яких повністю описує об'єкт. Наприклад, об'єкт «учень» має такі властивості (подано невичерпний перелік): вік, зріст, маса тіла, успішність з певного предмету тощо.
Подія — зміна властивостей об'єкта, взаємодія між об'єктами, утворення нового об'єкта або знищення наявного об'єкта.
Середовище об'єкта — середовище, у якому перебуває об'єкт, незалежно від того, які дії ним чи над ним (зрім знищення об'єкта) виконано.
Розглянемо об'єктно-орієнтований підхід до процесу створення й використання програмного забезпечення. Якщо створення програм — далеке й необов'язкове майбутнє учня, то їхнє використання — це сьогодення, якого не уникнути. Спочатку потрібно ознайомитися з деякими базовими поняттями.
Застосунок (застосовна програма, прикладна програма, англійською application, application software) — комп'ютерна програма, що дає змогу вирішувати конкретні прикладні задачі користувача. Це поняття використовують, щоб підкреслити відмінність від операційної системи, драйверів, бібліотек, системних утиліт тощо (які забезпечують функціонування власне комп'ютерної системи та підтримують її працездатність) та засобів і середовищ розробки (про всі ці поняття йтиметься далі).
Об'єктно-орієнтоване програмування — це метод програмування, який розглядає програму як множину «об'єктів», що взаємодіють між собою. Інакше кажучи, у такому підході:
все, що розглядають, є об'єктами;
всі дії та розрахунки виконують шляхом взаємодії (обміну даними) між об'єктами, при якій один об'єкт потребує, щоб інший об'єкт виконав деяку дію. Об'єкти взаємодіють, надсилаючи і отримуючи повідомлення — запити на виконання дії, доповнений набором аргументів (даних), які можуть знадобитися при виконанні дії;
кожен об'єкт має незалежну пам'ять, яка складається з інших об'єктів;
кожен об'єкт є представником (екземпляром) класу, який виражає загальні властивості об'єктів;
клас задає поведінку об'єкта. Інакше кажучи, усі об'єкти, які є представниками одного класу, можуть виконувати одні й ті самі дії;
класи утворюють ієрархією успадкування: пам'ять та поведінка, пов'язані з представниками деякого класу, автоматично доступні будь-якому нащадку — класу, розташованому нижче в ієрархічному дереві.
Фундаментальні поняття об'єктно-орієнтованого програмування:
клас визначає властивості деякої сутності та методи (дії, які вона здатна виконувати). Наприклад, клас вид cобака характеризують рисами, притаманними всім собакам. До методів цього класу відносять, наприклад, здатність гавкати;
об'єкт — окремий представник класу. Наприклад, об'єкт Бровко є представником виду собак — окремим варіантом значення властивостей;
метод — дія, яку об'єкт може виконувати. Наприклад, гавкати і скавучати — методи собаки. Тому Бровко спроможний гавкати;
поведінка — сукупність методів (дій, які об'єкт може виконувати);
обмін повідомленнями — передавання даних від одного процесу іншому або надсилання викликів методів;
абстрагування — спрощення складної дійсності моделюванням класів, що відповідають проблемі, й використання найприйнятнішого рівня деталізації окремих аспектів проблеми. Наприклад, більшу частину часу Бровка можна розглядати лише як собаку. А от як він когось зненацька вкусить, потрібно отримати доступ до інформації, специфічної саме для нього: хто господар, чи був щеплений проти сказу тощо;
успадкування. Клас може мати «підкласи» — спеціалізовані версії «надкласу». Наприклад, вид собака може мати породи коллі, пекінес, вівчарка тощо. Бровко може бути представником класу Вівчарка. Підкласи успадковують властивості й поведінку (методи) своїх батьківських класів, і можуть мати свої власні додатково. Успадкування може бути одиничне (один безпосередній батьківський клас) та множинне (кілька батьківських класів). Наприклад, при розгляді громадянства й етнічного походження окремої людини;
інкапсуляція — приховування деталей інформації про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення. Наприклад, для господаря собаки непотрібно знати, як власне гавкає Бровко. Аби Бровко гавкав на непрошеного гостя;
поліморфізм — залежність поведінки від класу, в якому цю поведінку викликають. Інакше кажучи, різні класи можуть реагувати по різному на однакові повідомлення. Наприклад, пес-охоронець, почувши: «сидіти», має сісти. А курка — відскочити убік або ніяк не реагувати.
3. Вивчення нового матеріалу
Елемент керування — це графічний об'єкт, розташований на формі для показу або введення даних, виконання дій або полегшення читання форми.
До елементів керування належать текстові поля, списки, перемикачі, кнопки тощо. Вони дають користувачеві змогу запускати відповідні частини програми. Елементи керування можуть бути зв'язані, вільні або обчислювані.
Зв'язаний елемент керування запозичує і відображає змінювані дані з поля таблиці (бази даних) або запиту: текст, дату, число, значення «Так / Ні», зображення або діаграми тощо.
Вільний елемент керування не має змінюваного джерела даних. Наприклад, надпис з назвою форми — це вільний елемент керування.
Обчислюваний елемент керування має за джерело даних вираз, а не поле. Значення, яке потрібно використовувати як джерело даних для цього елемента керування, вказують у визначенні виразу. Запис виразу може містити оператори, назви елементів керування, назви полів, функцій і сталих.
Обробник подій — це частина програми, що виконує певні дії у відповідь на дії користувача.
Для мови програмування Java елементи керування:
з пакету AWT — спадкоємці класів Component і Container;
з пакету Swing — спадкоємці класу JComponent, похідного від класу Container.
Наприклад, при використанні для текстових міток Label і JLabel текст замінюють за допомогою методу setText() і отримують значення тексту мітки за допомогою методу getText().
Кнопки Button, JButton, CheckBox, JCheckBox, RadioButton, JRadioButton, JToggleButton використовують для породження та опрацювання подій.
Списки List, JList дозволяють вибирати один або кілька елементів зі списку.
Смуги прокрутки ScrollBar і JScrollBar використовуються для полегшення перегляду.
Однорядкові області введення TextField, JTextField та багаторядкові області введення TextArea, JTextArea дозволяють редагувати і вводити текст.
Клас JComponent бібліотеки Swing містить такі складові:
Клас AbstractButton є суперкласом кнопок, від якого успадковують такі класи:
На наступних двох малюнках показано англомовний інтерфейс інтегрованого середовища програмування NetBeans із завантеженим проектом, який заплановано створити протягом уроку. На панелі Palett праворуч подано елементи керування, які можна перетягнути на пенель, яку видно на вкладенні Design. Легко бачити, що кількість елементів керування істотно більша від кількості названих вище.
У зв'язку з відсутністю україномовного інтерфейсу NetBeans у поданому дапі описі зображення подано для російськомовного інтерфейсу, назви вказівок та інструментів російською, англійською та з перекладом українською мовою. Переклад не буде подано у випадках збігу коренів термінів.
4. Інструктаж з ТБ
5. Вироблення практичних навичок
Завдання. Створити програмний проект мовою Java з використанням елементів керування.
Вказівки до виконання
в області Категории (Categories) вибрати Java;
в області Проекты (Projects, Проекти) вибрати Java приложение (Java Application. Застосунок Java);
натиснути кнопку Далее (Next, Далі);
ввести work у поле Имя проекта (Project Name, Назва проекту);
вказати шлях (за вказівкою вчителя);
встановити прапорець Использовать отдельную папку для хранения библиотек (Use Dedicated Folder for Storing Libraries, Використовувати окрему теку для зберігання бібліотек);
видалити прапорець Создать главный класс (Create Main Class, Створити головний клас), якщо його встановлено;
клацнути по кнопці Готово (Finish, Гаразд).
Створити контейнер, що міститиме необхідні елементи графічного інтерфейсу:
на вкладенні Проекты (Project, Проекти) клацанням правої кнопки миші на вузлі work викликати контекстне меню;
у контексному меню вибрати Новий / Другое (New / Other, Новий / Інше);
у вікні діалогу вибрати:
натиснути кнопку Далее (Next, Гаразд);
ввести Math у полі Имя класса (Class Name, Назва класу);
вибрати (вказати) пакет my.Math;
клацнути по кнопці Готово (Finish, Гаразд).
У результаті буде створено форму Math, пов'язану з файлом Math.java. Клас Math відкриває форму Math в GUI Builder. Пакет my.Math стане пакетом як усталено.
Додати контейнер Swing, перетягнувши з панелі Палитра (Palette) Панель (Panel). Панель буде виділено. Перейти до вкладення Свойства (Properties, Властивості) і натиснути кнопку з трикрапкою (...) поряд з полем Border для вибору стилю межі.
У вікні діалогу вибрати Рамка с надписью (TitledBorder, Рамка з написом) зі списку і ввести Calculator у поле Заголовок (Title). Для збереження змін і закриття вікна діалогу натиснути кнопку OK.
Тепер на екрані повинен відображатися порожній елемент JFrame із заголовком Calculator.
Додати згідно з малюнком:
Примітка. Літера латиниці J відсутня на підписах Палітри, але присутня у назвах об'єктів у коді прогами.
Після перетягування і розміщення вказаних елементів отримати такий вигляд панелі всередині програмного вікна.
Змінити написи на елементах керування, доданих до JFrame. Подамо опис на прикладі напису jLabel1. Натиснути лівою кнопкою кнопці jLabel1,
після чого на вкладенні Свойства (Properties, Властивості) змінити значення title на Перше число.
Діючи аналогічно, отримати такий вигляд форми з елементами.
Зробити кнопку Вихід функціональною. Клацнути правою кнопкою миші на кнопці Вихід у контекстному меню вибрати:
События (Events) / Action / actionPerformed (Події / Дія / Виконана дія).
При виборі actionPerformed середовище програмування додасть прослуховувач ActionListener до кнопки і створить метод обробника для опрацювання методу Прослуховувач actionPerformed. У середовищі програмування буде відкрито вкладення Источник (Source, Джерело), де відображено місце для опису дії, яку потрібно виконати після натискання кнопки (за допомогою миші або клавіатури).
Сіре тло позначає код, породжений самим середовищем програмування у відповідь на дії програміста. Опис дії розташувати на місці таких рядків:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: }
— замінити коментар // TODO add your handling code here:
на System.exit(0); — код припининня виконання програми з нульовим кодом. У результаті отримати таке:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { System.exit (0); }
Зробити кнопку Очистити функціональною. Перейти на вкладення Проект (Design). В контекстному меню кнопки Очистити вибрати:
События (Events) / Action / actionPerformed
(Події / Дія / Виконана дія).
Замінивши коментар:
// TODO add your handling code here:,
отримати фрагмент коду, який очищатиме усі текстові поля:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { jTextField1.setText ( ""); jTextField2.setText ( ""); jTextField3.setText ( ""); jTextField4.setText ( ""); }
Зробити кнопку Обчислити функціональною. Перейти на вкладення Проект (Design). В контекстному меню кнопки Очистити вибрати:
События (Events) / Action / actionPerformed
(Події / Дія / Виконана дія).
Замінивши коментар:
// TODO add your handling code here:,
отримати фрагмент коду виконання аррифметичної операції:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { float x,y; int j; char c; x = Float.parseFloat(jTextField1.getText ()); y = Float.parseFloat(jTextField3.getText ()); j = Integer.parseInt(jTextField2.getText ()); switch(j){ case 1: x=x+y; break; case 2: x=x-y; break; case 3: x=x*y; break; case 4: x=x/y; break; default: break; } jTextField4.setText(String.valueOf(x)); }
Відкомпілювати проект і запустити його на виконання, для чого:
після чого ми отримати такий результат.
Примітка. Якщо не задано основний клас, перед виконанням його потрібно задати, використавши вказівку меню:
Выполнить / Установить конфигурацию проекта / Настроить
(Run / Set Project Configuration / Customize,
Виконати / Задати конфгурацію / Налаштувати).
і вікні діалогу Свойства проекта ... ввести (вибрати) основний клас (для поданого прикладу my.Math.Math) і натиснути кнопку ОК.
Протестувати роботу програми, враховувавши, що при наборі цифри 1, 2, 3 або 4 у полі Дія буде виконано відповідно додавання, віднімання, множення або ділення.
Зберегти проект:
і повідомити учителя про завершення роботи.
Текст упорядкував Тригуб Віктор Андрійович, вчитель інформатики гімназії № 109 ім. Т. Г. Шевченка Печерського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 24.10.2016 по 28.10.2016.