6-я лабораторная. Добавление класса с методами сохранения и загрузки.

This commit is contained in:
Programmist73 2022-11-18 19:46:13 +04:00
parent 5d93c8bf38
commit 9345b24113
2 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,47 @@
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());
}
}

View File

@ -16,4 +16,7 @@ public interface IDrawningObject
//получение текущей позиции объекта
float[] GetCurrentPosition();
//получение информации по объекту
String GetInfo();
}