(1) Drawing { (2); (3); } class DP1 { static public void draw_a_line(double x1, double y1, double x2, double y2) { /* 代码省略 */ } static public void draw_a_circle(double x, double y, double r) { /* 代码省略 */ } } class DP2 { static public void drawline(double x1, double y1, double x2 ,double y2) { /* 代码省略 */ } static public void drawcircle (double x, double y, double r) { /* 代码省略 */ } } class V1Drawing implements Drawing { public void drawLine(double x1, double y1, double x2 ,double y2) { /* 代码省略 */ } public void drawCircle(double x, double y, double r) { (4); } } class V2Drawing implements Drawing { public void drawLine(double x1, double y1, double x2 ,double y2) { /* 代码省略 */ } public void drawCircle (double x, double y, double r) {(5);} } abstract class Shape { private Drawing _dp; (6); Shape(Drawing dp) { _dp = dp; } public void drawLine(double x1, double y1, double x2 ,double y2) { _dp.drawLine(x1, y1, x2, y2); } public void drawCircle (double x, double y, double r) { _dp.drawCircle(x, y, r); } } class Rectangle extends Shape { private double _x1, _x2, _y1, _y2; public Rectangle(Drawing dp, double x1, double y1, double x2, double y2) { /* 代码省略 */ } public void draw() { /* 代码省略 */ } } class Circle extends Shape { private double _x, _y, _r; public Circle(Drawing dp, double x, double y, double r) { /* 代码省略 */ } public void draw() { drawCircle(_x, _y, _r); } }