Πανεπιστήμιο Πελοποννήσου Σχολή Θετικών Επιστημών και Τεχνολογίας Τμήμα Επιστήμης και Τεχνολογίας Υπολογιστών. Πτυχιακή εργασία

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Πανεπιστήμιο Πελοποννήσου Σχολή Θετικών Επιστημών και Τεχνολογίας Τμήμα Επιστήμης και Τεχνολογίας Υπολογιστών. Πτυχιακή εργασία"

Transcript

1 Πανεπιστήμιο Πελοποννήσου Σχολή Θετικών Επιστημών και Τεχνολογίας Τμήμα Επιστήμης και Τεχνολογίας Υπολογιστών Πτυχιακή εργασία Σύνδεση προσωπικής οντολογίας και συστήματος Facebook Στράτος Νείρος ΑΜ: Επιβλέπων Καθηγητής Βασιλάκης Κωνσταντίνος 16 Ιανουαρίου 2011

2 Περιεχόμενα 1 Εισαγωγικά θέματα Σύντομη περιγραφή Γενικά για Οντολογίες Γενικά για το Facebook Σύνδεση οντολογιών και Facebook Σχετιζόμενη έρευνα στον τομέα των οντολογιών Profiler χρήστη βασιζόμενος σε οντολογίες Μέθοδοι οπτικοποίησης οντολογιών Δημιουργώντας μία οντολογία για το προφίλ του χρήστη Ontology generator Περιγραφή πτυχιακής Θεωρητικό υπόβαθρο και επισκόπηση της εφαρμογής Τα δεδομένα του Facebook Μια πιο κοντινή ματιά στα αντικείμενα του Facebook Το πρότυπο JSON Αντικείμενα Facebook και πρότυπο JSON Facebook Authentication Βήματα πιστοποίησης Facebook Διαδικασία πιστοποίησης Πως η εφαρμογή χειρίζεται την πιστοποίηση στο Facebook Αντικειμενοστρεφής προγραμματισμός Γενικά Πιο συγκεκριμένα στην Java Συσχέτιση με οντολογίες Εξαγωγή δεδομένων από το Facebook Επιλογή δεδομένων του Facebook και συσχέτισή τους με κλάσεις Java Η βιβλιοθήκη RestFB i

3 2.6 Αναπαράσταση και περιγραφή οντολογιών Γενικά για τη γλώσσα RDF Τριπλέτες Παραγωγή τριπλετών προσωπικής οντολογίας Java Annotations Η βιβλιοθήκη Elmo Χρήση του προγράμματος Εκκίνηση και βασική χρήση Περιπτώσεις αποτελεσμάτων Υλοποίηση Βασική δομή - επιλογές υλοποίησης Τα τμήματα του προγράμματος Το πακέτο personalontology Η κλάση FacebookObject και οι υποκλάσεις της Η κλάση FacebookUser.java Οι υπόλοιπες κλάσεις της προσωπικής οντολογίας Το πακέτο util Η κλάση DataFetcher Η κλάση ElmoHelper Γραφικό περιβάλλον χρήστη (Πακέτο ui) Περιβάλλον δημιουργίας και μεταγλώττισης του κώδικα Απαραίτητες βιβλιοθήκες (Dependencies) Επέκταση της εφαρμογής, ενημέρωση και μελλοντικές προσθήκες Παράρτημα Παράδειγμα οντολογίας και αποτελεσμάτων Πηγαίος Κώδικας util ui personalontology Βιβλιογραφία 169 Γλωσσάρι 170 Ακρωνύμια 172 Παραθέσεις 173 ii

4 Περίληψη Ο σκοπός αυτής της πτυχιακής είναι η δημιουργία λογισμικού που θα παρέχει στον χρήστη μία μέθοδο για αυτόματη εξαγωγή της πληροφορίας που τον ενδιαφέρει από το Facebook και η ενσωμάτωση της σε μία προσωπική οντολογία. Στην οντολογία αυτή θα καταγράφονται τα πράγματα που είναι σημαντικά για τον κάθε χρήστη κατ αντιστοιχία με την υπάρχουσα πληροφορία που έχει ήδη αποθηκεύσει ο χρήστης στο Facebook και με τον τρόπο που το σύστημα Facebook αποθηκεύει τα αντικείμενά του.

5 Κεφάλαιο 1 Εισαγωγικά θέματα 1.1 Σύντομη περιγραφή Το Facebook έχει αναπτυχθεί τα τελευταία χρόνια ως η κυρίαρχη εφαρμογή κοινωνικού ιστού, μέσω της οποίας οι χρήστες προβάλλουν πληροφορίες για τον εαυτό τους, γνωρίζονται, συνομιλούν και ανταλλάσσουν απόψεις κ.λπ. Παράλληλα, με την πρόοδο των συστημάτων διαχείρισης προσωπικής πληροφορίας καθίσταται αναγκαία η ύπαρξη μιας προσωπικής οντολογίας των χρηστών, όπου θα καταγράφονται τα πράγματα που είναι σημαντικά για τον κάθε χρήστη. Είναι ωστόσο εμφανές ότι ένα τμήμα αυτής της οντολογίας υπάρχει ήδη στο Facebook - για παράδειγμα οι «φίλοι» στο Facebook είναι στιγμιότυπα της κλάσης «Πρόσωπο» της οντολογίας, οι «κατηγορίες» μπορούν να δώσουν επιπρόσθετη πληροφορία κατάταξης κ.λπ. Για την αποφυγή διπλοκαταχώρησης της πληροφορίας, το ζητούμενο είναι να υπάρξει η κατάλληλη μέθοδος για αυτόματη εξαγωγή του τμήματος της προσωπικής οντολογίας που υπάρχει στο Facebook και η ενσωμάτωσή του τμήματος αυτού στην προσωπική οντολογία. Το ζητούμενο στην πτυχιακή αυτή είναι η ανάπτυξη του συγκεκριμένου λογισμικού. 1.2 Γενικά για Οντολογίες Στην επιστήμη των υπολογιστών και την πληροφορική, οντολογία ορίζεται ως ένας σαφής, ρητός προσδιορισμός ενός κοινού (με την έννοια του διαμοιραζόμενου) εννοιολογικού συλλογισμού. [2] Πρόκειται για μία αναπαράσταση γνώσης ως ένα σύνολο εννοιών καθώς και των σχέσεων μεταξύ αυτών των εννοιών. Μία οντολογία περιλαμβάνει ένα ελεγχόμενο λεξιλόγιο όρων και τη διευκρίνιση του νοήματος τους, δηλαδή τον ορισμό των 1

6 αντικειμένων και/ή εννοιών καθώς και τις ιδιότητες και τις σχέσεις τους. Οι οντολογίες χρησιμοποιούνται σε διάφορους κλάδους της επιστήμης, όπως στην Τεχνητή Νοημοσύνη, στον Σημασιολογικό Ιστό και στην Βιοϊατρική ως μία μορφή αναπαράστασης γνώσης συγκεκριμένης επιστήμης ή μέρος αυτής. Ο όρος οντολογία έχει τις ρίζες του στην φιλοσοφία. Αναλύοντας την ρίζα του από την Ελληνική γλώσσα, μπορούμε να καταλάβουμε καλύτερα την σημασία του όρου. Πρόκειται για μία σύνθετη λέξη από το Ον και λόγος. Λέγοντας Ον εννοούμε αυτό που πραγματικά υπάρχει ή καθετί που έχει υπόσταση. Στην φιλοσοφία ο όρος αναφέρεται στον λόγο περί του όντος ή στην επιστήμη του όντος, τη φιλοσοφική αναζήτηση που εξετάζει τις αρχές της ύπαρξης και δημιουργίας του Όντος, μελετά την φύση και ουσία των Όντων. Στην επιστήμη των υπολογιστών, η ουσία του όρου είναι ένα μοντέλο για την περιγραφή του κόσμου που αποτελείται από ένα σύνολο τύπων, τις ιδιότητές τους άλλα και τις σχέσεις μεταξύ τους. 1.3 Γενικά για το Facebook Το Facebook είναι μία υπηρεσία και ιστοχώρος κοινωνικής δικτύωσης που ξεκίνησε το Σήμερα αποτελεί την επικρατούσα εφαρμογή κοινωνικού ιστού, έχοντας ξεπεράσει τον κύριο ανταγωνιστή της, το MySpace. Οι χρήστες μπορούν εφόσον εγγραφούν, να δημιουργήσουν ένα προσωπικό προφίλ, να προσθέσουν άλλους χρήστες ως φίλους και να επικοινωνήσουν μέσω μηνυμάτων με αυτούς, συμπεριλαμβανομένων και αυτόματων ειδοποιήσεων όταν ενημερώνουν το προφίλ τους. Η πλατφόρμα του Facebook προσφέρει ένα σύνολο από Διεπαφές Προγραμματισμού Εφαρμογών (API) και εργαλεία που επιτρέπουν στους προγραμματιστές να δημιουργήσουν εφαρμογές οι οποίες επικοινωνούν με τον κοινωνικό γράφο του Facebook που αναπαριστά αντικείμενα (π.χ. άνθρωποι, φωτογραφίες, γεγονότα) καθώς και σχέσεις μεταξύ των αντικειμένων (φιλίες, «likes» και ετικέτες φωτογραφιών). Το κύριο API του Facebook είναι γνωστό ως Graph API. Απο εδώ και πέρα, όταν αναφερόμαστε στο Facebook API θα εννοούμε κατά κύριο λόγο το Graph API. 1.4 Σύνδεση οντολογιών και Facebook Mε την πρόοδο των συστημάτων διαχείρισης προσωπικής πληροφορίας καθίσταται αναγκαία η ύπαρξη μιας προσωπικής οντολογίας των χρη- 2

7 στών, όπου θα καταγράφονται τα πράγματα που είναι σημαντικά για τον κάθε χρήστη. Η κάθε έννοια - οντότητα του εννοιολογικού χώρου του Facebook θα προσδιορίζεται ρητώς στην οντολογία με έναν συγκεκριμένο τύπο (ή αλλιώς κλάση) που με την σειρά του θα έχει ορισμένες ιδιότητες. Όταν στις ιδιότητες ενός τύπου αποθηκεύσουμε συγκεκριμένες τιμές τότε μπορούμε να μιλάμε για ένα στιγμιότυπο του τύπου. Η οντολογία θα πρέπει να περιλαμβάνει όλες τις βασικές πληροφορίες που αφορούν τον χρήστη αποθηκευμένες ως ιδιότητες ενός τύπου αλλά επίσης και τις σχέσεις μεταξύ των διαφόρων τύπων. Για παράδειγμα, βασικές πληροφορίες είναι το όνομα, φύλο κ.λπ. του χρήστη και θα μπορούσαν να αποθηκεύονται ως ιδιότητες του τύπου «Χρήστης» ενώ παράλληλα θα είχαμε την σχέση: ο χρήστης με όνομα Γιάννης «έχει φίλο» τον χρήστη με όνομα Μαρία. Για να μπορέσουν να αποθηκευτούν πλήρως οι πληροφορίες του κάθε χρήστη είναι αναγκαία η χρήση επιπλέον τύπων πέραν του τύπου «Χρήστης» οι οποίοι θα είναι όσον το δυνατόν σύμφωνοι με τα αντικείμενα που χρησιμοποιεί η πλατφόρμα του Facebook. Για παράδειγμα, θα μπορούσε να υπάρχει ο τύπος «Ομάδα» έτσι ώστε να είναι δυνατόν να εκφράσουμε την σχέση, ο «Χρήστης» Γιάννης ανήκει στην «Ομάδα» Ζωγράφοι και στην «Ομάδα» κιθαρίστες. Ως ένα άλλο παράδειγμα, θα μπορούσαμε να έχουμε τον τύπο «Εργασία» έτσι ώστε να μπορούμε να εκφράσουμε τις σχέσεις: ο Γιάννης έχει εργαστεί ως έμπορος βιβλίων το 2004 και εργάζεται ως καθηγητής μέχρι τώρα. Οι διαφορές αυτές θα εκφραστούν μέσω διαφορετικών τιμών στις ιδιότητες του τύπου «Εργασία» για τα δύο διαφορετικά στιγμιότυπα του τύπου. 1.5 Σχετιζόμενη έρευνα στον τομέα των οντολογιών Σε αυτή την ενότητα θα αναφερθούμε σε θέματα σχετικά με το λογισμικό της πτυχιακής, περιλαμβάνοντας εφαρμογές που χρησιμοποιούν οντολογίες και έρευνα πάνω στο ευρύ πεδίο των οντολογιών Profiler χρήστη βασιζόμενος σε οντολογίες Η εφαρμογή του Profiler χρησιμοποιώντας μία οντολογία που αντιστοιχεί στον τομέα (γνώσης) ενός χρήστη, του επιτρέπει να δημιουργήσει την προσωπική του οντολογία διαλέγοντας από έτοιμα πρότυπα, τα οποία μπορεί έπειτα να τα συμπληρώσει και να τα προσαρμόσει στις ανάγκες του. 3

8 Χάρη στα πρότυπα (π.χ. Μαθητής, Αρχιτέκτοντας, Καθηγητής) ο χρήστης θα λάβει μία προσωπική οντολογία που θα αφορά τον χώρο και τον τομέα γνώσης/δραστηριότητάς του και συνεπώς θα περιέχει οικείες προς αυτόν έννοιες. Ο profiler λειτουργεί στα πλαίσια ενός προσωπικού συστήματος διαχείρισης αλληλεπίδρασης, (Personal Interaction Management System PIMS) και είναι υπεύθυνος να παρουσιάσει στον χρήστη έναν απλό και ουσιαστικό τρόπο οπτικοποίησης της οντολογίας σε μία διεπαφή με την οποία θα είναι εξοικειωμένος ο χρήστης και θα μπορεί να συμπληρώσει. Η συμπλήρωση της οντολογίας γίνεται μέσω φορμών μιας διαδικτυακής διεπαφής, η οποία κρύβει την πολυπλοκότητα των οντολογιών από τον χρήστη. Για παράδειγμα όπως μπορούμε να δούμε στο σχήμα 1.1 o χρήστης βλέπει τις σχέσεις που μπορεί να δημιουργήσει στην προσωπική οντολογία μέσω μίας απλής διεπαφής στο διαδίκτυο. Οι σχέσεις εμφανίζονται οργανωμένες ιεραρχικά και όλες μαζί, κάνοντας εύκολο για τον απλό χρήστη να συμπληρώσει την οντολογία κάτι το οποίο δεν ισχύει σε προγράμματα που απευθύνονται σε ειδικούς και σχεδιαστές οντολογιών όπως το Protégé. Σχήμα 1.1: Πιθανές σχέσεις ενός χρήστη όπως εμφανίζονται στην διεπαφή του Profiler. Ο σχεδιαστής της οντολογίας προσδιορίζει διάφορα ontology views μέσω 4

9 των οποίων δημιουργούνται δυναμικά οι φόρμες που χρησιμοποιεί ο χρήστης. Ο σχεδιαστής μπορεί να δημιουργήσει ένα View μέσω ειδικών προγραμμάτων (π.χ. Protégé), και το view αυτό το χρησιμοποιεί ο Profiler για να δημιουργήσει δυναμικά μία φόρμα. Μία τέτοια φόρμα απεικονίζεται στο σχήμα 1.2. Η εφαρμογή είναι γραμμένη σε PHP και HTML σαν εφαρμογή διαδικτύου, ενώ για την ανταλλαγή δεδομένων της οντολογίας χρησιμοποιείται XML. Σχήμα 1.2: Φόρμα δημιουργημένη δυναμικά μέσω ενός View Στο σύστημα θα υπάρχει μία βάση αποθήκευσης οντολογιών, στην οποία θα αποθηκεύονται επίσης τα διάφορα πρότυπα, δημιουργημένα από τους ειδικούς. Εφαρμογές που χρησιμοποιούν προσωπικές οντολογίες θα μπορούν να λάβουν την οντολογία μέσω ενός εξυπηρέτη (server) ο οποίος συνδέεται με την βάση αποθήκευσης των οντολογιών. Τέλος ο χρήστης θα μπορεί να έχει πρόσβαση στην προσωπική του οντολογία και να την τροποποιήσει, χρησιμοποιώντας τον Profiler. Η συνολική αρχιτεκτονική του συστήματος στο οποίο λειτουργεί ο Profiler φαίνεται στο σχήμα 1.3. Η συγκεκριμένη έρευνα και η εφαρμογή περιγράφονται στο άρθρο [4] Μέθοδοι οπτικοποίησης οντολογιών Η κάθε μέθοδος οπτικοποίησης έχει πλεονεκτήματα και μειονεκτήματα. Δεν υπάρχει κάποια η οποία να είναι γενικά καλύτερη και επικρατέστερη επομένως το καλύτερο που μπορούμε να κάνουμε είναι να διαλέξουμε ποια ταιριάζει καλύτερα στις ανάγκες μας. Στο άρθρο [3] γίνεται μία επισκόπηση 5

