Comments (6)
The generation of the correct extend type is easy to apply (done in gallandarakhneorg/sarl).
But, there is additional points to focus on if we introduce the extension mechanism for agents:
- How to call the super's implementation for a def.
- How to call the super's implementation for an event.
For illustrating, let take the following example:
agent AbstractAgent {
uses Lifecycle
on Initialize {
System.out.println("Hello World in the super agent!")
}
def sayGoodBye {
System.out.println("Goodbye World!")
}
}
agent HelloChildAgent extends AbstractAgent{
uses Schedules
on Initialize {
System.out.println("Hello World in the child agent!")
in(2000)[killMe]
}
def sayGoodBye {
super.sayGoodBye()
}
on Destroy {
sayGoodBye
}
}
from sarl.
The FAQ or the tutorials should explain that calling an override function is possible, but not an event handler.
from sarl.
There is a problem to access to the inherited attributes.
from sarl.
The idea here is to change the visibility of getter/setter methods to "protected" to enable an access to parent field from a sub-class.
from sarl.
Consider the SARL code:
agent A {
var thevar = false
}
It is not possible to generate the setter function due to a Xtext limitation. Indeed, the generated setter may be:
public void setThevar(<<INFERENCED TYPE>> thevar) {
this.thevar = thevar;
}
Unfortunately, for generating the method setThevar
Xtext needs to kwow all the properties of the formal parameters. But, the inferred type cannot be determine because the inferring engine is not reflexive. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=408323.
from sarl.
The only way to provide access to the attributes from the subclasses of agents is to make protected the attributes. The getter/setter becomes not more required.
from sarl.
Related Issues (20)
- Add SRE when exporting a runnable Jar. HOT 1
- Integration tests written in SARL are not generated in the correct Java source folder.
- JVM shared library does not contain JNI_Create JavaVM symbol HOT 3
- Eclipse error on the editor state. HOT 1
- Use MutabilityDetector for implementing the SARL function purity detector.
- Stack overflow in Eclipse IDE.
- Generate a product for MacOS ARM
- Invalid build date in the Bundle property messages.
- Upgrade to Eclipse 2023-09
- Include BDI engine is SARL.
- Fix CodeQL configuration to compile SARL on the CI server.
- Typo error in sarl-maven-plugin
- Invalid function call resolution.
- Link to demos are not working from the website HOT 1
- Kernel logs are not displayed anymore HOT 2
- Create a sample project from welcome page does not work anymore HOT 1
- Invalid markdown rendering in FAQ.
- Damaged product for macOS HOT 3
- Specification and implementation of communication protocols
- ExecutorService vs Thread with task buffer.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sarl.