8. Προγραμματισμός με XML

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

Download "8. Προγραμματισμός με XML"

Transcript

1 Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 8. Προγραμματισμός με XML ιαχείριση εδομένων στον Παγκόσμιο Ιστό Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων ευτέρα 21 Νοεμβρίου 2016

2 Document Object Model (DOM)

3 Τι Είναι το DOM; (1) Το Document Object Model (DOM) είναι ένα Application Programming Interface (API) για HTML και XML έγγραφα Καθορίζει τη λογική δομή των εγγράφων, καθώς και τον τρόπο πρόσβασης και διαχείρισης ενός εγγράφου Αποτελεί W3C standard Έχει σχεδιαστεί ώστε να μπορεί να χρησιμοποιηθεί από οποιαδήποτε γλώσσα προγραμματισμού Οι προγραμματιστές χρησιμοποιώντας το DOM μπορούν να ημιουργούν έγγραφα Πλοηγούνται στη δομή των εγγράφων Προσθέτουν, τροποποιούν και διαγράφουν elements και περιεχόμενο Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 3

4 Τι Είναι το DOM; (2) To Document Object Model (DOM) παρέχει Ένα προκαθορισμένο σύνολο αντικειμένων για την αναπαράσταση HTML και XML εγγράφων Ένα καθορισμένο μοντέλο για τον τρόπο με τον οποίο αυτά τα αντικείμενα μπορούν να συνδυαστούν Μια καλά ορισμένη διεπαφή (interface) για πρόσβαση και διαχείριση των αντικειμένων Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 4

5 Ιστορικό 1998: DOM Level-1 Παρείχε ένα πλήρες μοντέλο για HTML ή XML έγγραφα και δυνατότητες τροποποίησης τέτοιων εγγράφων Περιορισμένη λειτουργικότητα στον Internet Explorer : DOM Level-2 Function getelementbyid() Event model Υποστήριξη XML namespaces και CSS 2004: DOM Level-3 Υποστήριξη XPath Keyboard event handling ιεπαφή για serialization εγγράφων σε XML Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 5

6 Εφαρμογές JavaScript Ένας browser δε χρειάζεται να χρησιμοποιήσει το DOM για να εμφανίζει HTML σελίδες Όμως, scripts σε JavaScript απαιτούν το DOM για να διαχειριστούν ή να τροποποιήσουν μια ιστοσελίδα δυναμικά Το DOM είναι ο τρόπος με τον οποίο η JavaScript «βλέπει» την ιστοσελίδα στην οποία περιέχεται Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 6

7 Μοντέλο Δεδομένων Τα XML δεδομένα αναπαριστώνται με μια δομή δεδομένων που επιτρέπει πλοήγηση - στη μνήμη του υπολογιστή Λόγω του nesting των XML elements, χρησιμοποιείται μια δενδρική δομή δεδομένων ιατρέχοντας το δένδρο παρέχεται πρόσβαση σε στοιχεία του XML εγγράφου Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 7

8 Απλό Παράδειγμα (1) <TABLE> <TBODY> <TR> </TR> <TR> </TR> </TBODY> </TABLE> <TD>Shady Grove</TD> <TD>Aeolian</TD> <TD>Over the River, Charlie</TD> <TD>Dorian</TD> Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 8

9 Απλό Παράδειγμα (2) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 9

10 Έμφαση στο Object Model (1) Το DOM είναι object model, υπό την έννοια του αντικειμενοστρεφούς μοντέλου Τα έγγραφα μοντελοποιούνται με χρήση αντικειμένων Το μοντέλο περιέχει όχι μόνο τη δομή, αλλά και τη συμπεριφορά του εγγράφου και των αντικειμένων από τα οποία απαρτίζεται Άρα οι κόμβοι στο προηγούμενο σχήμα δεν αναπαριστούν μια δομή δεδομένων, αλλά αντικείμενα Τα οποία έχουν αναγνωριστικά και συναρτήσεις Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 10

11 Έμφαση στο Object Model (2) To DOM μπορεί να αναπαριστά οποιοδήποτε XML έγγραφο (ανεξαρτήτως της δομής του), αρκεί να ακολουθεί το specification της XML To DOM δεν είναι πρόγραμμα Απλά παρέχει μια διεπαφή (interface) την οποία μπορεί να υλοποιήσει ο καθένας με διαφορετικό τρόπο Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 11

12 Πώς Λειτουργεί το DOM; To DOM υλοποιείται ως ένα ενδιάμεσο επίπεδο μεταξύ του XML parser και της εφαρμογής Ο parser διαβάζει τα XML δεδομένα και «περνάει» τα δεδομένα στο DOM Στη συνέχεια, τo DOM χρησιμοποιείται από μια εφαρμογή υψηλότερου επιπέδου Για να φτιάξουμε μια τέτοια εφαρμογή χρειαζόμαστε εγκατεστημένα στον υπολογιστή μας Έναν XML parser Μια υλοποίηση του DOM Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 12