10 Σχήμα 1.3: Συνολική αρχιτεκτονική συστήματος που λειτουργεί ο Profiler των διαφόρων τεχνικών οπτικοποίησης οντολογιών καθώς επίσης και κατηγοριοποίησης των χαρακτηριστικών τους. Για παράδειγμα, στο σχήμα 1.4 βλέπουμε οπτικοποίηση μίας οντολογίας με το IsaViz, το οποίο αναπαριστά την οντολογία με τη μορφή γράφου, χρησιμοποιώντας ελλείψεις για τους τύπους της οντολογίας, ορθογώνια για τις τιμές των ιδιοτήτων, τα οποία ενώνονται με βέλη φανερώνοντας τις σχέσεις που δημιουργούνται μεταξύ των οντοτήτων. Σχήμα 1.4: Οπτικοποίηση μέσω του IsaViz 6

11 1.5.3 Δημιουργώντας μία οντολογία για το προφίλ του χρήστη Στο άρθρο [1] γίνεται μία προσπάθεια δημιουργίας μίας οντολογίας που χρησιμοποιεί έννοιες και ιδιότητες για να μοντελοποιήσει το προφίλ ενός χρήστη. Η έρευνα λαμβάνει υπόψιν διάφορες άλλες εφαρμογές και οντολογίες σχετικές με το αντικείμενο στην προσπάθεια να δημιουργήσει ένα γενικό, κατανοητό και επεκτάσιμο μοντέλο Ontology generator Πρόκειται για μία διαδικτυακή εφαρμογή στην διεύθυνση hu/tools/og/ η οποία δέχεται ως είσοδο μία οντολογία με την μορφή ενός RDF αρχείου και μπορεί έπειτα να παράγει το σχήμα της οντολογίας (RDFS) ή ένα αρχείο OWL, το οποίο περιέχει την οντολογία μαζί με το σχήμα της. Δεν δίνεται πολύ πληροφορία αναφορικά με την λειτουργία της εφαρμογής ή του κώδικα. Στο σχήμα 1.5 βλέπουμε την γραφική διεπαφή του προγράμματος. Σχήμα 1.5: ontology generator 7

12 Κεφάλαιο 2 Περιγραφή πτυχιακής Η πληροφορίες του αποθηκεύονται στο Facebook για κάθε χρήστη και οι σχέσεις μεταξύ τους, μπορούν άμεσα να αντιστοιχιστούν και να αναπαρασταθούν από μία οντολογία. Αυτή η προσωπική πλέον οντολογία, εφόσον έχει ως κέντρο τον συγκεκριμένο χρήστη, πρέπει να μπορεί εξαχθεί αυτόματα και μάλιστα επιλεκτικά δηλαδή σε συγκεκριμένα τμήματα. Ο σκοπός αυτής της πτυχιακής είναι η δημιουργία του λογισμικού που θα παρέχει αυτή την αυτόματη μέθοδο εξαγωγής του τμήματος της προσωπικής οντολογίας από το Facebook. 2.1 Θεωρητικό υπόβαθρο και επισκόπηση της εφαρμογής Η γενική ιδέα της εφαρμογής είναι ότι: Είναι φτιαγμένη έτσι ώστε να αντιστοιχίζεται με τον τρόπο που το σύστημα Facebook οργανώνει τα δεδομένα του. Πιστοποιεί την ταυτότητά της στο σύστημα του Facebook εφόσον το τελευταίο έχει ειδικά μέτρα πιστοποίησης που βοηθούν στην ασφάλειά του. Συνδέεται με το Facebook και κάνει εξαγωγή των δεδομένων του χρήστη. Δημιουργεί και αναπαριστά την προσωπική οντολογία του χρήστη με χρήση κλάσεων και αντικειμένων του αντικειμενοστρεφούς προγραμματισμού, εκμεταλλευόμενη τις εγγενείς ομοιότητες τους με τις οντολογίες. 8

13 Όσον αφορά τις διαφορές τους, κάνει χρήση επιπλέον τεχνικών που επιτρέπουν στην γεφύρωση αυτών. Αποθηκεύει την οντολογία και την εξάγει σε μορφή αναγνώσιμη από μηχανές (RDF-XML), έτσι ώστε να μπορεί πλέον να χρησιμοποιηθεί σε μία πλειάδα άλλων εφαρμογών Για την επίτευξη του στόχου, η εφαρμογή κάνει συνδυασμό διαφορετικών τομέων (τεχνικών, βιβλιοθηκών και γνώσεων). Στη συνέχεια θα αναφερθούμε σε κάθε τομέα ξεχωριστά ώστε να καταστεί πιο κατανοητό το τελικό σύνολο. 2.2 Τα δεδομένα του Facebook Στο σύστημα Facebook βρίσκονται αποθηκευμένες πληροφορίες για ανθρώπους και για τις σχέσεις μεταξύ τους. Ο τρόπος αναπαράστασης και παρουσίασης αυτών των πληροφοριών και σχέσεων αποτελεί τον πυρήνα του συστήματος. Τα δεδομένα αυτά είναι κατηγοριοποιημένα σε συγκεκριμένους τύπους όπου μπορούμε να δούμε μέσω του Graph API. Ο κάθε τύπος αποτελεί ένα αντικείμενο του Facebook, όπως για παράδειγμα το αντικείμενο User που αποθηκεύει πληροφορίες για τον κάθε χρήστη του Facebook και το αντικείμενο Group που αποθηκεύει πληροφορίες για τις διάφορες ομάδες στις οποίες μπορεί να ανήκουν οι άνθρωποι. Υπάρχουν αρκετά αντικείμενα για να αποθηκεύσουν κάθε είδος πληροφορίας που είναι απαραίτητο για την λειτουργία του Facebook, ακόμη και αν δεν έχει άμεση σχέση με ανθρώπους ή τις μεταξύ τους σχέσεις. Για παράδειγμα το αντικείμενο Application αναπαριστά τις εφαρμογές που είναι καταχωρημένες στο Facebook. Η πλήρης λίστα των αντικειμένων με αλφαβητική σειρά έχει ως εξής: Album, Application, Checkin, Comment, Domain, Event, FriendList, Group, Insights, Link, Message, Note, Page, Photo, Post, Review, Status message, Subscription, Thread, User και Video. Ο κύριος στόχος μας αποτελεί το αντικείμενο User γιατί αναπαριστά όλες τις πληροφορίες που μας ενδιαφέρουν για τους σκοπούς της προσωπικής οντολογίας ενός χρήστη, αλλά επίσης στοχεύουμε και σε όποιο άλλο αντικείμενο βοηθάει άμεσα στην αναπαράσταση πληροφοριών που μπορεί να είναι χρήσιμα για τους ίδιους σκοπούς. Για παράδειγμα είναι προφανές ότι αν θέλουμε να βρούμε όλα τα βίντεο ενός χρήστη θα χρειαστούμε και το αντικείμενο Video. Το σύνολο του αντικειμένου User μαζί με των υπόλοιπων βοηθητικών αντικειμένων αποτελεί την προσωπική οντολογία που θα αναπαραστήσει η εφαρμογή. Τα 9

14 υπόλοιπα αντικείμενα του Facebook εκτός αυτού συνόλου και η σύνδεσή τους με οντολογίες δεν αποτελεί μέρος αυτής της πτυχιακής Μια πιο κοντινή ματιά στα αντικείμενα του Facebook Τα αντικείμενα του Facebook έχουν πεδία και μπορεί να έχουν συνδέσεις. Στα πεδία αποθηκεύονται βασικές πληροφορίες για τις ιδιότητες του αντικειμένου. Για παράδειγμα το αντικείμενο User έχει πεδία για το όνομα, επώνυμο και φύλο του χρήστη (first_name, last_name και gender αντιστοίχως). Τα πεδία μπορούν να δέχονται απλές τιμές όπως συμβολοσειρές, αριθμούς και τιμές αλήθειας (string, number και boolean αντιστοίχως) αλλά μπορούν να αποθηκεύουν και πολυπλοκότερες τιμές όπως νέα, μικρότερα αντικείμενα αλλά και πίνακες (arrays) που μπορεί να περιέχουν οποιοδήποτε συνδυασμό από τις προαναφερθείσες τιμές, απλές και μη. Μία ημερομηνία αποθηκεύεται ως ένα string με συγκεκριμένη μορφή (Μήνας/Μέρα/Έτος) όπως για παράδειγμα στο πεδίο birthday του αντικειμένου User. Τα νέα, μικρότερα αντικείμενα που αναφέρθηκαν, πρόκειται για ανώνυμα αντικείμενα. Αυτά τα αντικείμενα δεν αναφέρονται στο Graph API όπως τα υπόλοιπα (User, Album κ.λπ.), μπορεί να έχουν οποιαδήποτε πεδία και γενικότερα αλλάζουν ανάλογα με την περίπτωση. Ένα παράδειγμα ενός τέτοιου ανώνυμου αντικειμένου, αποθηκεύεται στο πεδίο hometown του αντικειμένου User και περιέχει δύο μονάχα πεδία (id και name). Ως ένα ακόμα παράδειγμα, στο πεδίο favorite_athletes του αντικειμένου User αποθηκεύεται ένας πίνακας από ανώνυμα αντικείμενα με τα ίδια δύο πεδία (id και name). Στην πρώτη περίπτωση το ανώνυμο αντικείμενο αναπαριστά την γενέτειρα του χρήστη, ενώ στη δεύτερη περίπτωση ο πίνακας με τα ανώνυμα αντικείμενα αναπαριστά τους αγαπημένους αθλητές του χρήστη και το κάθε ανώνυμο αντικείμενο του πίνακα αναπαριστά έναν αθλητή. Αυτή η ευελιξία στα αντικείμενα οφείλεται στον τρόπο με τον οποίο το σύστημα Facebook ανταλλάσσει δεδομένα, δηλαδή με το πρότυπο JavaScript Object Notation (JSON) Το πρότυπο JSON Το πρότυπο JSON αποτελεί μία τυποποίηση για τη διευκόλυνση της ανταλλαγής δεδομένων. Οι αναπαραστάσεις δεδομένων βάσει του JSON είναι εύκολο να διαβαστούν (ακόμη και να γραφούν) από ανθρώπους, ενώ είναι επίσης εύκολο να διαβαστούν και να γραφούν από υπολογιστές. Η αναπαράσταση βάσει JSON είναι ανεξάρτητη γλώσσας προγραμματισμού. Οι βασικοί τύποι του JSON είναι: 10

15 Συμβολοσειρά (String) Μορφή Unicode Αριθμός (Number) Μορφή κινητής υποδιαστολής διπλής ακρίβειας Τιμή αλήθειας (Boolean) true ή false Αντικείμενο (Object) Μία συλλογή από ζευγάρια «κλειδί:τιμή». Τα ζεύγη περικλείονται σε άγκιστρα { } και χωρίζονται με κόμμα μεταξύ τους. null Πίνακας (Array) Μία διατεταγμένη σειρά τιμών. Οι τιμές των πινάκων περικλείονται σε αγκύλες [ ] και χωρίζονται με κόμμα. Οι τιμές ενός πίνακα δεν είναι απαραίτητο να είναι όλες του ίδιου τύπου: ένας πίνακας μπορεί να περιέχει τιμές διαφορετικών τύπων, ενώ είναι επίσης δυνατό κάποια τιμή να είναι με τη σειρά της πίνακας. Παράθεση 2.1: JSON αναπαράσταση ενός προσώπου 1 { 2 "firstname": "Nikos", 3 "lastname": "Papadopoulos", 4 "age": 32, 5 "gender": "male", 6 "address": 7 { 8 "country": "Greece", 9 "city": "Athens", 10 "postalcode": "14342" 11 }, 12 "phonenumber": 13 [ 14 { 15 "type": "home", 16 "number": " " 17 }, 18 { 19 "type": "mobile", 20 "number": " " 21 } 22 ] 23 } Για να καταλάβουμε καλύτερα πως τα διάφορα αντικείμενα αναπαριστώνται με το πρότυπο JSON, μπορούμε να δούμε την Παράθεση 2.1, όπου έχουμε αναπαράσταση βάσει JSON ενός αντικειμένου που περιγράφει ένα πρόσωπο. Το αντικείμενο Πρόσωπο (Person) περικλείεται στα άγκιστρα στις γραμμές 1 και 23. Αυτό που πρέπει να προσέξουμε εδώ είναι ότι δεν αναφέρεται πουθενά ότι αυτό το αντικείμενο λέγεται Person ή αναπαριστά ένα πρόσωπο. Για να το καταλάβουμε αυτό θα πρέπει να κοιτάξουμε 11

16 τα περιεχόμενά του ή να το ξέρουμε εκ των προτέρων. Αυτό δίνει μία ευελιξία στην ανταλλαγή δεδομένων με το πρότυπο JSON καθώς επικεντρωνόμαστε στα περιεχόμενα του αντικειμένου (δηλαδή την πληροφορία) και δεν περιοριζόμαστε σε συγκεκριμένους τύπους, ούτε και αναγκαζόμαστε να στείλουμε επιπλέον πληροφορία για το όνομα του τύπου. Από εκεί και πέρα είναι καθήκον του κάθε προγραμματιστή να χειριστεί και να ερμηνεύσει τα δεδομένα. Συνεχίζοντας, μπορούμε να δούμε ότι το αντικείμενο Πρόσωπο περιλαμβάνει ζευγάρια «κλειδί:τιμή» όπως firstname: Nikos και age:32 με τύπο τιμών, Συμβολοσειρά και Αριθμό αντιστοίχως. Πιο κάτω έχουμε το κλειδί address το οποίο ως τύπο έχει ένα νέο αντικείμενο, το οποίο περιγράφεται από τα κλειδιά country, city και postalcode με τις αντίστοιχες τιμές τους. Τέλος το κλειδί phonenumber είναι τύπου Πίνακας. Αυτός ο πίνακας μπορούμε να δούμε ότι περιέχει δύο αντικείμενα με κλειδιά type και number. Όπως αναφέραμε προηγουμένως, παρατηρούμε ότι γενικότερα η αναπαράσταση των αντικειμένων ακολουθεί μια σχετική ανωνυμία, αν εξαιρέσουμε το κλειδί. Σε αυτή την περίπτωση είναι ξεκάθαρο ότι το αντικείμενο αναπαριστά αριθμούς τηλεφώνου εφόσον μπορούμε να δούμε τις τιμές του κλειδιού type για τηλέφωνο σπιτιού και κινητού (home και mobile αντίστοιχα) ενώ το κλειδί number αποθηκεύει τους αριθμούς με μορφή που προτρέπει σε αριθμό τηλεφώνου. Παρόλα αυτά, θα υπάρξουν φορές που τα πράγματα δεν θα είναι τόσο ξεκάθαρα όπως θα δούμε αμέσως παρακάτω Αντικείμενα Facebook και πρότυπο JSON Εφόσον πλέον έχουμε μία καλύτερη εικόνα για τον τρόπο αποθήκευσης των δεδομένων, μπορούμε να επιστρέψουμε στο παράδειγμα του Facebook. Εξετάζαμε την περίπτωση των πεδίων hometown και favorite_athletes του αντικειμένου User. Όπως μπορούμε να δούμε στην Παράθεση 2.2 τα αντικείμενα που αποθηκεύονται τα δεδομένα για τη γενέτειρα του χρήστη και για έναν αγαπημένο αθλητή είναι ίδια, με την έννοια ότι περιγράφονται και τα δύο από id και name. Πώς μπορούμε να ξέρουμε ότι τα δεδομένα που λαμβάνουμε αναπαριστούν όντως την γενέτειρα του χρήστη; Η απάντηση είναι ότι δεν μπορούμε. Αν για κάποιο λόγο κάποιος από τους ιδιοκτήτες του Facebook άλλαζε το id της γενέτειράς μας με το id ενός αγαπημένου αθλητή μας τότε θα μπορούσαμε να λάβουμε δεδομένα ότι ο χρήστης έχει γενέτειρα Mike Zambidis και ότι ένας από τους αγαπημένους του αθλητές είναι Athens, Greece. Προφανώς το Facebook έχει σχεδιαστεί κατάλληλα έτσι ώστε να μην είναι δυνατόν να εισάγουμε δεδομένα που δεν βγάζουν 12

