Ανάπτυξη Plugins για το AgentSheets



Σχετικά έγγραφα
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Ειδικά Θέματα Προγραμματισμού

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Αντικειµενοστρεφής Προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

Τύποι δεδομένων, τελεστές, μεταβλητές

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2004)

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Α. Ερωτήσεις Ανάπτυξης

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Κλάσεις και Αντικείµενα

Ειδικά Θέματα Προγραμματισμού

Αντικειμενοστρεφής Προγραμματισμός

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Σενάριο 14: Προγραμματίζοντας ένα Ρομπότ ανιχνευτή

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Προγράμματα με δομή Κληρονομικότητας

Ιδιότητες αντικειμένων, συγγραφή κώδικα, συντακτικά λάθη

Η γλώσσα προγραμματισμού C

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Ανάπτυξη εφαρμογής Input-Output

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

Βασίλειος Κοντογιάννης ΠΕ19

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Προγραμματισμός Υπολογιστών με C++

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

ΚΕΦΑΛΑΙΟ Web Services

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Θεματογράφος (ή ο βοηθός του Καθηγητή)

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

Οντοκεντρικός Προγραμματισμός

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

AgentSheets. Εγχειρίδιο Αναφοράς. Idea Spreadsheet. AgentSheets

Wrapper Classes, Abstract Classes and Interfaces

Αντιµετώπιση προβληµάτων MPEG

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Αντικειμενοστρεφής Προγραμματισμός

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ. Πληροφορική Α' Γυμν. Το Λειτουργικό Σύστημα του Υπολογιστή

AgentSheets: Εκπαιδευτικό Εργαλείο ανάπτυξης αλληλεπιδραστικών προσομοιώσεων και δραστηριοτήτων για το Ελληνικό Σχολείο

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

Δομές Δεδομένων Boost C++ Libraries. 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Δημιουργία μιας εφαρμογής Java με το NetBeans

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

B. Ενσωμάτωση Ιθαγενών Μεθόδων

7. Βασικά στοιχεία προγραµµατισµού.

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ - ΓΛΩΣΣΑ

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Προγραµµατιστικές τεχνικές

Λογισµικό (Software SW) Γλώσσες

Βασικά Στοιχεία της Java

ΔΗΜΙΟΥΡΓΙΑ & ΧΡΗΣΗ ΒΙΒΛΙΟΘΗΚΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

3 Αλληλεπίδραση Αντικειμένων

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

Σενάριο 15: Ενεργός Μετεωρολογικός Χάρτης

Μαλούτα Θεανώ Σελίδα 1

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

ΕΓΧΕΙΡΙΔΙΟ ΥΠΗΡΕΣΙΑΣ ΣΥΛΛΟΓΙΚΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΓΓΡΑΦΩΝ

ΕΠΛ131 Αρχές Προγραμματισμού

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ANDROID Προγραμματισμός Εφαρμογών

Πληροφορική 2. Γλώσσες Προγραμματισμού

ΕΓΧΕΙΡΙ ΙΟ ΡΥΘΜΙΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΒΑΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΠΟΡΟΥΣ ΙΚΤΥΟ ΒΙΒΛΙΟΘΗΚΩΝ ΤΟΥ ΙΝΣΤΙΤΟΥΤΟΥ ΘΕΡΒΑΝΤΕΣ

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 1: Εισαγωγικές έννοιες

Transcript:

Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets

Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας, Χαράλαµπος Σπυρόπουλος, και Άντρη Ιωαννίδου 1. ΦΙΛΟΣΟΦΊΑ... 1 2. ΑΝΑΠΤΎΣΣΟΝΤΑΣ PLUGINS... 1 2.1. ΟΡΙΣΜΌΣ ΔΡΆΣΕΩΝ... 2 2.2. ΟΡΙΣΜΌΣ ΣΥΝΘΗΚΏΝ... 3 3. ΜΕΤΑΓΛΏΤΤΙΣΗ PLUGINS... 4 4. ΧΡΉΣΗ ΤΩΝ PLUGINS... 4 5. ΕΞΑΡΤΉΣΕΙΣ ΒΙΒΛΙΟΘΉΚΗΣ... 5 6. PLUGIN ΔΙΑΛΌΓΟΥ: ΈΝΑ ΟΛΟΚΛΗΡΩΜΈΝΟ ΠΑΡΆΔΕΙΓΜΑ... 6 6.1 ΚΏΔΙΚΑΣ PLUGIN... 8

