Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП Лабораторный практикум.doc
Скачиваний:
45
Добавлен:
07.06.2015
Размер:
505.34 Кб
Скачать
      1. Шаг 9. Обработка нажатий на остальные кнопки.

Осталось обработать нажатия на кнопки очистки (С) и равно (=). Создайте в конструкотре обработчики события actionPerformedдля этих кнопок и введите в них следующий код:

//нажатие на «равно»

private void btResActionPerformed(java.awt.event.ActionEvent evt) {

// сначала выполняем последнюю операцию

execLastOper();

//начинаем все заново

lastOper=Oper.Nop;

//числа вводятся заново

needClear=true;

}

//нажатие на очистку (С)

private void btClearActionPerformed(java.awt.event.ActionEvent evt)

{

//очищаем операции

lastOper=Oper.Nop;

//ввод чисел заново

needClear=true;

//обнуляем все операнды

leftNum=rightNum=0;

//на экране калькулятора рисуем 0

lbScreen.setText("0");

}

Запустите проект на выполнение. Добейтесь, чтобы все работало корректно и без ошибок.

  1. Лабораторная работа 2. Создание классов. Конструкторы.

Задания.

1. Создать класс «комплексное число». Подумать, какие конструкторы необходимо реализовать для удобной работы с классом. Реализовать их. Написать методы: сложения, вычитания, умножения, деления, сравнения, возвращающий сопряженное число. Выполнить следующие примеры:

Даны числа z1 = 3 - i; z2 = -2+ i*3

Найти z1 * z2; (z1/z2)2

2. Создать класс для работы с векторами 3D, задаваемыми тройкой координат. Реализовать сложение, вычитание, скалярное произведение векторов, произведение вектора на скаляр, сравнение векторов, вычисление длины вектора, сравнение длин векторов. Проверить работу класса на примерах.

3. Создать класс для работы с датой в формате «год.месяц.день». Данные хранятся в переменных уровня класса: год, месяц, день. Создать минимум 3 конструктора, позволяющих задавать дату строкой, числами и другой датой. Реализовать методы: добавление дней к дате; вычитание дней из даты; сравнение дат; вычисление количества дней между датами. Проверить работу класса на примерах.

  1. Лабораторная работа 3. Создание классов. Наследование и агрегация.

Целью работы является знакомство с основными конструкциями языка Java, принципами создания классов и объектов, наследованием и агрегацией на практическом примере.

В процессе выполнения задания НЕЛЬЗЯ пользоваться утилитными классами Java.

Задание 1.

Создайте класс Book, описывающий книгу.

Каждая книга содержит: автора, название, стоимость в рублях и год издания.

Создайте для каждого атрибута книги закрытую переменную-член класса соответствующего типа.

Конструктор по умолчанию должен создавать книгу с параметрами:

«Не определено», «Не определено», 0.0, 0.

Второй конструктор должен принимать все 4 параметра: автора, название, стоимость в рублях и год издания.

Напишите третий конструктор, который имеет 2 параметра: автора и год издания (Используйте вызов конструктора по умолчанию).

Для каждого атрибута создайте методы получения и установки значения.

Задание 2.

Создайте класс ChildrenBook, описывающий книгу для детей, расширяющий классBook. Книга для детей имеет еще один параметр – минимальный возраст, с которого можно читать книгу (в годах).

Создайте соответствующую переменную, методы получения и установки значения.

Создайте 3 конструктора: по умолчанию (мин. возраст = 0), с двумя параметрами (как в задании 1) и с полным списком параметров. При разработке конструкторов используйте вызовы конструкторов суперкласса.

Создайте класс ScientificBook, описывающий научную книгу, расширяющий классBook. Научная книга имеет дополнительный параметр – индекс цитируемости (вещественное число).

Создайте соответствующую переменную, методы получения и установки значения.

Создайте 3 конструктора: по умолчанию (индекс цитирования = 0.0), с двумя параметрами (как в задании 1) и с полным списком параметров. При разработке конструкторов используйте вызовы конструкторов суперкласса.

Задание 3.

Создайте класс ChildrenLibraryHall, описывающий детский зал библиотеки, который хранит массив книг для детей.

Зал имеет имя (например «12+» или «6+»).

Нумерация книг сквозная, начинается с 0 и соответствует индексу в массиве. Номер книги не хранится.

Создайте соответствующие переменные и методы чтения/установки значений.

Создайте 2 конструктора:

  1. принимающий имя зала и кол-во книг в зале;

  2. принимающий имя зала и массив книг.

Создайте следующий методы для:

  • получения количества книг в зале;

  • выводящий на экран список названий всех книг в зале;

  • получения общей стоимости всех книг в зале;

  • получения книги по ее номеру в зале;

  • изменения книги по ее номеру;

  • добавления книги;

  • удаления книги.

Создайте метод getBestBook(), возвращающий книгу с самой высокой стоимостью.

Задание 4.

Создайте класс ChildrenLibrary, описывающий детскую библиотеку и содержащий массив залов.

Нумерация залов в библиотеке сквозная, начинается с 0.

Нумерация книг в библиотеке сквозная, начинается с 0 нулевого зала.

Создайте 2 конструктора:

  • принимающий количество залов и массив количеств книг по залам;

  • принимающий массив залов.

Создайте методы получения:

  • количества залов;

  • количества книг;

  • сумму всех книг в библиотеке;

  • массива залов библиотеки;

  • объекта зала по его номеру в библиотеке;

  • объекта книги по его номеру в библиотеке;

  • отсортированного по убыванию цены массива книг библиотеки.

Создайте еще методы:

  • выводящий на экран список названий всех залов с количеством книг в них;

  • замена зала по его номеру на другой (ссылка на новый зал передается вторым параметром);

  • замена книги по ее номеру на другую (ссылка на другую книгу передается вторым параметром);

  • добавление книги в библиотеку по ее номеру в библиотеке; ссылка на новую книгу – второй параметр метода; количество залов не увеличивается;

  • удаление квартиры по ее номеру в библиотеке;

  • метод getBestBook()получение самой лучшей книги в библиотеке (с самой большой ценой).

Задание 5.

Объедините имеющиеся на данный момент типы в пакет libraries.

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

Выведите автора самой лучшей книги; выведите список названий книг по убыванию цены.