17 νόημα. Όταν κατά την δημιουργία του προφίλ μας στο Facebook μας ζητηθεί να εισάγουμε την γενέτειρά μας, τότε οι επιτρεπόμενες τιμές θα είναι μονάχα υπάρχουσες πόλεις/χώρες που είναι ήδη αποθηκευμένες στην βάση δεδομένων του Facebook. Αν εμείς δοκιμάσουμε να εισάγουμε το όνομα ενός αθλητή θα δούμε ότι αυτό δεν είναι δυνατό, οι έλεγχοι αυτής της μορφής γίνονται ωστόσο σε επίπεδο λογικής της εφαρμογής και όχι σε επίπεδο αναπαράστασης βάσει JSON. Συμπερασματικά από την πλευρά ενός προγραμματιστή, χρειάζεται ιδιαίτερη προσοχή όταν λαμβάνουμε δεδομένα από το Facebook καθώς υπάρχουν πολλά αντικείμενα που μοιάζουν μεταξύ τους, έχουν δηλαδή τα ίδια κλειδιά (π.χ. id και name) και αντιστοιχούν σε διαφορετικές οντότητες του πραγματικού κόσμου. Ένα τέτοιο αντικείμενο μπορεί να αποθηκεύει πληροφορίες για μία χώρα, για έναν αθλητή, για μία ταινία, για ένα μουσικό είδος κ.λπ. Κάτι το οποίο μπορεί να βοηθήσει είναι το κλειδί του αντικειμένου κάτι που όμως δεν είναι σίγουρο ότι θα υπάρχει ιδιαίτερα όταν δοκιμάσουμε να λάβουμε πληροφορία για ένα συγκεκριμένο κομμάτι ενός αντικειμένου (π.χ. μόνο το hometown του User) και όπου θα καταλήξουμε με ένα γενικό και «ανώνυμο» αντικείμενο {id, name}. Η σωστή χρήση και ερμηνεία των δεδομένων του Facebook είναι ευθύνη του προγραμματιστή. Παράθεση 2.2: Τμήμα JSON αναπαράστασης ενός Facebook User 1 { 2 "first_name": "Nikos", 3 "last_name": "Papadopoulos", 4 "hometown": 5 { 6 "id": " ", 7 "name": "Athens, Greece" 8 }, 9 "favorite_athletes": 10 [ 11 { 12 "id": " ", 13 "name": "Mimis Domazos" 14 }, 15 { 16 "id": " ", 17 "name": "Mike Zampidis" 18 } ] } 13

18 2.3 Facebook Authentication Για την προστασία των δεδομένων και του συστήματος, το Facebook έχει δημιουργήσει ένα πολύ καλό σύστημα ασφαλείας, που περιλαμβάνει τον έλεγχο πρόσβασης σε δεδομένα του χρήστη τόσο από άλλους χρήστες όσο και από εφαρμογές. Η γενική ιδέα είναι ότι τα δεδομένα ενός χρήστη δεν μπορούν να χρησιμοποιηθούν από εφαρμογές εάν ο ίδιος δεν δώσει την έγκρισή του. Κατ αρχήν γίνεται πιστοποίηση του χρήστη όταν αυτός κάνει είσοδο στο σύστημα χρησιμοποιώντας το του και τον κωδικό του. Την πρώτη φορά που ο χρήστης θέλει να χρησιμοποιήσει μία εφαρμογή, τότε του εμφανίζεται μία οθόνη προτροπής με το όνομα της εφαρμογής καθώς και μία λίστα των δικαιωμάτων που ζητά η συγκεκριμένη εφαρμογή για να λειτουργήσει. Ο χρήστης είναι ελεύθερος παραχωρήσει στην εφαρμογή τα δικαιώματα που αυτή ζητά ή όχι, επιλέγοντας «Allow» και «Don t allow». Απο την στιγμή που ο χρήστης συμφωνεί με την οθόνη προτροπής και δώσει δικαίωμα στην εφαρμογή να χρησιμοποιήσει τα δεδομένα του, τότε λέμε ότι ο χρήστης εξουσιοδοτεί την εφαρμογή. Μια εφαρμογή πρέπει επίσης να πιστοποιηθεί από το ίδιο το σύστημα. Αυτό γίνεται όταν ένας προγραμματιστής δημιουργεί την εφαρμογή του στο σύστημα του Facebook μέσω της σελίδας και του δίνεται ένα μυστικό κλειδί (app secret). Χρησιμοποιώντας αυτό το κλειδί το σύστημα του Facebook ξέρει ποια εφαρμογή θα τρέξει και μπορεί να ρωτήσει και τον χρήστη για πιστοποίηση χρησιμοποιώντας την οθόνη προτροπής. Όπως βλέπουμε για να τρέξει μία εφαρμογή για έναν χρήστη, πρέπει να γίνουν κάποια βήματα πιστοποίησης και εξουσιοδότησης. Την όλη διαδικασία την αναφέρουμε γενικά ώς πιστοποίηση Facebook ή Facebook authentication. Τέλος, η διαδικασία πιστοποίησης μπορεί να γίνει από πλευράς εξυπηρέτη (server-side) ή από πλευράς πελάτη (client-side) Βήματα πιστοποίησης Facebook Πιστοποίηση χρήστη (user authentication): βεβαιώνει το σύστημα ότι ο χρήστης είναι όντως αυτός που λέει ότι είναι και συμβαίνει την στιγμή που ο χρήστης κάνει είσοδο στο σύστημα με το και τον κωδικό του. Εξουσιοδότηση εφαρμογής (app authorization): βεβαιώνει ότι ο χρήστης ξέρει τι είδους δικαιώματα και σε ποια δεδομένα δίνει πρόσβαση στην εφαρμογή. Αυτό γίνεται προτρέποντας τον χρήστη με τις επι- 14

19 λογές «Allow» και «Don t allow» κατά την πρώτη φορά χρήσης της εφαρμογής. Πιστοποίηση εφαρμογής (app authentication): βεβαιώνει ότι ο χρήστης παραχωρεί τα δεδομένα του όντως στην εφαρμογή και όχι σε κάποιον τρίτο. Ο προγραμματιστής πρέπει να κάνει χρήση του μυστικού κλειδιού του (app secret). Μόλις ολοκληρωθούν με επιτυχία όλα τα βήματα, τότε και μόνο τότε, δίνεται στον προγραμματιστή ένα διακριτικό πρόσβασης χρήστη ή user access token. Χρησιμοποιώντας το διακριτικό αυτό, η εφαρμογή του προγραμματιστή μπορεί να έχει πρόσβαση στα δεδομένα του χρήστη και να εκτελεί πράξεις αναλόγως με τα δικαιώματα που έχει λάβει (π.χ. να στείλει ένα mail στον χρήστη). Το διακριτικό πρόσβασης αναφέρεται στο Facebook API με διάφορα ονόματα όπως user access token, access token, authentication token, auth token και token. Από εδώ και στο εξής, για αποφυγή σύγχυσης, θα κάνουμε αναφορά σε αυτό ως token Διαδικασία πιστοποίησης Όταν χρειαστεί να κάνουμε κλήσεις στο Graph API από τον εξυπηρέτη όπου εκτελείται η εφαρμογή μας, δηλαδή όταν η εφαρμογή τρέξει κατευθείαν σε έναν εξυπηρέτη τότε εκτελείται διαδικασία πιστοποίησης πλευράς εξυπηρέτη γνωστή και ως server-side flow. Η εφαρμογή που έχει δημιουργηθεί στα πλαίσια αυτής της πτυχιακής, τρέχει τοπικά (στον υπολογιστή του χρήστη) και όχι σε κάποιον εξυπηρέτη και κάνει χρήστη πιστοποίησης πλευράς πελάτη γνωστή και ως client-side flow. Τα δεδομένα που έχει αρχικά ο προγραμματιστής στην διάθεσή του είναι, το id της εφαρμογής του (app id) και το μυστικό κλειδί της (app secret) που του δίνονται όταν δημιουργεί την εφαρμογή μέσω της σελίδας com/apps. Πιστοποίηση από πλευρά εξυπηρέτη Αρχικά ζητείται από τον χρήστη να κάνει είσοδο στο σύστημα και αμέσως μετά εμφανίζεται η οθόνη προτροπής για να δοθούν δικαιώματα στην εφαρμογή. Για να γίνει αυτό η εφαρμογή πρέπει να χρησιμοποιήσει το Graph API μέσω της εξής διεύθυνσης: client_id=your_app_id&redirect_uri=your_url 15

20 Εκτός από τον κωδικό της εφαρμογής (YOUR_APP_ID) χρειαζόμαστε και μία διεύθυνση ανακατεύθυνσης (YOUR_URL) στην οποία θα μεταφερθούμε μετά την οθόνη προτροπής, η οποία είναι ουσιαστικά μία διεύθυνση του εξυπηρέτη στον οποίο τρέχει η εφαρμογή μας, και αντιστοιχεί στη σελίδα που θα εμφανιστεί αφού ο χρήστης δώσει τη σχετική εξουσιοδότηση. Μπορούμε, προαιρετικά, να ζητήσουμε επιπλέον δικαιώματα με χρήση του scope (βλ. παράδειγμα στη συνέχεια). Αν δεν χρησιμοποιήσουμε το scope τότε από προεπιλογή ζητάμε δικαιώματα για τα πολύ βασικά δεδομένα του χρήστη (π.χ. όνομα, επώνυμο κ.λπ.). Στο παράδειγμα που ακολουθεί ζητάμε επιπλέον δικαιώματα για να διαβάσουμε την ροή με τις αναρτήσεις του χρήστη και για το του: client_id=your_app_id&redirect_uri=your_url &scope= ,read_stream Παρατηρούμε ότι εδώ τα βήματα της 1) πιστοποίησης χρήστη και 2) εξουσιοδότησης της εφαρμογής γίνονται μαζί. Αν ο χρήστης επιλέξει «Allow» στην οθόνη προτροπής τότε θα μας επιστραφεί ένας κωδικός εξουσιοδότησης (AUTHORIZATION_CODE) Με την χρήση αυτού του κωδικού μπορούμε να πάμε στο τελευταίο βήμα της 3) πιστοποίησης της εφαρμογής. Για να γίνει αυτό πρέπει να χρησιμοποιήσουμε όλα τα δεδομένα που είχαμε πριν μαζί με τον μυστικό κωδικό της εφαρμογής (YOUR_APP_SECRET) και τον κωδικό εξουσιοδότησης (AUTHORIZATION_CODE). client_id=your_app_id&redirect_uri=your_url& client_secret=your_app_secret&code=authorization_code Αν εκτελεστούν αυτά τα βήματα επιτυχώς τότε θα μας επιστραφεί τελικά το token. Το τελευταίο μπορούμε να το χρησιμοποιήσουμε είτε αποθηκεύοντας το μέσα στον εξυπηρετητή και κατ επέκταση στην εφαρμογή μας στην περίπτωση που ασχολούμαστε μονάχα με έναν χρήστη. Σε διαφορετική περίπτωση θα πρέπει να ζητήσουμε από τον χρήστη που θέλει να χρησιμοποιήσει την εφαρμογή μας στον εξυπηρετητή να μας δώσει ένα token το οποίο έχει αποκτήσει ο ίδιος ακολουθώντας την παραπάνω διαδικασία. Το κάθε token έχει ένα ορισμένο χρόνο ζωής. Αν αυτό λήξει τότε θα πρέπει να ζητήσουμε ένα νέο token. Αν θέλουμε ένα token που να κρατάει για πάντα 16

21 τότε μπορούμε να ζητήσουμε ως το επιπλέον δικαίωμα «offline_access» στο scope. Θα πρέπει να αναφέρουμε ότι πρόσφατα το Facebook έκανε πιο φιλική προς τον χρήστη την απόκτηση ενός token. Χρησιμοποιώντας την εφαρμογή Graph API Explorer ( tools/explorer) κάποιος χρήστης μπορεί εύκολα να λάβει ένα προσωπικό token με ότι δικαιώματα επιθυμεί πατώντας το κουμπί «get Access Token». Η διαδικασία από πλευράς εξυπηρέτη, αναφέρεται κυρίως για την περίπτωση μελλοντικής επέκτασης της εφαρμογής, ιδιαίτερα για την μετατροπή της από τοπική εφαρμογή σε εφαρμογή που τρέχει πάνω σε έναν εξυπηρέτη. Πιστοποίηση από πλευρά πελάτη Αρχικά κάνουμε κλήση στο Graph API μέσω της διεύθυνσης: client_id=your_app_id&redirect_uri=your_url &response_type=token Παρομοίως μπορούμε να ζητήσουμε επιπλέον δικαιώματα μέσω του scope: client_id=your_app_id&redirect_uri=your_url &scope= ,read_stream &response_type=token Η μόνη διαφορά με την περίπτωση του εξυπηρετητή είναι ότι προσθέτουμε επιπλέον τη συμβολοσειρά «&response_type=token» στο τέλος της αίτησης. Τα token δημιουργούνται με αυτό τον τρόπο διαφέρουν εφόσον ο χρήστης μπορεί να τα χρησιμοποιήσει ως μέρος μίας διεύθυνσης για να κάνει απευθείας κλησεις στο Facebook API κάτι που διευκολύνει τις εφαρμογές που τρέχουν τοπικά. Για παράδειγμα μπορούμε να δούμε τα βασικά προσωπικά μας στοιχεία στο Facebook χρησιμοποιώντας την διεύθυνση Για να λειτουργήσει κάτι τέτοιο θα πρέπει να προσθέσουμε στην διεύθυνση &access_token= με το token μας και να χρησιμοποιήσουμε πρωτόκολλο ασφαλείας https δηλαδή: 17

22 2.3.3 Πως η εφαρμογή χειρίζεται την πιστοποίηση στο Facebook Για να γίνει η πιστοποίηση μέσω του γραφικού περιβάλλοντος της εφαρμογής θα έπρεπε να δημιουργήσουμε έναν μίνι browser είτε να ανοίξουμε έναν browser μέσα στην εφαρμογή καθώς θα έπρεπε να κάνουμε τις κλήσεις στην πλατφόρμα του Facebook που περιγράψαμε παραπάνω για να επιτύχουμε την πιστοποίηση. Προφανώς αυτές οι λύσεις δεν είναι πολύ αποδοτικές για αυτό προτιμήθηκε η χρήση του προεπιλεγμένου browser του συστήματος με τον οποίο οι περισσότεροι χρήστες είναι εξοικειωμένοι. Ουσιαστικά το πρόγραμμα προτρέπει τον χρήστη να πατήσει έναν σύνδεσμο HTML. Αυτός ο σύνδεσμος ανοίγει, με την βοήθεια του προγράμματος, τον προεπιλεγμένο browser του συστήματος ο οποίος πραγματοποιεί την κλήση στο σύστημα του Facebook. &redirect_uri= connect/login_success.html &response_type=token &scope=permissions Όπως βλέπουμε η κλήση είναι από πλευρά πελάτη, μια και χρησιμοποιεί &response_type=token. Επίσης χρησιμοποιεί μία λίστα με τα δικαιώματα (στην θέση PERMISSIONS) που χρειάζεται η εφαρμογή από τον χρήστη τα οποία είναι αρκετά εφόσον ο σκοπός είναι να εξάγουμε την πληροφορία του χρήστη. Το κυριότερο δικαίωμα είναι το offline_access χάρη στο οποίο δημιουργείται ένα token το οποίο δεν έχει περιορισμό στον χρόνο ζωής του. Έτσι η εφαρμογή μπορεί να αποθηκεύει το token σε ένα αρχείο και να το φορτώνει κατά την εκκίνησή της: χωρίς χρήση της τεχνικής αυτής ο χρήστης θα έπρεπε κάθε φορά να εκτελεί την διαδικασία πιστοποίησης. Ο σύνδεσμος εμφανίζεται σε ένα πλαίσιο διαλόγου, το οποίο απεικονίζεται στο σχήμα 2.1. Μόλις ο χρήστης επιλέξει τον σύνδεσμο, θα γίνει η κλήση στο Facebook μέσω του προεπιλεγμένου browser. Στο σημείο αυτό, είναι πιθανό να ζητηθεί από τον χρήστη να κάνει είσοδο στο Facebook και να εξουσιοδοτήσει την εφαρμογή, ενέργειες οι οποίες του είναι γνώριμες. Μετά θα εμφανιστεί στον browser το μήνυμα Success. Ο χρήστης θα πρέπει να φωτίσει ολόκληρη την μπάρα διεύθυνσης, να την αντιγράψει και να την επικολλήσει στην περιοχή κειμένου του διαλόγου και να πατήσει Enter. Η μπάρα διεύθυνσης του browser περιέχει το token. Σε παλαιότερη έκδοση της εφαρμογής ο χρήστης έπρεπε να επικολλήσει στη περιοχή κειμένου μονάχα το token, όμως κάτι τέτοιο δεν είναι και τόσο βολικό. 18

23 Σχήμα 2.1: Διάλογος πιστοποίησης Facebook της εφαρμογής 2.4 Αντικειμενοστρεφής προγραμματισμός Για να κατανοήσουμε καλύτερα την λειτουργία του προγράμματος ιδιαίτερα από πλευράς υλοποίησης, χρειαζόμαστε μερικές βασικές γνώσεις αντικειμενοστρεφούς προγραμματισμού. Μία σύνοψη των απαραίτητων εννοιών παρατίθεται στη συνέχεια Γενικά Στις παραδοσιακές διαδικαστικές γλώσσες προγραμματισμού (Pascal, C, Basic κ.λπ.) η βασική μονάδα δόμησης του κώδικα είναι η συνάρτηση. Η συνάρτηση αποκρύπτει τις λεπτομέρειες υλοποίησής της και συνιστά και τη μονάδα επαναχρησιμοποίησης κώδικα, αφού μπορεί να καλείται από άλλες συναρτήσεις. Το πρόβλημα είναι ότι υπήρχε μία υποτίμηση των δεδομένων του προγράμματος. Τα δεδομένα είναι μία συνιστώσα εξίσου σημαντική με τον κώδικα, εφόσον το πρόγραμμα αποσκοπεί τελικά στον χειρισμό και την επεξεργασία τους. Στον αντικειμενοστρεφή προγραμματισμό τα δεδομένα είναι οργανωμένα σε αυτόνομες οντότητες μαζί με ειδικές συναρτήσεις, οι οποίες είναι και οι μοναδικές που έχουν τη δυνατότητα να μεταβάλουν τα δεδομένα των οντοτήτων. Οι αυτόνομες αυτές οντότητες ονομάζονται αντικείμενα και κρατούν κάθε στιγμή τα δεδομένα όπως απεικονίζονται στη μνήμη του υπολογιστή. (Εδώ θα πρέπει να σημειωθεί ότι δεν πρέπει να συγχέουμε τα αντικείμενα του αντικειμενοστρεφούς προγραμματισμού με τα αντικείμενα του Facebook για τα οποία μιλήσαμε πιο πάνω.) Το τί δεδομένα θα περιέχει το κάθε αντικείμενο και με ποιες συναρτήσεις θα τα επεξεργάζεται, καθορίζεται από την κλάση του αντικειμένου, η οποία κλάση συγγράφεται από τον 19