1. Φιλοσοφία Ο κύριος στόχος της αρχιτεκτονικής των plugins είναι η απλότητα στη χρήση. Ακόµα και η πιο περίτεχνη αρχιτεκτονική έχει µικρή αξία αν τελικά είναι πολύ λίγοι αυτοί που µπορούν να την αξιοποιήσουν λόγω της υπερβολικής της συνθετότητας. Τα plugins πρέπει να είναι απλά τόσο στη δηµιουργία τους όσο και στη διάθεσή τους. Τα plugins στην αρχιτεκτονική του AgentSheets απαιτούν µόνο τις άκρως απαραίτητες πληροφορίες στον κώδικα σε αντίθεση µε άλλα περιβάλλοντα που απαιτούν τη χρήση κάποιου Advanced Programming Interface (API) που περιέχει σύνθετες κλάσεις, ιεραρχίες και τρόπους επικοινωνίας. Με άλλα λόγια η αρχιτεκτονική στο AgentSheets προσαρµόζεται στον χρήστη που αναπτύσσει και δεν τον οδηγεί σε δρόµους που δεν έχουν άµεση σχέση µε το πρόβληµα που προσπαθεί να επιλύσει. Το AgentSheets χρησιµοποιώντας µηχανισµούς αυτοανάλυσης και αυτοελέγχου αναλύει τα plugins που αναπτύσσονται από τον χρήστη και δηµιουργεί τελικά κώδικα µε τις αντίστοιχες εντολές της Visual AgenTalk (VAT). 2. Αναπτύσσοντας Plugins Για την ανάπτυξη ενός Plugin πρέπει να γράψετε κώδικα σε Java και να χρησιµοποιήσετε τον µεταγλωττιστή Java. Το αρχείο του πηγαίου κώδικα που αναπτύσσεται για το Plugin ορίζει µια κλάση Java όπως οποιοδήποτε αρχείο Java. Ο διαχειριστής Plugins του AgentSheets είναι ικανός να αναγνωρίσει οποιοδήποτε µεταγλωττισµένο Java αρχείο (class αρχείο) ως Plugin εάν ισχύουν τα ακόλουθα: Το Plugin αρχείο βρίσκεται µέσα στο φάκελο Plugins. Ο ορισµός της κλάσης είναι καθολικός (public). Ο ορισµός της κλάσης µπορεί να περιέχει οποιοδήποτε αριθµό µεθόδων που θέλετε να ορίσετε. Για τη δηµιουργία νέων εντολών VAT οι µέθοδοι πρέπει να περιέχουν µια προκαθορισµένη δοµή. Το AgentSheets αναλύει τα plugins και ελέγχει αυτές τις δοµές. Εάν βρει τις σωστές δοµές τότε: Δηµιουργεί µια νέα VAT εντολή συµπεριλαµβανοµένης και της γραφικής της aπεικόνισης για την τελική της χρήση. Αυτή η εντολή πλέον µπορεί να χρησιµοποιηθεί σε οποιοδήποτε Έργο, όπως οποιαδήποτε άλλη εντολή µε ένα απλό 1

σύρσιµο της από τη Συλλογή Δράσεων και Συνθηκών στον Επεξεργαστή Συµπεριφοράς οποιουδήποτε πράκτορα. Επεκτείνει το µεταγλωττιστή της γλώσσας VAT, έτσι οι νέες Δράσεις και Συνθήκες µπορούν να χρησιµοποιηθούν από οποιοδήποτε Πράκτορα. 2.1. Ορισµός Δράσεων Η Δράση πρέπει να ακολουθεί την δοµή. public static void commandname_action (parameters). commandname είναι το όνοµα της δράσης όπως αυτό θα εµφανίζεται στη συλλογή δράσεων. parameters: Η µέθοδος µπορεί να έχει από καµία έως πολλές παραµέτρους των τύπων int, float ή string. Οι τύποι int και float αντιστοιχίζονται µε τον τύπο Αριθµητική Παράσταση της γλώσσας VAT. Ο τύπος Αριθµητική Παράσταση εµφανίζεται ως πεδίο κειµένου που µπορεί να περιέχει οποιαδήποτε VAT παράσταση. Όταν το AgentSheets εκτελεί τη νέα εντολή που περιέχει τον τύπο Αριθµητική Παράσταση πρώτα υπολογίζει την παράσταση και µετά καλεί τη µέθοδο µε την τιµή που έχει δώσει ως αποτέλεσµα η υπολογισµένη παράσταση. Για παράδειγµα εάν η Δράση περιέχει τον τύπο radius * 2 * pi, θα υπολογίσει αρχικά την τιµή της παράστασης πολλαπλασιάζοντας την ιδιότητα radius µε το 2 και την σταθερά pi δίνοντας στο αποτέλεσµα τον τύπο float ή integer και µετά θα µεταφέρει το αποτέλεσµα στην Java µέθοδο. Κάθε παράµετρος τύπου String αντιστοιχίζεται στον τύπο Ακολουθία Χαρακτήρων του AgentSheets. 2

