Вступ

Вид материалаДокументы

Содержание


Постановка задачі
Стислий огляд функціональних можливостей системи-прототипу для реалізації в проекті
2. Розробка програми
3. Результати тустування програми
Подобный материал:

ВСТУП



Задачу було реалізовано засобами об’єктно-орієнтованої мови Java, інтерфейс програми Writer 3.0, текстового процесора і візуального редактора, який входить до складу OpenOffice.org і являється вільним програмним забезпеченням.

Побудована об’єктна модель та здійснення реалізація відповідного застосування та аплету.

Під час створення роботи були вивчені аспекти створення контекстного меню, підменю, створення спливаючих розділів, визначена сфера застосування програми.

Були поглиблені теоретичні знання з Java, дещо пригадалось с Borland Builder 6, а також з дисциплін об’єктно-орієнтованого програмування, основ текстових редакторів. Мова Java сильно вплинула і навіть змінила обличчя Internet, розширивши спектр об’єктів, які можуть розповсюджуватись у Internet-просторі. Програми нової форми - аплети - завантажуються з віддаленого сервера і можуть запускатися динамічно, без участі користувача. До появи Java такий підхід був неприпустимий з міркувань безпеки. В архітектурі аплетів зроблено ряд штучних обмежень, які роблять їх цілком безпечними. Перш за все, Java є інтерпретованою мовою і простір ресурсів Java-програми обмежений так званою віртуальною Java-машиною (VJM), яка може контролювати поведінку програми і захищати систему від побічних ефектів, які можуть виникати з вини аплета.

Аплети являють собою різновид додатків Java, які інтерпретуються віртуальною машиною Java, убудованої практично в усі сучасні браузери.

Аплети дозволяють виконувати складну локальну обробку даних, отриманих від сервера Web або введених користувачем із клавіатури. З міркувань безпеки аплети (на відміну від звичайних додатків Java) не мають ніякого доступу до файлової системи локального комп'ютера.


Для підвищення продуктивності додатків Java у сучасних браузерах використається компіляція "на лету"- Just-In-Time compilation (JIT).

При першому завантаженні аплета його код транслюється у звичайну здійсненну програму, що зберігається на диску й запускається.

У результаті загальна швидкість виконання аплета Java збільшується в кілька разів.

У Java синтаксис близький до синтаксису мови C++. Успадкувавши найкраще від мови програмування C++, мова Java при цьому позбулася деяких недоліків C++, у результаті чого на ній стало простіше програмувати.

У цій мові нема, наприклад, покажчиків, які складні у використанні й потенційно можуть послужити причиною доступу програми до не приналежній їй області пам'яті. Немає множинного спадкування й шаблонів, хоча функціональні можливості мови Java від цього не постраждали.

В результаті був сформований ясний і прагматичний підхід до об’єктів.

Вільно переймаючи ідеї, які реалізовувалися протягом останніх десятирічь, мові Java вдалося знайти рівновагу між парадигмою «все є об’єктом» і прагматичним підходом. Об’єктна модель Java проста і легко розширюється, в той час як просі типи, як цілі, зберігаються як дані, що не є об’єктами, що дозволяє значно підвищити швидкість при їх обробці.

Java дозволяє створювати незалежні від платформи програми шляхом компіляції в проміжне представлення, яке називається байт кодом. Багато попередніх спроб знати розв’язок проблеми незалежності від платформи були зроблені за рахунок продуктивності.

Крім того в Java наявний засіб передачі повідомлень в межах внутрішнього адресного простору. Це дозволяє забезпечити віддалене виконання процедур. Ці інтерфейси включені у пакет RMI (Remote Method Invocation). Цей засіб привносить високий рівень абстракції в програмування для середовища клієнт-сервер.

Отже, висока функціональність та простота мови Java забезпечує їй швидкі темпи розвитку та поширення.


ПОСТАНОВКА ЗАДАЧІ


Створити на мові програмування Java аплету, реалізуючого інтерфейс OpenOffice.org Writer 3.0 з функціями – файл - відкрити, файл - зберегти як та формат – стовпці.

Вивчені аспекти виконання методів, використання класів та роботи з об'єктами, визначена сфера застосування даної мови програмування.