24 προγραμματιστή. Το αντικείμενο που περιέχει συγκεκριμένες τιμές για τα δεδομένα το λέμε επίσης και στιγμιότυπο της κλάσης. Επομένως η κλάσεις αποτελούν τα «καλούπια» από τα οποία δημιουργούνται τα αντικείμενα. Για παράδειγμα θα μπορούσαμε να έχουμε την κλάση Άνθρωπος η οποία έχει δεδομένα όπως Όνομα, Φύλο, Χρώμα Ματιών καθώς και λοιπές άλλες πληροφορίες όπως την ακριβή κίνηση και θέση χεριών και ποδιών κατά την εκτέλεση μίας κίνησης. Η κλάση έχει με την σειρά της συναρτήσεις όπως Περπάτα και Τρέξε οι οποίες μπορούν να επιδρούν πάνω στα δεδομένα και να τα αλλάζουν. Από αυτή την κλάση δημιουργούνται δύο αντικείμενα με τιμές ονόματος, Γιώργος και Μαρία. Τα δύο αυτά αντικείμενα έχουν δημιουργηθεί από την ίδια κλάση όμως αποτελούν ξεχωριστές οντότητες και μπορεί να έχουν διαφορετικές τιμές στα δεδομένα τους. Παρόλα αυτά τα δύο αυτά αντικείμενα μπορούν να εκτελέσουν τις ίδιες λειτουργίες (Περπάτα, Τρέξε) εφόσον έτσι ορίζει η κλάση τους. Εφόσον τα δεδομένα είναι αποθηκευμένα μαζί με τις συναρτήσεις στα αντικείμενα, και μονάχα αυτές οι συναρτήσεις μπορούν να επιδράσουν στα δεδομένα, τότε θα μπορούσαμε να πούμε ότι το συγκεκριμένο αντικείμενο «ξέρει» να περπατά και να τρέχει. Είναι προφανές ότι αν κάποιος γράψει μία «καθολική συνάρτηση» Κολύμπα και προσπαθήσει να την χρησιμοποιήσει για να αλλάξει τα δεδομένα του αντικειμένου του παραδείγματος, τότε αυτό δεν θα είναι δυνατόν εφόσον το συγκεκριμένο αντικείμενο «ξέρει» μονάχα να τρέχει και να περπατά. (Καθολική συνάρτηση καλούμε μία ονοματισμένη ενότητα κώδικα που δεν είναι ωστόσο μέλος καμίας κλάσης). Μονάχα εάν ο προγραμματιστής ορίσει την συνάρτηση Κολύμπα μέσα στην κλάση Άνθρωπος, τα νέα αντικείμενα που θα δημιουργηθούν θα «ξέρουν» να κολυμπάνε (μια και η συνάρτηση θα μπορεί να προσπελάσει τα δεδομένα τους και να τα θέσει στην κατάσταση που αντιστοιχεί στην κολύμβηση). Με αυτή την ασφαλιστική δικλείδα στα δεδομένα λύνονται πολλά προβλήματα που είχαμε στον διαδικαστικό προγραμματισμό, ενώ παράλληλα ο τρόπος οργάνωσης των δεδομένων βοηθάει τον αντικειμενοστρεφή προγραμματισμό να αντεπεξέλθει σε προβλήματα μεγαλύτερης πολυπλοκότητας Πιο συγκεκριμένα στην Java Στην αντικειμενοστρεφή γλώσσα προγραμματισμού Java έχουμε κλάσεις και αντικείμενα όπως εξηγήσαμε πιο πάνω με την διαφορά ότι οι συναρτήσεις ενός αντικειμένου (που ορίζονται στην κλάση του), στην Java ονομάζονται μέθοδοι. Τα δεδομένα αποθηκεύονται σε ειδικές μεταβλητές της κλάσης που ονομάζονται πεδία της κλάσης. Τα πεδία αυτά μπορούν να 20