Παράδειγµα: Public static void Show-Message-Action (String message) Αυτή η µέθοδος ορίζει µια Δράση µε το όνοµα Show Message. Περιέχει µια παράµετρο τύπου String που αντιστοιχίζεται στον τύπο Ακολουθία Χαρακτήρων του AgentSheets. Η νέα Δράση προστίθεται στη συλλογή Δράσεων κάτω από την κατηγορία «επεκτάσεις χρήστη». 2.2. Ορισµός συνθηκών Οι Συνθήκες σε αντίθεση µε τις Δράσεις πρέπει να επιστρέφουν µια τιµή τύπου boolean δίνοντας ως αποτέλεσµα της Συνθήκης, Αληθής ή Ψευδής. Η Συνθήκη πρέπει να ακολουθεί την δοµή. public static boolean commandname-condition (parameters). commandname είναι το όνοµα της Συνθήκης που θα εµφανίζεται στην συλλογή συνθηκών. parameters: Η Μέθοδος µπορεί να έχει από καµία έως πολλές παραµέτρους των τύπων int, float ή string. Οι τύποι int και float αντιστοιχίζονται µε τον τύπο Αριθµητική Παράσταση της γλώσσας VAT. Ο τύπος Αριθµητική Παράσταση εµφανίζεται ως πεδίο κειµένου που µπορεί να περιέχει οποιαδήποτε VAT παράσταση. Όπως και µε τις δράσεις, όταν το AgentSheets εκτελεί τη νέα εντολή που περιέχει τον τύπο Αριθµητική Παράσταση πρώτα υπολογίζει την παράσταση και µετά καλεί τη µέθοδο µε την τιµή που έχει δώσει ως αποτέλεσµα η υπολογισµένη παράσταση. Κάθε παράµετρος τύπου String αντιστοιχίζεται στον τύπο Ακολουθία χαρακτήρων του AgentSheets. 3

Παράδειγµα: Public static boolean User-Confirm-Condition (String question). Η µέθοδος αυτή ορίζει την Συνθήκη µε το όνοµα User Confirm. Η Συνθήκη αυτή προστίθεται στη συλλογή συνθηκών και έχει µία παράµετρο τύπου String η οποία αντιστοιχίζεται στον τύπο Ακολουθία Χαρακτήρων του AgentSheets. 3. Μεταγλώττιση Plugins Αφού γραφτεί ο κώδικας µπορεί να µεταγλωττιστεί όπως κάθε άλλο πρόγραµµα σε Java. Το plugin µπορεί να γραφτεί ακόµα και σε C/C++, σε µια τέτοια περίπτωση όµως θα πρέπει να υποστηριχθεί από ένα Java wrapper. Η έκδοση της Java που θα χρησιµοποιηθεί για την µεταγλώττιση πρέπει να είναι η ίδια που χρησιµοποιείται αυτή τη στιγµή για το AgentSheets, που είναι η Java 1.4.2. 4. Χρήση των Plugins Για να χρησιµοποιηθούν τα plugins πρέπει να τοποθετηθούν τα δυαδικά αρχεία των plugins (δηλαδή τα αρχεία µε κατάληξη.class και όχι τα πηγαία αρχεία) στο φάκελο Plugins της εφαρµογής. Όταν φορτώσουµε το AgentSheets αυτόµατα ψάχνει στο φάκελο Plugins και ενσωµατώνει τις νέες Δράσεις και Συνθήκες στις αντίστοιχες συλλογές. Από αυτό το σηµείο και µετά οι Δράσεις και οι Συνθήκες µπορούν να χρησιµοποιηθούν για την ανάπτυξη οποιουδήποτε Έργου. Όταν µετατρέπετε ένα Έργο σε applet µε το Ristretto, τότε το Ristretto αυτόµατα αντιγράφει τα απαραίτητα για το applet plugins. Επίσης, όταν διανέµετε κάποιο Έργο πρέπει να ελεγχθεί 4