13 Διάφορες Υλοποιήσεις Xerces Μια βιβλιοθήκη συναρτήσεων για parsing, επικύρωση, διαχείριση, και serialization XML ιαθέσιμη σε Java, C++, Perl MSXML (Microsoft XML Core Services) Εφαρμογές που γράφονται σε JScript, VBScript ή άλλα εργαλεία ανάπτυξης Microsoft μπορούν να διαχειρίζονται XML JAXP (Java API for XML Processing) Ένα Java API για parsing και επικύρωση XML Υποστηρίζει τα εξής parsing interfaces: DOM, SAX, και StAX Υποστηρίζει και XSLT JDOM Open-source Java Document Object Model Συνδυάζει DOM και SAX Υποστηρίζει XPath και XSLT Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 13

14 DOMString Για την εξασφάλιση ότι όλες οι υλοποιήσεις του DOM λειτουργούν με τον ίδιο τρόπο, έχει καθοριστεί ο τύπος δεδομένων DOMString Μια ακολουθία 16-bit χαρακτήρων που χρησιμοποιείται οποτεδήποτε χρειάζεται ένα string Άρα στο DOM όλα τα string είναι UTF-16 To DOMString χρησιμοποιείται από το specification για να υπάρχει μια κοινή αναφορά Οι υλοποιήσεις δεν είναι υποχρεωμένες να φτιάξουν έναν τέτοιο τύπο δεδομένων Πολλές γλώσσες χρησιμοποιούν εγγενώς αναπαραστάσεις των string με χαρακτήρες16-bits, οπότε μπορούν να χρησιμοποιούν αυτό τον τύπο ως έχει Άλλες (C και C++) χρησιμοποιούν είτε 8-bit ή 16-bit, οπότε εκεί θέλει προσοχή να χρησιμοποιείται πάντα η 16-bit εκδοχή Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 14

15 Στοιχεία του DOM To DOM αναπαριστά ένα έγγραφο ως ιεραρχία από Node αντικείμενα Κάποια από αυτά μπορούν να έχουν κόμβους παιδιά, ενώ άλλα όχι είτε Επίσης, υποστηρίζονται interfaces όπως NodeList: ταξινομημένες λίστες από αντικείμενα Node Π.χ. Για αναπαράσταση των παιδιών ενός κόμβου NamedNodeMap: μη ταξινομημένα σύνολα από αντικείμενα Node Π.χ. Για αναπαράσταση των attributes ενός element Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 15

16 Παραδείγματα DOM σε JAXP

17 Java API for XML Processing To JAXP χρησιμοποιείται για την επεξεργασία XML δεδομένων από Java εφαρμογές Υποστηρίζει Το Document Object Model (DOM) To Simple API for XML Parsing (SAX) To Extensible Stylesheet Language Transformations (XSLT) standard Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 17

18 Document Object Model APIs Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 18

19 Ένα Απλό Πρόγραμμα με DOM (1) Πρώτα φτιάχνουμε έναν DOM parser, που είναι το αντικείμενο DocumentBuilder Ο parser δημιουργείται όχι καλώντας κάποιον constructor, αλλά καλώντας μια static factory μέθοδο DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newdocumentbuilder(); Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 19

20 Ένα Απλό Πρόγραμμα με DOM (2) Έστω ότι θέλουμε να διαβάσουμε ένα XML αρχείο hello.xml <?xml version="1.0"?> <message>hello World!</message> Για να διαβάσουμε το αρχείο, προσθέτουμε την ακόλουθη γραμμή Document document = builder.parse("hello.xml"); Το αντικείμενο Document περιέχει ολόκληρο το XML αρχείο με τη μορφή δένδρου Εάν ήθελα να εντοπίσω και να εκτυπώσω τα περιεχόμενα του root element Element root = document.getdocumentelement(); Node textnode = root.getfirstchild(); System.out.println(textNode.getNodeValue()); Το πρόγραμμα αυτό θα εμφάνιζε στην οθόνη: Hello World! Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 20

21 Ανάγνωση του Δένδρου Η μέθοδος parse διαβάζει ολόκληρο το ΧML έγγραφο και το αναπαριστά με δενδρική μορφή στη μνήμη Εάν το έγγραφο είναι μεγάλο, το parsing μπορεί να χρειαστεί αρκετό χρόνο Εάν είναι επιθυμητό να αλληλεπιδρούμε με το πρόγραμμά μας καθώς γίνεται το parsing, πρέπει ο parser να εκτελεστεί σαν ξεχωριστό thread Στην πράξη, ένα δένδρο μπορεί να χρησιμοποιεί έως και 10 φορές περισσότερη μνήμη από το μέγεθος του αρχικού ΧML εγγράφου Εάν όμως θέλουμε να κάνουμε πολλές πράξεις επεξεργασίας ή ενημέρωσης στο δένδρο, η χρήση του DOM αποτελεί τον κατάλληλο τρόπο ιαφορετικά υπάρχουν και πιο αποδοτικοί τρόποι SAX Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 21

