Задания к лабораторной работе №2



1. Создать классы Point и Line. Объявить массив из n объектов класса Point. Для объекта класса Line определить, какие из объектов Point лежат на одной стороне от прямой и какие на другой. Реализовать ввод данных для объекта Line и случайное задание данных для объекта Point.

2. Создать классы Point и Line. Объявить массив из n объектов класса Point и определить в методе, какая из точек находится дальше всех от прямой.

3. Создать класс Triangle и класс Point. Объявить массив из n объектов класса Point, написать функцию, определяющую, какая из точек лежит внутри, а какая снаружи треугольника.

4. Определить класс Rectangle и класс Point. Объявить массив из n объектов класса Point. Написать функцию, определяющую, какая из точек лежит снаружи, а какая внутри прямоугольника.

5. Реализовать полиморфизм на основе абстрактного класса AnyFigure и метода show(). Вывести точку, треугольник, тетраэдр.

6. Определить класс Line для прямых линий проходящих через точки A(x1, y1) и B(x2, y2). Создать массив объектов класса Line. Определить какие из прямых линий пересекаются, а какие совпадают, используя функции. Нарисовать все пересекающиеся прямые.

7. Определить классы Triangle и NAngle. Определить, какой из m введённых n-угольников имеет наибольшую площадь.

8. Задать движение по экрану строк (одна за другой) из массива строк. Направление движения по апплету и значение каждой строки выбирается случайным образом.

9. Задать составление строки из символов появляющихся из разных углов апплета и выстраивающихся друг за другом. Процесс должен циклически повторяться.

10. Задать движение окружности по апплету так, чтобы при касании границы окружность отражалась от нее с эффектом упругого сжатия.

11. Изобразить в апплете приближающийся издали шар, удаляющийся шар. Шар должен двигаться с постоянной скоростью.

12. Изобразить в окне приложения (апплета) отрезок, вращающийся в плоскости экрана вокруг одной из своих концевых точек. Цвет прямой должен изменяться при переходе от одного положения к другому.

13. Изобразить в окне приложения (апплета) отрезок, вращающийся в плоскости фрейма вокруг точки, движущейся по отрезку.

14. Изобразить четырехугольник, вращающийся в плоскости апплета вокруг своего центра тяжести.

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

16. Изобразить разносторонний треугольник, вращающийся в плоскости апплета вокруг своего центра тяжести.

17. Создать фрейм с областью для рисования «пером». Создать меню для выбора цвета и толщины линии.

18. Создать апплет с областью для рисования «пером». Создать меню для выбора цвета и толщины линии.

19. Создать фрейм с областью для рисования. Добавить кнопки для выбора цвета (каждому цвету соответствует своя кнопка), кнопку для очистки окна. Рисование на панели со скроллингом.

20. Создать апплет с областью для рисования. Добавить кнопки для выбора цвета (каждому цвету соответствует своя кнопка), кнопку для очистки окна. Рисование на панели со скроллингом.

21. Создать простой текстовый редактор, содержащий меню и использующий классы диалогов для открытия и сохранения файлов.

22. Создать апплет, содержащий (JLabel) с текстом «Простой апплет», кнопку и текстовое поле (JTextField), в которое при каждом нажатии на кнопку выводится по одной строке из текстового файла.

23. Изменить апплет для предыдущей задачи таким образом, чтобы он мог работать и как апплет, и как приложение.

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

25. Изобразить в окне гармонические колебания точки вдоль некоторого горизонтального отрезка. Если длина отрезка равна q, то расстояние от точки до левого конца в момент времени t можно считать равным q(1+cos(wt))/2, где w - некоторая константа. Предусмотреть поля для ввода указанных величин и кнопку для остановки и пуска процесса.

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

27. Построить в апплете ломаную линию по заданным вершинам. Координаты вершин – вводятся через текстовое поле и фиксируются нажатием кнопки.

28. Нарисовать в апплете окружность с координатами центра и радиусом, вводимыми через текстовые поля.

29. Cоздать апплет со строкой движущейся горизонтально, отражаясь от границ апплета и меняя при этом свой цвет, на цвет выбранный из выпадающего списка.

30. Cоздать апплет со строкой движущейся по диагонали. При достижении границ апплета все символы строки случайным образом меняют регистр. При этом шрифт меняется на шрифт, выбранный из списка.

31. Создать апплет. Поместить на него текстовое поле (JTextField), кнопку (JButton) и метку (JLabel). В метке отображать действия, которые выполняются в текстовом поле (например, «Введен текст…») или с кнопкой («Нажата кнопка»).