αν υπάρχουν πάντα και τα κατάλληλα plugins που χρησιµοποιεί, διαφορετικά όταν φορτώνεται το Έργο θα προκαλέσει Java σφάλµα. 5. Εξαρτήσεις Βιβλιοθήκης Οι προσοµοιώσεις που φτιάχνονται µε το AgentSheets µπορούν να τρέξουν σε φυλλοµετρητές σε οποιοδήποτε λειτουργικό σύστηµα (Windows, MacOS και UNIX) εάν υποστηρίζει τουλάχιστον τη Java 1.1. Το πρόγραµµα εκτέλεσης της προσοµοίωσης ονοµάζεται µagentsheets και βασίζεται στο πλαίσιο AWT που είναι τµήµα της Java 1.1. Προβλήµατα µπορεί να προκύψουν εάν τα plugins χρησιµοποιούν επιπρόσθετες βιβλιοθήκες. Εάν αυτές οι βιβλιοθήκες δεν υπάρχουν στον υπολογιστή «πελάτη» τότε η εκτέλεση της προσοµοίωσης θα αποτύχει. Ο µηχανισµός Ristretto αντιγράφει τα απαραίτητα plugins αλλά δεν είναι δυνατόν να ανιχνεύσει εξαρτήσεις από άλλες βιβλιοθήκες. Ένα απλό παράδειγµα αυτού του προβλήµατος είναι η ανάπτυξη plugins τα οποία βασίζονται στο πλαίσιο Swing. Οι χρήστες που χρησιµοποιούν το Έργο θα πρέπει να έχουν εγκατεστηµένο το Swing. Είναι δύσκολο γενικά να προβλεφθεί ποιες βιβλιοθήκες µπορεί να έχουν οι τελικοί χρήστες, κάτι που εξαρτάται από το φυλλοµετρητή τους και το λειτουργικό τους σύστηµα. Για παράδειγµα στον Internet Explorer 5 του λειτουργικού MacOS η Java είναι ενεργοποιηµένη αλλά δεν συµπεριλαµβάνει το Swing. Στα Windows XP η προκαθορισµένη εγκατάσταση δεν περιέχει καθόλου τη Java. Έτσι, δυστυχώς, υπάρχει η περίπτωση η απουσία µιας βιβλιοθήκης να εµποδίσει την εκτέλεση της προσοµοίωσης και µε ένα γενικού τύπου µήνυµα της Java, να απογοητεύσει τον χρήστη χωρίς να τον πληροφορήσει για το πρόβληµα, µε αποτέλεσµα να µη ξαναπροσπαθήσει να χρησιµοποιήσει τα applets που δηµιούργησε. Δυστυχώς, πολύ λίγα µπορούν να γίνουν για την αποφυγή τέτοιων περιπτώσεων. Ωστόσο µια καλή τακτική είναι να ξοδέψουµε λίγο παραπάνω χρόνο γράφοντας πιο σύνθετο κώδικα που βασίζεται στις συναρτήσεις του πλαισίου AWT αντί να χρησιµοποιούµε έτοιµες τύπου Swing ή Java 2D. 5

6. Plugin Διαλόγου: Ένα ολοκληρωµένο παράδειγµα Τα δύο παραδείγµατα κώδικα για µια Συνθήκη και µια Δράση είναι τµήµα ενός πλήρους παραδείγµατος (ο κώδικας ακολουθεί στην επόµενη παράγραφο) επέκτασης των δυνατοτήτων του AgentSheets στο τοµέα του διαλόγου µε τον χρήστη. Η Δράση Show Message σταµατάει την εκτέλεση της προσοµοίωσης και εµφανίζει ένα modal παράθυρο διαλόγου µε ένα µήνυµα, περιµένοντας τον χρήστη να πατήσει το OK. Διαλέγοντας τη Δράση από τη Συλλογή και πατώντας το πλήκτρο Δοκιµή µπορείτε να την δοκιµάσετε. Η Συνθήκη User Confirm επιτρέπει στον χρήστη να ελέγξει τη προσοµοίωση µέσα από την απάντηση ΝΑΙ/ΟΧΙ. Μπορείτε να δοκιµάσετε αυτή τη νέα Συνθήκη διαλέγοντας την από τη συλλογή συνθηκών και πατώντας το πλήκτρο Δοκιµή. 6

Ακολουθεί ο πλήρης κώδικας για τις δύο νέες εντολές. 7

6.1 Κώδικας Plugin 8