22 Δομή του DOM Δένδρου Το DOM δένδρο αποτελείται από Node objects To Node είναι ένα interface Ορισμένα σημαντικά sub-interfaces είναι τα Element, Attr, και Text Ένα Element node μπορεί να έχει παιδιά Τα Attr και Text nodes είναι φύλλα του δένδρου Συνεπώς, το DOM δένδρο περιέχει διάφορα Node objects Τα Node objects μπορούν να γίνουν cast σε συγκεκριμένους τύπους εφόσον χρειάζεται Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 22

23 Διακρίνοντας Τύπους Κόμβων Ένας απλός τρόπος: switch(node.getnodetype()) { case Node.ELEMENT_NODE: Element element = (Element)node;...; break; case Node.TEXT_NODE: Text text = (Text)node;... break; case Node.ATTRIBUTE_NODE: Attr attr = (Attr)node;... break; default:... } Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 23

24 Λειτουργίες σε Κόμβους Τα αποτελέσματα που επιστρέφουν οι συναρτήσεις getnodename(), getnodevalue(), getnodetype() και getattributes() εξαρτώνται από τον τύπο του κόμβου Element Text Attr getnodename() tag name "#text" name of attribute getnodevalue() null text contents value of attribute getnodetype() ELEMENT_NODE TEXT_NODE ATTRIBUTE_NODE getattributes() NamedNodeMap null null Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 24

25 Κι Άλλες Λειτουργίες σε Κόμβους Μέθοδοι για πλοήγηση στο δένδρο που επιστρέφουν Node: getparentnode() getfirstchild() getnextsibling() getprevioussibling() getlastchild() Μέθοδοι ελέγχου που επιστρέφουν true/false: hasattributes() haschildnodes() Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 25

26 Λειτουργίες σε Elements String gettagname() Επιστρέφει το όνομα του tag boolean hasattribute(string name) Επιστρέφει true εάν το Element έχει attribute με το συγκεκριμένο όνομα String getattribute(string name) Επιστρέφει την τιμή του attribute boolean hasattributes() Επιστρέφει true εάν το Element έχει έστω και ένα attribute NamedNodeMap getattributes() Επιστρέφει ένα αντικείμενο NamedNodeMap που περιέχει όλα τα attributes του Element Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 26

27 Λειτουργίες σε Text Το Text είναι sub-interface του CharacterData και κληρονομεί τις ακόλουθες μεθόδους (μεταξύ άλλων): public String getdata() throws DOMException Επιστρέφει το text περιεχόμενο του συγκεκριμένου Text κόμβου public int getlength() Επιστρέφει το πλήθος των Unicode χαρακτήρων στο text public String substringdata(int offset, int count) throws DOMException Επιστρέφει ένα substring του text περιεχόμενου Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 27

28 Λειτουργίες σε Attributes String getname() Επιστρέφει το όνομα του attribute Element getownerelement() Επιστρέφει το Element node στο οποίο ανήκει το attribute boolean getspecified() Επιστρέφει true εάν αυτό το attribute είχε πάρει τιμή στο έγγραφο String getvalue() Επιστρέφει την τιμή του attribute σαν String Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 28

29 Pre-order Διάσχιση του Δένδρου Το DOM αποθηκεύεται στη μνήμη σαν δένδρο Γενικά, τα δένδρα μπορούμε να τα επεξεργαστούμε με έναν από τους ακόλουθους τρόπους pre-order, in-order, post-order Ένας απλός τρόπος είναι η preorder Η γενική ιδέα μιας pre-order διάσχισης είναι: Επίσκεψη της root Επίσκεψη καθενός από τα subtrees με σειρά που εμφανίζονται Πρώτα το αριστερό sub-tree, μετά το δεξιό sub-tree F Β G Α C H D E I F,B,A,C,D,E,G,H,I,J J Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 29

30 Pre-order Διάσχιση σε Java static void simplepreorderprint(string indent, Node node) { printnode(indent, node); if(node.haschildnodes()) { Node child = node.getfirstchild(); while (child!= null) { simplepreorderprint(indent + " ", child); child = child.getnextsibling(); } } } static void printnode(string indent, Node node) { System.out.print(indent); System.out.print(node.getNodeType() + " "); System.out.print(node.getNodeName() + " "); System.out.print(node.getNodeValue() + " "); System.out.println(node.getAttributes()); } Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 30

31 Πλεονεκτήματα Μειονεκτήματα του DOM Το DOM φορτώνει ολόκληρο το έγγραφο στη μνήμη και το διατηρεί σαν δενδρική δομή δεδομένων Επιτρέπει τροποποιήσεις σε όλο το περιεχόμενο του εγγράφου με εύκολο τρόπο Επιτρέπει πρόσβαση σε τυχαία σημεία του εγγράφου οποιαδήποτε στιγμή Ανάλογα με το μέγεθος του εγγράφου μπορεί να καταναλώνει πολλή μνήμη και να αργεί Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 31

32 Simple API for XML (SAX)

33 Μοντέλο Επεξεργασίας του SAX To SAX είναι ένα δημοφιλές (αλλά ad-hoc) standard για XML parsing Ο parser βλέπει μια ακολουθία από elements σαν ροή (stream) Κάθε φορά που ένα XML element εντοπίζεται, ένα event λαμβάνει χώρα Εκτελείται ένα κομμάτι κώδικα (ο event handler) που συσχετίζεται με τον parser Πρόβλημα ύσκολο να έχουμε μια καθολική εικόνα του εγγράφου Η κατάσταση (state) κατά τη διάρκεια του parsing διατηρείται σε καθολικές μεταβλητές που ενημερώνονται από τους event handlers Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 33

