Ошибка в конструкторе 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.

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


person broclan    schedule 03.12.2012    source источник


Ответы (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. Попробуйте это в Overture IDE.

person Lausdahl    schedule 04.12.2012