- •1 Постановка задачи 6
- •Введение
- •1 Постановка задачи
- •2 Теоретический раздел
- •3 Обзор предметной области
- •3.1 Апплет Clock2.Java
- •3.2 Обзор исходного кода Clock2.Java
- •4. Инструкция программиста
- •4.1. Бизнес-логика приложения в пользовательском классе
- •4.1.1. Поля и свойства Clock
- •4.1.2. Конструкторы класса Clock
- •4.1.3. Методы класса Clock
- •4.2. Визуализация текущей даты и времени
- •4.3. Сохранение текущего состояния приложения в файл и чтение из файла
- •4.3.1. Поля и свойства пользовательского класса ClockConfig
- •4.3.2. Конструкторы пользовательского класса ClockConfig
- •4.3.3. Методы пользовательского класса ClockConfig
- •5. Инструкция Пользователя
- •5.1. Запуск приложения
- •5.2. Основные элементы приложения
- •5.3. Управление главным окном приложения
- •5.4. Настройка приложения
- •Приложение а
- •Приложение б
- •Приложение в
- •Приложение г
- •Приложение д
- •Приложение е
- •Список использованных источников
1 Постановка задачи
Включить бизнес логику исходного приложения в свой пользовательский класс;
Добавить к приложению визуализацию текущей даты и времени с использованием отдельного потока;
Добавить возможность сохранения текущего состояния приложения в файл и чтения из файла;
Предусмотреть обработку исключительных ситуаций и создать классы для обработки этих ситуаций;
Добавить элементы графического интерфейса к главному окну приложения.
В данном курсовом проекте будет осуществлена трансляция игрового WEB-приложения с языка Java на язык C# (WPF-приложение).
В качестве исходного кода было выбрано приложение (апплет) Clock2.java поставляемое вместе с компилятором в качестве Demo-приложения. Исходный код приведен в приложении А.
2 Теоретический раздел
Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.
При трансляции необходимо учитывать отличительные особенности исходного и целевого языков.
Внешние модули в Java и в C# подключаются сходным образом. В Java используется ключевое слово import, в С# — using. Существенным отличием между import в Java и using в C# является то, что C# использует концепцию пространств имён (namespace), напоминающую одноимённый механизм C++. В Java используется концепция пакетов.
В C# классы могут располагаться в файлах произвольным образом. Имя файла исходного кода никак не связано с именами определяемых в нём классов. Допускается расположить в одном файле несколько общедоступных (public) классов. В Java каждый файл может содержать только один общедоступный (public) класс, причём Java требует, чтобы имя файла совпадало с именем этого класса, что исключает путаницу в именах файлов и классов.
В C# нет множественного наследования, в отличие от Java.
3 Обзор предметной области
3.1 Апплет Clock2.Java
В приложении Clock2.java реализованы аналоговые часы с круглым циферблатом. Часы показывают текущее системное время. В данном приложении также есть отображения текущей даты, времени в цифровом виде. На рисунку 3.1 отображена работа приложения.
Рисунок 3.1 – Работа приложения Clock2.java
3.2 Обзор исходного кода Clock2.Java
Бизнес логика приложения описана в классе public class Clock2 extends Applet implements Runnable. Данный класс унаследован от класса Applet и включает в себя интерфейс Runnable для работы в потоке. Далее будут описаны основные методы и поля класса.
Thread timer – поток, который отвечает за отображение часов (перерисовку).
int lastxs, lastys, lastxm, lastym, lastxh, lastyh – хранят координаты для перерисовки стрелок часов.
SimpleDateFormat formatter – хранит формат отображаемой даты.
String lastdate – строковое значение отображаемой даты.
Font clockFaceFont – фон часов.
Date currentDate – хранит полученное системное время для дальнейшего отображения.
Color handColor – цвет основных стрелок.
Color numberColor – цвет чисел циферблата.
Метод public void init() – служит для инициализации переменных класса апплета, таких как время, дата, цвет и др.
Метод public void plotpoints(int x0, int y0, int x, int y, Graphics g) – предназначен для рисования точек окружности по заданным координатам int x0, int y0, int x, int y на графическом объекте Graphics g.
Метод public void circle(int x0, int y0, int r, Graphics g) – выполняет рисование окружности циферблата путем рисования точек с помощью метода plotpoints. Принимает в качестве параметров координаты центра int x0, int y0, радиус int r и графический объект для рисования Graphics g.
Метод public void paint(Graphics g) – главный метод класса, который осуществляет перерисовку стрелок, даты, времени. В этом методе вычисляются координаты стрелок. В качестве единственного параметра принимает объект для рисования Graphics g.
Метод public void start - вызывается после метода init в момент, когда пользователь начинает просматривать документ HTML с встроенным в него аплетом. В этом методе инициализируется и запускается поток осуществляющий перерисовку приложения.
Метод public void stop() - получает управление, когда пользователь покидает страницу с аплетом и загружает в окно браузера другую страницу. Метод stop вызывается перед методом destroy. Осуществляет освобождение памяти.
Метод public void run() – это определение метода интерфейса Runnable. Данный метод выполняет перерисовку приложения вызывая в цикле метод repaint(), пока существует поток timer данного класса.
Метод public void update(Graphics g) – осуществляет перерисовку приложения путем вызова метода paint().В качестве единственного параметра принимает объект для рисования Graphics g.
Метод public String getAppletInfo() – возвращает информацию о приложении и его авторе.
Метод public String[][] getParameterInfo() – возвращает массив строк, в которых описаны цветовые настройки приложения.
