
ТСПП
.pdfКОНТРОЛЬНІ ПИТАННЯ
1.Процедура налаштування підключення бази даних?
2.Створення нового підключення до бази даних?
3.Створення таблиці БД в середовищі NetBeans?
4.Поняття сценарію SQL в NetBeans?
5.Які бібліотеки потрібно імпортувати для роботи з базою даних?
6.Як реалізувати вивід знайдених значень на екран?
ПОРЯДОК ВИКОНАННЯ РОБОТИ
1.Виконайте послідовність створення бази даних car database та таблиць згідно вказаного прикладу.
2.Створіть базу даних згідно свого варіанту:
1.Продуктовий магазин
2.Автовокзал
3.Автосалон
4.Аптека
5.Банк
6.Банкетний зал
7.Виборча дільниця
8.Відділ кадрів
9.Журнал олімпіади
10.Квітковий магазин
11.Майстерні одягу
12.Паспортний стіл
13.Поштове відділення
14.Ювелірні вироби
15.Перукарня
3.Додайте до створеної бази даних мінімум як мінімум 20 записів та 12 стовпців.
4.Додаткове завдання. Додайте на перший фрейм повзунок jSlider та зв’яжіть його з числовим полем таблиці згідно інструкції. Перевірте роботу програми.
5.Підключити до проекту таблицю БД та додати кнопки з функціями «Додати», «Видалити», «Пошук»
5.Оформити звіт згідно з вимогами.
Лабораторна робота №5
Тема роботи: Створення програмного засобу для роботи з файлами Мета роботи: Вивчення структури файлів в Java і роботи з ними
Теоретичні відомості
Бібліотека класів мови програмування Java містить численні засоби, призначені для роботи з файлами. І хоча аплети не мають доступу до локальних файлів, розташованих на комп'ютері користувача, вони можуть звертатися до файлів, що знаходяться в каталозі сервера Web. Автономні додатки Java можуть працювати як з локальними, так і з віддаленими файлами (через мережу Internet або Intranet).
31
• Клас File
Клас File призначений для роботи зі змістом каталогів. За допомогою цього класу можна одержати список файлів і каталогів, розташованих у заданому каталозі, створити або видалити каталог, перейменувати файл або каталог, а також виконати деякі інші операції.
• Клас FileDescriptor
За допомогою класу FileDescriptor можна перевірити ідентифікатор відкритого файлу.
• Створення об'єкта класу File
Існують три можливості створити об'єкт класу File, викликавши для цього один із трьох конструкторів:
public File(String path);
public File(File dir, String name); public File(String path, String name);
Перший з цих конструкторів має єдиний параметр - посилання на рядок шляху до файлу або каталогу. За допомогою другого конструктора можна вказати окремо каталог dir і ім'я файлу, для якого створюється об'єкт у поточному каталозі. Третій конструктор дозволяє вказати повний шлях до каталогу і ім'я файлу.
Якщо першому з перерахованих конструкторів передати посилання зі значенням null,
виникне виключення NullPointerException.
Користуватися конструкторам дуже просто. Створити об'єкт класу File для файлу c:\autoexec.bat і каталогу d:\winnt можна наступним чином:
f1 = new File("c:\\autoexec.bat"); f2 = new File("d:\\winnt");
• Визначення атрибутів файлів і каталогів
Після того був створений об'єкт класу File, неважко визначити атрибути цього об'єкта, скориставшись відповідними методами класу File.
• Перевірка існування файлу або каталогу
За допомогою методу exists можна перевірити існування файлу або каталогу, для якого був створений об'єкт класу File:
public boolean exists();
Цей метод можна застосовувати перед створенням потоку на базі класу FileOutputStream, якщо потрібно уникнути випадкового перезапису існуючого файлу. У цьому випадку перед створенням вихідного потоку класу FileOutputStream варто створити об'єкт класу File, вказавши конструктору шлях до файлу, а потім перевірити існування файлу методом exists.
• Перевірка можливості читання і запису
Методи canRead і canWrite дозволяють перевірити можливість читання з файлу і запису у файл, відповідно:
public boolean canRead(); public boolean canWrite();
їх можна застосовувати перед створенням відповідних потоків, якщо потрібно уникнути виникнення виключень, зв'язаних зі спробою виконання доступу недозволеного типу. Якщо доступ дозволений, ці методи повертають значення true, а якщо заборонено - false.
• Визначення типу об'єкта - файл або каталог
За допомогою методів isDirectory і isFile можна перевірити, чому відповідає створений об'єкт класу File - каталогу або файлу:
32
public boolean isDirectory(); public boolean isFile();
• Одержання імені файлу або каталогу
Метод getName повертає ім'я файлу або каталогу для заданого об'єкта класу File (ім'я виділяється зі шляху):
public String getName();
• Одержання абсолютного шляху до каталогу
Метод getAbsolutePath повертає абсолютний шлях до файлу або каталогу, що може бути машинно-залежним:
public String getAbsolutePath();
• Визначення типу зазначеного шляху - абсолютний або відносний За допомогою методу isAbsolute можна визначити, чи відповідає даний об'єкт класу File файлу або каталогу, заданому абсолютним (повним) шляхом, або відносним шляхом:
public boolean isAbsolute();
• Визначення шляху до файлу або каталогу
Метод getPath дозволяє визначити машинно-незалежний шлях файлу або каталогу: public String getPath();
• Визначення батьківського каталогу
Якщо потрібно визначити батьківський каталог для об'єкта класу File, то це можна зробити методом getParent:
public String getParent();
• Визначення довжини файлу в байтах
Довжину файлу в байтах можна визначити за допомогою методу length: public long length();
• Визначення часу останньої модифікації файлу або каталогу
Для визначення часу останньої модифікації файлу або каталогу можна викликати метод lastModified:
public long lastModified();
Цей метод повертає час у відносних одиницях з моменту запуску системи, тому його зручно використовувати тільки для відносних порівнянь.
• Одержання текстового представлення об'єкта
Метод toString повертає текстовий рядок, що представляє об'єкт класу File: public String toString();
•Видалення файлів і каталогів
Для видалення непотрібного файлу або каталогу необхідно створити відповідний об'єкт File і потім викликати метод delete:
public boolean delete();
•Створення каталогів
За допомогою методів mkdir і mkdirs можна створювати нові каталоги: public boolean mkdir();
public boolean mkdirs();
Перший з цих методів створює один каталог, другий - усі підкаталоги, що ведуть до створюваного каталогу (тобто повний шлях).
•Перейменування файлів і каталогів
33
Для перейменування файлу або каталогу необхідно створити два об'єкти класу File, один з яких відповідає старому імені, а другий - новому. Потім для першого з цих об'єктів потрібно викликати метод renameTo, вказавши йому як параметр посилання на другий об'єкт: public boolean renameTo(File dest);
В успішному випадку метод повертає значення true, при виникненні помилки - false. Може також виникати виключення SecurityException.
•Порівняння об'єктів класу File
Для порівняння об'єктів класу File ви повинні використовувати метод equals: public boolean equals(Object obj);
Цей метод порівнює шляхи до файлів і каталогів, але не самі файли або каталоги.
•Одержання списку вмісту каталогу
За допомогою методу list можна одержати список вмісту каталогу, що відповідає даному об'єкту класу File. У класі File передбачено два варіанти цього методу - без параметра і з параметром:
public String[] list();
public String[] list(FilenameFilter filter);
Перший з цих методів повертає масив рядків з іменами вмісту каталогу, не включаючи поточний каталог і батьківський каталог. Другий дозволяє одержати список не всіх об'єктів, що зберігаються в каталозі, а тільки тих, що задовольняють умовам, визначеним у фільтрі filter класу FilenameFilter.
Довільний доступ до файлів
Уряді випадків, наприклад, при створенні системи керування базою даних, потрібно забезпечити довільний доступ до файлу. Бібліотека класів Java містить клас RandomAccessFile, що призначений спеціально для організації прямого доступу до файлів як для читання, так і для запису.
Укласі RandomAccessFile визначено два конструктори, прототипи яких показані нижче: public RandomAccessFile( String name, String
mode); public RandomAccessFile( File file, String mode);
Перший з них дозволяє вказувати ім'я файлу, і режим mode, у якому відкривається файл. Другий конструктор замість імені припускає використання об'єкта класу File.
Якщо файл відкривається тільки для читання, необхідно передати конструктору текстовий рядок режиму "r". Якщо ж файл відкривається і для читання, і для запису, конструктору передається рядок "rw".
Позиціювання всередині файлу забезпечується методом seek, як параметр pos якому передається абсолютний зсув файлу:
public void seek(long pos);
Після виклику цього методу поточна позиція у файлі встановлюється у відповідності зі значенням параметра pos.
У будь-який момент часу можна визначити поточну позицію всередині файлу, викликавши метод getFilePointer:
public long getFilePointer();
Ще один метод, що має відношення до позиціонування, називається skipBytes: public int skipBytes(int n);
34
Він просуває поточну позицію у файлі на задану кількість байт. За допомогою методу close необхідно закривати файл, після того як робота з ним довершена:
public void close();
Метод getFD дозволяє одержати дескриптор файлу: public final FileDescriptor getFD();
За допомогою методу length можна визначити поточну довжину файлу: public long length();
Ряд методів призначений для виконання як звичайного, так і формато-ваного введення з файлу. Цей набір аналогічний методам, визначеним для потоків:
public int read(); public int read(byte b[]);
public int read(byte b[],int off,int len); public final boolean readBoolean(); public final byte
readByte(); public final char |
|
readChar(); public |
|
final double |
readDouble(); public final float |
||
readFloat(); public final void |
readFully(byte |
||
b[]); public final void |
readFully(byte b[], |
||
int off, |
int len); public final int |
||
readInt(); public final String |
readLine(); public |
||
final long |
readLong(); public final short |
||
readShort(); public final int |
|
|
readUnsignedBytee(); public final int readUnsignedShort(); public final String readUTF();
Існують також методи, що дозволяють виконувати звичайний або форматований запис у файл із прямим доступом:
public void write(byte b[]);
public void write(byte b[],int off,int len); public void write(int b);
public final void writeBoolean(boolean v); public final void writeBytee(int v); public final void writeBytes(String s); public final void writeChar(int v); public final void writeChars(String s); public final void writeDouble(double v); public final void writeFloat(float v);
public final void writeInt(int v); public final void writeLong(long v); public final void writeShort(int v); public final void writeUTF(String str).
Приклади практичної реалізації
У Java існують чотири класи створено спеціально для перетворення потоків:
FilterReader| FilterlnputStream|
FilterWriter| FilterOutputStream|
Самі по собі ці класи некорисні — вони виконують тотожне перетворення. Їх слід розширювати, перевизначивши методи вводу/виводу. Але для байтових фільтрів є корисні розширення, яким відповідають деякі символьні класи. Перерахуємо їх.
35
Чотири класи виконують буферизований ввід/вивід:
BufferedReader| BufferedlnputStream|
BufferedWriter| BufferedOutputStream|
Для реалізації роботи з файлами у java використовуються потоки BufferedReader та класи що створюють потоки, пов'язані з файлами FileInputStream/ FileOutputStream.
Читання з текстового файлу:
String TEXT="" ; String s;
try { FileInputStream inF = new FileInputStream("d1.txt"); } catch (FileNotFoundException e1) {
e1.printStackTrace();
}
BufferedReader in; try {
in = null;
in = new BufferedReader(new InputStreamReader(new FileInputStream ("d1.txt"), "windows-1251"));
s=" ";
while (in.ready()) { s = in.readLine();
TEXT+=s+"\n";
}
} catch (IOException e) {
}
jTextArea1.setText(" "); jTextArea1.setText(TEXT);
}
Запис у текстовий файл
String string = "zapus"; try {
FileOutputStream outF = new FileOutputStream("d1.txt"); } catch (FileNotFoundException e1) {
e1.printStackTrace();
}
PrintWriter out; try {
PrintWriter pw = new PrintWriter (new OutputStreamWriter (new FileOutputStream ("d1.txt"), "windows-1251"));
pw.println(string);
pw.close();
}catch (IOException e) {
}}
36
КОНТРОЛЬНІ ПИТАННЯ
1.Які класи призначені для роботи з потоками файлів?
2.Які класи забезпечують буферизований ввід/вивід?
3.Як здійснити читання з файлу?
4.Як здійснити запис у файл?
ПОРЯДОК ВИКОНАННЯ РОБОТИ
1.Створити новий проект.
2.Додати на фрейм компонент jTextArea
3.Додати дві кнопки та реалізувати запис у файл та читання з файлу.
4.Додаткове завдання. Написати програму згідно з варіантом.
Варіант 1, що зчитує з текстового файлу три речення і виводить їх у зворотному порядку.
Варіант 2, що зчитує текст із файлу і виводить на екран тільки речення, що містять задане з клавіатури слово.
Варіант 3, що зчитує текст із файлу і виводить на екран тільки рядки, що містять двозначні числа.
Варіант 4, що зчитує англійський текст із файлу і виводить на екран слова, що починаються з голосних букв.
Варіант 5, що зчитує текст із файлу і виводить його на екран, змінюючи місцями кожні два сусідніх слова.
Варіант 6, що зчитує текст із файлу і виводить на екран тільки пропозиції, що не містять ком.
Варіант 7, що зчитує текст із файлу і визначає, скільки в ньому слів, що складаються не більш ніж з чотирьох букв.
Варіант 8, що зчитує текст із файлу і виводить на екран тільки цитати, тобто речення, що містяться в лапках.
Варіант 9, що зчитує текст із файлу і виводить на екран тільки ті речення, що складаються з заданої кількості слів.
Варіант 10, що зчитує англійський текст із файлу і виводить на екран слова тексту, що починаються з голосних літер і закінчуються голосними літерами.
Варіант 11, що зчитує текст із файлу і виводить на екран тільки ті рядки, що не містять двозначні числа.
Варіант 12, що зчитує текст із файлу і виводить на екран тільки ті речення, що починаються з тире, перед яким можуть бути тім пробільні символи.
Варіант 13, що зчитує англійський текст із файлу і виводить його на екран, замінивши кожну першу букву слів, що починаються з голосної на прописну.
Варіант 14, що зчитує текст із файлу і виводить його на екран замінивши цифри від 0 до 9 на слова "нуль", "один", "дев'ять", починаючи кожне речення з нового рядка.
Варіант 15, що зчитує текст із файлу, знаходить найдовше слово і визначає, скільки разів воно зустрілося в тексті.
5.Оформити звіт згідно вимог.
37
Лабораторна робота №6
Тема роботи: Специфікація та документування вимог до програмних засобів Мета роботи: Навчитись здійснювати документування програмного забезпечення
Теоретичні відомості
Можна використовувати утиліти javadoc, щоб отримати інформацію та помістити її в HTML-файл. Документаційні коментарі є зручними поясненнями для розроблюваного програмного засобу. Основні теги javadoc представлені в таблиці 1.
|
Таблиця 1. Теги javadoc |
|
|
|
|
Тег |
Значення |
|
|
|
|
@author |
Ідентифікує автора класу |
|
|
|
|
@deprecated |
Визначає, що клас або елемент виключений |
|
|
|
|
@exception |
Ідентифікує виключення, викинуте методом |
|
|
|
|
{@link} |
Додає вбудоване (in-line) посилання до іншого розділу. |
|
|
|
|
@param |
Документує параметр методу |
|
|
|
|
@return |
Документує значення методу, що повертається |
|
|
|
|
@see |
Визначає посилання до іншого розділу |
|
|
|
|
@ serial |
Документує позамовчуванню серіалізуєме (serializable) поле. |
|
|
|
|
@serialData |
Документує дані, записані методом writeObject () або writeExtemal(). |
|
|
|
|
@serialField |
Документує компонент ObjectStreamField. |
|
|
|
|
@since |
Оголошує випуск (реліз), в якому було введено специфічну змінну |
|
|
|
|
@version |
Визначає версію класу |
|
|
|
|
Всі теги документу починаються із символу «@». У документованому коментарі можна також використовувати інші, стандартні теги HTML. Проте деякі з них, такі як заголовки, не повинні використовуватися, тому що вони переривають перегляд HTML-файлу, проведеного утилітою javadoc.
Можна використовувати коментарі для роз'яснення класів, інтерфейсів, полів, конструкторів і методів. У всіх випадках, коментар повинен безпосередньо передувати документованому елементу. Коли здійснюється документування змінної, докуменційні теги які можна використовувати наступні - @see, @since, @serial, @serialField і @deprecated. Для класів застосовуються теги: @see, @author, @since, @deprecated і @version. Методи можуть бути документовані з допомогою @see, @return, @param @since, @deprecated, @throws, @seriailData і (@exception. Тег {@link} можна використовувати скрізь.
Розглянемо кожен із тегів.
Тег @author
Тег @author документує автора класу. Він має наступний синтаксис:
@author description
Тут description - звичайне ім'я того, хто написав клас. Тег @author можна використовувати тільки в документації для класу. Для того, щоб включити в документацію HTML поле @author, необхідно визначити опцію -author При виконанні javadoc.
Тег @deprecated
38
Тег @deprecated визначає, що клас або член (member) виключені і не рекомендуються до застосування. Не погано, щоб існували також теги @see для інформування програміста про доступні альтернативи. Синтаксис:
@deprecated description
Тут description - повідомлення, яке описує виключення. Інформація, вказана в тезі @deprecated, розпізнається компілятором і включається в class-файл, що генерується. Тому програмістові ця інформація може бути видана при компіляції початкових Java-файлів. Тег @deprecated можна використовувати в документації для змінних, методів і класів.
Тег @exception
Тег @exception описує виключення (винятковий стан) для методу. Він має наступний синтаксис:
@exception exception-name explanation
Тут exception-name- Повне складене ім'я.
Виключення: explanation - рядок, який описує, як виняток може відбуватися. Тег @exception можна використовувати тільки в документації методу.
Тег { @link}
Тег {@link} забезпечує вбудоване гіперпосилання на додаткову інформацію. Він має наступний синтаксис:
{@link name text}
Тут name - імя класу або методу, до якого додається гіперпосилання; text - рядок.
Тег @param
Тег @param документує параметр методу. Він має наступний синтаксис:
@param parameter-name explanation
Тут parameter-name визначає ім'я параметра методу. Значення цього параметра описується в explanation. Тег @param можна використовувати тільки в документації для методу.
Тег @return
Тег @return описує значення методу, що повертається. Він має наступний синтаксис:
@return explanation
Тут explanation описує тип і значення, які повертаються методом. Тег @return можна використовувати тільки в документації методу.
Тег @see
Тег @see забезпечує посилання на додаткову інформацію. Він зазвичай використовує наступні форми:
@see anchor
@see pkg.class#member text
У першій формі anchor- гіперпосилання на абсолютну або відносну URL-адресу. У другій формі pkg.class#member визначає ім'я елементу, а text - текст, що відображається для цього елементу. Текстовий параметр - необов'язковий і якщо не використовується, то
39
відображається елемент, специфікований в pkg.class#member. Ім'я члена також є необов'язковим. Таким чином, ви можете визначити вказівник на пакет, клас або інтерфейс на додаток до вказівника на певний метод або поле. Ім'я може бути класифіковано повністю або частково. Проте крапка, яка передує імені члена (якщо вона існує), має бути замінена хеш-символом (#).
Тег @serial
Тег @serial визначає коментар для поля серіалізації (serializable field). Він має наступний синтаксис:
@serial description
Тут description - коментар для цього поля.
Тег @serialData
Тег @serialData документує дані, записані методами writeObject() або writeExternal(). Він має наступний синтаксис:
@serialData description
Тут description - коментарій для цих даних.
Тег @serialField
Тег @serialField забезпечує коментарі для компоненту ObjectStreamField. Він має наступний синтаксис:
@serialField description
Тут description - коментарій для поля.
Тег @since
Тег @since заявляє, що клас або член був введений в певному випуску (системи Java). Він має наступний синтаксис:
@since release
Тут release - рядок, який визначає випуск (реліз) або версію, в якій ця властивість стала доступною. Тег @since можна використовувати в документації для змінних, методів і класів.
Тег @throws
Тег @throws має таке ж значення, як тег @exception.
Тег @version
Тег @version визначає версію класу. Він має наступний синтаксис:
@version info
Тут info - рядок, який містить інформацію про версію (зазвичай номер версії), наприклад, 2.2. Тег @version можна використовувати тільки в документації для класу. Для того, щоб поле @version було включене в документацію HTML, вам необхідно визначити опцію -version при виконанні javadoc.
КОНТРОЛЬНІ ПИТАННЯ
1.Поняття коментаря?
2.Які типи коментарів існують в середовищі?
3.Дайте характеристику тегам документування.
4.Наведіть приклади використання тегів документування.
40