You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.8 KiB
73 lines
3.8 KiB
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.ArrayList;
|
|
|
|
public class Main {
|
|
public static void main(String[] args) {
|
|
// Test the shape classes and functionality
|
|
List<Shape> shapes = new ArrayList<>();
|
|
shapes.add(new Square(5.0, "Red"));
|
|
shapes.add(new Circle(3.0, "Blue"));
|
|
|
|
// Test ColorFilter
|
|
ColorFilter redFilter = new ColorFilter("Red");
|
|
List<Shape> redShapes = redFilter.filterByColor(shapes);
|
|
System.out.println("Number of red shapes: " + redShapes.size());
|
|
|
|
// Test Resizable functionality
|
|
for (Shape shape : shapes) {
|
|
if (shape instanceof Resizable) {
|
|
System.out.println("Before resize: " + shape.calculateArea());
|
|
((Resizable) shape).resize(1.5);
|
|
System.out.println("After resize: " + shape.calculateArea());
|
|
}
|
|
}
|
|
|
|
// Test ShapeStatisticsAnalyzer
|
|
ShapeStatisticsAnalyzer analyzer = new ShapeStatisticsAnalyzer(shapes);
|
|
analyzer.printStatistics();
|
|
|
|
// Test Shape Conversion System
|
|
System.out.println("\n===== Testing Shape Conversion =====");
|
|
CircleToSquareConverter circleToSquare = new CircleToSquareConverter();
|
|
SquareToCircleConverter squareToCircle = new SquareToCircleConverter();
|
|
|
|
Circle originalCircle = new Circle(4.0, "Green");
|
|
Square convertedSquare = circleToSquare.convert(originalCircle);
|
|
System.out.println("Original Circle: Area = " + originalCircle.calculateArea() + ", Color = " + originalCircle.getColor());
|
|
System.out.println("Converted Square: Area = " + convertedSquare.calculateArea() + ", Color = " + convertedSquare.getColor() + ", Side = " + convertedSquare.getSide());
|
|
|
|
Square originalSquare = new Square(6.0, "Yellow");
|
|
Circle convertedCircle = squareToCircle.convert(originalSquare);
|
|
System.out.println("Original Square: Area = " + originalSquare.calculateArea() + ", Color = " + originalSquare.getColor());
|
|
System.out.println("Converted Circle: Area = " + convertedCircle.calculateArea() + ", Color = " + convertedCircle.getColor() + ", Radius = " + convertedCircle.getRadius());
|
|
|
|
// Test Composite Shape System
|
|
System.out.println("\n===== Testing Composite Shape =====");
|
|
CompositeShape composite = new CompositeShape("Composite-Group");
|
|
composite.addShape(new Square(2.0, "Purple"));
|
|
composite.addShape(new Circle(1.0, "Orange"));
|
|
composite.addShape(new Square(3.0, "Pink"));
|
|
|
|
System.out.println("Composite Shape - Number of shapes: " + composite.getShapeCount());
|
|
System.out.println("Composite Shape - Total Area: " + composite.calculateArea());
|
|
System.out.println("Composite Shape - Total Perimeter: " + composite.calculatePerimeter());
|
|
System.out.println("Composite Shape - Color: " + composite.getColor());
|
|
|
|
// Test resizing composite shape
|
|
System.out.println("\nResizing composite shape by factor 2.0");
|
|
composite.resize(2.0);
|
|
System.out.println("Composite Shape - After resize - Total Area: " + composite.calculateArea());
|
|
System.out.println("Composite Shape - After resize - Total Perimeter: " + composite.calculatePerimeter());
|
|
|
|
// Test setting color for all shapes in composite
|
|
System.out.println("\nSetting color for all shapes in composite to 'Black'");
|
|
composite.setAllShapesColor("Black");
|
|
|
|
// Display individual shapes after modifications
|
|
System.out.println("\nIndividual shapes after modifications:");
|
|
for (Shape shape : composite.getShapes()) {
|
|
System.out.println("- Shape: " + shape.getClass().getSimpleName() + ", Color: " + shape.getColor() + ", Area: " + shape.calculateArea());
|
|
}
|
|
}
|
|
} |