Зроблений вибір методів та інструментальних засобів для здійснення необхідних функцій та виклику процедур. Були поглиблені теоретичні знання з багатьох дисциплін, отримані практичні навички роботи з Java.

Чому саме OpenOffice.org Writer 3.0?

1. Writer дає можливість виконувати всі без винятку операції над текстом, передбачені в сучасній комп'ютерній технології.

2. Writer (як і весь пакет програм Openoffice.org) є безкоштовним для використання. При цьому, опанувавши принципами роботи в Writer, ви з легкістю можете користуватися іншими текстовими процесорами.

3. Openoffice.org працює під усіма найбільш популярними на сьогоднішній день операційними системами

Microsoft Windows, Linux, Sun, а виходить, ви завжди зможете працювати у відомій вам програмі підготовки текстів.

4. В Writer можна виконувати багато операцій верстки й готовити повноцінні оригінал-макети для наступного тиражування в друкарні.

5. Writer може перетворити кропітку роботу з обробки тексту в захоплююче заняття. Допоможуть у цьому готові шаблони й стилі оформлення, інструмент копіювання формату, панелі інструментів і багато чого іншого.


Стислий огляд функціональних можливостей системи-прототипу для реалізації в проекті


OpenOffice.org - це вільний пакет офісних застосувань, розроблений з метою надати альтернативу Microsoft Office як на рівні форматів, так і на рівні інтерфейсу користувача. Одним з перших став підтримувати новий відкритий формат OpenDocument (ISO/IEC 26300). Працює на платформах Microsoft Windows і UNIX-подібних платформах: GNU/Linux, Mac OS X (підтримка оболонки Aqua знаходиться у стадії альфа-тестування), FreeBSD, Solaris, Irix.

До складу пакету Openoffice.org 3.0 входять загальні для всіх застосувань система запису макрокоманд і засіб прискорення запуску за допомогою попереднього завантаження.

—Writer — текстовий процесор і візуальний редактор HTML.

—Calc — табличний процесор.

—Draw — векторний графічний редактор.

—Impress — програма підготовки презентацій.

—Base — механізм підключення до зовнішніх СУБД і вбудована СУБД HSQLDB.

—Math — редактор формул

OpenOffice.org Writer - текстовий процесор і візуальний редактор HTML, входить в склад OpenOffice.org і є вільним програмним забезпеченням (випускається під ліцензією LGPL).

2. РОЗРОБКА ПРОГРАМИ


2.1 Опис алгоритму

Програма реалізована в середовищі Java. За прототип був взятий текстовий процесор OpenOffice.org Writer 3.0,

Для реалізації були залучені такі бібліотеки:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;

import java.applet.*;

Використанні такі класи:

Label,

Frame,

Menu Bar,

Dialog,

MeniItem,

Button,

Checkbox,

Choice,

TextField











2.2 Опис програми

Розглянемо детальніше блоки програми та функції які вони виконують.

final MenuItem Save_Item = new MenuItem(KeyEvent.VK_S);

final MenuItem SaveAs_Item = new MenuItem(KeyEvent.VK_S,true));

Для можливості установки стандартного рядка меню розташовуваного нижче рядка заголовка використовуємо menu bar, цей рядок - об'єкт класу MenuBar.

JMenuBar menuBar = new JMenuBar( );

menuBar.add(File);

menuBar.add(Edit);

menuBar.add(View);

menuBar.add(History);

menuBar.add(Bookmarks);

menuBar.add(Tools);

menuBar.add(Help);

frame.setJMenuBar(menuBar);

За допомогою процедури - new MenuItem(KeyEvent.VK_S) назначаємо клавіші запуску, для назначення гарячих клавіш запуску застосовуємо процедуру

New_WindowItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Event.CTRL_MASK)).

JMenuItem New_WindowItem = new JMenuItem("New Window");

створення підменю та вказується його назва.

Компонент Checkbox - це напис праворуч в зазначеному меню, в якому в деяких графічних системах з'являється галочка після натискання кнопкою миші – компонент переходить у стан (state) on. Після наступного натискання галочка пропадає - це стан off. В інших графічних системах стан on відзначається "вдавлюванням" кнопки.

final CheckboxMenuItem NaM_Item = new CheckboxMenuItem(frame.getTitle(),true);


У компоненті Checkbox стану on/off відзначаються логічними значеннями true/false відповідно.

Три конструктори Checkbox (), Checkbox (String label), Checkbox (String label, boolean state) створюють компонент без напису, з написом label у стані off, і в заданому стані state.

Методи доступу getLabel, setLabel (String label), getState(), setstate (boolean state) повертають і змінюють ці параметри компонента.

Компоненти Checkbox зручні для швидкого й наочного вибору зі списку, цілком розташованого на екрані. У ситуаціях, коли потрібно вибрати тільки один пункт із декількох, зазвичай утвориться група так званих радіо кнопок (radio buttons). Вони позначаються звичайно кружком або ромбиком, а не квадратиком, вибір позначається жирною крапкою в кружку або "вдавленням" ромбіка.

Menu Panels = new Menu("Панели инструментов");

CheckboxMenuItem OLEob_Item = new CheckboxMenuItem("OLE-об'єкт);

Panels.add(OLEob_Item);

CheckboxMenuItem InpDo_Item = new CheckboxMenuItem("Вставить объект");

Panels.add(InpDo_Item);

CheckboxMenuItem Inser_Item = new CheckboxMenuItem("Вставка");

Panels.add(Inser_Item);

CheckboxMenuItem Allign_Item = new CheckboxMenuItem("Выравнивание");

Panels.add(Allign_Item);

Компонент Label - це просто рядок тексту, оформлена як графічний компонент для розміщення в контейнері. Текст можна поміняти тільки методом доступу setText(string text), але не введенням користувачем із клавіатури або за допомогою миші.

NaM_Item.setLabel(frame.getTitle());


Створюється об'єкт цього класу одним із трьох конструкторів:

Label () - порожній об'єкт без тексту;

Label (string text) - об'єкт із текстом text, що притискається до лівого краю компонента;

Label (String text, int alignment) - об'єкт із текстом text і певним розміщенням у компоненті тексту, що задає однієї із трьох констант: CENTER, LEFT, RIGHT .

Розміщення можна змінити методом доступу setAlignment(int alignment).

Інші методи, крім методів, успадкованих від класу component, дозволяють одержати текст getText () і розміщення getAlignment ().

File.add(New_WindowItem);- додавання даного підменю в меню.

Open_FileItem.addActionListener( new ActionListener( )

public void actionPerformed(ActionEvent ae) {JFrame f1= new JFrame("");

f1.setSize(300,300);f1.setVisible(true); - задається код який виконується при натисканні даного підменю.

В даному випадку створюється нова форма відповідного, вказаного розміру та задано щоб воно було видиме

Спливаюче меню (popup menu) з'являється звичайно при натисканні або відпусканні правої або середньої кнопки миші і є контекстним (context) меню. Його команди залежать від компонента, на якому була натиснута кнопка миші. Цей клас розширює клас Menu, отже, успадковує всі властивості меню й пункту меню Menultem.

Спливаюче меню приєднується не до рядка меню типу MenuBar або до меню типу Menu у якості підменю, а до певного компонента. Для цього в класі component є метод add(PopupMenu menu).

У деяких компонентів, наприклад TextFieid й TextArea, уже існує спливаюче меню. Подібні меню не можна перевизначити.

Приєднати спливаюче меню можна тільки до одного компонента. Якщо треба використати спливаюче меню з декількома компонентами в контейнері, то його приєднують до контейнера, а потрібний компонент визначають за допомогою методу getcomponent () класу MouseEventю.

Крім успадкованих властивостей і методів, у класі PopupMenu є метод show (Component comp, int x, int у), що показує спливаюче меню на екрані так, що його лівий верхній кут розташовується в крапці (х, у) у системі координат компонента сорт.

Найчастіше це компонент, на якому натиснута кнопка миші, що повертає методом getcomponent (). Компонент comp повинен бути усередині контейнера, до якого приєднано меню, інакше виникне виняткова ситуація.

Спливаюче меню з'являється в MS Windows при відпусканні правої кнопки миші, в Motif - при натисканні середньої кнопки, а в інших графічних системах можуть бути інші правила. Щоб урахувати цю різницю, у клас MouseEvent уведений логічний метод isPopupTrigger (), який показує, що виникла подія, клацання миші викликає появу спливаючого меню.

Його потрібно викликати при виникненні всякої події миші, щоб перевіряти, чи не є воно сигналом до появи спливаючого меню, тобто звертанню до методу showo. Було б занадто незручно включати таку перевірку в усі сім методів класів-слухачів подій миші. Тому метод IsPopupTrigger () краще визвати у методі

processMouseEvent().

final JPopupMenu colorMenu = new JPopupMenu("Color");

colorMenu.add(makeMenuItem(""));

colorMenu.add(makeMenuItem(""));

colorMenu.add(makeMenuItem(""));

Контейнер FileDialog - це модальне вікно із власником типу Frame, що містить стандартне вікно вибору файлу операційної системи для відкриття (константа LOAD) або збереження (константа SAVE).

Вікна операційної системи створюються й містяться в об'єкт класу FileDialog автоматично.

final FileDialog FileSave = new FileDialog(frame,"Сохранить как",FileDialog.SAVE);


final FileDialog FileLoad = new FileDialog(frame,"Открыть",FileDialog.LOAD);

У класі три конструктори:

FileDialog (Frame owner) - створює вікно з порожнім заголовком для відкриття файла;

FileDialog (Frame owner, String title) - створює вікно відкриття файлу із заголовком title;

FileDialog(Frame owner, String title, int mode) - створює вікно відкриття або збереження документа; аргумент mode має два значення: FileDialog.LOAD та FileDialog.SAVE.

Можна встановити початковий каталог для пошуку файлу й ім'я файлу методами setDirectory(String dir) И setFile(String fileName).

Замість конкретного імені файлу fileName можна написати шаблон, наприклад, *.java (перші символи - зірочка й крапка), тоді у вікні будуть видні тільки імена файлів, що закінчуються крапкою й словом java.

Метод setFilenameFilter(FilenameFilter filter) установлює шаблон filter для імені обираного файлу. У вікні будуть видні тільки імена файлів, що підходять під шаблон. Цей метод не реалізований в SUN JDK на платформі MS Windows.


{

FileSave.setVisible(true);

try{vars.fout = new FileOutputStream(FileSave.getDirectory()+FileSave.getFile());}

catch(FileNotFoundException e){return;}

vars.st=TA.getText();

try{for(vars.ch=0;vars.ch
vars.fout.write(vars.st.charAt(vars.ch));

vars.fout.close();}

catch(IOException e){return;}

}


Компонент TextField — це поле для введення одного рядка тексту. Ширина поля виміряється в колонках (column). Ширина стовпчика - це середня ширина символу в шрифті, яким уводиться текст.

Натискання клавіші закінчує уведення й служить сигналом до початку обробки уведеного тексту, тобто при цьому відбувається подія ActionEvent.

У класі чотири конструктори:

TextField () — створює порожнє поле шириною в один стовпчик;

TextField (int columns) - створює порожнє поле із числом стовпчиків columns;

TextField (string text) - створює поле з текстом text;

TextField(String text, int columns) - створює поле з текстом text і числом стовпчиків columns.

textfield1 = new TextFieldShadow();

textfield1.set("name", "textfield1");

gbpanel1.add(textfield1);

textfield1.set("GBConstraints", new )

До методів, успадкованим від класу TextComponent, додаються ще методи getColumns() і setColumns(int col).

Цікавий різновид поля уведення - поле для уведення пароля. У такому полі замість символів, що вводять, з'являється який-небудь особливий луна-символ, найчастіше зірочка, щоб пароль ніхто не підглянув через плече.

Дане поле уведення виходить виконанням методу setEcnoCnar(char echo).

Аргумент echo - це символ, що буде з'являтися в поле.

Перевірити, чи встановлений луна-символ, можна логічним методом echoCharisSeto, одержати луна-символ - методом getEchoChar ().

Щоб повернути поле уведення у звичайний стан, досить виконати метод setEchoChar(0).


Компонент choice - це список, що розкривається, один обраний пункт (item), який видно у поле, а інші з'являються при натисненні мишею на невеликій кнопці праворуч від поля компонента.

choice1.set("items", convert("[Ljava.lang.String;", "Bookmarks,Bookmarks Tools,Writer"));

choice1.set("GBConstraints", new GBConstraints("x=1;y=1;width=3"));

choice1.set("background", convert("java.awt.Color", "white"));

choice1.set("insets", new java.awt.Insets(6, 0, 0, 0));

choice1.set("selectedItem", "Bookmarks");

Спочатку конструктором Choice створюється порожній список. Потім, методом add (string text), у список додаються нові пункти з текстом text. Вони розташовуються в порядку написання методів add() і нумеруються від нуля.

Вставити новий пункт у потрібне місце можна методом insert (string text, int position).

Вибір пункту можна зробити із програми методом select (String text) або select(int position).

Видалити один пункт зі списку можна методом remove (String text) або remove (int position), а всі пункти відразу - методом removeAl).

Число пунктів у списку можна довідатися методом getitemCount ().

З'ясувати, який пункт перебуває в позиції pos можна методом getitem(int pos), що повертає рядок.

Нарешті, визначення обраного пункту провадиться методом getselectedindex (), що повертає позицію цього пункту, або методом getseiecteditemo, що повертає виділений рядок.

Компонент Button - це кнопка стандартного для даної графічної системи виду з написом, що вміє реагувати на натиснення кнопки миші - при натисканні вона "вдавлюється" у площину контейнера, при відпусканні - стає "опуклою".


button1 = new ButtonShadow();

button1.set("name", "button1");

gbpanel1.add(button1);

button1.set("GBConstraints", new GBConstraints("x=1;y=2"));

button1.set("text", "OK");

Методи доступу getLabel() і setLabel (String label) дозволяють одержати й змінити напис на кнопці.

Головна функція кнопки - реагувати на натиснення миші, та інші методи класу обробляють ці дії.

File.add(Close_Item);

Save_Item.addActionListener(new ActionListener( ) {

public void actionPerformed(ActionEvent ae) {

FileSave.setVisible(true);

try{vars.fout = new FileOutputStream(FileSave.getDirectory()+FileSave.getFile());}

catch(FileNotFoundException e){return;}

vars.st=TA.getText();

try{for(vars.ch=0;vars.ch
vars.fout.write(vars.st.charAt(vars.ch));

vars.fout.close();}

catch(IOException e){return;}

frame.setTitle(FileSave.getFile()+" - OpenOffice.org Writer");

NaM_Item.setLabel(frame.getTitle());


2.3 Керівництво системного програміста

2.3.1. Загальні відомості

Для запуску Java - програми необхідно мати компілятор Java (jdk1.5.0_06 або інші версії), щоб після зміни деяких пунктів прокомпілювати та запустити програму.

В JDK входять пакетні програми для компіляції вихідних текстів додатків Java, віртуальна машина, програма автоматизованого створення документації по класах, довідник по класах Java й інші необхідні засоби.

Writer схожий на Microsoft Word і функціональності цих редакторів приблизно однакова. Writer також має деякі можливості, відсутні в Word, наприклад:

збереження документів у формат PDF (Така можливість була реалізована в MS Office 2007 у вигляді плагіна, який не входить в стандартне постачання і який необхідно встановлювати окремо); арифметичні розрахунки і інші формули в таблицях; можливість створення складених документів; можливість захисту окремих частин документів (розділів) і окремих осередків таблиць від змін; підтримка стилів сторінок.

Writer дозволяє зберігати документи в різних форматах, включаючи Microsoft Word, RTF, XHTML і OASIS Open Document Format, який є форматом, використовуваним за умовчанням починаючи з версії OpenOffice.org 3.0, а також у форматі попередніх версій Writer (включаючи і версію SO Writer 5.2). Writer також дозволяє виконувати експорт в wikipedia.

При цьому він дозволяє імпортувати документи Corel WordPerfect (WDP), 602 Document (.602, підтримка формату 602 Document з'явилася у версії 2.2.1), WPS Word (WPS), файлів деяких форматів мобільних текстових процесорів на платформах PocketPC і Palm і деяких інших.

Список підтримуваних форматів і якість експорту/імпорту постійно поліпшується.


2.3.2. Особливості запуску програми в Linux

Спочатку необхідно встановити на комп’ютері з ОС Linux саму програму Java, для цього необхідно запустити в консолі файл установки java, прочитати рекомендації, вибрати шлях установки, ознайомитись з інструкцією, та провести установку програми до кінця.

Далі зайти в папку з java та помістити в неї файл програми, відкомпілювати його в консолі командами javac name.java та запустити дану програму java name.

2.3.3. Особливості запуску програми в FreeBSD

Спочатку треба також встановити java на FreeBSD дотримуючись підказок програми. Потім треба зайти до папки bin і помістити до неї файл програми. Відкомпілювати і запустити його.

2.3.4. Особливості запуску програми в Windows

Для роботи з Java в середовищі Windows необхідно запустити файл установки, наприклад jdk-6u3-windows-i586-p.

При запуску даного файлу, нам необхідно буде погодитись з умовами ліцензійного договору, вибрити шлях та директорію розташування, далі провести установку, вибрати браузер для оновлення програми.

Після установки jdk-6u3-windows-i586-p, щоб запустити розроблену нами програму, необхідно зайти по вказаній при установці програми директорії (наприклад D:\Program Files\Java\jdk1.5.0_06\bin), скопіювати туди необхідну програму, далі в командній строчці прописати шлях директорії де знаходиться наша програма і натиснути «Enter». Далі прописати команди «javac назву нашої програми.java», потім «java назва_проекту» та запустити клавішею «Enter» і чекати результату.


3. РЕЗУЛЬТАТИ ТУСТУВАННЯ ПРОГРАМИ

Під час тестування програма показала те що від неї очікували. Швидке виконання команд, задач, процедур. Було витрачено мінімум системних ресурсів ПК при працюванні з програмою.




ВИСНОВКИ

Таким чином Java технологія є дуже перспективною для застосування в розробках неокомерційного спрямування. Обмеженість інструментарію Java не проявляється в проектах невеликого обсягу і компенсується простотою програмування розподілених програм, які працюють з мережею Internet/Intranet . Переносимість Java програм спрощує обмін навчальними програмами між різними навчальними закладами, відкриває можливість сумісних розробок та створення стандартних навчальних програм, наприклад для шкіл. Крім того, дуже привабливою з точки зору ефективності, залишається ідея втілення в навчальних закладах мережевих комп’ютерів (Network Computers), які працюють на базі Java, замість звичних персональних комп’ютерів (Personal Computers). На останок можна згадати про те що Java добре підтримує національні абетки, оскільки розроблялася для інтернаціональної мережі Internet. Ця обставина теж є важливою рисою в умовах України.


Завдяки даній мові програмування ми маємо можливість писати дуже зручні та легкі в використанні програми.

Мої враження від OpenOffice.org

- Openoffice.org багато в чому нагадує MS Office. Усі користувачі раніше мали досвід роботи в MS Office. З новим пакетом вони справляються самостійно, і навчати їх не потрібно.

- Openoffice.org легко настроюється. Настройки всі зрозумілі, відчувається увага розробників до потреб індивідуального користувача. "Зайві" на наш погляд кнопки з панелей інструментів ми забрали.

Швидкість відкривання великих документів нас здивувала. Якщо поспостерігати за тим, як Microsoft Word відкриває багатосторінкові документи: текст ви побачите швидко, але ще якийсь час змушені чекати, поки Word порахує всі сторінки в документі й перевірить орфографію.

В OpenOffice.org Writer на момент відкриття всі аркуші вже підраховані, а орфографія перевірена.

СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ


1.Баклан І.В. Основи програмування на Java – К.: НАУ 2007,244с.

2. Жуков С.Е «Java - це просто».- Москва.2006р, 102с.

3. Нотон Патрик, Шилдт Герберт. Полный справочник по Java.: Пер. с англ.: - К.: Диалектика, 1997.

4. om/ Специфікація мови програмування Java.

5. com/docs/books/tutorial/