
Министерство образования Украины
Харьковский национальный университет радиоэлектроники
ЛАБОРАТОРНАЯ РАБОТА №3
На тему: «Работа с классами»
Студентки гр. ПЗАС 11-1
Вяргизовой Г.А.
Харьков, 2012
Содержание.
Задание 3
Порядок выполнения работы 4
Задание
Объявить систему классов: Точка, Прямоугольник, Квадрат, Ромб, Трапеция, Треугольник, Четырехугольник;
Определить методы, которые перемещают фигуры по плоскости, изменяют ее размеры и выводят в стандартный выходной поток.
Выполнение работы
Для построения точки необходимо всего несколько параметров: координаты точки - x, y (если в пространстве, то еще z) и её цвет. В случае с фигурами требуется знать (или вычислить по другим данным) несколько точек, цвет линий и цвет заливки.
Учитывая тот момент, что каждая фигура состоит как минимум из одной точки, имеет один цвет линий, можно воспользоваться возможностью наследования классов в Java.
Отновительно методов, реализующих перемещение фигур, необходимо заметить, что их реализация должна предусматривать прорисовку фигуры с новыми координатами точек (смещенных на некое расстояние на плоскости). Эти методы также могут предусматривать изменение размеров фигуры, цвета её линий и заливки. Об изменениях параметров фигур метод будет выводить информацию в стандартный выходной поток.
Содержание файла «FigureClass.Java»:
Import java.Awt.Color;
/**
* Базовый класс для описания всех фигур
*/
public class FigureClass {
protected int x;
protected int y;
protected Color color;
/**
* Default constructor
*/
public FigureClass() {
super();
this.x = 0;
this.y = 0;
this.color = new Color (0,0,0);
}
/**
* Constructor
* @param x - Horizontal (Base) point position
* @param y - Vertical (Base) point position
* @param c - Color of point
*/
public FigureClass(int x, int y, Color c) {
super();
this.x = x;
this.y = y;
this.color = c;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public Color getColor() {
return color;
}
}
В данном классе использовано всего три параметра: координаты (базовой) точки для построения фигуры и цвет точки или линий фигуры.
Собственно класс, описывающий точку, будет полностью наследовать предыдущий класс, и иметь только реализацию методов перемещения объектов.
Содержание файла «Point.java»:
Import java.Awt.Color;
/**
* Класс, описывающий объект "Точка"
*/
public class Point extends FigureClass {
/**
* Default constructor
*/
Point () {
super();
this.x = 0;
this.y = 0;
this.color = new Color (0, 0, 0);
}
/**
* Constructor
* @param x - Horizontal (Base) point position
* @param y - Vertical (Base) point position
* @param c - Color of point
*/
Point (int x, int y, Color c) {
super();
this.x = x;
this.y = y;
this.color = c;
System.out.println("Point nas been set to position (x, y) = (" + x + ", " + y + ")");
}
/**
* Move point to new position
* @param x - Horizontal (Base) point position
* @param y - Vertical (Base) point position
* @param c - New color of point (null - no change)
*/
public void moveTo (int x, int y, Color c) {
this.x = x;
this.y = y;
if (c != null)
this.color = c;
System.out.println("Point nas been moved to new position (x, y) = (" + x + ", " + y + ")");
}
}
Определимся с прямоугольником. Эту фигуру можно построить различными способами (в зависимости от того, какие данные о нем будут присутствовать). Поскольку в задании неуказанно, какие именно данные о фигуре будут предоставляться, будем считать, что:
стороны прямоугольника расположены строго параллельно осям координат;
Для фигуры задана левая нижняя точка, которая и будет являться базовой;
Заданы длины сторон фигуры;
Остальные точки будем рассчитывать по длине сторон прямоугольника.
Реализация класса «Rectangle.java» будет следующей:
Import java.Awt.Color;
/**
* Класс, описывающий "Прямоугольник"
*/
class Rectangle extends FigureClass {
protected int width;
protected int height;
protected Color bgColor;
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}
public Color getBgColor() {
return bgColor;
}
/**
* Drawing Rectangle
* @param x - Horizontal (Base) point position
* @param y - Vertical (Base) point position
* @param height - Height
* @param width - Width
* @param bgColor - Fill color
* @param borderColor - Border color
*/
Rectangle (int x, int y, int height, int width, Color bgColor, Color borderColor) {
super();
this.x = x;
this.y = y;
this.height = height;
this.width = width;
this.color = borderColor;
this.bgColor = bgColor;
System.out.println("Rectangle nas been drawed from position (x, y) = (" + x + ", " + y + ") with height, width = (" + height +", " + width + ")");
}
/**
* Move Rectangle to new position with NO change others parameters
* @param x - New Horizontal (Base) point position
* @param y - New Vertical (Base) point position
*/
public void moveTo (int x, int y) {
this.x = x;
this.y = y;
System.out.println("Rectangle nas been moved to new position (x, y) = (" + x + ", " + y + ")");
}
/**
* reDraw Rectangle to new position with change others parameters
* @param x - New Horizontal (Base) point position
* @param y - New Vertical (Base) point position
* @param height - New Height
* @param width - New Width
* @param bgColor - New Fill color
* @param borderColor - New Border color
*/
public void reDraw (int x, int y, int height, int width, Color bgColor, Color borderColor) {
this.x = x;
this.y = y;
this.height = height;
this.width = width;
if (bgColor != null) this.bgColor = bgColor;
if (borderColor != null) this.color = borderColor;
System.out.println("Rectangle nas been moved to new position (x, y) = (" + x + ", " + y + ") with new height, width = (" + height + ", " + width + ")");
}
}
Квадрат будем строить аналогично прямоугольнику – по базовой точке и длине сторон (в этом случае они одинаковы) Реализация класса «Square.java»: