Ευφυείς Τεχνολογίες ----Πράκτορες

Σχετικά έγγραφα
Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

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

Ευφυείς Τεχνολογίες ----Πράκτορες

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Δομές Δεδομένων & Αλγόριθμοι

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

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

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

JADE. Java Agent DEvelopment Framework

Εισαγωγή στον Προγραμματισμό

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

Java sessions. Part 1 - Βασικά έννοιες - μέθοδοι

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Διδάσκων: Παναγιώτης Ανδρέου

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

Συλλογές, Στοίβες και Ουρές

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Γενικά (για τις γραπτές εξετάσεις)

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Wrapper Classes, Abstract Classes and Interfaces

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

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

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

Εισαγωγή στον Προγ/μό Η/Υ

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

Διδάσκων: Παναγιώτης Ανδρέου

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

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

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #6

Δομές ελέγχου ροής προγράμματος

Βασικά της γλώσσας JAVA

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java

Λειτουργικά Συστήματα

public class ArrayQueue implements Queue {

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι

Προγραμματισμός Διαδικτύου

8. Μέθοδοι (Methods)

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

1. Ξεκινώντας. 1.1 Τι είναι η Java. PDF created with FinePrint pdffactory Pro trial version

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

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

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

Transcript:

Ευφυείς Τεχνολογίες ----Πράκτορες Ενότητα 6: Προγραμματισμός Βασισμένος στους πράκτορες Το Περιβάλλον Ανάπτυξης Πολλαπλών Πρακτόρων JADE Δημοσθένης Σταμάτης demos@it.teithe.gr www.it.teithe.gr/~demos Μαθησιακοί Στόχοι της ενότητας 6 Η κατανόηση της εξέλιξης των μεθοδολογιών προγραμματισμού και η συσχέτισή τους με τον προγραμματισμό που βασίζεται στους πράκτορες Η κατανόηση των ομοιοτήτων και διαφορών ανάμεσα στον αντικειμενοστρεφή προγραμματισμό και στον προγραμματισμό που βασίζεται στους πράκτορες Η γνωριμία με το περιβάλλον JADE που χρησιμοποιείται για την ανάπτυξη προγραμματιστικών συστημάτων πολλαπλών πρακτόρων 2 1

Η ύλη της ενότητας 6 Η έννοια της αφαίρεσης: Από τη γλώσσα Assembly στον αντικειμενοστρεφή προγραμματισμό. Η γλώσσα αντικειμενοστρεφούς Προγραμματισμού Java: γρήγορη επανάληψη Οι διαφορές των αντικειμένων από τους πράκτορες Το περιβάλλον JADE: Βασικά Χαρακτηριστικά και Αρχιτεκτονική Εισαγωγή στον προγραμματισμό πολλαπλών πρακτόρων με JADE 3 Από τη Γλώσσα Μηχανής στον Προγραμματισμό που βασίζεται σε πράκτορες Γλώσσα Μηχανής Γλώσσα Assembly Γλώσσες Προγραμματισμού ανεξάρτητες μηχανής Υποπρογράμματα sub-routines procedures functions Αφηρημένοι Τύποι Δεδομένων Αντικείμενα Πράκτορες 4 2

Η Έννοια της Αφαίρεσης Η εξέλιξη των προγραμματιστικών εργαλείων χαρακτηρίστηκε και χαρακτηρίζεται από την έννοια της αφαίρεσης. ΑΦΑΙΡΕΣΗ (Abstraction): Μία απλοποιημένη περιγραφή ενός συστήματος, στην οποία δίνεται έμφαση στις βασικές του ιδιότητες, ενώ αγνοούνται οι λεπτομέρειες. Συντακτική Αφαίρεση (Syntax Abstraction) Αφαίρεση Ελέγχου (Control Abstraction) Διαδικαστική Αφαίρεση (Procedural Abstraction) Αφαίρεση Τύπων Δεδομένων (Data type Abstraction) ->... Αντικείμενα... Πράκτορες 5 Αντικειμενοστρεφής Προγραμματισμός Αφηρημένος Τύπος Δεδομένων (Abstract Data Type) Αντικείμενο (Object) Κλάση ή Τάξη (Class) Μέθοδοι (Methods) Μηνύματα (Messages) Ενκαψούλωση ή ενθυλάκωση (Encapsulation) Απόκρυψη Πληροφορίας (Information Hiding) Επαναχρησιμοποίηση (Reusability) Κληρονομικότητα (Inheritance) Πολυμορφισμός (Polymorphism) Ταυτοχρονισμός (Concurrency) 6 3

Βασικά χαρακτηριστικά της Java Αντικειμενοστρεφής Γλώσσα Εκτενής χρήση κλάσεων αντικειμένων Εκτός από βασικές λειτουργίες και βασικούς τύπους Ανεξάρτητη Πλατφόρμας/Μηχανής Το πρόγραμμα της Java μεταγλωττίζεται σε ειδικό κώδικα, ο οποίος διερμηνεύεται ανεξάρτητα από το Λειτουργικό Σύστημα Απλή (?) Πλούσια χαρακτηριστικά, χωρίς πολύπλοκες συντακτικές δομές Χρήση API (Applications Programming Interface) 7 Βασικά χαρακτηριστικά της Java Ασφαλής (?) Ο κώδικας Java τρέχει σε περιβάλλον που τον αποτρέπει να μεταβάλει ή να διαγράψει αρχεία και να επέμβει στη μνήμη που χρησιμοποιείται σε επίπεδο Λειτουργικού Συστήματος Με υψηλή απόδοση (?) Οι Just-in-Time μεταγλωττιστές παράγουν κώδικα αντίστοιχης ταχύτητας με αυτόν της C++ Υποστηρίζει πολυεπεξεργασία Οι λειτουργίες ενός προγράμματος μπορούν να εκτελούνται ταυτόχρονα 8 4

Η Τεχνολογία Java 9 Η Java Ανεξάρτητη Πλατφόρμας Ο κώδικας της Java εξαρτάται μόνον από την Εικονική Μηχανή (Java Virtual Machine - JVM) η οποία εγκαθίσταται σε κάθε μηχανή. Η μεταγλώττιση παράγει δυαδικό κώδικα (bytecode), ο οποίος διερμηνεύεται από τον JVM Interpreter O κώδικας της καθίσταται μεταφέρσιμος (Write Once - Run Anywhere) 10 5

Μεταγλώττιση προγράμματος Java 11 Μεταγλώττιση Java Applet 12 6

Java Βασικές Έννοιες Βασικοί τύποι (δεν είναι αντικείμενα): boolean, char, byte, short, int, long, float, double Δηλώσεις μεταβλητών: float Var1; int J = 2; double var2 = 1.2, var3; boolean ok, Done = false; Η εντολή καταχώρισης/αντικατάστασης λειτουργεί από δεξιά προς αριστερά (right associative) int a, b, c; a = 1; b = 2; c = 5; a = b = c; 13 Java Βασικές Έννοιες Δομές ελέγχου ροής προγράμματος Παράθεσης: Επιλογής: Επανάληψης: Escapes: {εντολή1; εντολή2;...; εντολήn;} if, if else, switch for, while, do while break, continue, return Υποπρογράμματα Οι μέθοδοι (methods) που ορίζονται στο πλαίσιο μιας κλάσης 14 7

Java Επιπλέον Έννοιες Χρήση Βιβλιοθηκών Ορισμός Κλάσεων Δημιουργία αντικειμένων Πακέτα Packages Κληρονομικότητα επέκταση κλάσεων Απόκρυψη Πληροφορίας 15 Java: Κλάσεις - Πακέτα (Packages) O Κώδικας της Java έχει ιεραρχική δομή Κάθε κλάση γράφεται σε ένα αρχείο που έχει το ίδιο όνομα με αυτή Ένα σύνολο κλάσεων (=αρχείων) μπορεί να αποθηκευτεί σε ένα πακέτο (=directory) π.χ. java.io, java.math Η μεταβλητή CLASSPATH πρέπει να περιλαμβάνει τα ονόματα των αρχικών πακέτων (root directories). Το πλήρες όνομα ενός αντικείμενου περιλαμβάνει το πλήρες όνομα του πακέτου που το περιέχει 16 8

Java: Κλάσεις - Πακέτα (Packages) 17 Java: Κλάσεις Ή απλούστερη! Κλάση Hello.java Η μέθοδος main (κατ ελάχιστον!) class Hello { public static void main(string[] args) { System.out.println( Hello World!!! ); } } C:\javac Hello.java /*Η μεταγλώττιση δημιουργεί το αρχείο Hello.class*/ C:\java Hello /*Εκτέλεση από τον JVM Interpreter */ 18 9

Java: Κλάσεις - Αντικείμενα import java.awt.*; import java.util.*; public class DoSomething { // Δεδομένα /ιδιότητες (data members) της κλάσης private int X; protected int Y;... // Μέθοδοι της κλάσης private void method1(...) {... }; Κλάσεις πακέτων βιβλιοθήκης Απόκρυψη δεδομένων (τοπικά) Απόκρυψη μεθόδου public String method2(...) {... }; } Δημόσια μέθοδος (προσβάσιμη από άλλες κλάσεις) 19 Java: Κλάσεις Επεκτάσεις Κλάσεων class Person { String name; int height; // σε εκατοστά int weight; public void printinfo(){ System.out.println(name+" with height="+height+", weight="+weight); } class Student extends Person { String name; String aei; /* μέθοδοι που επεκτείνουν την κλάση Person */ } 20 10

Java: Δημιουργία αντικειμένων H κλάση παίζει το ρόλο της γεννήτριας αντικειμένων Κάθε αντικείμενο που γεννιέται αποκτά όλες τις ιδιότητες (data members) της κλάσης Person john; john = new Person ( ); john.name = "John Smith"; john.age = 37; john.printinfo(); Person mary = new Person ( ); mary.name = "Mary Brown"; mary.age = 33; mary.printinfo(); 21 Java: Παράδειγμα: Κλάση Υπάλληλος 22 11

Java: Παράδειγμα: Κλάση Υπάλληλος 23 Java: Παράδειγμα: 2 Υπάλληλοι 24 12

Java: Διασυνδέσεις - Interfaces public interface Queue { public int size( ); // επιστρέφει το μέγεθος (αριθμός στοιχείων) της ουράς public boolean isempty( ); // αληθεύει εάν η ουρά είναι κενή public Object front( ) throws QueueEmptyException; // επιστρέφει το στοιχείο που βρίσκεται στην αρχή της ουράς public void enqueue(object item); // εισάγει ένα νέο στοιχείο στο πίσω μέρος της ουράς public Object dequeue( ) throws QueueEmptyException; // εξάγει και επιστρέφει το στοιχείο που βρίσκεται // στo εμπρός μέρος της ουράς } 25 Java: Εξαιρέσεις - Exceptions public class QueueEmptyException extends RuntimeException { public QueuekEmptyException(String err) { super(err); } } public class QueueFullException extends RuntimeException { public QueueFullException(String err) { super(err); } } 26 13

Java: Κλάση που υλοποίει ένα interface public class ArrayQueue implements Queue { private int capacity; private Object[ ] Q; private int first = 0; private int last = 0; public ArrayQueue() { this(100); } public ArrayQueue(int cap) { capacity = cap; Q = new Object[capacity] } public int size( ) { return (last-first); } } public Object dequeue( ) throws QueueEmptyException { Object item; if (isempty( )) throw new QueueEmptyException("Queue is empty"); Object item = Q[first]; Q[first++] = null; //!!! για τον garbage collector return item; } 27 Διαφορές Πρακτόρων και Αντικειμένων: Οι πράκτορες ενσωματώνουν ισχυρότερα την έννοια της αυτονομίας από ότι τα αντικείμενα Οι πράκτορες είναι περισσότερο ικανοί να επιδείξουν ευέλικτη συμπεριφορά - αντανακλαστική, ενεργητική, κοινωνική (reactive, pro-active, social behaviour ) Ένα σύστημα πολλαπλών πρακτόρων είναι εγγενώς κατανεμημένο 28 14

Διαφορές Πρακτόρων και Αντικειμένων: Αυτονομία: ποιος αποφασίζει για την εκτέλεση κάποιας ενέργειας? Στον αντικειμενοστρεφή προγραμματισμό οποιοδήποτε αντικείμενο Α μπορεί να καλέσει οποιαδήποτε δημόσια μέθοδο ενός άλλου αντικειμένου Β. Το Β την εκτελεί χωρίς να μπορεί να αποφασίσει αν και πότε θα την εκτελέσει. Στην περίπτωση του προγραμματισμού που βασίζεται σε πράκτορες ένας πράκτορας Α μπορεί να ζητήσει την εκτέλεση μιας ενέργειας από έναν πράκτορα Β. Ο έλεγχος της εκτέλεσης είναι στην απόλυτη δικαιοδοσία του πράκτορα Β. 29 JADE: Περιβάλλον ανάπτυξης πολλαπλών πρακτόρων JADE: Java Agent Development Framework Ελεύθερο Λογισμικό (Open Source) Web site: http://jade.tilab.com (Η) JADE είναι πλήρως υλοποιημένη σε Java. Η δημιουργία, ο προγραμματισμός και η επικοινωνία των πρακτόρων συνίστανται στην επέκταση κλάσεων των πακέτων που παρέχονται. 30 15

JADE: Περιβάλλον ανάπτυξης πολλαπλών πρακτόρων Είναι πλήρως συμβατή με τις προδιαγραφές (σταθερότυπα) της FIPA (Foundation for Intelligent Physical Agents) Παρέχει ένα ολοκληρωμένο γραφικό περιβάλλον για τη διαχείριση, την αποσφαλμάτωση και την παρακολούθηση των πρακτόρων Επιτρέπει την κινητικότητα (mobility) του κώδικα και της κατάστασης των πρακτόρων Υποστηρίζει σύνθετες ακολουθίες επικοινωνίας πρακτόρων 31 Γενική εικόνα ενός ΠΠΣ στη JADE : Agent Management System Directory Facilitator Agents Agent 32 16

JADE 33 Αρχιτεκτονική JADE H JADE βασίζεται στο μοντέλο υβριδικής αρχιτεκτονικής P2P Αρχιτεκτονική Client/Server Αρχιτεκτονική Peer to Peer (P2P) Υβριδική Αρχιτεκτονική Pear to Peer (P2P) 34 17

H JADE είναι συμβατή με τις προδιαγραφές FIPA 35 JADE αποτελεί λογισμικό τύπου middleware Ε φ α ρ μ ο γ έ ς Ε φ α ρ μ ο γ έ ς Operating System Operating System Hardware Hardware 36 18

Το περιβάλλον της JADE container AMS (Agent Management System) DF (Directory Facilitator) 37 Main Container Περιέχει 2 ειδικούς πράκτορες: Τον Agent Management System (AMS) πράκτορα ο οποίος παρέχει υπηρεσίες ονοματοδότησης των πρακτόρων (White Pages) με διασφάλιση μοναδικότητας και μπορεί να δημιουργεί και να τερματίζει πράκτορες Τον Directory Facilitator (DF) πράκτορα, ο οποίος παρέχει υπηρεσία «κίτρινων σελίδων» (Yellow Pages) μέσω των οποίων ένας πράκτορας μπορεί να βρει τις υπηρεσίες που κάνουν διαθέσιμες άλλοι πράκτορες για να τις χρησιμοποιήσει όταν απαιτείται για να πετύχει τους στόχους του. 38 19

O κύκλος ζωής ενός πράκτορα στη JADE 39 Μόλις βρείτε χρόνο: Διαβάστε με προσοχή το Java Tutorial : http://www.it.teithe.gr/~demos/downloads/java_tutorial.pdf Περιηγηθείτε στη βιβλιοθήκη των κλάσεων της Java: http://docs.oracle.com/javase/8/docs/api/ Κατεβάστε και εγκαταστήστε τη JADE: http://jade.tilab.com/ 40 20