Конвертировать тип Ada Union в класс Object в Java - PullRequest
0 голосов
/ 26 декабря 2018

На рисунке ниже показан тип соединения Ada (рисунок).

Как я могу преобразовать этот тип Union из Ada в Object в Java?Пожалуйста, помогите мне.

Это код

screen shot

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

У меня есть сомнения относительно канонического способа обозначения таких записей Ada («союзы»), я всегда использовал «вариантную запись» или «дискриминантную запись».

Согласно https://en.wikibooks.org/wiki/Ada_Programming/Types/record#Union Union в контексте Ады относится к объявлению варианта записи + объединению соглашения C.

Это обеспечивается ARM §B.3.3 , цитата:

Указание аспектаUnchecked_Union для значения True определяет соответствие интерфейса между данным распознаваемым типом и некоторым C union .

type T (Flag : Boolean := False) is
   record
       case Flag is
           when False =>
               F1 : Float := 0.0;
           when True =>
               F2 : Integer := 0;
       end case;
    end record
    with Unchecked_Union;
32/2
X : T;
Y : Integer := X.F2; -- erroneous

Цитирование ARM § 3.8.1 , объявление записи OP НЕ является объединением.

Пример типа записи с вариантной частью:

type Device is (Printer, Disk, Drum);
type State  is (Open, Closed);
type Peripheral(Unit : Device := Disk) is
   record
      Status : State;
      case Unit is
         when Printer =>
            Line_Count : Integer range 1 .. Page_Size;
         when others =>
            Cylinder   : Cylinder_Index;
            Track      : Track_Number;
         end case;
      end record;
0 голосов
/ 03 января 2019

Начните с определения пространства и реализации, определив перечисления, а затем добавив все поля в один и тот же объект.

class Figure {
    public enum Shape { Circle, Triangle, Rectangle };
    public enum Colors { Red, Green, Blue };
    Shape form;
    boolean Filled;
    Colors color;
    float Diameter;
    int Leftside, Rightside;
    float Angle;
    int Side1, Side2;
}

Операции над объектом просто необходимо проверить значение 'form'чтобы знать, какие поля они должны учитывать, а какие игнорировать.

Теперь, когда вы перевели идею (хотя и приблизительно) в Java, вы можете применить свои знания Java для итерации.по идее.

...