Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методпособие РП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.56 Mб
Скачать

Оглавление

Лабораторная работа №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й л.р.:

  1. Реализовать приложение, содержащее не менее 4х-5ти классов (агрегация, ассоциация, наследование и т.д.) ;

  2. Приложения с графическим интерфейсом должно позволять работать со справочниками: добавление, удаление, получение всего списка;

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

Лабораторная работа №1. Знакомство с Java Задание

Реализовать пример.

Ход работы

  1. Запустите NetBeans IDE: ярлык на рабочем столе или Пуск → Программы → NetBeans → NetBeans IDE.

  2. Выберите пункт меню Файл → Создать проект.

  3. Выберите пункт Java (Категории) → Библиотека классов Java (Проекты).

  4. Укажите имя проекта и путь. Нажмите на кнопку «Готово».

  5. Перед вами откроется среда визуальной разработки приложений

  6. Создайте пакет для типов и назовите его, например, types

  1. Создайте класс, например, Tovar

  1. Определите необходимый набор полей

  1. Добавьте конструктор без параметров: правая кнопка мыши → «Вставка кода…» → Конструктор → Создать

  1. В полученном методе определите все значения полей в значения по умолчанию:

public Tovar() {

this.name = "";

this.kol = 0;

this.price = 0;

}

  1. Добавить конструктор с параметрами: правая кнопка мыши → «Вставка кода…» → Конструктор → отметить все поля → Создать

  1. В результате сгенерируется программный код

  1. Добавьте методы получения и установки значений полей: Добавьте конструктор с параметрами: правая кнопка мыши → «Вставка кода…» → Методы получения и установки → отметить все поля → Создать

  1. Сформируется следующий программный код:

  1. Создайте пакеты: operation – для классов обработки, base – для класса формы

  1. Добавьте в пакет operation interface TovarOperation

  1. Добавьте в пакет operation class TovarOperation

  1. Создайте форму (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

  1. Структура проекта должна быть следующей

  1. Программный по файлам

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);

}

}

}