Ошибка в конструкторе VDM++

Я получаю глупую ошибку в VDM++ ToolBox Academic.

Когда я пытаюсь запустить операцию, это дает мне эту ошибку:

Run-Time Error 280: No constructor with this parameter list is in scope
value: "Game"

Мой конструктор:

public Game: Date * Team * Team ==> Game
Game(d,t1,t2) == (
    matchday := d;
    host := t1;
    visitor := t2;
    return self;
);

И я называю это здесь:

game := new Game(matchday1day1,groupA.teams(2),groupA.teams(3));

У меня есть это заявление:

public groupA : Group;
public matchday1day1 : Date;

и (в группах):

public teams : seq of Team;

Ошибка указывает на первую букву Game,

Кто-нибудь может мне помочь?

1 ответ

Если я правильно прочитал ваше описание модели, то оно должно выглядеть так:

class Group

instance variables
public teams : seq of Team := [new Team(),new Team(),new Team()];
end Group

class Team
end Team

class Date
end Date

class Game

instance variables
matchday: Date;
host : Team;
visitor : Team;

operations
public Game: Date * Team * Team ==> Game
Game(d,t1,t2) == (
    matchday := d;
    host := t1;
    visitor := t2;
    return self;
);
end Game

class Test
instance variables

public groupA : Group := new Group();
public matchday1day1 : Date := new Date();

operations

public test : ()==>()
test()== (
dcl game : Game;
 game := new Game(matchday1day1,groupA.teams(2),groupA.teams(3)) ;
)

end Test

Где я добавил Test и инициализировал переменные.

Я не вижу в этом ничего плохого, на самом деле он также работает в Overture, которая является другим набором инструментов с открытым исходным кодом для VDM. Я думаю, что ваша спецификация является правильной VDM. Попробуйте в увертюре IDE.

Другие вопросы по тегам