- •Лабораторная работа №1. Знакомство с Java Задание
- •Ход работы
- •Лабораторная работа №2. Gui приложение на Java Задание
- •Требования:
- •Лабораторная работа №3. Реализация Java rmi Задание
- •Требования:
- •Реализация простого приложения Java rmi (консоль)
- •Определение удаленного интерфейса
- •Реализация удаленного интерфейса
- •Реализация серверного приложения
- •Реализация клиентского приложения
- •Реализация Java rmi с использованием объектов (консоль)
- •Реализация Java rmi с использованием объектов (gui)
- •Возможные ошибки
- •Лабораторная работа №4. Реализация .Net Remoting Задание
- •Требования:
- •Реализовать приложение, содержащее не менее 4х-5ти классов (агрегация, ассоциация, наследование и т.Д.) ;
- •Приложения с графическим интерфейсом должно позволять работать со справочниками: добавление, удаление, получение всего списка;
- •Определение удаленного интерфейса
- •Реализация удаленного интерфейса
- •Реализация серверного приложения
- •Реализация клиентского приложения
- •Реализация приложения c# .Net Remoting с графическим интерфейсом
- •Лабораторная работа №5. Реализация веб-сервиса Задание
- •Требования:
- •Реализовать приложение, содержащее не менее 4х-5ти классов (агрегация, ассоциация, наследование и т.Д.) ;
- •Приложения с графическим интерфейсом должно позволять работать со справочниками: добавление, удаление, получение всего списка;
- •Приложения с графическим интерфейсом должно позволять работать с основной таблицей: добавление, удаление, получение всего списка, пересчет какого-нибудь вычисляемого поля.
- •1. Простой веб-сервис
- •1.1. Реализация сервиса
- •1.2. Тестирование сервиса
- •1.3. Реализация клиента для сервиса в NetBeans на Java
- •1.4. Реализация клиента для сервиса в Visual Studio на c#
- •2. Сервис TovarService
- •2.1. Реализация сервиса
- •2.2. Реализация клиента для сервиса в NetBeans на Java
- •2.3. Реализация клиента для сервиса в Visual Studio на c#
Оглавление
Лабораторная работа №1. Знакомство с Java 2
Задание 2
Ход работы 2
Лабораторная работа №2. GUI приложение на Java 13
Задание 13
Требования: 13
Лабораторная работа №3. Реализация Java RMI 14
Задание 14
Требования: 14
Реализация простого приложения Java RMI (консоль) 14
Реализация Java RMI с использованием объектов (консоль) 16
Реализация Java RMI с использованием объектов (GUI) 21
Возможные ошибки 24
Лабораторная работа №4. Реализация .Net Remoting 25
Задание 25
Требования: 25
Реализация простого приложения C# .Net Remoting (HelloWorld) 25
Реализация приложения C# .Net Remoting с графическим интерфейсом 27
Лабораторная работа №5. Реализация веб-сервиса 34
Задание 34
Требования: 34
1. Простой веб-сервис 34
1.1. Реализация сервиса 34
1.2. Тестирование сервиса 35
1.3. Реализация клиента для сервиса в NetBeans на Java 36
1.4. Реализация клиента для сервиса в Visual Studio на C# 38
2. Сервис TovarService 39
2.1. Реализация сервиса 39
2.2. Реализация клиента для сервиса в NetBeans на Java 42
2.3. Реализация клиента для сервиса в Visual Studio на C# 45
Требования к любой из работ, начиная со 2й л.р.:
Реализовать приложение, содержащее не менее 4х-5ти классов (агрегация, ассоциация, наследование и т.д.) ;
Приложения с графическим интерфейсом должно позволять работать со справочниками: добавление, удаление, получение всего списка;
Приложения с графическим интерфейсом должно позволять работать с основной таблицей: добавление, удаление, получение всего списка, пересчет какого-нибудь вычисляемого поля.
Лабораторная работа №1. Знакомство с Java Задание
Реализовать пример.
Ход работы
Запустите NetBeans IDE: ярлык на рабочем столе
или Пуск → Программы → NetBeans
→ NetBeans
IDE.Выберите пункт меню Файл → Создать проект.
Выберите пункт Java (Категории) → Библиотека классов Java (Проекты).
Укажите имя проекта и путь. Нажмите на кнопку «Готово».
Перед вами откроется среда визуальной разработки приложений
Создайте пакет для типов и назовите его, например, types
Создайте класс, например, Tovar
Определите необходимый набор полей
Добавьте конструктор без параметров: правая кнопка мыши → «Вставка кода…» → Конструктор → Создать
В полученном методе определите все значения полей в значения по умолчанию:
public Tovar() {
this.name = "";
this.kol = 0;
this.price = 0;
}
Добавить конструктор с параметрами: правая кнопка мыши → «Вставка кода…» → Конструктор → отметить все поля → Создать
В результате сгенерируется программный код
Добавьте методы получения и установки значений полей: Добавьте конструктор с параметрами: правая кнопка мыши → «Вставка кода…» → Методы получения и установки → отметить все поля → Создать
Сформируется следующий программный код:
Создайте пакеты: operation – для классов обработки, base – для класса формы
Добавьте в пакет operation interface TovarOperation
Добавьте в пакет operation class TovarOperation
Создайте форму (JFrame) в пакете base и поместите на форму объекты в соответствии с эскизом формы и таблицей свойств объектов
Свойства для объекта JSpinner
Таблица свойств объектов:
Контейнер |
Объект |
Name |
Другие свойства |
|
JFrame |
form |
title: Работа №1 |
|
JTable (Таблица) |
tbl |
[Столбцы] Счетчик: 5 1: Заголовок: № п/п Тип: Object Переменный размер: да Редактируемый: нет 2: Заголовок: Название Тип: Object Переменный размер: да Редактируемый: нет 3: Заголовок: Цена Тип: Object Переменный размер: да Редактируемый: нет 4: Заголовок: Количество Тип: Object Переменный размер: да Редактируемый: нет 5: Заголовок: Сумма Тип: Object Переменный размер: да Редактируемый: нет [Строки] Счетчик: 0 |
JLabel (Надпись) |
lbl |
text: Общая сумма товара |
|
JTextField (Текстовое поле) |
txt |
text: editable: false |
|
JToolBar (Панель инструментов) |
tlBar |
text: Файл |
|
tlBar |
JButton (Кнопка) |
btnAdd |
text: Добавить |
btnDecide |
text: Вычислить |
||
btnExit |
text: Выход |
||
JSeparator (Разделитель) |
spr1 |
|
|
spr2 |
|
||
ButtonGroup (Группа кнопок) |
btnGrp |
|
|
JDialog (Диалоговое окно) |
dlgAdd |
title: Окно ввода |
|
dlgAdd |
JLabel (Надпись) |
lblName |
text: Наименование |
lblKol |
text: Количество |
||
lblPrice |
text: Цена |
||
lblPriceInfo |
text: 50 |
||
JComboBox (Поле со списком) |
cmbName |
model: Тетрадь Ручка Карандаш |
|
JSpinner (Циклический счетчик) |
spnKol |
model: Тип модели: Число Тип числа: Целое число Нач.значение: 10 Минимум: 1 Максимум: 30 Размер шага: 2 |
|
JScrollBar (Полоса прокрутки) |
scrPrice |
maximum: 100 minimum: 5 orientation: HORIZONTAL value: 50 |
|
JPanel (Панель) |
pnlConstruct |
border: Рамка с надписью → Заголовок: Конструктор |
|
JButton (Кнопка) |
btnAddTovar |
text: Добавить |
|
btnCancel |
text: Отмена |
||
pnlConstruct |
JRadioButton (Переключатель) |
rdbNoParam |
text: без параметров selected: true buttonGroup: btnGrp |
rdbYesParam |
text: с параметрами buttonGroup: btnGrp |
Структура проекта должна быть следующей
Программный по файлам
Tovar.java
package types;
public class Tovar {
private String name;
private int kol;
private int price;
public Tovar() {
this.name = "";
this.kol = 0;
this.price = 0;
}
public Tovar(String name, int kol, int price) {
this.name = name;
this.kol = kol;
this.price = price;
}
public int getKol() {
return kol;
}
public void setKol(int kol) {
this.kol = kol;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
TovarOperation.java
package operation;
import java.util.List;
import types.Tovar;
public interface TovarOperation {
List<Tovar> getListOfTovar();
List<Tovar> addNewTovar(Tovar item);
int getSumOfTovar();
}
TovarOperationImpl.java
package operation;
import java.util.ArrayList;
import java.util.List;
import types.Tovar;
public class TovarOperationImpl implements TovarOperation{
static List<Tovar> lstTovar = new ArrayList<Tovar>();
static{
lstTovar.add(new Tovar("Товар1", 10, 100));
lstTovar.add(new Tovar("Товар2", 20, 200));
lstTovar.add(new Tovar("Товар3", 30, 300));
lstTovar.add(new Tovar("Товар4", 40, 400));
}
@Override
public List<Tovar> getListOfTovar(){
return lstTovar;
}
@Override
public List<Tovar> addNewTovar(Tovar item){
lstTovar.add(item);
return lstTovar;
}
@Override
public int getSumOfTovar(){
int sum = 0;
for(Tovar tovar: lstTovar)
sum += tovar.getKol() * tovar.getPrice();
return sum;
}
}
Frame.java
package base;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import operation.TovarOperationImpl;
import types.Tovar;
public class Frame extends javax.swing.JFrame {
/**
* Creates new form Frame
*/
public Frame() {
initComponents();
}
…
TovarOperationImpl tovarOperation = new TovarOperationImpl();
static DefaultTableModel model = new DefaultTableModel();
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
dlgAdd.setSize(300, 320);
dlgAdd.setVisible(true);
}
private void btnDecideActionPerformed(java.awt.event.ActionEvent evt) {
txtTotalSumma.setText(Integer.toString(tovarOperation.getSumOfTovar()));
}
private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
System.exit(0);
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
model = (DefaultTableModel)tbl.getModel();
doVivod(tovarOperation.getListOfTovar());
}
private void scrPriceAdjustmentValueChanged(java.awt.event.AdjustmentEvent evt) {
lblPriceInfo.setText(Integer.toString((int) scrPrice.getValue()));
}
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {
dlgAdd.setVisible(false);
}
private void btnAddTovarActionPerformed(java.awt.event.ActionEvent evt) {
dlgAdd.setVisible(false);
// д.б. код для проверки полей на правильность ввода
Tovar el;
if (rdbYesParam.isSelected()) {
el = new Tovar(cmbName.getSelectedItem().toString(), (int) spnKol.getValue(), scrPrice.getValue());
} else {
el = new Tovar();
el.setName(cmbName.getSelectedItem().toString());
el.setKol((int) spnKol.getValue());
el.setPrice(scrPrice.getValue());
}
doVivod(tovarOperation.addNewTovar(el));
}
private void doVivod(List<Tovar> lstTovar){
doClearTable();
int i = 1;
for(Tovar tovar: lstTovar){
Object[] rowData = new Object[5];
rowData[0] = i++;
rowData[1] = tovar.getName();
rowData[2] = tovar.getPrice();
rowData[3] = tovar.getKol();
rowData[4] = tovar.getPrice() * tovar.getKol();
model.addRow(rowData);
}
}
private void doClearTable(){
while (model.getRowCount()>0){
model.removeRow(0);
}
}
…
}
