import java.awt.*; public class ExtentionPlane { //разделитель для записи информации по объекту в файл private static final char _separatorForObject = ':'; //создание объекта из строки public static DrawingPlane CreateDrawingPlane(String info) { String[] strs = info.split(String.valueOf(_separatorForObject)); //если простой самолёт if(strs.length == 4) { Color color = new Color(Integer.parseInt(strs[2])); return new DrawingPlane(Integer.parseInt(strs[0]), Float.valueOf(strs[1]), color, Integer.parseInt(strs[3])); } //если аэробус if(strs.length == 7) { Color f_color = new Color(Integer.parseInt(strs[2])); Color s_color = new Color(Integer.parseInt(strs[4])); return new DrawingAirbus(Integer.parseInt(strs[0]), Integer.parseInt(strs[1]), f_color, Integer.parseInt(strs[3]), s_color, Boolean.parseBoolean(strs[4]), Boolean.parseBoolean(strs[5])); } return null; } //сохраниние объекта в строку public static String GetDataForSave(DrawingAirbus drawingPlane) { var plane = drawingPlane.Plane; var str = String.format("%d%c%d%c%d", plane.GetSpeed(), _separatorForObject, plane.GetWeight(), _separatorForObject, plane.GetColor().getRGB()); //если объект не расширеный if(!(plane instanceof EntityAirbus airbus)) { return str; } return str + String.format("%c%s%c%b%c%b", _separatorForObject, airbus.AddColor(), _separatorForObject, airbus.AddEngine(),airbus.AddCompartment()); } }