32. Создать апплет. Поместить на него две панели (JPanel) и кнопку. Первая панель содержит поле ввода (использовать JTextField) и метку (JLabel - «Поле ввода»); вторая – поле вывода и метку («Поле вывода»). Для размещения в окне двух панелей и кнопки (JButton - «Скопировать») использовать BorderLayout.NORTH, BorderLayout.CENTER и BorderLayout.SOUTH, соответственно.

33. Изменить задачу 2 так, чтобы при нажатии на кнопку «Скопировать» текст из поля ввода переносится в поле вывода, а поле ввода очищается.

34. Задача 2 модифицируется так, что при копировании поля ввода нужно кроме собственно копирования организовать занесение строки из поля ввода во внутренний список. При решении использовать коллекцию, в частности, ArrayList.

35. К условию задачи 2 добавляется еще одна кнопка с надписью «Печать». При нажатии на данную кнопку весь сохраненный список должен быть выведен в консоль. При решении использовать коллекцию, в частности, TreeSet.

36. Написать программу для построения таблицы значений функции. Использовать метку (JLabel), содержащую заголовок (текст) «Функция: …»; панель, включающую три текстовых поля (JTextField), содержащих значения параметра, шага (например, 0.1) и количества точек. Начальное значение x=0. С каждым текстовым полем связана метка, содержащая его название. В нижней части окна должно находиться текстовое поле со скроллингом, содержащее полученную таблицу.

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

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

39. Создать апплет с двигающимся по нему прямоугольником (окружностью, эллипсом, линией). Направление движения объекта по экрану изменяется на противоположное щелчком по клавише мыши. При этом каждый второй щелчок меняет цвет фона.

40. Создать фрейм с изображением окружности. Длина дуги окружности изменяется нажатием клавиш от 1 до 9.

41. Создать фрейм с кнопками. Кнопки «вверх», «вниз», «вправо», «влево» двигают в соответствующем направлении линию. При достижении границ апплета линия появляется с противоположной стороны.

42. Создать фрейм и разместить на нем окружность (одну или несколько). Объект должен «убегать» от указателя мыши. При приближении на некоторое расстояние объект появляется в другом месте фрейма.

43. Создать фрейм с изображением графического объекта. Объект на экране движется к указателю мыши, когда последний находится в границах апплета.

44. Промоделировать вращение спутника вокруг планеты по эллиптической орбите. Когда скрывается за планетой – спутник не виден.

45. Промоделировать аналоговые часы (со стрелками) с кнопками для увеличения/уменьшения времени на час/минуту.

 

Лабораторная работа № 3 Построение объектно-ориентированного приложения

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

Шаблоны проектирования

Шаблоны проектирования (паттерн, pattern) — это эффективные способы решения характерных задач проектирования, в частности проектирования компьютерных программ. Паттерн не является законченным образцом проекта, который может быть прямо преобразован в код, скорее это описание или образец для того, как решить задачу, таким образом, чтобы это можно было использовать в различных ситуациях. Объектно-ориентированные шаблоны зачастую показывают отношения и взаимодействия между классами или объектами, без определения того, какие конечные классы или объекты приложения будут использоваться. Алгоритмы не рассматриваются как шаблоны, так как они решают задачи вычисления, а не проектирования. Шаблоны проектирования хорошо освещены в литературе. В частности рекомендуется ознакомиться с данной темой по следующим адресам:

http://ru.wikipedia.org/wiki/Шаблоны_проектирования

http://www.proklondike.com/file/Java/Stelting_Maasen_-_Primenenie_Shablonov_Java.rar

Библиотека Jung

                   Задания с использованием широко известной библиотеки Jung  (Java Universal Network/Graph Framework) базируются на знаниях теории графов, полученных студентом в курсе «Дискретная математика». Учитывая отсутствие документации на русском языке ниже описаны основные возможности библиотеки Jung с указанием классов их реализующими. Документация и примеры предоставлены в электронном виде.

Средства визуализации

       Библиотека JUNG предоставляет набор классов, предназначенных для инкапсуляции процесса визуализации графов и для удобства разработки, реализованных в виде трехуровневой архитектуры:

§ Классы, отвечающие за внутреннее представление графа в системе. В качестве примера реализации ориентированных и неориентированных графов, в системе реализованы классы DirectedSparseGraph и UndirectedSparseGraph.

§ Классы, отвечающие за расположение графа на экране (Layout), то есть за сопоставление вершинам графам определенных координат. Простейшей реализацией является класс StaticLayout. Более сложные классы позволяют реализовывать различные визуальные эффекты, связанные с расположением вершин.

§ Классы, отвечающие за непосредственное рисование объектов графа, таких как вершины, ребра и текстовые метки. Например, достаточно гибко настраиваемый PluggableRenderer.

 


Дата добавления: 2018-04-04; просмотров: 2496; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!