34 Διαφορές Μεταξύ DOM και SAX Το DOM φορτώνει ολόκληρο το XML έγγραφο στη μνήμη και το αποθηκεύει με δενδρική μορφή Το SAX διαβάζει το έγγραφο και καλεί μεθόδους για να χειριστεί το εκάστοτε element ή κομμάτι text που συναντά Συνέπειες Το DOM επιτρέπει την τυχαία προσπέλαση ( random access ) στο έγγραφο Το SAX επιτρέπει μόνο τη σειριακή προσπέλαση στο έγγραφο Το DOM είναι αργό και έχει υψηλές απαιτήσεις μνήμης, άρα δεν είναι κατάλληλο για μεγάλα έγγραφα Το SAX είναι γρήγορο και δεν απαιτεί πολύ μνήμη Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 34

35 Parsing με SAX Το SAX χρησιμοποιεί το μοντέλο source-listenerdelegate για το parsing των XML documents Το source είναι τα XML δεδομένα που περιέχουν XML elements Ένας listener γράφεται σε Java, συσχετίζεται με το έγγραφο, και περιμένει να συμβεί κάποιο event Όταν λαμβάνει χώρα ένα event, μια μέθοδος αναλαμβάνει να διαχειριστεί το event (delegated), και εκτελείται ο κώδικας της μεθόδου Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 35

36 Callbacks Το SAX λειτουργεί με callbacks: Το πρόγραμμα καλεί τον parser Ο parser καλεί μεθόδους που παρέχονται από το πρόγραμμα Πρόγραμμα main(...) Ο SAX parser parse(...) startdocument(...) startelement(...) characters(...) endelement( ) enddocument( ) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 36

37 Ένα Απλό SAX Πρόγραμμα Το πρόγραμμα αποτελείται από δύο κλάσεις: Sample (Αυτή η κλάση περιέχει την κύρια μέθοδο) Χρησιμοποιεί ένα factory που κατασκευάζει parsers Φτιάχνει έναν parser από το factory Φτιάχνει ένα Handler object για να χειριστεί τα callbacks από τον parser Ορίζει στον parser σε ποιο handler θα στέλνονται τα callbacks ιαβάζει το XML αρχείο Handler (Αυτή η κλάση περιέχει handlers για τρία είδη από callbacks) startelement callbacks, λαμβάνουν χώρα όταν δει ένα start tag endelement callbacks, λαμβάνουν χώρα όταν δει ένα end tag characters callbacks, λαμβάνουν χώρα όταν δει τα περιεχόμενα ενός element Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 37

38 Η Κλάση Sample (1) import javax.xml.parsers.*; // for both SAX and DOM import org.xml.sax.*; import org.xml.sax.helpers.*; // For simplicity, we let the operating system handle exceptions // In "real life" this is poor programming practice public class Sample { public static void main(string args[]) throws Exception { // Create a parser factory SAXParserFactory factory = SAXParserFactory.newInstance(); // Tell factory that the parser must understand namespaces factory.setnamespaceaware(true); // Make the parser SAXParser saxparser = factory.newsaxparser(); XMLReader parser = saxparser.getxmlreader(); Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 38

39 Η Κλάση Sample (2) // Create a handler Handler handler = new Handler(); // Tell the parser to use this handler parser.setcontenthandler(handler); // Finally, read and parse the document parser.parse("hello.xml"); } // end of Sample class Ο parser διαβάζει το αρχείο hello.xml Το αρχείο πρέπει να βρίσκεται Στον ίδιο φάκελο ή Σε κάποιο φάκελο που έχει οριστεί στο classpath Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 39

40 Η Κλάση Handler (1) public class Handler extends DefaultHandler { Η DefaultHandler είναι μια adapter κλάση που ορίζει κενές μεθόδους οι οποίες θα γίνουν override Ορίζουμε 3 μεθόδους για το χειρισμό (1) start tags, (2) περιεχομένων, και (3) end tags. Κάθε μέθοδος απλά θα εκτυπώνει μια γραμμή Καθεμιά από τις 3 μεθόδους πετάει μια SAXException // SAX calls this when it encounters a start tag public void startelement(string namespaceuri, String localname, String qualifiedname, Attributes attributes) throws SAXException { System.out.println("startElement: " + qualifiedname); } Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 40

41 Η Κλάση Handler (2) // SAX calls this method to pass in character data public void characters(char ch[ ], int start, int length) throws SAXException { System.out.println("characters: \"" + new String(ch, start, length) + "\""); } // SAX call this method when it encounters an end tag public void endelement(string namespaceuri, String localname, String qualifiedname) throws SAXException { System.out.println( endelement: /" + qualifiedname); } } // End of Handler class Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 41

42 Αποτελέσματα (1) Ας υποθέσουμε ότι το αρχείο hello.xml περιέχει: <?xml version="1.0"?> <display>hello World!</display> Τότε το output της εκτέλεσης του java Sample θα είναι: startelement: display characters: "Hello World!" endelement: /display Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 42

43 Αποτελέσματα (2) Εάν το αρχείο hello.xml περιέχει: <?xml version="1.0"?> <display> <i>hello</i> World! </display> Το root element <display> περιέχει ένα εμφωλιασμένο element <i> και whitespace (συμπεριλαμβανομένων newlines) Το αποτέλεσμα εμφανίζεται δεξιά startelement: display characters: "" characters: " " // newline characters: " " startelement: i characters: "Hello" endelement: /i characters: "World!" characters: " " // another newline endelement: /display // empty string // spaces Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 43

44 Factories Το SAX χρησιμοποιεί ένα parser factory Ένα factory αποτελεί ένα design pattern εναλλακτικό των constructors Τα factories επιτρέπουν στον προγραμματιστή Να αποφασίσει εάν θα φτιάξει ένα νέο αντικείμενο Να αποφασίσει τι είδους αντικείμενο θα φτιάξει class TrustMe { private TrustMe() { } // private constructor } public static TrustMe maketrust() { // factory method if ( /* test of some sort */) return new TrustMe(); } } Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 44

45 Parser Factories Για να φτιάξουμε ένα SAX parser factory, καλούμε τη static μέθοδο: SAXParserFactory.newInstance() Επιστρέφει ένα αντικείμενο τύπου SAXParserFactory Μπορεί να πετάξει ένα FactoryConfigurationError Στη συνέχεια, ο parser μπορεί να παραμετροποιηθεί: public void setnamespaceaware(boolean awareness) Καλείται με true εάν χρησιμοποιούνται namespaces Το default (εφόσον δεν κληθεί η μέθοδος) είναι false public void setvalidating(boolean validating) Καλείται με true εάν θέλουμε έλεγχο εγκυρότητας με βάση κάποιο DTD Το default (εφόσον δεν κληθεί η μέθοδος) είναι false Ο έλεγχος εγκυρότητας θα επιστρέψει λάθος εάν δεν υπάρχει DTD Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 45

46 Δημιουργώντας έναν Parser Μόλις φτιαχτεί ένα SAXParserFactory factory, parsers μπορούν να δημιουργηθούν με: SAXParser saxparser = factory.newsaxparser(); XMLReader parser = saxparser.getxmlreader(); Παρατήρηση: ο SAXParser δεν είναι thread-safe Άρα εάν ένας parser θα χρησιμοποιηθεί σε πολλαπλά threads, θα πρέπει να φτιαχτεί ένα ξεχωριστό SAXParser αντικείμενο για κάθε thread Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 46

47 Δηλώνοντας τους Handlers Μιας και ο SAX parser θα καλέσει τους handlers, πρέπει να παρέχουμε αυτές τις μεθόδους ηλώνουμε στον parser τον handler: Handler handler = new Handler(); parser.setcontenthandler(handler); Τελικά, ο parser καλείται με όρισμα το αρχείο: parser.parse("hello.xml"); Όλα τα υπόλοιπα γίνονται στις μεθόδους του handler Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 47

48 SAX Handlers Ένας callback handler πρέπει να υλοποιεί 4 interfaces: interface ContentHandler Χειρίζεται βασικά parsing callbacks, π.χ. element starts και ends interface DTDHandler Χειρίζεται μόνο notation και unparsed entity declarations interface EntityResolver Χειρισμός των external entities interface ErrorHandler Πρέπει να υλοποιηθεί, διαφορετικά τα λάθη κατά το parsing θα αγνοούνται Το να υλοποιήσουμε όλα αυτά τα interfaces απαιτεί αρκετό κόπο Είναι ευκολότερο να χρησιμοποιήσουμε μια adapter class Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 48

49 Κλάση DefaultHandler Η DefaultHandler είναι ένας adapter από το package org.xml.sax.helpers Η DefaultHandler υλοποιεί τις ContentHandler, DTDHandler, EntityResolver, και ErrorHandler Η DefaultHandler παρέχει κενές μεθόδους για κάθε μέθοδο που δηλώνεται σε καθένα από τα interfaces Για να χρησιμοποιηθεί αυτή η κλάση, πρέπει να γίνει extend και να γίνουν override οι μέθοδοι που έχουν νόημα για την εκάστοτε εφαρμογή Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 49

50 Μέθοδοι της ContentHandler (1) public void startelement(string namespaceuri, String localname, String qualifiedname, Attributes atts) throws SAXException Αυτή η μέθοδος καλείται στην αρχή των elements Όταν το SAX καλεί την startelement, περνάει μια παράμετρο τύπου Attributes Οι ακόλουθες μέθοδοι ανακτούν attributes με βάση name αντί για index: public int getindex(string qualifiedname) public int getindex(string uri, String localname) public String getvalue(string qualifiedname) public String getvalue(string uri, String localname) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 50

51 Μέθοδοι της ContentHandler (2) public void endelement(string namespaceuri, String localname, String qualifiedname) throws SAXException Οι παράμετροι της endelement είναι οι ίδιες με εκείνες της startelement, εκτός από την παράμετρο Attributes που παραλείπεται public void characters(char[] ch, int start, int length) throws SAXException Το ch είναι ένα array από χαρακτήρες Τα περιεχόμενα του element είναι length (σε πλήθος) χαρακτήρες, ξεκινώντας από τον ch[start] Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 51

52 Error Handling Η διαχείριση λαθών (error handling) στο SAX είναι ασυνήθιστη Τα περισσότερα errors αγνοούνται αν δεν καθοριστεί ένας org.xml.sax.errorhandler error handler Errors που αγνοούνται μπορεί να προκαλέσουν μη αναμενόμενη συμπεριφορά Το ErrorHandler interface δηλώνει: public void fatalerror (SAXParseException exception) throws SAXException // XML not well structured public void error (SAXParseException exception) throws SAXException // XML validation error public void warning (SAXParseException exception) throws SAXException // minor problem Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 52

53 Προβλήματα του SAX To SAX παρέχει μόνο σειριακή προσπέλαση στο έγγραφο To SAX έχει μόνο μια τοπική γνώση του τρέχοντος element υπό επεξεργασία Καθολική γνώση που αφορά το parsing πρέπει να αποθηκεύεται σε καθολικές μεταβλητές Υπάρχει μία μόνο startelement() μέθοδος για όλα τα elements Άρα χρειάζονται πολλά if-then-else για τον έλεγχο ενός συγκεκριμένου element Όταν ένα element συναντιέται, ένα καθολικό flag τίθεται true Όταν ολοκληρωθεί η επεξεργασία του element το καθολικό flag τίθεται false Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 53

54 Streaming API for XML (StAX)

55 Τι Είναι το StAX; A streaming Java technology-based, eventdriven, pull-parsing API for reading and writing XML documents Το StAX επιτρέπει τη δημιουργία parsers που Είναι δύο κατευθύνσεων (bi-directional read/write) Είναι γρήγοροι Προγραμματίζονται σχετικά εύκολα εν καταναλώνουν πολλή μνήμη Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 55

56 Streaming vs. DOM Υπάρχουν δύο τρόποι (μοντέλα) προγραμματισμού για επεξεργασία XML πληροφορίας Streaming Το XML έγγραφο διαβάζεται δυναμικά και σειριακά κομμάτι-κομμάτι Μπορεί να παράγεται έξοδος κατά τη διάρκεια ανάγνωσης Χαμηλή κατανάλωση μνήμης Επειδή ανά πάσα στιγμή είναι διαθέσιμο στη μνήμη μόνο ένα μέρος του XML εγγράφου, προϋποθέτει εκ των προτέρων γνώση των περιεχομένων του XML εγγράφου Document Object Model (DOM) Αναπαράσταση στη μνήμη ολόκληρου του XML εγγράφου Πλήρης ελευθερία στην πρόσβαση οποιουδήποτε στοιχείου του εγγράφου Υψηλή κατανάλωση μνήμης Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 56

57 Pull Parsing vs. Push Parsing Push style Pull style SAX Parser Your App Your App StAX Parser Push parsing Ο parser στέλνει XML δεδομένα στην εφαρμογή, καθώς συναντά elements στο XML αρχείο Pull parsing Η εφαρμογή καλεί μεθόδους του parser, όταν χρειάζεται να αποκτήσει πρόσβαση σε δεδομένα του XML αρχείου Πλεονεκτήματα pull parsing Η εφαρμογή ελέγχει πλήρως το πρόγραμμα, καλώντας μεθόδους του parser όταν χρειαστεί Μικρότερος και ευκολότερος κώδικας υνατότητα ανάγνωσης πολλαπλών εγγράφων με μιας υνατότητα φιλτραρίσματος (elements που δεν χρειάζονται, αγνοούνται) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 57

58 Σύγκριση με άλλα JAXP APIs Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 58

59 StAX API Το StAX API παρέχει μεθόδους για επαναληπτική (iterative) και βασισμένη σε events (event-based) επεξεργασία XML εγγράφων Τα XML έγγραφα αντιμετωπίζονται σαν μια σειρά από events Καθώς χειριζόμαστε τα events, διατηρείται η κατάσταση για κομμάτια του XML εγγράφου Το StAX API αποτελείται από δύο διακριτά API To Cursor API To Iterator API Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 59

60 Cursor API Λειτουργεί όπως ένας δρομέας (cursor) που επιτρέπει την πρόσβαση σε ένα XML έγγραφο από την αρχή ως το τέλος του Ο δρομέας «δείχνει» σε ένα αντικείμενο κάθε φορά και κινείται πάντα προς τα εμπρός Υπάρχουν δύο βασικά interfaces XMLStreamReader XMLStreamWriter Το Cursor API μοιάζει αρκετά με το SAX Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 60

61 XMLStreamReader και XMLStreamWriter Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 61

62 Iterator API Το Iterator API αναπαριστά ένα stream XML δεδομένων σαν ένα σύνολο διακριτών events Τα events τα λαμβάνει η εφαρμογή (για την ακρίβεια τα ζητάει pull) Τα events παρέχονται από τον parser με τη σειρά που διαβάζεται το XML έγγραφο XMLEvent XMLEventReader XMLEventWriter Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 62

63 XMLEventReader και XMLEventWriter Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 63

64 Event types StartDocument StartElement EndElement Characters EntityReference ProcessingInstruction Comment EndDocument DTD Attribute Namespace Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 64

65 Σύγκριση Cursor με Iterator API Για εφαρμογές με περιορισμένη διαθέσιμη μνήμη (Java ME), το Cursor API παράγει μικρότερο και πιο αποδοτικό κώδικα Εάν αυτό που μας ενδιαφέρει είναι υψηλή απόδοση, το Cursor API είναι πιο αποδοτικό Εάν επιθυμούμε να επεξεργαζόμαστε XML με διασωληνωμένο τρόπο (XML processing pipelines), καλύτερο είναι το Iterator API Εάν θέλουμε να τροποποιήσουμε το event stream, τότε χρησιμοποιούμε το Iterator API Εάν επιθυμούμε η εφαρμογή να δέχεται διαφορετικούς τρόπους επεξεργασίας (pluggable processing of the event stream), επιλέγουμε το Iterator API Εάν δεν έχουμε κάποιο σημαντικό λόγο προτίμησης Χρησιμοποιούμε το Iterator API διότι είναι πιο ευέλικτο και επεκτάσιμο Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 65

66 Δημιουργία Αντικειμένων Πηγή: Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 66

67 XMLEventReader (1) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 67

68 XMLEventReader (2) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 68

69 XMLStreamReader (1) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 69

70 XMLStreamReader (2) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 70

71 XMLEventWriter (1) Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 71

72 XMLEventWriter (2) Παραγόμενο XML αρχείο Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 72

73 XMLStreamWriter Παραγόμενο XML αρχείο Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 73

74 Πηγές Αναφοράς W3C Document Object Model Java API for XML Processing (JAXP) Tutorial SAX project StAX tutorial Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 74

75 Δείγματα Κώδικα Διαχ.Δεδομένων στον ΠΙ, 7ο Εξάμηνο 75

Συντακτική ανάλυση εγγράφων XML µε Xerces

Συντακτική ανάλυση εγγράφων XML µε Xerces Συντακτική ανάλυση εγγράφων XML µε Xerces Σταύρος Πολυβίου Simple API for XML (SAX) ιεπαφή η οποία χρησιµοποιείται ευρέως και έχει υλοποιηθεί για διάφορους αναλυτές σύνταξης XML Η πλέον καθιερωµένη διεπαφή

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

XML related standards

XML related standards XML Handling XML related standards SAX (Simple API for XML) event-driven interface απλό γρήγορο διάτρεξη XML εγγράφου DOM (Document Object Model) tree-based representation αργό μνημοβόρο Αλλαγή δομής XML

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

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

Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL. Γιαννέλος Γιάννης ΑΜ: Μαρινέλλης Γιώργος ΑΜ:

Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL. Γιαννέλος Γιάννης ΑΜ: Μαρινέλλης Γιώργος ΑΜ: Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL Γιαννέλος Γιάννης ΑΜ:03108088 Μαρινέλλης Γιώργος ΑΜ:03108680 18 Μαΐου 2012 Εισαγωγή Το αντικείμενο της άσκησης είναι η χρήση της τεχνολογίας

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

Γλωσσική Τεχνολογία. HTML/XML Processing HTTP Services

Γλωσσική Τεχνολογία. HTML/XML Processing HTTP Services Γλωσσική Τεχνολογία HTML/XML Processing HTTP Services Περιεχόμενα HTML processing XML processing HTTP services URL parsing URL opening Content fetching Project HTML Processing 3 built-in modules: HTMLParser

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

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery ιαχείριση εδομένων στον Παγκόσμιο Ιστό Χρήστος ουλκερίδης

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

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

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

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

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

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-252 Αντικειµενοστρεφής Προγραµµατισµός Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Θέμα 1 Θέμα 2 Θέμα 3 Θέμα 4 Θέμα

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

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

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα

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

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

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

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

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

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

DOM. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

DOM. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών DOM Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

SGML (Standard Generalized Markup Language) HTML (HyperText Markup Language) XML (extensible Markup Language)

SGML (Standard Generalized Markup Language) HTML (HyperText Markup Language) XML (extensible Markup Language) SGML (Standard Generalized Markup Language) Γλώσσα για την περιγραφή της δομης και του περιεχομένου ηλεκτρονικών κειμένων Πλήρης Σύνθετη Δύσκολη στην εκμάθηση και την χρήση HTML (HyperText Markup Language)

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

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

4. Συνδεδεμένες Λίστες

4. Συνδεδεμένες Λίστες Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 4. Συνδεδεμένες Λίστες 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 10/11/2016 Εισαγωγή

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

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

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

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

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

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

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

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 3/4/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Γιατί έλεγχος πρόσβασης? Προστασία ιδιωτικής πληροφορίας

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath

3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Επερώτηση XML Εγγράφων: Η Γλώσσα XPath ιαχείριση εδομένων στον Παγκόσμιο Ιστό Χρήστος ουλκερίδης Τμήμα

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

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

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

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

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

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

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

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

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

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 11: Χειρισμός Σφαλμάτων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές

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

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

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

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

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

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

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη 9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή

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

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

Δομές Δεδομένων - Εργαστήριο 2. Λίστες Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

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

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

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

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

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

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

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1 HelloWorld Παύλος Εφραιμίδης Java Το πρόγραμμα HelloWorld 1 Το πρόγραμμα HelloWorld.java Σχόλια στη Java /** * The HelloWorld class */ class HelloWorld { public static void main(string[] args) { System.out.println("Hello

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

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

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

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

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

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

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

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

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

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

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

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

6. Εξαιρέσεις στη γλώσσα Java

6. Εξαιρέσεις στη γλώσσα Java 6. Εξαιρέσεις στη γλώσσα Java Με το τέλος αυτού του κεφαλαίου θα μπορείτε: Να ορίζετε εξαιρέσεις Να εξηγείτε γιατί είναι σημαντικός ο χειρισμός των εξαιρέσεων Να γράφετε κώδικα για να συλλαμβάνετε εξαιρέσεις

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

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

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 Constructors (Κατασκευαστές) Ειδικός τύπος μεθόδων που δημιουργούν αντικείμενα μιας κλάσης και: Εκτελούνται κατά την αρχικοποίηση των αντικειμένων

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( ) ΣΥΜΒΟΛΟΣΕΙΡΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Ο τύπος string Μετατροπή από και προς τον τύπο string Βασικές μέθοδοι Χρήση Ελληνικών Συναρτήσεις C εκτύπωσης και ανάγνωσης Τελευταία

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

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

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record) Διαχείριση Αρχείων Αρχεία Για να είναι δυνατή η επεξεργασία μεγάλου αριθμού δεδομένων τα δεδομένα είναι αποθηκευμένα σε ψηφιακά μέσα κατάλληλα οργανωμένα. Η αποθήκευση γίνεται σε αρχεία. Πολλά προγράμματα

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

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

Τι είναι η Spring. Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως:

Τι είναι η Spring. Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως: Spring Framework Τι είναι η Spring Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως: Ελαφρύς τμηματοκεντρικός περιέκτης ο οποίος εφαρμόζει παθητική

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

ASPA: A translator from ASP to PHP

ASPA: A translator from ASP to PHP :Μεταφραστής από ASP σε PHP : A translator from ASP to PHP Ανακρέων Μεντής anakreonmejdi@yahoo.gr http://daemon.di.uoa.gr/daemon/issue10 http://storm.cs.unipi.gr/ anakreon/aspa.html Ιούλιος 2004 1 Λίγα

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Συλλογή απορριμμάτων Συλλογή απορριμμάτων (Garbage

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

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

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

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

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

Πανεπιστηµιο Πειραιως Σχολη Τεχνολογιων Πληροφορικης και Επικοινωνιων Τµηµα Ψηφιακων Συστηµατων οµές εδοµένων η Εργασία

Πανεπιστηµιο Πειραιως Σχολη Τεχνολογιων Πληροφορικης και Επικοινωνιων Τµηµα Ψηφιακων Συστηµατων οµές εδοµένων η Εργασία Πανεπιστηµιο Πειραιως Σχολη Τεχνολογιων Πληροφορικης και Επικοινωνιων Τµηµα Ψηφιακων Συστηµατων οµές εδοµένων 2015-2016 1η Εργασία Χρήστος ουλκερίδης Ορέστης Τελέλης 1 Περιγραφή Στην εργασία καλείστε να

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

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

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

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

άσκηση Hide UI Elements 7.2 Try and Catch

άσκηση Hide UI Elements 7.2 Try and Catch 7.1 Hide UI Elements Στο Android Studio όταν θέλουμε να κρύψουμε οτιδήποτε (κάποιο Button, ένα TextView, ένα ImageView κλπ) μπορούμε να χρησιμοποιήσουμε την παρακάτω εντολή: setvisibility(view.invisible)

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

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

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012

HY-252 Αντικειμενοστραφής Προγραμματισμός. Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης. Ημερομηνία Παράδοσης: 16/11/2012 HY-252 Αντικειμενοστραφής Προγραμματισμός Χειμερινό Εξάμηνο 2012 Διδάσκων: Χριστοφίδης Βασίλης 2 η Σειρά Ασκήσεων Ημερομηνία Παράδοσης: 16/11/2012 Παρακάτω σας δίνονται οι ορισμοί τεσσάρων διαφορετικών

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

ιαδικτυακές Εφαρµογές

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Μαθήματα από τα εργαστήρια ΕΡΓΑΣΤΗΡΙΟ 1 Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial Introduction Το Javadoc είναι ένα εργαλείο που παράγει αρχεία html (παρόμοιο με τις σελίδες στη διεύθυνση http://docs.oracle.com/javase/8/docs/api/index.html) από τα σχόλια

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

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