25 έχουν ως τύπο πρωτογενής προγραμματιστικούς τύπους όπως int, boolean κ.λπ. άλλα μπορεί να έχουν ως τύπο και μία κλάση. Παράθεση 2.3: Αναπαράσταση της κλάσης Άνθρωπος σε Java 1 class Human { 2 String name; 3 String gender; 4 java.awt.color eyecolor; 5 Movement limbpositions; 6 7 void walk() { 8 Movement newlimbpositions = null; 9 //Calculations for newlimbpositions; 10 limbpositions = newlimbpositions; 11 } void run() { 14 Movement newlimbpositions = null; 15 //Calculations for newlimbpositions; 16 limbpositions = newlimbpositions; 17 } } Ένα ακόμα χαρακτηριστικό του αντικειμενοστραφούς προγραμματισμού το οποίο εμφανίζεται και στην Java και θα μας φανεί χρήσιμο, είναι η κληρονομικότητα. Γενικότερα αυτό σημαίνει ότι ένα αντικείμενο μπορεί να κληρονομήσει τις ιδιότητες και τη συμπεριφορά (μεθόδους) ενός άλλου αντικειμένου. Στην Java αυτό γίνεται με την λέξη-κλειδί extends και πρακτικά σημαίνει ότι μία κλάση κληρονομεί τα πεδία και τις μεθόδους μίας άλλης κλάσης. Η υπο-κλάση, δηλαδή αυτή που κληρονομεί, μπορεί να χρησιμοποιήσει τα πεδία και τις μεθόδους που κληρονομεί και επιπλέον μπορεί να τα τροποποιήσει για να ταιριάζουν στις ανάγκες της (στην παραγματικότητα, υπάρχουν κάποιοι περιορισμοί στη χρήση των πεδίων και συναρτήσεων που κληρονομούνται, ανάλογα με το αν αυτά είχαν δηλωθεί ως private, protected, public ή είχαν μείνει με default access modifier). Τέλος μπορεί να προσθέσει επιπλέον πεδία και μεθόδους. Θα μπορούσαμε να έχουμε για παράδειγμα την κλάση Άνθρωπος και δύο κλάσεις, Άντρας και Γυναίκα η οποίες την κληρονομούν. Δίνοντας στην κλάση Άνθρωπος το πεδίο ομάδα αίματος, δεν χρειάζεται να το ξαναδημιουργήσουμε στις κλάσεις Άντρας και Γυναίκα εφόσον το κληρονομούν από την Άνθρωπος. Τέλος κάτι που θα πρέπει να προσέχουμε ιδιαιτέρως είναι ότι στην Java η κάθε κλάση μπορεί να κληρονομεί μία και μοναδική άλλη κλάση. 21

26 2.4.3 Συσχέτιση με οντολογίες Όπως έχουμε αναφέρει οι οντολογίες αναπαριστούν μία οντότητα με ένα συγκεκριμένο τύπο και συγκεκριμένες ιδιότητες. Μπορούμε πολύ εύκολα να κάνουμε αντιστοίχηση αυτών σε Java χρησιμοποιώντας μία κλάση για κάθε τύπο οντότητας και τα πεδία των κλάσεων για τις ιδιότητες των τύπων. Με αυτό τον τρόπο καλύπτουμε ένα μεγάλο μέρος της αναπαράστασης μιας οντολογίας στην Java. Όμως οι οντότητες των οντολογιών έχουν επίσης και σχέσεις. Αυτές μπορούμε εν μέρη να τις καλύψουμε χρησιμοποιώντας τις σχέσεις που δημιουργούνται αυτόματα μεταξύ των κλάσεων στην Java. Για παράδειγμα όταν η κλάση Human έχει ως πεδίο limbpositions με τύπο την κλάση Movement, τότε αυτόματα δημιουργείται μία σχέση μεταξύ της κλάσης Human και Movement. Παρόλα αυτά, η Java επιβάλει κάποια όρια σε αυτές τις σχέσεις εφόσον έχει συγκεκριμένους κανόνες και περιορισμούς. Για παράδειγμα όπως έχουμε αναφέρει, στην Java δεν επιτρέπεται η κληρονομικότητα από πολλές κλάσεις, δηλαδή μία κλάση δεν επιτρέπεται να κληρονομεί περισσότερες από μία κλάσεις. Αντίθετα στον πιο ευρύ τομέα των οντολογιών δεν υπάρχουν τέτοιες δεσμεύσεις, καθώς με δεδομένο ότι ο σκοπός είναι η γενικότερη αναπαράσταση γνώσης και εννοιών ενός τομέα, το γενικό μοντέλο που ακολουθούν δεν είναι τόσο περιοριστικό. Θα μπορούσε να πει κανείς ότι στην Java και στον αντικειμενοστραφή προγραμματισμό δίνεται περισσότερη έμφαση στην κλάση ή το αντικείμενο ενώ αντίθετα στις οντολογίες και στον τρόπο αναπαράστασής τους, δίνεται περισσότερη έμφαση στις ιδιότητες αυτών. Στην Java οι ιδιότητες (δηλαδή τα πεδία) είναι απόλυτα συνδεδεμένα με την κλάση στην οποία ανήκουν και τους κληρονόμους της, αντίθετα στις οντολογίες μπορούμε να έχουμε περιπτώσεις κληρονομικότητας ιδιοτήτων από πολλούς διαφορετικούς τύπους ή ακόμα και ιδιότητα να κληρονομεί μία άλλη ιδιότητα. Ακόμα, περιορισμοί οι οποίοι εμφανίζονται στο επίπεδο μίας κλάσης Java μπορούν να εμφανιστούν στο επίπεδο μίας ιδιότητας μίας οντολογίας. Για να ξεπεραστούν αυτές οι διαφορές και για να μπορέσουμε να αναπαραστήσουμε την πληροφορία που είναι αποθηκευμένη στις κλάσεις Java με απλά δομημένο και λογικό τρόπο που απαιτεί μία οντολογία, θα χρειαστεί παραπάνω επεξήγηση και χρήση επιπλέον τεχνικών. Το ένα είναι η δημιουργία «λογικών τριπλετών» μέσω των οποίων ορίζεται π.χ. ότι το πεδίο limbpositions είναι κλάσης Movement (limbpositions is-a Movement) κάτι το οποίο επιτυγχάνουμε με την χρήση Java annotations. Και τα δύο θα τα δούμε πιο λεπτομερώς παρακάτω. 22

27 2.5 Εξαγωγή δεδομένων από το Facebook Έχουμε ήδη δει πως μία εφαρμογή μπορεί να πιστοποιηθεί ώστε να έχει πρόσβαση στα δεδομένα του χρήστη και πως αυτά τα δεδομένα αναπαριστώνται με ευελιξία μέσω του πρότυπου JSON. Είναι καιρός να δούμε με ποια δεδομένα ακριβώς θα ασχοληθούμε και πως θα τα εξάγουμε από το σύστημα του Facebook ώστε να μπορέσουν έπειτα να χρησιμοποιηθούν από την εφαρμογή Επιλογή δεδομένων του Facebook και συσχέτισή τους με κλάσεις Java Μας ενδιαφέρει κυρίως η πληροφορία που αποθηκεύεται στο αντικείμενο User του Facebook. Όπως έχουμε ήδη αναφέρει, τα αντικείμενα του Facebook έχουν πεδία και συνδέσεις. Οι συνδέσεις δεν είναι απαραίτητο να υπάρχουν. Για να αναπαραστήσουμε την προσωπική οντολογία του χρήστη στη γλώσσα Java, αρχικά θεωρούμε το αντικείμενο User του Facebook ως μία κλάση. Τα απλά πεδία του User τα αντιστοιχίζουμε σε πεδία της κλάσης μας, τα οποία χρησιμοποιούν απλούς τύπους που υποστηρίζονται από την Java. Για παράδειγμα αρκετά πεδία του αντικειμένου User αποθηκεύουν μία απλή συμβολοσειρά, επομένως μπορούμε να τα αντιστοιχίσουμε σε πεδίο τύπου java.lang.string στην κλάση μας. Για οτιδήποτε άλλο εκτός από τους απλούς τύπους, όπως συμβολοσειρά, boolean και ημερομηνίες θα πρέπει να δημιουργήσουμε καινούριες κλάσεις που θα αντιστοιχίζονται στους τύπους των αντικειμένων του Facebook. Με δεδομένη την ευελιξία στην αναπαράσταση των αντικειμένων του Facebook, την οποία παρέχει το πρότυπο JSON, μπορούμε εύκολα να δούμε ότι θα πρέπει να δημιουργήσουμε κλάσεις που θα καλύπτουν, όλες τις περιπτώσεις αντικειμένων τόσο για αυτές που περιγράφονται στο Graph API και σχετίζονται άμεσα με το αντικείμενο User, όσο και για τις περιπτώσεις των μικρών και «ανώνυμων» αντικειμένων όπως για παράδειγμα ένα αντικείμενο που περιέχει id και name [id, name]. Το πρόβλημα που αντιμετωπίζουμε εδώ είναι ότι στην γλώσσα Java δεν θα έχουμε την ευελιξία των αντικειμένων σε μορφή JSON και θα έχουμε τα πάντα σε «στατικές» και ονομαζόμενες κλάσεις. Τα αντικείμενα του Facebook στην μορφή JSON διακρίνονται από μία «ρευστότητα» η οποία μπορεί να προκαλέσει ασυμβατότητα με στις κλάσεις Java που θα μοντελοποιούν το κάθε αντικείμενο του Facebook. Για παράδειγμα, το πεδίο favorite_teams του αντικειμένου User του Facebook, επιστρέφει αντικείμενα [id, name]. Αν οι προγραμματιστές αποφάσιζαν ότι κάθε ομάδα χρειά- 23

28 ζεται και μία κατηγορια, το πεδίο favorite_teams Θα μπορούσαμε να επιστρέφει αντικείμενα [id, name, category] χωρίς ιδιαίτερες συνέπειες. Αντίθετα στην Java θα πρέπει να κάνουμε αλλαγές στον κώδικα των κλάσεων ώστε να δέχονται την επιπλέον πληροφορία category. Στην συγκεκριμένη περίπτωση θα έπρεπε μάλιστα να δημιουργήσουμε μια νέα κλάση Java η οποία θα μοντελοποιεί το αντικείμενο [id, name, category] αλλιώς θα χάναμε μέρος την πληροφορίας. Αυτό θα μπορούσαμε να το αντιμετωπίσουμε δουλεύοντας σε χαμηλό επίπεδο και αναλύοντας ένα προς ένα τα αποτελέσματα που επιστρέφει ένα αντικείμενο Facebook στην μορφή JSON, έτσι ώστε κάθε φορά να είμαστε σίγουροι ότι λαμβάνουμε ολόκληρη την πληροφορία. Παρόλα αυτά ένας από τους στόχους της πτυχιακής είναι να δημιουργήσει και να ορίσει την προσωπική οντολογία ενός χρήστη Facebook. Επίσης τα αντικείμενα του Facebook στη γενική περίπτωση επιστρέφουν πρόσθετη πληροφορία και μέτα-δεδομένα που χρησιμεύουν στο ίδιο το σύστημα Facebook και τα οποία δεν είναι χρήσιμα σε έναν χρήστη και ούτε στην προσωπική μας οντολογία. Για αυτό τον λόγο έχουμε επιλέξει την δημιουργία συγκεκριμένων κλάσεων που να καλύπτουν τις ανάγκες μας και να συλλέγουν την πληροφορία που μας ενδιαφέρει χωρίς να έχουμε σκοπό την απόλυτη αντιγραφή της πληροφορίας που επιστρέφουν τα αντικείμενα Facebook. Για να δώσουμε περισσότερη ευελιξία στις κλάσεις μας, και να αντιμετωπίσουμε καλύτερα το πρόβλημα με τα «ανώνυμα» αντικείμενα, θα κάνουμε χρήση της κληρονομικότητας των κλάσεων της Java. Για παράδειγμα στην περίπτωση των δύο αντικειμένων [id, name] και [id, name, category] μπορούμε να φτιάξουμε τις κλάσεις NamedObject και CategorizedObject. H κλάση CategorizedObject κληρονομεί την NamedObject. Αυτό σημαίνει ότι κληρονομεί τα πεδία id και name και προσθέτει επιπλέον πεδίο category. Συμπερασματικά χρησιμοποιώντας αντικείμενα τύπων όπως NamedObject και βασικούς τύπους της Java, μπορούμε να καλύψουμε το μεγαλύτερο μέρος των πεδίων της προσωπικής οντολογίας του χρήστη. Οι συνδέσεις χρειάζονται επιπλέον προσοχή καθώς οι περισσότερες από αυτές οδηγούν πληροφορία η οποία αντιστοιχίζεται σε αντικείμενα που αναφέρονται ρητώς στο Graph API. Για παράδειγμα η σύνδεση feed του αντικειμένου User συνδέει το αντικείμενο με τις αναρτήσεις που έχει ο χρήστης στον προσωπικό του τοίχο του Facebook. Για αυτό τον σκοπό υπάρχει ξεχωριστό αντικείμενο Post που ορίζεται στο Graph API όπως και το User. Με άλλα λόγια το κάθε αποτέλεσμα της σύνδεσης feed είναι τύπου Post. Αυτό μας βοηθάει στην αναπαράσταση των συνδέσεων της προσωπικής οντολογίας εφόσον μπορούμε να έχουμε στην κλάση μας ένα πεδίο feed που αναπαριστά την σύνδεση feed και θα είναι τύπου μίας νέας κλάσης που θα ορίσουμε σε αντιστοιχία με το αντικείμενο Post του Facebook. 24

29 Συνολικά τα αντικείμενα του Facebook που σχετίζονται με το User τα οποία θα χρειαστεί να τα αντιστοιχίσουμε σε κλάσεις και που αναφέρονται ρητώς στο API είναι τα: Album, Photo, Comment, Post, Event, Group, Link, Note, Video και StatusMessage Η βιβλιοθήκη RestFB Σε προγραμματιστικό επίπεδο, για να εξάγουμε τα δεδομένα από το Facebook κάνουμε χρήση της βιβλιοθήκης RestFB, την οποία μπορούμε να κατεβάσουμε από την ιστοσελίδα To RestFB παρέχει ένα απλό και ευέλικτο API με το οποίο μπορούμε να συνδεθούμε στο σύστημα Facebook και να συλλέξουμε τις πληροφορίες που χρειαζόμαστε. Έχει σχεδιαστεί να είναι ελαφρύ, με ελάχιστες απαιτήσεις, ενώ πρόκειται για ένα πολύ ενεργό project το οποίο ανανεώνεται συνεχώς προκειμένου να ευθυγραμμίζεται με τις αλλαγές που κάνουν οι προγραμματιστές του Facebook στο σύστημά τους. Το RestFB δεν προσφέρει κάποια μέθοδο που να βοηθάει με την πιστοποίηση στο Facebook για αυτό και το κομμάτι αυτό εξηγείται στην ενότητα Όπως έχουμε εξηγήσει, για να έχουμε πρόσβαση στα δεδομένα ενός χρήστη χρειαζόμαστε την άδειά του, δηλαδή το τελικώς ένα token. Έχοντας αποκτήσει το token, μπορούμε πλέον να χρησιμοποιήσουμε τις μεθόδους που προσφέρει η βιβλιοθήκη RestFB. Αρχικά δημιουργούμε ένα αντικείμενο τύπου FacebookClient, το οποίο χειρίζεται την σύνδεση με το Facebook και παίρνει ως όρισμα το token: FacebookClient facebookclient = new DefaultFacebookClient(TOKEN); Έπειτα μπορούμε να ανακτήσουμε τα δεδομένα όποιου αντικειμένου του Facebook επιθυμούμε, εφ όσον αυτό καλύπτεται βέβαια από τις εξουσιοδοτήσεις που αντιστοιχούν στο token. Αυτό που θα χρειαστεί να φέρουμε εμείς είναι φυσικά το αντικείμενο User: User fbuser = facebookclient.fetchobject("me", User.class); Αυτό που κάνει ουσιαστικά η μέθοδος fetchobject() χρήσιμοποιώντας ως όρισμα το «me» είναι μία κλήση στο Graph API όπως περιγράψαμε στην ενότητα για την πιστοποίηση: 25

30 Έπειτα αποθηκεύει τα δεδομένα που λαμβάνει στη μορφή JSON στα πεδία της κλάσης User, χρησιμοποιώντας το δεύτερο όρισμα User.class. Αυτή η κλάση περιγράφεται στο API του RestFB κατ αντιστοιχία με το αντικείμενο User που περιγράφεται στο Facebook API. Εφόσον πλέον έχουμε την πληροφορία αποθηκευμένη στο αντικείμενο fbuser της κλάσης User, μπορούμε να χρησιμοποιήσουμε τις μεθόδους της κλάσης για να πάρουμε την πληροφορία. Η κλάση προσφέρει μεθόδους ανάκτησης (getter methods) για τα περισσότερα πεδία της όπως getname(), getgender() κ.λπ. Αυτό που πρέπει να επισημάνουμε εδώ είναι ότι, παρόλο που το RestFB έχει περιέχει ήδη κλάσεις για τα περισσότερα αντικείμενα του Facebook, δεν είναι δυνατόν να χρησιμοποιήσουμε αυτές τις ίδιες κλάσεις για να αναπαραστήσουμε την προσωπική οντολογία. Οι κλάσεις που χρειαζόμαστε πρέπει να περιέχουν επιπλέον πληροφορία που να επιτρέπει την δημιουργία απλών τριπλετών της μορφής υποκείμενο-κατηγόρημα-αντικείμενο, κάτι που θα εξηγήσουμε αμέσως μετά. 2.6 Αναπαράσταση και περιγραφή οντολογιών Οι οντολογίες αποτελούν ένα ευρύ πεδίο για την αναπαράσταση γνώσης βρίσκοντας ιδιαίτερη εφαρμογή σε τομείς της επιστήμης υπολογιστών, όπως τεχνητή νοημοσύνη, τεχνολογία λογισμικού και Σημασιολογικός Ιστός. Για την περιγραφή τους χρησιμοποιείται απλό λεξιλόγιο όρων το οποίο όμως δεν είναι προκαθορισμένο και αλλάζει ανάλογα με τις απαιτήσεις της κάθε οντολογίας. Ουσιαστικά χρησιμοποιούνται απλές λέξεις που περιγράφουν και προσδιορίζουν τις ιδιότητες των οντοτήτων και τις σχέσεις μεταξύ τους. Για την πιο τυπική και οργανωμένη αναπαράσταση και περιγραφή των εννοιών έχουν αναπτυχθεί γλώσσες οντολογίας, όπως CycL και KIF βασιζόμενες στην λογική πρώτης τάξης, αλλά και γλώσσες σήμανσης που χρησιμοποιούν ετικέτες τύπου XML για να περιγράψουν τις έννοιες, όπως OWL και RDF. Επιπροσθέτως, οι μέθοδοι και οι μεθοδολογίες για την κατασκευή οντολογιών και στις οποίες γίνεται επίσης χρήση των παραπάνω γλωσσών, μελετούνται από ένα σχετικά νέο πεδίο στην επιστήμη των υπολογιστών, τη μηχανική οντολογιών. Παρ ότι κάθε γλώσσα προσφέρει διαφορετικά πλεονεκτήματα για την αναπαράσταση οντολογιών, εμείς έχουμε επιλέξει τη γλώσσα RDF. 26

31 2.6.1 Γενικά για τη γλώσσα RDF Η γλώσσα Resource Description Framework (RDF), όπως δηλώνει και το όνομά της, πρόκειται για ένα πλαίσιο περιγραφής πόρων το οποίο είχε σχεδιαστεί ως ένα γενικό μοντέλο μέτα-δεδομένων για δεδομένα, δηλαδή ένα μοντέλο για δεδομένα που περιγράφουν δεδομένα. Χάρη στην ευελιξία του συντακτικού του και τον γενικά απλό τρόπο περιγραφής του, εύκολα κατανοητό από μηχανές, πλέον χρησιμοποιείται ως μία γενική μέθοδος για αναπαράσταση γνώσης και μοντελοποίηση της πληροφορίας, κυρίως του διαδικτύου. Οι ετικέτες XML που χρησιμοποιούνται στο πλαίσιο RDF αλλάζουν και προσαρμόζονται ανάλογα με το τι θέλουμε να περιγράψουμε, για αυτό και δεν τίθενται περιορισμοί στα ονόματα της ετικέτας, κάτι το οποίο χαρίζει ευελιξία. Παράλληλα, οι ετικέτες μπορούν να οργανωθούν σε ιεραρχίες ώστε να περιγράφονται καλύτερα οι έννοιες του πεδίου και τα χαρακτηριστικά τους. Αν θέλαμε να εκφράσουμε το ότι «ένα αυτοκίνητο έχει κόκκινο χρώμα» και «το κείμενο είναι τύπου άρθρο» θα χρησιμοποιούσαμε ετικέτες που ταιριάζουν στην κάθε περίπτωση: <rdf:car> <rdf:color>red</rdf:color> </rdf:car> <rdf:text> <rdf:type>article</rdf:type> </rdf:text> Τα παραπάνω κομμάτια RDF χρησιμοποιούνται για λόγους απλότητας και δεν είναι σε καμία περίπτωση ολοκληρωμένα ή ορθά συντακτικά. Για παράδειγμα βλέπουμε καθαρά ότι κάποιο αυτοκίνητο έχει χρώμα κόκκινο, όμως ποιο αυτοκίνητο είναι αυτό και πως ακριβώς περιγράφεται; Συνήθως ένα ολοκληρωμένο έγγραφο RDF περιλαμβάνει επιπλέον πληροφορίες που περιγράφουν κάθε στοιχείο παρέχοντας μία διεύθυνση που δείχνει σε έναν πόρο στο διαδίκτυο. O στόχος είναι να μπορούμε να περιγράψουμε πολυπλοκότερες εκφράσεις όπως: «Το κείμενο της ιστοσελίδας έχει μορφή blog και δημιουργήθηκε τον Αύγουστο του 2011 από τον Ιωάννη Παπαδόπουλο, ετών 27». Για να καταλάβουμε καλύτερα πως αναπαριστάται η παραπάνω πληροφορία θα εξετάσουμε την βασική δομή της κάθε έκφρασης. 27

32 2.6.2 Τριπλέτες H κάθε έκφραση στο RDF δομείται ουσιαστικά από μία συλλογή από τριπλέτες όπου η κάθε μία αποτελείται από ένα υποκείμενο, ένα κατηγόρημα και ένα αντικείμενο. Το κατηγόρημα λέγεται επίσης και ιδιότητα και υποδηλώνει μία σχέση μεταξύ των του υποκειμένου και του αντικειμένου. Σχήμα 2.2: Γράφημα μίας τριπλέτας. Στο παραπάνω γράφημα βλέπουμε την δομή μίας τριπλέτας και παρατηρούμε ότι το βέλος πρέπει πάντα να δείχνει προς το αντικείμενο. Ο κάθε κόμβος του γραφήματος μπορεί να είναι ένα Uniform Resource Identifier (URI), μία τιμή ή κενός. Πιο συγκεκριμένα: Το υποκείμενο είναι ένα URI ή ένας κενός κόμβος Το κατηγόρημα είναι ένα URI. Το αντικείμενο είναι ένα URI ή ένας κενός κόμβος ή μία τιμή Ένα URI δείχνει σε μία διεύθυνση στο διαδίκτυο η οποία μπορεί να περιγράφει τον κόμβο ή μπορεί επίσης να δείχνει σε κάποιο άλλο κόμβο μέσα στο RDF αρχείο. Είναι σύνηθες τα URI αυτά να τελειώνουν με μία λέξη η οποία περιγράφει το υποκείμενο ή αντικείμενο. Για παράδειγμα στην περίπτωση του αόριστου αυτοκινήτου, θα μπορούσαμε να το συγκεκριμενοποιήσουμε δίνοντας στο υποκείμενο το URI ( Στην περίπτωση του κατηγορήματος η τελευταία λέξη του URI συνήθως φανερώνει την σχέση που δημιουργεί το κατηγόρημα ανάμεσα στο υποκείμενο και το αντικείμενο. Για παράδειγμα το χρώμα του αυτοκινήτου θα μπορούσε να έχει URI ( Συχνά βλέπουμε όλους τους όρους μίας οντολογίας ή γενικότερα ενός τομέα γνώσης να είναι συγκεντρωμένοι σε έναν συγκεκριμένο ιστόχωρο ο οποίος αποτελεί το λεξιλόγιο της οντολογίας. Στις περιπτώσεις αυτές είναι κοινή πρακτική η τελευταία λέξη του URI κάθε στοιχείου, να χωρίζεται με τον χαρακτήρα #, για παράδειγμα ( Τέλος μία τιμή (literal) είναι μία συμβολοσειρά χαρακτήρων γραμμένη σε Unicode και μπορεί να περιλαμβάνει αριθμούς, τιμές κινητής υποδιαστολής, ημερομηνίες κ.λπ. 28

33 Επιστρέφοντας στο παράδειγμα της έκφρασης «Το κείμενο της ιστοσελίδας έχει μορφή blog και δημιουργήθηκε τον Αύγουστο του 2011 από τον Ιωάννη Παπαδόπουλο, ετών 27», μπορούμε πλέον να την αναλύσουμε: Το υποκείμενο είναι μία ιστοσελίδα η οποία συγκεκριμενοποιείται από τον πόρο διαδικτύου URI Τα αντικείμενα είναι: Αύγουστος του 2011 (με κατηγόρημα «έχει δημιουργηθεί») blog (με κατηγόρημα «είναι της μορφής») συγγραφέας (με κατηγόρημα «έχει γραφτεί από») Το κάθε κατηγόρημα πρέπει να περιγράφεται από ένα URI όπου στο τέλος του να φαίνεται η σχέση που δημιουργεί από το υποκείμενο στο αντικείμενο. «έχει δημιουργηθεί» είναι «είναι της μορφής» είναι «έχει γραφτεί από» είναι Το αντικείμενο συγγραφέας με την σειρά του, έχει έναν τύπο (με URI ο οποίος είναι ένα πρόσωπο (με URI Αυτό που παρατηρούμε εδώ είναι ότι για την επεξήγηση του γενικότερου όρου τύπος (που αντιστοιχεί με την κλάση) χρησιμοποιήσαμε ένα γενικότερο URI το οποίο μπορεί να υπάρχει επισήμως στο διαδίκτυο, ενώ τα υπόλοιπα που βρίσκονται κάτω από το terms/ ίσως να τα έχουμε δημοσιοποιήσει εμείς οι ίδιοι έτσι ώστε να προσθέσουμε μέτα-δεδομένα στην σελίδα μας ή να δημιουργήσουμε κάποια οντολογία. Χάρη στη χρήση αυτών των κατηγορημάτων που ορίζουν ότι ένα υποκείμενο Α είναι τύπου ενός αντικειμένου Β δημιουργούμε σχέσεις is-a. Αυτές οι σχέσεις είναι πολύ σημαντικές, ενώ σε γλώσσες ισχυρών τύπων (strongly typed) όπως η Java παρατίθενται δηλώσεις μεταβλητών π.χ. Car toyota; μέσω των οποίων δηλώνεται ότι η μεταβλητή toyota είναι τύπου Car, στις οντολογίες πρέπει να δημιουργήσουμε την αντίστοιχη is-a τριπλέτα για να εκφράσουμε το ίδιο πράγμα. 29

34 Χρησιμοποιώντας τον συγγραφέα πλέον σαν υποκείμενο, βλέπουμε ότι: έχει όνομα (με URI που το συνδέει με το αντικείμενο με τιμή «Ιωάννης Παπαδόπουλος». έχει ηλικία (με URI που το συνδέει με το αντικείμενο με τιμή «27». Αυτό που πρέπει να προσέξουμε εδώ είναι το ότι ο συγγραφέας δεν είναι μία τιμή όπως το «blog». Ο συγγραφέας ουσιαστικά είναι μία οντότητα η οποία περιγράφεται από τις ιδιότητές της (ηλικία και όνομα) ενώ είναι τύπου πρόσωπο. Αυτή η οντότητα θα μπορούσε να έχει ένα ξεχωριστό URI, όμως κάτι τέτοιο δεν είναι απαραίτητο. Σχηματικά αυτό θα μπορούσε να αναπαρασταθεί με έναν κενό κύκλο. Πώς όμως μπορούμε να αναφερθούμε σε αυτή την οντότητα όταν θέλουμε να γράψουμε μία-μία όλες τις τριπλέτες που σχηματίζονται ή σε ένα έγγραφο RDF; Συνήθως σε αυτές τις περιπτώσεις χρησιμοποιείται ένα ξεχωριστό κλειδί, δηλαδή ένα id για τον συγκεκριμένο αυτό κόμβο στον οποίο θέλουμε να αναφερθούμε. Αυτά τα κλειδιά συνήθως παράγονται αυτόματα από τα προγράμματα που παράγουν τα αρχεία RDF και ο σκοπός τους είναι να δημιουργήσουν έναν εσωτερικό, εννοιολογικό σύνδεσμο μέσα στο αρχείο για να είναι δυνατή η αναφορά. Έπειτα χρησιμοποιώντας αυτό το id ως υποκείμενο μπορούμε πλέον να δημιουργήσουμε τις υπόλοιπες τριπλέτες που περιγράφουν την οντότητα. Χρησιμοποιώντας id και κατηγορήματα που αναπαριστούν έναν τύπο θα εκφράσουμε και όλες τις is-a σχέσεις της οντολογίας μας. Θα λέμε δηλαδή ότι μία οντότητα με id=a είναι τύπου Πρόσωπο. Με αυτό τον τρόπο μεταφερόμαστε από τις σχέσεις που δημιουργούνται στην Java μεταξύ των πεδίων και των κλάσεών τους, στις σχέσεις που έχει μία οντολογία μεταξύ των ιδιοτήτων και των τύπων τους. Για μία καλύτερη εικόνα στον πίνακα 2.1 μπορούμε να δούμε συνολικά όλες τις τριπλέτες που παράγονται από την παραπάνω έκφραση του παραδείγματος. Παρατηρούμε πως χρησιμοποιώντας τα id εσωτερικών κόμβων μπορούμε να αναφερθούμε και να περιγράψουμε τον συγγραφέα. Τέλος παρατηρούμε την σχέση is-a (αριθμός 4) που δημιουργείται. 30

35 Πίνακας 2.1: Συλλογή τριπλετών μίας οντολογίας που περιγράφει μία ιστοσελίδα. # Υποκείμενο Κατηγόρημα Αντικείμενο blog Αύγουστος του genid:node763 4 genid:node rdf-syntax-ns#type 5 genid:node763 Ιωάννης Παπαδόπουλος 6 genid:node

36 Συγκεντρώνοντας όλες τις τριπλέτες και ενώνοντάς τες, μπορούμε να αναπαραστήσουμε σε ένα γράφημα RDF την έκφραση του παραδείγματος: Σχήμα 2.3: Γράφημα RDF περιγραφής μίας ιστοσελίδας Άρα γενικότερα όταν θέλουμε να αναπαραστήσουμε κάποια γνώση, έννοια ή οντότητα χωρίζουμε την συνολική πληροφορία σε απλές τριπλέτες. Η συλλογή αυτών των τριπλετών αποθηκευμένη σε κάποιο μέσο όπως ένα έγγραφο RDF ή μία βάση δεδομένων αποτελεί μία συγκεκριμένη και εύχρηστη αναπαράσταση της οντολογίας. 2.7 Παραγωγή τριπλετών προσωπικής οντολογίας Χάρη στις ομοιότητες των οντολογιών με το μοντέλο κλάσεων του αντικειμενοστρεφούς προγραμματισμού καταφέραμε να αποθηκεύσουμε την πληροφορία που εξάγουμε από το Facebook σε απλές κλάσεις. Όμως, όπως αναφέραμε ανωτέρω, για να μπορέσουμε να αναπαραστήσουμε την οντολογία με έναν χρήσιμο τρόπο όπως ένα έγγραφο RDF χρειαζόμαστε να «σπάσουμε» την πληροφορία σε λογικές τριπλέτες. Για να το κάνουμε αυτό, χρειαζόμαστε επιπλέον πληροφορία αποθηκευμένη σε κάθε κλάση 32

37 η οποία θα περιγράφει τα δεδομένα. Η γλώσσα Java έχει έναν μηχανισμό που θα βοηθήσει σε αυτή την περίπτωση, τα Annotations (επισημειώσεις) Java Annotations Τα annotations γενικά προσφέρουν δεδομένα για το πρόγραμμα που δεν είναι μέρος του καθεαυτού προγράμματος και δεν επηρεάζουν το αποτέλεσμα του κώδικα. Συνήθως αναπαριστούν δεδομένα που χρησιμοποιεί ο μεταγλωττιστής για να βρει λάθη πιο εύκολα ή δεδομένα που χρησιμοποιούνται κατά την φάση εκτέλεσης του προγράμματος ή δεδομένα που μπορούν να χρησιμοποιήσουν άλλα προγράμματα και να παράγουν νέο κώδικα και αρχεία XML. Το τελευταίο είναι και αυτό που μας ενδιαφέρει. Για παράδειγμα παρακάτω βλέπουμε την χρήση annotations για να αποθηκεύσουμε στον κώδικα τον συγγραφέα και ημερομηνία δημιουργίας μίας name = "Stratos Neiros", date = "26/8/2011" ) class MyClass() { } Στις περισσότερες γλώσσες προγραμματισμού αυτή την πληροφορία θα την αποθηκεύαμε σε απλά σχόλια (κάτι που είναι φυσικά δυνατόν και στη Java). Η διαφορά είναι ότι με την χρήση annotations μπορούμε πλέον να εκμεταλλευτούμε την πληροφορία μέσω κάποιου προγράμματος και να παράγουμε ένα νέο αρχείο π.χ. XML, RDF κ.λπ., μια και η πληροφορία αυτή είναι καλά δομημένη και είναι εφικτό να εξαχθεί μηχανικά από το πηγαίο αρχείο. Αυτό που κάνουμε εμείς είναι να βάζουμε ένα annotation πριν από κάθε κλάση και πριν από κάθε ιδιότητα (δηλαδή πεδίο) της κλάσης. Το annotation περιέχει πληροφορία που ουσιαστικά είναι το URI που περιγράφει την συγκεκριμένη ιδιότητα ή κλάση. Όπως εξηγήσαμε και στην ενότητα 2.6 τα κομμάτια της κάθε τριπλέτας, το υποκείμενο, κατηγόρημα και αντικείμενο ουσιαστικά είναι ένα URI που οδηγεί σε κάποιο άλλο πόρο στο διαδίκτυο (συνήθως ένα έγγραφο RDF-XML) που περιγράφει το στοιχείο. Αφού γράψουμε όλα τα annotation και κάθε τύπος και ιδιότητα έχει ένα URI, τότε χρησιμοποιούμε μία βιβλιοθήκη η οποία χρησιμοποιεί την πληροφορία αυτή σε συνδυασμό με την δομή της κλάσης για να δημιουργήσει τις τριπλέτες και τελικά να εξάγει ένα αρχείο XML-RDF με την οντολογία. Η βιβλιοθήκη που χρησιμοποιούμε είναι η Elmo. 33

38 2.7.2 Η βιβλιοθήκη Elmo Πρόκειται για μία εξωτερική βιβλιοθήκη Java η οποία διαβάζει την πληροφορία που περιέχουν τα annotations και την χρησιμοποιεί για να την συνδυάσει την πληροφορία που περιέχουν αντικείμενα Java. Επίσης δίνει την δυνατότητα στον προγραμματιστή να έχει πρόσβαση σε αποθήκες RDF. Αυτές οι αποθήκες μπορεί να βρίσκονται στην μνήμη, στον δίσκο ή ακόμη και σε κάποια εξωτερική αποθήκη που βρίσκεται στο διαδίκτυο. O server που υποστηρίζει η βιβλιοθήκη elmo είναι ο Sesame, δημιουργημένος απο τους ίδιους προγραμματιστές, και πρόκειται για έναν server αποθήκευσης οντολογιών. Τα Elmo και Sesame μπορούμε να τα βρούμε στο OpenRDF ( Αυτό που κάνει η Elmo είναι ότι ουσιαστικά δημιουργεί τις λογικές τριπλέτες σύμφωνα με τη δομή της κλάσης δίνοντάς τους το URI που έχουμε ορίσει στο αντίστοιχο annotation, ενώ παράλληλα δημιουργεί ξεχωριστά id για τους εσωτερικούς κόμβους οι οποίοι δεν έχουν URI. Εφόσον δίνουμε annotations σε κάθε κλάση και σε κάθε πεδίο της που μας ενδιαφέρει να συμπεριλάβουμε στην οντολογία, κάθε από αυτά θα αναπαρασταθεί από το αντίστοιχο URI που περιέχει το annotation. Το annotation που χρησιμοποιούμε είναι και παίρνει ώς όρισμα μία συμβολοσειρά που περιέχει το URI όπως μπορούμε να δούμε στην Παράθεση 2.4. Παράθεση 2.4: Χρήση annotation στην κλάση του χρήστη ) 2 public class User { 3 final private static String NS = ; 4 + id ) //Same ) 6 private String id; + firstname ) 8 private String firstname; + lastname ) 10 private String lastname; } Τα URI που χρησιμοποιούμε χρησιμοποιούν το σύμβολο #, δηλαδή χρησιμοποιούν μία σταθερή διεύθυνση που τελειώνει σε # και αμέσως μετά εμφανίζεται το όνομα της ιδιότητας ή της κλάσης. Για λόγους συντομίας αλλά και συντηρισιμότητας του κώδικα, αποθηκεύουμε το σταθερό μέρος σε μία μεταβλητή NS (που σημαίνει Namespace) καθώς έτσι συνηθίζεται να λέγεται το URI στα αρχεία RDF. Η Elmo επίσης απαιτεί να έχουμε αποθηκευμένα όλα τα ονόματα των κλάσεων που αναπαριστούν την οντολογία, συμπεριλαμβανομένης και της 34

39 διαδρομής του πακέτου στην οποία ανήκει, (αν κάνουμε χρήση πακέτων Java) σε ένα αρχείο με όνομα org.openrdf.elmo.concepts κάτω απο φάκελο META-INF που θα βρίσκεται στον πηγαίο κώδικα. Το τελευταίο πράγμα που χρειάζεται η Elmo είναι ότι σε μία κλάση, κάθε ιδιότητα (δηλαδή πεδίο) που μας ενδιαφέρει να συμπεριλάβουμε στην οντολογία, πρέπει να έχει μεθόδους setter και getter η οποίες μας αφενώς μας επιτρέπουν να θέτουμε και να λαμβάνουμε την τιμή της κάθε ιδιότητας αντιστοίχως και αφ ετέρου η Elmo τις χρησιμοποιεί εσωτερικά για να προσθέσει τριπλέτες στον γράφο της οντολογίας. Εδώ θα πρέπει να σημειώσουμε ότι η Elmo μπορεί αυτόματα να δουλέψει με τις υπάρχουσες κλάσεις των επίσημων βιβλιοθηκών της Java ή τουλάχιστον με κοινούς και βασικούς τύπους όπως String και Date. Η Elmo είναι φτιαγμένη να υποστηρίζει εξ αρχής μία μεγάλη ομάδα κλάσεων βασικών και μη (μέσω του LiteralManager). Γενικότερα για να μπορέσει η Elmo να χειριστεί αυτόματα μία κλάση, αυτή πρέπει να είναι Serializable, να έχει έναν String Costructor (μέθοδο κατασκευής που να δέχεται ως όρισμα μία συμβολοσειρά) ή να έχει υλοποιημένη τη στατική μέθοδο valueof() το οποίο είναι και το σημαντικό. Οι περισσότεροι τύποι που υποστηρίζει η Elmo θα παρατηρήσουμε ότι διαθέτουν την valueof(). Αν τίποτα από αυτά δεν συμβαίνει, αυτό σημαίνει ότι η κλάση δεν υποστηρίζεται και θα πρέπει να γράψουμε μία δικιά μας, η οποία θα συμμορφώνεται με τις προϋποθέσεις που αναφέραμε παραπάνω. Συμπερασματικά για να μπορέσει η βιβλιοθήκη Elmo να δημιουργήσει τριπλέτες και να αποθηκεύσει μία οποιαδήποτε μη εγγενώς υποστηριζόμενη κλάση Java σε ένα repository χρειάζεται η κλάση να annotation πάνω από το όνομα της κλάσης με το αντίστοιχο URI Το όνομα της κλάσης γραμμένο σε αρχείο org.openrdf.elmo.concepts κάτω από τον φάκελο annotation πάνω από κάθε πεδίο της κλάσης που θέλουμε μέσα στην οντολογία. (Πεδία χωρίς annotation δεν λαμβάνονται υπόψιν). Ζευγάρια μεθόδων setter και getter για κάθε πεδίο με annotation. 35

40 2.8 Χρήση του προγράμματος Εκκίνηση και βασική χρήση Αποσυμπιέζουμε το αρχείο της εφαρμογής. Μέσα περιέχεται ένας φάκελος lib με όλες τις απαραίτητες βιβλιοθήκες και το πρόγραμμα Facebook- Info-Extra-ctor_1.0.0.x.jar, το οποίο κανονικά μπορούμε να εκτελέσουμε με διπλό κλικ εφόσον έχουμε εγκατεστημένη την Java στο σύστημά μας. Σε περίπτωση που το διπλό κλικ δεν δουλεύει, μπορούμε επίσης να τρέχουμε το πρόγραμμα από την γραμμή εντολών χρησιμοποιώντας την εντολή: java -jar FacebookInfoExtractor\_ jar. Έπειτα θα ξεκινήσει το πρόγραμμα. Σχήμα 2.4: Το κεντρικό παράθυρο της εφαρμογής Στο σχήμα 2.4 βλέπουμε το γραφικό περιβάλλον του προγράμματος. Κάτω στο status bar βλέπουμε ότι ακόμα δεν έχει κάποιο token. Συνήθως η εφαρμογή στην εκκίνησή της προσπαθεί να διαβάσει ένα token που έχει αποθηκεύσει σε αρχείο από προηγούμενη χρήστη της. Εφόσον αυτή είναι η πρώτη εκκίνηση του προγράμματος θα πρέπει να αποκτήσουμε ένα token. Παρατηρούμε ότι όλα τα κουμπιά στα δεξιά είναι απενεργοποιημένα εκτός από το Set Access Token το οποίο και πατάμε για να ξεκινήσουμε την πιστοποίηση της εφαρμογής στο Facebook. 36

41 Σχήμα 2.5: Το παράθυρο που βοηθάει στην απόκτηση του token Στο σχήμα 2.5 βλέπουμε το παράθυρο το οποίο περιέχει έναν σύνδεσμο και οδηγίες για την απόκτησή του token που αναφέραμε και στην ενότητα Ο χρήστης πατάει τον σύνδεσμο, κάνει είσοδο στο Facebook αν χρειαστεί και επιτρέπει την εφαρμογή να έχει πρόσβαση στα δεδομένα του. Μόλις γίνουν αυτά τα βήματα ο χρήστης θα δει στον browser του το μήνυμα Success ενώ στην μπάρα διεύθυνσης θα περιέχεται το token (Σχήμα 2.6). Ο χρήστης πρέπει να κάνει copy-paste όλη την μπάρα διεύθυνσης στο παράθυρο της εφαρμογής και να πατήσει Enter (Σχήμα 2.7). Σχήμα 2.6: Το token περιέχεται στην μπάρα διεύθυνσης του browser το οποίο και αντιγράφουμε Το token αποθηκεύεται στο αρχείο tempauthtokenfile.txt το οποίο συνήθως βρίσκεται κάτω από τον ίδιο φάκελο που βρίσκεται και η εφαρμογή. Προαιρετικά μπορούμε να αλλάξουμε το πού αποθηκεύεται το token από τα Options στο μενού Tools. Στο σχήμα 2.8 βλέπουμε ότι μετά την εισαγωγή του token στο πρόγραμμα, ενεργοποιείται το κουμπί Extract Ontology. Με αυτό μπορούμε τα πάρουμε την πληροφορία του χρήστη από το Facebook ενώ παράλληλα αυτή η πληροφορία θα αποθηκευτεί στην προσωρινή μνήμη ως οντολογία. 37

42 Σχήμα 2.7: Κάνουμε επικόλληση όλη την μπάρα διεύθυνσης στο πρόγραμμα Σχήμα 2.8: Με την χρήστη του token μπορούμε πλέον να εξάγουμε την οντολογία Πατώντας το κουμπί εμφανίζεται ένα νέο παράθυρο που μας επιτρέπει να επιλέξουμε το μέρος της πληροφορίας που θέλουμε να περιέχει η προσωπική οντολογία (Σχήμα 2.9). Μόλις επιλέξουμε ό,τι χρειαζόμαστε πατάμε Extract Ontology Section για να ξεκινήσει η διαδικασία. Η επιλογές που θα κάνουμε εδώ καθορίζουν το μέγεθος της οντολογίας και του γράφου σε περίπτωση που θέλουμε να χρησιμοποιήσουμε το αρχείο RDF για οπτικοποίηση. Ορισμένες επιλογές μπορεί να μεγαλώσουν υπερβολικά το αποτέλεσμα όπως για παράδειγμα αν επιλέξουμε να συμπεριληφθεί η πληροφορία των φίλων ή των αναρτήσεων του χρήστη. 38

Περιεχόμενα Πώς να χρησιμοποιήσετε το βιβλίο... 7 Αντί προλόγου... 9 Κεφάλαιο 1: Κεφάλαιο 2: Κεφάλαιο 3: Κεφάλαιο 4: Κεφάλαιο 5: Πώς να δημιουργήσω το Προφίλ μου και να γίνω μέλος στο Facebook;... 15 Τι

Διαβάστε περισσότερα

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή 1 Πίνακας Περιεχομένων 1. Εισαγωγή... 4 1.1 Περιβάλλον Moodle...4 1.2 Χρήση ονόματος χρήστη και κωδικού...4 1.3 Δημιουργία νέου μαθήματος...4 1.3.1

Διαβάστε περισσότερα

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ «ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ 1 4.1. Οριςμόσ φνθετων τφπων κλάςεων 2 Με εξαίρεςη τουσ βαςικούσ τύπουσ τησ Java (int, float, boolean, κλπ) τα

Διαβάστε περισσότερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Περιεχόμενα Εισαγωγή στην εφαρμογή... 2 Βασική Σελίδα (Activity)... 3 Ρυθμίσεις... 3 Πελάτες... 6 Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10 Αποθήκη... 11 Αναζήτηση προϊόντος...

Διαβάστε περισσότερα

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP. Εργαστήριο #5 Τι πρέπει να έχετε ολοκληρώσει από το προηγούμενο εργαστήριο. Θα πρέπει να ξέρετε να εισάγετε ένα βασικό πρόγραμμα PHP μέσα σε μια ιστοσελίδα, τη χρήση της echo και τον χειρισμό απλών μεταβλητών

Διαβάστε περισσότερα

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης Σελίδα 1από ΤΕΙ ΚΑΒΑΛΑΣ Πτυχιακή εργασία Δικτυακή Εφαρμογή διαχείρισης ηλεκτρονικών εγγράφων υπηρεσίας. ΕΙΣΑΓΩΓΗ Μιλτιάδης Κακλαμάνης Σελίδα 2από Κατάλογος περιεχομένων ΕΙΣΑΓΩΓΗ...1 Σχετιζόμενα πρόσωπα...3

Διαβάστε περισσότερα

Γκέγκα Ευρώπη Κωστοπούλου Ειρήνη

Γκέγκα Ευρώπη Κωστοπούλου Ειρήνη Γκέγκα Ευρώπη egkegka@it.teithe.gr Κωστοπούλου Ειρήνη eirkost@it.teithe.gr 2 ο σε επισκεψιμότητα των χρηστών στο web καθημερινά Κοινωνικό δίκτυο με τους περισσότερους χρήστες 1 ο σε προτίμηση των φοιτητών

Διαβάστε περισσότερα

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

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

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

Τύποι δεδομένων, τελεστές, μεταβλητές Τύποι δεδομένων, τελεστές, μεταβλητές Βασικά στοιχεία της γλώσσας Η Java χαρακτηρίζεται από ένα αρκετά καλά οργανωμένο σύνολο εντολών κι ένα μέρος της επιτυχίας της οφείλεται στα διάφορα APIs (βιβλιοθήκες)

Διαβάστε περισσότερα

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΔΙΑΤΜΗΜΑΤΙΚΟ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΤΑ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Διπλωματική Εργασία με θέμα: Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού Καραγιάννης Ιωάννης Α.Μ.

Διαβάστε περισσότερα

Περιεχόμενα. Αντί προλόγου Πώς να χρησιμοποιήσετε το βιβλίο Κεφάλαιο 1: Πώς δημιουργώ το Προφίλ μου στο Facebook;...

Περιεχόμενα. Αντί προλόγου Πώς να χρησιμοποιήσετε το βιβλίο Κεφάλαιο 1: Πώς δημιουργώ το Προφίλ μου στο Facebook;... Περιεχόμενα Αντί προλόγου... 7 Πώς να χρησιμοποιήσετε το βιβλίο... 13 Κεφάλαιο 1: Πώς δημιουργώ το Προφίλ μου στο Facebook;...15 Κεφάλαιο 2: Τι βλέπω στην οθόνη μου όταν ολοκληρώσω τη δημιουργία του Προφίλ

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ. Οδηγός Διαχειριστή Το m-learning Toolkit είναι μια ολοκληρωμένη πλατφόρμα εξ αποστάσεως εκπαίδευσης που έχει σχεδιαστεί για να υπάρχει η δυνατότητα της πρόσβασης

Διαβάστε περισσότερα

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές Λαμπαδαρίδης Αντώνιος el04148@mail.ntua.gr Διπλωματική εργασία στο Εργαστήριο Συστημάτων Βάσεων Γνώσεων και Δεδομένων Επιβλέπων: Καθηγητής Τ. Σελλής Περίληψη

Διαβάστε περισσότερα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Με τι ασχολείται ο αντικειμενοστραφής προγραμματισμός

Με τι ασχολείται ο αντικειμενοστραφής προγραμματισμός 1 2 Η Αρχή Ο αντικειμενοστραφής προγραμματισμός άρχισε να χρησιμοποιείται από τους προγραμματιστές, όταν ουσιαστικά ο διαδικαστικός (δομημένος) προγραμματισμός, δεν μπορούσε να ανταποκριθεί στις νέες απαιτήσεις

Διαβάστε περισσότερα

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS Ακαδημαϊκό Έτος 2016-2017, Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS A. Εισαγωγή στις βάσεις δεδομένων - Γνωριμία με την ACCESS B. Δημιουργία Πινάκων 1. Εξήγηση των

Διαβάστε περισσότερα

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Σ ε λ ί δ α 1 Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy Περιεχόμενα 1. Download Arebas Easy... 2 2. Εγκατάσταση Arebas Easy... 3 3. Εγγραφή στον Arebas Server... 7 4. Παραμετροποίηση Arebas Easy...

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: ΘΕΟΔΟΣΙΟΥ ΝΙΚΗ Α.Μ. 103/04 ΠΑΠΑΠΕΤΡΟΥ ΦΩΤΕΙΝΗ Α.Μ. 134/04 Εξεταστική Επιτροπή Επιβλέπουσα Καθηγήτρια : Σατρατζέμη Μαρία, Καθηγήτρια Μέλη : Ευαγγελίδης

Διαβάστε περισσότερα

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr Εγχειρίδιο Χρήσης Μελών ΔΕΠ Αναζήτηση Δημόσιου Περιεχομένου Η διεύθυνση ιστού της νεάς πλατφόρμας διαχείρισης βιντεοδιαλέξεων Δήλος είναι: http://delos.uoa.gr

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

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

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

Διαβάστε περισσότερα

Με την αλλαγή των μεταβλητών σελιδοποίησης αυτόματα ρυθμίζετε το νέο όριο για τα άρθρα και τα αποτελέσματα αναζήτησης.

Με την αλλαγή των μεταβλητών σελιδοποίησης αυτόματα ρυθμίζετε το νέο όριο για τα άρθρα και τα αποτελέσματα αναζήτησης. Γενικές Ρυθμίσεις Στην ενότητα αυτή θα περιγράψουμε τις λειτουργίες των Γενικών Ρυθμίσεων. Εκεί αποθηκεύονται όλες οι ρυθμίσεις του Guru CMS. Εάν κάνετε κλικ στο σύνδεσμο "Γενικές Ρυθμίσεις" από την κύρια

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ.

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ. Τ.Ε.Ι ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ» ΟΝΟΜΑΤΕΠΩΝΥΜΑ ΣΠΟΥΔΑΣΤΩΝ : ~ΔΕΛΗΓΙΑΝΝΗ ΚΥΡΙΑΚΗ, 1925~

Διαβάστε περισσότερα

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες Εισαγωγή-Σκοπός. Τρόποι δημιουργίας δυναμικών ιστοσελίδων. Dynamic Web Pages. Dynamic Web Page Development Using Dreamweaver. Τρόποι δημιουργίας δυναμικών

Διαβάστε περισσότερα

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής Μάθημα 7ο Πολυμέσα 7.Α.1 Παρουσιάσεις Οι παρουσιάσεις είναι μια εφαρμογή που χρησιμεύει στην παρουσίαση των εργασιών μας. Αποτελούν μια συνοπτική μορφή των εργασιών μας. Μέσω δημιουργίας διαφανειών, μορφοποιήσεων

Διαβάστε περισσότερα

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

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

ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕΛΩΝ ΔΕΠ, ΤΜΗΜΑΤΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΠΛΟΗΓΗΣΗΣ ΚΑΙ ΧΡΗΣΗΣ 2013 ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕΛΩΝ ΔΕΠ, ΤΜΗΜΑΤΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΠΛΟΗΓΗΣΗΣ ΚΑΙ ΧΡΗΣΗΣ Περιήγηση στις δυνατότητες του λογισμικού και στον τρόπο χρήσης του ΟΜΑΔΑ ΕΡΓΟΥ ΔΙΕΥΘΥΝΣΗΣ

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER Η εφαρμογή LiveTripTraveller διατίθεται για κινητά τηλέφωνα με λειτουργικό σύστημα Android. Στο υπο-ιστοσελίδα www.livetrips.com/sources μπορείτε να κατεβάσετε την εφαρμογή

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο Εγχειρίδιο Χρήσης για Διαχειριστές Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο 1. Εισαγωγή 1.1 Περιγραφή Λειτουργίας Πλατφόρμας Η Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο παρέχει τη δυνατότητα της

Διαβάστε περισσότερα

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2 ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2 1 ΠΕΡΙΕΧΟΜΕΝΑ Πρωτόκολο http εντολών έκδοση 1.0 Σελ:2...περιεχόμενα Σελ:3...τι θα βρείτε σε αυτό το βιβλίο Σελ:3...γενικά τεχνικά χαρακτηριστικά Σελ:4-5...πως

Διαβάστε περισσότερα

Διαδικασία σχεδιασμού Β.Δ.

Διαδικασία σχεδιασμού Β.Δ. Διαδικασία σχεδιασμού Β.Δ. Σε παλαιότερα μαθήματα είπαμε ότι πριν κατασκευάσουμε κάτι θα πρέπει πρώτα να το σχεδιάσουμε. Το ίδιο ισχύει και για μια Β.Δ.. Σε αυτή την ενότητα θα περιγράψουμε λίγο πιο αναλυτικά

Διαβάστε περισσότερα

Πλατφόρμα Συνεργατικότητας (Collaboration Platform) ΧΡΗΣΗΣ. MRB Hellas System Συμβουλευτική Α.Ε

Πλατφόρμα Συνεργατικότητας (Collaboration Platform) ΧΡΗΣΗΣ. MRB Hellas System Συμβουλευτική Α.Ε σχετικά με τον έλεγχο της καπνιστικής συνήθειας 1 25 Λογισμικές εφαρμογές καταγραφής και αξιοποίησης πληροφοριών σχετικά με τον έλεγχο της καπνιστικής συνήθειας Πλατφόρμα Συνεργατικότητας (Collaboration

Διαβάστε περισσότερα

Μαζέρας Αχιλλέας. Δημιουργία Λογαριασμού στην GOOGLE, για πρόσβαση στην υπηρεσία G-MAIL Μια παλιά ανάμνηση

Μαζέρας Αχιλλέας. Δημιουργία Λογαριασμού στην GOOGLE, για πρόσβαση στην υπηρεσία G-MAIL Μια παλιά ανάμνηση Δημιουργία Λογαριασμού στην GOOGLE, για πρόσβαση στην υπηρεσία G-MAIL Μια παλιά ανάμνηση 1 1) Δημιουργία Λογαριασμού στην GOOGLE, για πρόσβαση στην υπηρεσία G-MAIL Η τελευταία έκδοση 2 Αυτό που πρέπει

Διαβάστε περισσότερα

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ

Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ Οδηγίες Χρήσης Πλατφόρμας Ασύγχρονης Τηλεκπαίδευσης (Moodle) του Τμήματος ΔΕΤ -Για τους Φοιτητές- Έκδοση 1.2 Οκτώβριος 2015 Υπεύθυνος Σύνταξης: Χρήστος Λάζαρης (lazaris@aueb.gr) Πίνακας Περιεχομένων Εισαγωγή...

Διαβάστε περισσότερα

Από τη UML στον Κώδικα. Μέρος Α

Από τη UML στον Κώδικα. Μέρος Α Από τη UML στον Κώδικα Μέρος Α περιεχόμενα παρουσίασης Κλάσεις Ισότητα αντικειμένων Μονόδρομες συσχετίσεις με πολλαπλότητα «ένα» Μονόδρομες συσχετίσεις με πολλαπλότητα «πολλά» Συλλογές από το σχέδιο στον

Διαβάστε περισσότερα

Δημιουργία ιστοσελίδας με. Wordpress - Βασικές λειτουργίες

Δημιουργία ιστοσελίδας με. Wordpress - Βασικές λειτουργίες Δημιουργία ιστοσελίδας με Wordpress - Βασικές λειτουργίες Περιεχόμενα Εγγραφή και αρχικές ρυθμίσεις Διαχείριση Ιστοσελίδας Δημιουργία Menu Δημιουργία σελίδας Δημιουργία Άρθρου Αλλαγή Εμφάνισης Εγγραφή

Διαβάστε περισσότερα

Εικονικό Εργαστήριο Χωρικής Ανάλυσης. Εγχειρίδιο Χρήστη ΤΕΙ ΑΘΗΝΑΣ

Εικονικό Εργαστήριο Χωρικής Ανάλυσης. Εγχειρίδιο Χρήστη ΤΕΙ ΑΘΗΝΑΣ Εικονικό Εργαστήριο Χωρικής Ανάλυσης Εγχειρίδιο Χρήστη ΤΕΙ ΑΘΗΝΑΣ Περιεχόμενα Εισαγωγή... 3 Είσοδος στο Σύστημα... 3 Εγγραφή Χρήστη... 4 Σύνδεση Χρήστη... 6 Επαναφορά Κωδικού Πρόσβασης... 7 Βασικά Χαρακτηριστικά...

Διαβάστε περισσότερα

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ

ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ CLAROLINE Κατάλογος περιεχομένων Εγγραφή μαθητή στο Claroline...2 Εγγραφή σε μάθημα...3 Τα μαθήματά μου...4 Αλλαγή του προφίλ μου (Manage my account)...4

Διαβάστε περισσότερα

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Οδηγός Χρήσης Εφαρμογής Γραφείων Πρακτικής Άσκησης Αφού πιστοποιηθεί ο λογαριασμός που δημιουργήσατε στο πρόγραμμα «Άτλας» ως Γραφείο Πρακτικής,

Διαβάστε περισσότερα

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

Διαβάστε περισσότερα

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ της Πλατφόρμας Τηλεκατάρτισης ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή...2 2. Αρχική σελίδα, Εισαγωγή & Περιβάλλον Συστήματος...3 2.1. Αρχική σελίδα εισαγωγής...3 2.2. Εισαγωγή στην Πλατφόρμα Τηλε-κατάρτισης...4

Διαβάστε περισσότερα

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ.

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ. ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ. Το πρώτο πράγμα που βλέπουμε μόλις ξεκινάμε το παιχνίδι είναι μια λίστα με όλα τα διαθέσιμα βίντεο με τα οποία μπορούμε να εξασκηθούμε. Σε αυτή περιλαμβάνονται επίσης πληροφορίες

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Εγχειρίδιο χρήσης για τον φοιτητή

Εγχειρίδιο χρήσης για τον φοιτητή Εγχειρίδιο χρήσης για τον φοιτητή 1 Αρχική οθόνη Όταν κάποιος χρήστης εισέρχεται για πρώτη φορά στο σύστημα εμφανίζεται η παρακάτω οθόνη/σελίδα: Στα αριστερά της οθόνης εμφανίζεται η φόρμα σύνδεσης στην

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Ημερομηνία Παράδοσης: 4/4/2013

Ημερομηνία Παράδοσης: 4/4/2013 Δράση 9.14 / Υπηρεσία εντοπισμού λογοκλοπής Κυρίως Παραδοτέο / Σχεδιασμός και ανάπτυξη λογισμικού (λογοκλοπής) και βάσης δεδομένων (αποθετηρίου) Επιμέρους Παραδοτέο 9.14.1.4 / Πληροφοριακό σύστημα υπηρεσίας

Διαβάστε περισσότερα

PRISMA Win POS Sync Merge Replication

PRISMA Win POS Sync Merge Replication ΤΜΗΜΑ ΥΠΟΣΤΗΡΙΞΗΣ Οδηγός Ρυθμίσεων Συγχρονισμού PRISMA Win POS Sync Merge Replication Η διαδικασία του συγχρονισμού γίνεται από τον Η/Υ που έχει το Back Office. Βασική προϋπόθεση για να ενεργοποιηθεί ο

Διαβάστε περισσότερα

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ Οδηγός Χρήσης Εφαρμογής Γραφείων Πρακτικής Άσκησης Αφού πιστοποιηθεί ο λογαριασμός που δημιουργήσατε στο πρόγραμμα «Άτλας» ως Γραφείο Πρακτικής,

Διαβάστε περισσότερα

WORDPRESS. Εικόνα 1. Πατώντας στη «Σύνδεση» γράψτε το Username (όνομα χρήστη) και το Password (συνθηματικό) (εικόνα 2) που σας έδωσε ο διαχειριστής

WORDPRESS. Εικόνα 1. Πατώντας στη «Σύνδεση» γράψτε το Username (όνομα χρήστη) και το Password (συνθηματικό) (εικόνα 2) που σας έδωσε ο διαχειριστής WORDPRESS Το παρόν εγχειρίδιο είναι μία προσπάθεια για τους συναδέλφους εκπαιδευτικούς αλλά και μαθητές για την δημοσίευση άρθρων. Για παραλήψεις, λάθη ή κάτι το δυσνόητο παρακαλώ ενημερώστε με ώστε να

Διαβάστε περισσότερα

ΒΟΗΘΕΙΑ για τη χρήση του ιδρυματικού αποθετηρίου ΥΠΑΤΙΑ ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΒΟΗΘΕΙΑ για τη χρήση του ιδρυματικού αποθετηρίου ΥΠΑΤΙΑ ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ΒΟΗΘΕΙΑ για τη χρήση του ιδρυματικού αποθετηρίου ΥΠΑΤΙΑ Το Ιδρυματικό Αποθετήριο του ΤΕΙ Αθήνας συλλέγει, τεκμηριώνει, αποθηκεύει και διατηρεί ψηφιακό περιεχόμενο έρευνας και εκπαίδευσης. Περιλαμβάνει

Διαβάστε περισσότερα

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7 Σύντομη περιγραφή 5 Για να ξεκινήσετε 6 Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7 Οι οθόνες του προγράμματος 8 Αρχική οθόνη 8 Στοιχεία ασθενή 9 Εργασίες - Ραντεβού 10 Εικόνες 11 Ημερολόγιο

Διαβάστε περισσότερα

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1: ΥΠΗΡΕΣΙΕΣ - ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ Περιγραφή Αυτό το πρόγραμμα έχει σχεδιαστεί για να βοηθήσει τους μαθητές να γνωρίσουν τις υπηρεσίες και τις εφαρμογές του διαδικτύου καθώς και τους

Διαβάστε περισσότερα

Pylon Entry. Πόροι. Στη διαδικασία αυτή περιγράφεται η Δημιουργία- Μεταβολή-Διαγραφή Αναζήτηση Πόρων

Pylon Entry. Πόροι. Στη διαδικασία αυτή περιγράφεται η Δημιουργία- Μεταβολή-Διαγραφή Αναζήτηση Πόρων Pylon Entry Πόροι Στη διαδικασία αυτή περιγράφεται η Δημιουργία- Μεταβολή-Διαγραφή Αναζήτηση Πόρων Περιεχόμενα Δημιουργία Νέου Πόρου... 3 Καρτέλα Βασικά Στοιχεία... 4 Καρτέλα Βασικά Στοιχεία... 4 Καρτέλα

Διαβάστε περισσότερα

Υπηρεσία Επισημείωσης Hypothesis. Εγχειρίδιο χρήσης

Υπηρεσία Επισημείωσης Hypothesis. Εγχειρίδιο χρήσης Υπηρεσία Επισημείωσης Hypothesis Εγχειρίδιο χρήσης Περιεχόμενα 1. Γενικές οδηγίες 3 2. Δημιουργία λογαριασμού 5 3. Ενεργοποίηση 5 4. Πληροφορίες για το αρχικό μενού 6 4.1 Επίπεδο δημοσίευσης επισημειώσεων

Διαβάστε περισσότερα

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

ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ. Draft version ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ Draft version Θεσσαλονίκη, Ιούλιος 2016 ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 4 1. ΓΕΝΙΚΑ... 5 1.1. Πρόσβαση... 5 1.2. Χρήστες... 5 2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΑΤΦΟΡΜΑ ΗΜΑ... 6 2.1.

Διαβάστε περισσότερα

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ 1 ΠΕΡΙΕΧΟΜΕΝΑ 1. ΑΝΑΛΥΣΗ ΜΕΝΟΥ ΕΦΑΡΜΟΓΗΣ... 4 2. ΕΠΕΞΗΓΗΣΗ ΚΕΝΤΡΙΚΟΥ ΜΕΝΟΥ ΚΑΡΤΕΛΑΣ... 5 3. ΔΗΜΙΟΥΡΓΙΑ ΠΕΛΑΤΗ... 6 4. ΑΝΑΖΗΤΗΣΗ ΠΕΛΑΤΗ... 6 5. ΕΠΕΞΕΡΓΑΣΙΑ/ΔΙΑΓΡΑΦΗ

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων Ενότητα 3 Σχεδίαση Βάσεων Δεδομένων 17 18 3.1 Εισαγωγή Μία βάση δεδομένων αποτελείται από δεδομένα για διάφορα θέματα τα οποία όμως σχετίζονται μεταξύ τους και είναι καταχωρημένα με συγκεκριμένο τρόπο.

Διαβάστε περισσότερα

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Συνεργασίας. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Συνεργασίας Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Τάξη: Γ Μάθημα: Πληροφορική Εξεταστέα ύλη: Παρ11.1 & 11.2 Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών που περιγράφει τη διαδικασία

Διαβάστε περισσότερα

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1 ΚΕΦΑΛΑΙΟ 7 ο ΠΡΟΓΡΑΜΜΑ : Το πρόγραμμα αποτελείται από μια σειρά οδηγιών, που ονομάζονται εντολές, για την εκτέλεση τέτοιου είδους πράξεων, καθώς επίσης και από ένα σύνολο πρόσθετων οδηγιών ελέγχου, που

Διαβάστε περισσότερα

Περιεχόμενο του μαθήματος

Περιεχόμενο του μαθήματος ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Απαιτήσεις Λογισμικού Περιπτώσεις χρήσης Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2012-2013 1 Περιεχόμενο του μαθήματος

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

www.ikarditsa.gr Οδηγίες Χρήσης (προσθήκη νέου άρθρου σε σελίδα iκαταστήματος)

www.ikarditsa.gr Οδηγίες Χρήσης (προσθήκη νέου άρθρου σε σελίδα iκαταστήματος) www.ikarditsa.gr Οδηγίες Χρήσης (προσθήκη νέου άρθρου σε σελίδα iκαταστήματος) Το παρακάτω κείμενο περιλαμβάνει οδηγίες για την προσθήκη ενός νέου άρθρου σε σελίδα iκαταστήματος. Η προσθήκη ενός άρθρου

Διαβάστε περισσότερα

Συνοπτικός οδηγός χρήσης της πλατφόρμας ασύγχρονης τηλεεκπαίδευσης. Καθηγητή

Συνοπτικός οδηγός χρήσης της πλατφόρμας ασύγχρονης τηλεεκπαίδευσης. Καθηγητή Συνοπτικός οδηγός χρήσης της πλατφόρμας ασύγχρονης τηλεεκπαίδευσης Moodle για τον Καθηγητή Πίνακας Περιεχομένων 1. Εισαγωγή...3 1.1 Περιβάλλον Moodle... 3 1.2 Εισαγωγή / εγγραφή στην πλατφόρμα... 3 2 Δημιουργία

Διαβάστε περισσότερα

Εγχειρίδιο χρήσης Intalio Designer Εγχειρίδιο χρήσης Intalio Designer

Εγχειρίδιο χρήσης Intalio Designer Εγχειρίδιο χρήσης Intalio Designer Εγχειρίδιο χρήσης Intalio Designer Σελίδα 1 Copyright Copyright 2007 Atlantis Group. Ιστορικό εγγράφου Έκδοση Εγχειριδίου: 1.0 Ημερομηνία δημιουργίας: 26/11/2007 Σελίδα 2 ΠΕΡΙΕΧΟΜΕΝΑ 1 Εισαγωγή... 4 2

Διαβάστε περισσότερα

Ταυτότητα εκπαιδευτικού σεναρίου

Ταυτότητα εκπαιδευτικού σεναρίου Ταυτότητα εκπαιδευτικού σεναρίου Τίτλος: Συμβάντα και ενέργειες - Το πολύχρωμο σκαθάρι Σύντομη περιγραφή: Ένα εκπαιδευτικό σενάριο για την διδασκαλία των συμβάντων και ενεργειών στον προγραμματισμό, με

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Σκοπός της 10ης άσκησης είναι να μάθουμε να χρησιμοποιούμε sprites και να φτιάξουμε ένα παιχνίδι που χρησιμοποιεί συγκρούσεις. Θα δούμε επίσης μερικά

Διαβάστε περισσότερα

Δημιουργία. Ιστολογίου (blog) 7/5/2015. Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ

Δημιουργία. Ιστολογίου (blog)  7/5/2015. Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ Δημιουργία 7/5/2015 Ιστολογίου (blog) www.blogger.com Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ ΠΕΡΙΕΧΟΜΕΝΑ TI EINAI TO ΙΣΤΟΛΟΓΙΟ... 2 ΓΙΑΤΙ ΙΣΤΟΛΟΓΙΟ;... 2 ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΧΡΗΣΗΣ ΙΣΤΟΛΟΓΙΟΥ... 2 ΔΗΜΙΟΥΡΓΙΑ ΛΟΓΑΡΙΑΣΜΟΥ

Διαβάστε περισσότερα

SAP Οδηγός για τους Υπογράφοντες του DocuSign

SAP Οδηγός για τους Υπογράφοντες του DocuSign SAP Οδηγός για τους Υπογράφοντες του DocuSign Περιεχόμενα 1. SAP Οδηγός για τους Υπογράφοντες του DocuSign... 2 2. Παραλαβή Ειδοποίησης Email... 2 3. Υπογραφή Εγγράφου... 3 4. Άλλες Επιλογές... 4 4.1 Ολοκλήρωση

Διαβάστε περισσότερα

Ανέβασμα (upload) φωτογραφιών στο διαδίκτυο

Ανέβασμα (upload) φωτογραφιών στο διαδίκτυο Ανέβασμα (upload) φωτογραφιών στο διαδίκτυο Ανέβασμα φωτογραφιών στο διαδίκτυο - Στόχοι Κατανόηση του τρόπου με τον οποίο αποθηκεύουμε μία φωτογραφία στον υπολογιστή. Κατανόηση του τρόπου με τον οποίο

Διαβάστε περισσότερα

Μάθημα 4ο. Προγράμματα

Μάθημα 4ο. Προγράμματα Μάθημα 4ο Προγράμματα Σελίδα 47 από 106 4.1 Εγκατάσταση προγραμμάτων Όπως έχουμε πει στο πρώτο μάθημα (Σημειώσεις 1ου Μαθήματος 1.3.3.Β σελ. 12) τα προγράμματα ή αλλιώς εφαρμογές αποτελούν μέρος του λογισμικού

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

Διαβάστε περισσότερα

Διαγράμματα Κλάσεων στη Σχεδίαση

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

Διαβάστε περισσότερα

Δημιουργία η-μαθήματος με τη. 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας

Δημιουργία η-μαθήματος με τη. 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας Δημιουργία η-μαθήματος με τη χρήση του Moodle 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας Δημιουργία η-μαθήματος με τη χρήση του Moodle 3 ο Μέρος Εισαγωγή πληροφοριών: δημιουργία ιστοσελίδας

Διαβάστε περισσότερα

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

Διαβάστε περισσότερα

Εγκατάσταση της Unity

Εγκατάσταση της Unity Εγκατάσταση της Unity Όπως έχουμε πει, θα χρησιμοποιήσουμε την Unity για να φτιάξουμε τα παιχνίδια μας. Η Unity είναι μια μηχανή παιχνιδιών (game engine). Τι σημαίνει όμως αυτό; Σημαίνει απλά ότι είναι

Διαβάστε περισσότερα

1. Εισαγωγή στο ΟΠΣ - ΠΔΕ

1. Εισαγωγή στο ΟΠΣ - ΠΔΕ 1. Εισαγωγή στο ΟΠΣ - ΠΔΕ 1.1 Εισαγωγή 1.1.1 Σύντομη περιγραφή και σκοπός ΟΠΣ Το Ολοκληρωμένο Πληροφοριακό Σύστημα (Ο.Π.Σ.) αποτελεί ένα σύστημα πληροφόρησης και διαχείρισης, η χρήση του οποίου επιβάλλεται

Διαβάστε περισσότερα

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Απλά ερωτήματα Επιλογής Ερωτήματα με Ενώσεις πινάκων Ερωτήματα με Παραμετρικά Κριτήρια Ερωτήματα με Υπολογιζόμενα πεδία Απλά ερωτήματα Επιλογής Τα Ερωτήματα μας επιτρέπουν

Διαβάστε περισσότερα

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : /www.wik id ot.com /

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : /www.wik id ot.com / ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : /www.wik id ot.com / 1. Τι είναι το wikidot Το wikidot είναι ένας δικτυακός τόπος στον οποίο κάθε χρήστης έχει το δικαίωμα να δημιουργήσει

Διαβάστε περισσότερα

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI Μανώλης Κιαγιάς, MSc Aiolos Project Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI Χανιά, 2015 2 (C) 2014 Μανώλης Κιαγιάς, manolis@freebsd.org Το παρόν έργο διατίθεται υπό τους όρους της Άδειας: Αναφορά

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38

Περιεχόμενα. Δημιουργία σύνδεσης... 27 5. ΤΙ ΕΙΝΑΙ ΙΣΤΟΣΕΛΙΔΕΣ ΚΑΙ ΤΙ ΤΟΠΟΘΕΣΙΕΣ ΙΣΤΟΥ... 37. Γνωριμία με μια ιστοσελίδα:... 38 Περιεχόμενα ΠΡΟΛΟΓΟΣ... 11 ΔΙΑΔΙΚΤΥΟ... 13 1. ΙΣΤΟΡΙΑ ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ... 15 2. ΤΙ ΕΙΝΑΙ ΤΟ ΔΙΑΔΙΚΤΥΟ INTERNET;... 16 3. ΤΙ ΠΡΟΣΦΕΡΕΙ ΤΟ ΔΙΑΔΙΚΤΥΟ, ΤΙ ΜΠΟΡΕΙ ΝΑ ΒΡΕΙ ΚΑΝΕΙΣ... 19 4. ΤΙ ΑΠΑΙΤΕΙΤΑΙ ΓΙΑ ΝΑ

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python. Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python.

Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python. Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python. Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python. 1. Εισαγωγή Κάθε χαρακτήρας σε ένα παιχνίδι χρειάζεται κάποια

Διαβάστε περισσότερα

ΑΕΕ ONLINE 2012 ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

ΑΕΕ ONLINE 2012 ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΑΕΕ ONLINE 2012 ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ 1 ΠΕΡΙΕΧΟΜΕΝΑ ΥΠΗΡΕΣΙΕΣ ONLINE ΥΠΟΒΟΛΗΣ ΑΙΤΗΣΕΩΝ 2012... 3 1. Διαδικασία Εγγραφής και Πρόσβασης... 3 1.1 Διαδικασία απόκτησης κωδικού πρόσβασης... 3 1.2 Διαδικασία υποβολής

Διαβάστε περισσότερα

«Οδηγίες χρήσης εφαρμογής Ενιαίου Συστήματος Πληρωμών»

«Οδηγίες χρήσης εφαρμογής Ενιαίου Συστήματος Πληρωμών» «Οδηγίες χρήσης εφαρμογής Ενιαίου Συστήματος Πληρωμών» έκδοση v.1.2, 10/09/2014 Περιεχόμενα Είσοδος... 3 Οικονομικά Υπεύθυνος... 4 Αρχική Οθόνη... 4 Διαχείριση Χρηστών... 4 Αναζήτηση Χρήστη... 4 Δημιουργία

Διαβάστε περισσότερα

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA Διαδικτυακές Εφαρμογές Ενότητα 1: JPA Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων Ενότητα 4 Επεξεργασία πινάκων 36 37 4.1 Προσθήκη πεδίων Για να εισάγετε ένα πεδίο σε ένα πίνακα που υπάρχει ήδη στη βάση δεδομένων σας, βάζετε τον κέρσορα του ποντικιού στο πεδίο πάνω από το οποίο θέλετε

Διαβάστε περισσότερα

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

Αντικειμενοστραφής Προγραμματισμός Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση

Διαβάστε περισσότερα

Ηλεκτρονικοί Υπολογιστές ΙI. Βάσεις Δεδομένων. Ακαδημαϊκό Έτος Εργαστήριο 2. Διαφάνεια 1. Κάπαρης Αναστάσιος

Ηλεκτρονικοί Υπολογιστές ΙI. Βάσεις Δεδομένων. Ακαδημαϊκό Έτος Εργαστήριο 2. Διαφάνεια 1. Κάπαρης Αναστάσιος Βάσεις Δεδομένων Εργαστήριο 2 Διαφάνεια 1 Πώς να δημιουργήσω μια συσχέτιση ένα προς πολλά στην ACCESS; Η απάντηση στο παραπάνω θέμα, θα δοθεί μέσα από ένα παράδειγμα μιας μικρής βάσης δεδομένων. Το μοντέλο

Διαβάστε περισσότερα

Εγχειρίδιο Χρήσης για Εκπαιδευτές/Διοικητικούς. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Εγχειρίδιο Χρήσης για Εκπαιδευτές/Διοικητικούς. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο Εγχειρίδιο Χρήσης για Εκπαιδευτές/Διοικητικούς Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο 1. Εισαγωγή 1.1 Περιγραφή Λειτουργίας Πλατφόρμας Η Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο παρέχει τη δυνατότητα

Διαβάστε περισσότερα

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Χειμερινό Εξάμηνο 2013 - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 Αρχιτεκτονική

Διαβάστε περισσότερα

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

Διαβάστε περισσότερα