ocl constraint on collection size
up vote
0
down vote
favorite
draw of my situation
In the link above, we can see the class Student
and Class
. I want to make an invariant constraint to make sure a Student
can't register for more than 5 classes each sessionYear
.
With this constraint, I can determine if Student
as more than 5 classes
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
But, what I want is to find the size for a collection formed only with the same sessionYear
. In other words, I wish to make a collection for every different sessionYear
to verify if, for that year, the Student
had less than 6 classes.
I thought that I could maybe make use of forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
or something similar to difference Class
based on its sessionYear
, but I can't seem to figure it out.
constraints ocl
add a comment |
up vote
0
down vote
favorite
draw of my situation
In the link above, we can see the class Student
and Class
. I want to make an invariant constraint to make sure a Student
can't register for more than 5 classes each sessionYear
.
With this constraint, I can determine if Student
as more than 5 classes
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
But, what I want is to find the size for a collection formed only with the same sessionYear
. In other words, I wish to make a collection for every different sessionYear
to verify if, for that year, the Student
had less than 6 classes.
I thought that I could maybe make use of forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
or something similar to difference Class
based on its sessionYear
, but I can't seem to figure it out.
constraints ocl
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
draw of my situation
In the link above, we can see the class Student
and Class
. I want to make an invariant constraint to make sure a Student
can't register for more than 5 classes each sessionYear
.
With this constraint, I can determine if Student
as more than 5 classes
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
But, what I want is to find the size for a collection formed only with the same sessionYear
. In other words, I wish to make a collection for every different sessionYear
to verify if, for that year, the Student
had less than 6 classes.
I thought that I could maybe make use of forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
or something similar to difference Class
based on its sessionYear
, but I can't seem to figure it out.
constraints ocl
draw of my situation
In the link above, we can see the class Student
and Class
. I want to make an invariant constraint to make sure a Student
can't register for more than 5 classes each sessionYear
.
With this constraint, I can determine if Student
as more than 5 classes
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
But, what I want is to find the size for a collection formed only with the same sessionYear
. In other words, I wish to make a collection for every different sessionYear
to verify if, for that year, the Student
had less than 6 classes.
I thought that I could maybe make use of forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
or something similar to difference Class
based on its sessionYear
, but I can't seem to figure it out.
constraints ocl
constraints ocl
asked Nov 11 at 7:47
Takyon
105
105
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
add a comment |
up vote
0
down vote
accepted
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
answered Nov 11 at 16:17
Ed Willink
32017
32017
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
add a comment |
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but with
select(sessionYear = sy)
, I get a collection for every different sy
. Thanks a lot– Takyon
Nov 11 at 19:45
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but with
select(sessionYear = sy)
, I get a collection for every different sy
. Thanks a lot– Takyon
Nov 11 at 19:45
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53246801%2focl-constraint-on-collection-size%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown