1 / 81

Βάσεις Δεδομένων II

Βάσεις Δεδομένων II. Αντικειμενοστρεφείς Βάσεις Δεδομένων Πάνος Βασιλειάδης. Περιεχόμενα. Βασικές έννοιες αντικειμενοστρεφούς μοντέλου Ταυτότητα αντικειμένου Ενθυλάκωση Τύποι και Κλάσεις Collection Types – Σύνθετα Αντικείμενα Κληρονομικότητα Λειτουργίες & Περιορισμοί ODMG-93.

marja
Download Presentation

Βάσεις Δεδομένων II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ΒάσειςΔεδομένων II Αντικειμενοστρεφείς Βάσεις Δεδομένων Πάνος Βασιλειάδης

  2. Περιεχόμενα • Βασικές έννοιες αντικειμενοστρεφούς μοντέλου • Ταυτότητα αντικειμένου • Ενθυλάκωση • Τύποι και Κλάσεις • Collection Types – Σύνθετα Αντικείμενα • Κληρονομικότητα • Λειτουργίες & Περιορισμοί • ODMG-93 Μοντέλο Αντικειμένων Object Definition Language Object Query Language Language Bindings

  3. Περιεχόμενα • Βασικές έννοιες αντικειμενοστρεφούς μοντέλου • Ταυτότητα αντικειμένου • Ενθυλάκωση • Τύποι και Κλάσεις • Collection Types – Σύνθετα Αντικείμενα • Κληρονομικότητα • Λειτουργίες & Περιορισμοί • ODMG-93 Μοντέλο Αντικειμένων Object Definition Language Object Query Language Language Bindings

  4. Αντικειμενοστρεφής Προγραμματισμός – Object Oriented Programming (OOP) «μοντελοποίηση του λογισμικού και κάποιες αρχές ανάπτυξης που διευκολύνουν την κατασκευή σύνθετων συστημάτων από ξεχωριστά συστατικά» • Object-Oriented(ΟΟ) = αντικειμενοστρεφής, οντολογικός, προσανατολισμένος στα αντικείμενα • ΟΧΙ αντικειμενοστραφής

  5. Αντικειμενοστρεφής Προγραμματισμός • Η βασική ιδέα πίσω από τον OOP: οι οντότητες προσδιορίζονται από τις λειτουργίες τους! • Ερώτηση: Ποια η βασική ιδέα πίσω από το μοντέλο οντοτήτων-συσχετίσεων, το σχεσιακό μοντέλο, τον δομημένο προγραμματισμό... ?? Οντότητες OOP = αντικείμενα

  6. Αντικείμενα Αντικείμενο είναι μια ξεχωριστή οντότητα, που προσπαθεί να μοντελοποιήσει και να προσεγγίσει όσον το δυνατό καλύτερα, το φυσικό κόσμο. • Συγκριτικά, ότι και μια εγγραφή (πλειάδα) στο σχεσιακό μοντέλο

  7. Αντικείμενα Αντικείμενο  συμπεριφορά • Η συμπεριφορά καθορίζεται από τη διαπροσωπεία (interface) του αντικειμένου, ήτοι, από ένα σύνολο λειτουργιών τις οποίες το αντικείμενο μπορεί να επιτελέσει • Η συμπεριφορά καθορίζεται ακόμα, και από τις συγκεκριμένες τιμές που έχουν τα χαρακτηριστικά του αντικειμένου. Το διάνυσμα αυτών των τιμών είναι η τιμήτου αντικειμένου

  8. Αντικείμενα • Τα χαρακτηριστικά των αντικειμένων ονομάζονται instance variables (ελληνιστί, πεδία, χαρακτηριστικά, μεταβλητές, ...). • Η υλοποίηση μιας λειτουργίας της διαπροσωπείας ενός αντικειμένου ονομάζεται μέθοδος (το αντίστοιχο των συναρτήσεων). • Η κλήση μιας λειτουργίας ενός αντικειμένου, ονομάζεται αποστολή μηνύματος στο αντικείμενο

  9. Ένα μοντέλο ΒΔ που σέβεται τον εαυτό του διαθέτει ... • Οντότητες (που περιγράφουν τη δομή των δεδομένων) • Λειτουργίες (που περιγράφουν πώς μπορούμε να επεξεργαστούμε τα δεδομένα) • Περιορισμούς ακεραιότητας (που εγγυώνται την αξιοπιστία των δεδομένων και την καλή ποιότητα της δικής μας σχεδίασης) Εμείς θα επικεντρώσουμε στη δομή του ΟΟ μοντέλου για ΒΔ– δε σημαίνει όμως ότι τα υπόλοιπα είναι δευτερεύοντα...

  10. Για προχωρημένους ... • Ο όρος «μοντέλο» είναι ατυχής. Ο κανονικός όρος είναι «μεταμοντέλο» (π.χ., με βάση το σχεσιακό μεταμοντέλο, φτιάχνουμε τα δικά μας μοντέλα = τα σχήματα των ΒΔ που υλοποιούμε κάθε φορά) • Μια database (κανονικά, γράφεται database) • χωρίς περιορισμούς ακεραιότητας = data dump (αχούρι, σκουπιδότοπος) • χωρίς λειτουργίες = data graveyard (νεκροταφείο)

  11. Δομή των αντικειμένων • Ταυτότητα αντικειμένου • Ενθυλάκωση • Τύποι και Κλάσεις • Σύνθετοι Τύποι • Ιεραρχίες Κλάσεων – Κληρονομικότητα • Πολυμορφισμός – Late Binding

  12. Περιεχόμενα • Βασικές έννοιες αντικειμενοστρεφούς μοντέλου • Ταυτότητα αντικειμένου • Ενθυλάκωση • Τύποι και Κλάσεις • Collection Types – Σύνθετα Αντικείμενα • Κληρονομικότητα • Λειτουργίες & Περιορισμοί • ODMG-93 Μοντέλο Αντικειμένων Object Definition Language Object Query Language Language Bindings

  13. OID – Object Identity • Ταυτότητα Αντικειμένου: προσδιορίζει ένα αντικείμενο μονοσήμαντα στην ΒΔ • Δεν αλλάζει ποτέ – συνυπάρχει με το αντικείμενο για όλη τη διάρκεια ζωής του αντικειμένου (object’s lifetime) • Απονέμεται από το σύστημα και είναι κρυμμένο από το χρήστη • Πιο προφανής χρήση: υλοποίηση αναφορών (μοίρασμα και ενημερώσεις αντικειμένων)

  14. OID – Object Identifier OID: OID12 Name: Πέτρος Age: 40 Children: {OID15} OID: OID13 Name: Μαρία Age: 41 Children: {OID15} Ο Πέτρος και η Μαρία έχουν το ίδιοπαιδί OID: OID15 Name: Γιάννης Age: 15 Children: {} OID: OID105 Name: Γιάννης Age: 105 Children: {}

  15. Περιεχόμενα • Βασικές έννοιες αντικειμενοστρεφούς μοντέλου • Ταυτότητα αντικειμένου • Ενθυλάκωση • Τύποι και Κλάσεις • Collection Types – Σύνθετα Αντικείμενα • Κληρονομικότητα • Λειτουργίες & Περιορισμοί • ODMG-93 Μοντέλο Αντικειμένων Object Definition Language Object Query Language Language Bindings

  16. Ενθυλάκωση (Encapsulation) • OOPδιάκριση μεταξύ καθορισμού και υλοποίησης μιας εφαρμογής, ήτοι, ... • Interface vs. Implementation object = interface part + implementation part

  17. Ενθυλάκωση (Encapsulation) • object = interface part + implementation part • Τμήμα Διαπροσωπείας = ο ορισμός των λειτουργιών που μπορεί να επιτελέσει το αντικείμενο (πρβλ., υπογραφή συναρτήσεων) • Τμήμα Υλοποίησης = η αναπαράσταση του αντικειμένου (όπως π.χ., σε ένα struct στη C) + η υλοποίηση των λειτουργιών (π.χ., ο κώδικας μιας συνάρτησης), ήτοι, implementation part = (data part + procedural part)

  18. Ενθυλάκωση (Encapsulation) • Σχεσιακό μοντέλο: αν είχαμε τον πίνακα CAR_FACTORY[NAME,CAPACITY,ADDRESS], η εφαρμογή RAISE_CAPACITY(PERCENTAGE)θα ήταν ένα εξωτερικό πρόγραμμα • ΟΟ: CAR_FACTORY[NAME,CAPACITY,ADDRESS, RAISE_CAPACITY(PERCENTAGE)]

  19. Ενθυλάκωση (Encapsulation) • Interface Part:RAISE_CAPACITY(PERCENTAGE) • Data Part:NAME,CAPACITY,ADDRESS • Implementation Part: RAISE_CAPACITY(PERCENTAGE){ return CAPACITY * (1+ PERCENTAGE); }

  20. Ενθυλάκωση (Encapsulation) • Καμιά λειτουργία πέραν αυτών που καθορίστηκαν στο τμήμα διαπροσωπείας δεν μπορεί να εκτελεστεί! • Για το προηγούμενο παράδειγμα, • το ΜΟΝΟ που μπορώ να κάνω είναι να αυξήσω την παραγωγή. • ΔΕΝ ΜΠΟΡΩ να ορίσω τιμή στο όνομα, ή να ρωτήσω ποια είναι η δ/ση του εργοστασίου

  21. Ενθυλάκωση (Encapsulation) • Ενσωματώνει, εκτός από δεδομένα, και λειτουργίες στα αντικείμενα • Αποκρύπτει τον τρόπο υλοποίησης των μεθόδων, οπότε, απεξαρτά τη διαχείριση του αντικειμένου από τη δομή του, • Επιβάλει τη διαχείριση του κάθε αντικειμένου, αυστηρά και μόνο από τις δικές του μεθόδους*, μέσω των αντίστοιχων μηνυμάτων. * Πολλές φορές θα δείτε τον όρο «μέθοδος» να χαρακτηρίζει το interface part …

  22. Ενθυλάκωση (Encapsulation) • Από το μάθημα Γλωσσών Προγραμματισμού: θυμάστε τη διαφορά μεταξύ • Private, • Public, • Protected πεδίων ?

  23. class Square{ private: int height, width; public: Square(int, int); ~Square(); int area(void); }; Square::Square(int ht, int wd) { height = ht; width = wd; } Square::~Square() { } int Square::area(){ return height*width; } Από C++ …

  24. Περιεχόμενα • Βασικές έννοιες αντικειμενοστρεφούς μοντέλου • Ταυτότητα αντικειμένου • Ενθυλάκωση • Τύποι και Κλάσεις • Collection Types – Σύνθετα Αντικείμενα • Κληρονομικότητα • Λειτουργίες & Περιορισμοί • ODMG-93 Μοντέλο Αντικειμένων Object Definition Language Object Query Language Language Bindings

  25. Τύποι και Κλάσεις • Τύποι • Αντιστοιχούν σε αφηρημένους τύπους δεδομένων (abstract data types), ήτοι, • Αποτελούνται από interface part και implementation part • Έχουν τιμές (values) ως στιγμιότυπα Διαισθητικά, πρόκειται για «καλούπια» αντικειμένων (για την ακρίβεια: τιμών), π.χ., σαν structs επεκτεταμένα με μεθόδους ...

  26. Τύποι και Κλάσεις • Κλάσεις • Ομαδοποιούν αντικείμενα με ίδιες σημασιολογικές ιδιότητες • Χτίζονται πάνω σε τύπους • Έχουν αντικείμενα ως στιγμιότυπα Διαισθητικά, πρόκειται για «συλλογές» αντικειμένων, π.χ., σαν σχεσιακοί πίνακες, των οποίων το σχήμα προκύπτει από ένα τύπο ...

  27. Τύποι καιΚλάσεις

  28. Τιμές καιΑντικείμενα

  29. Τύποι και Κλάσεις add class Monument type tuple(name: string, address: Address, description: string, closing_days: list(string), admission_fee: integer) add methodincrease_fee(amount: integer) in class Monument

  30. Τύποι και Κλάσεις • Οι τύποι μοντελοποιούν τη δομική ομοιότητα κάποιων τιμών, ενώ οι κλάσεις μοντελοποιούν τη σημασιολογική ομοιότητα αντικειμένων • Στην πράξη (π.χ., στα συστήματα ή στα στάνταρτ): η διάκριση αυτή είναι ορατή, αν και πρακτικά όχι μεγάλη!

  31. Τύποι και Κλάσεις • Τύποι και Κλάσεις στην Πληροφορική γενικότερα: • Τεχνητή Νοημοσύνη: η διάκρισή τους είναι σημαντική (π.χ., οντολογίες) • Γλώσσες Προγραμματισμού: δεν έχουν μεγάλη διαφορά, συνήθως δεν τα διακρίνουμε

  32. Περιεχόμενα • Βασικές έννοιες αντικειμενοστρεφούς μοντέλου • Ταυτότητα αντικειμένου • Ενθυλάκωση • Τύποι και Κλάσεις • Collection Types – Σύνθετα Αντικείμενα • Κληρονομικότητα • Λειτουργίες & Περιορισμοί • ODMG-93 Μοντέλο Αντικειμένων Object Definition Language Object Query Language Language Bindings

  33. Collection Types • Σύνολα (Sets) αντικειμένων • Πολυσύνολα (Bags) αντικειμένων = σύνολα με διπλοεγγραφές • Λίστες (Lists) αντικειμένων = διατεταγμένα πολυσύνολα • Πίνακες (Arrays) αντικειμένων = λίστες πεπερασμένου μεγέθους • Πλειάδες (Tuples) αντικειμένων = παράθεση αντικειμένων, με συγκεκριμένο τρόπο

  34. Collection Types • Οι σύνθετοι τύποι είναι ορθογώνιοι: οποιοσδήποτε από αυτούς μπορεί να εφαρμοστεί σε ένα αντικείμενο, μια τιμή, ή ένα σύνθετο τύπο. tuple[set{string},set{integer},bag{string}] • Μάλλον καλύτερη μετάφραση: «τύποι συλλογών»

  35. Σύνθετα Αντικείμενα • Δομές αντικειμένων με σχέση Part-Of • Η ύπαρξη ενός αντικειμένου εξαρτάται από την ύπαρξη ενός άλλου • Υλοποιούνται είτε με φώλιασμα των αντικειμένων, είτε με αναφορές

  36. Σύνθετα Αντικείμενα OID: OID10 Name: Μαμά Καγκουρό Age: 4 Children: { [OID: OID15 Name: Μωρό Κ. Age: 0.5 Children: {}] } OID: OID12 Name: Πέτρος Age: 40 Children: {OID15} OID: OID15 Name: Γιάννης Age: 15 Children: {}

  37. Σύνθετα Αντικείμενα H ίδια αναφορά έχει και την ευθεία και την ανάστροφη φορά (inverse) OID: OID12 Name: Πέτρος Age: 40 Father: NULL Children: {OID15} Children OID: OID15 Name: Γιάννης Age: 15 Father: OID12 Children: {} Father

  38. Περιεχόμενα • Βασικές έννοιες αντικειμενοστρεφούς μοντέλου • Ταυτότητα αντικειμένου • Ενθυλάκωση • Τύποι και Κλάσεις • Collection Types – Σύνθετα Αντικείμενα • Κληρονομικότητα • Λειτουργίες & Περιορισμοί • ODMG-93 Μοντέλο Αντικειμένων Object Definition Language Object Query Language Language Bindings

  39. Ιεραρχίες Τύπων και Κλάσεων • Κληρονομικότητα (Inheritance): • Κατασκευάζουμε ένα δέντρο (ιεραρχία) κλάσεων. • Κάθε κλάση που είναι κόμβος του δέντρου «κληρονομεί», από την πατρική της κλάση όλα τα δομικά και λειτουργικά χαρακτηριστικά της -τις instance variables και τις μεθόδους, δηλαδή. • Στα χαρακτηριστικά αυτά, κάθε κλάση νομιμοποιείται να προσθέσει τα δικά της χαρακτηριστικά και λειτουργίες. • Οι ιεραρχίες αφορούν και τύπους και κλάσεις

  40. Vehicle - Name - Weight - Color + GetName() + GetWeight + GetColor() FourWheels - MaxVelocity +GetMaxVelocity() Bike - NumSpeeds +GetNumSpeeds() Van - MaxCargo +GetMaxCargo() Car - NumDoors +GetNumDoors() Ιεραρχίες Τύπων και Κλάσεων

  41. Ιεραρχίες Τύπων και Κλάσεων • Η ιεραρχία των κλάσεων πρέπει να σέβεται την ιεραρχία των τύπων • Πολλαπλή κληρονομικότητα (Multiple Inheritance): μια κλάση έχει περισσότερους από έναν προγόνους • Αφηρημένη κλάση (abstract class): απαγορεύεται να έχει στιγμιότυπα

  42. Υπερφόρτωση και πολυμορφισμός • Υπερφόρτωση (overloading): Το φαινόμενο όπου δύο μηνύματα, σε διαφορετικές κλάσεις, συμφωνούν στο interface τους • Υπέρβαση (overriding): Το φαινόμενο όπου κάποιο μήνυμα υλοποιείται με διαφορετική μέθοδο στην κορυφή της ιεραρχίας, απ’ ότι σε κάποιο χαμηλότερο επίπεδο

  43. Vehicle - Name - Weight - Color + GetName() + GetWeight + GetColor() FourWheels - MaxVelocity +GetMaxVelocity() Bike - NumSpeeds +GetNumSpeeds() Van - MaxCargo +GetMaxCargo() +GetWeight() Car - NumDoors +GetNumDoors() Υπερφόρτωση και πολυμορφισμός

  44. Υπερφόρτωση και πολυμορφισμός • Late Binding: Για να υποστηριχθεί η υπέρβαση, τα ονόματα των λειτουργιών "επιλύονται" (resolved) -μεταφράζονται σε διευθύνσεις- στο χρόνο εκτέλεσης • Πολυμορφισμός (polymorphism):Το φαινόμενο όπου διαφορετικά αντικείμενα (ή κλάσεις) αντιδρούν με διαφορετικό τρόπο στο ίδιο μήνυμα

  45. Τυπικός ορισμός αντικειμένου Αντικείμενο = [OID, τιμή, κατάσταση, κλάση] • OID = μοναδικός προσδιοριστής • Τιμή = διάνυσμα τιμών των instance variables + τιμές επιστροφής των μεθόδων (public) • Κατάσταση = διάνυσμα τιμών των instance variables βάσει του τύπου στον οποίο δομείται το αντικείμενο(private) • Κλάση = η κλάση στην οποία ανήκει το αντικείμενο

  46. Τυπικός ορισμός κλάσης • όνομα κλάσης, • τύπος της τιμής των στιγμιοτύπων, • τύπος της κατάστασης των στιγμιοτύπων, • {μηνύματα στιγμιοτύπων}, • {μέθοδοι στιγμιοτύπων}, • τιμή της κλάσης, • κατάσταση της κλάσης, • {μηνύματα της κλάσης}, • {μέθοδοι της κλάσης} • τύπος της τιμής της κλάσης, • τύπος της κατάστασης της κλάσης Η κλάση είναι μια συλλογή στιγμιοτύπων αλλά είναι κι η ίδια ένα αντικείμενο οπότε ανήκει κι αυτή σε μια μετα-κλάση

  47. Από το σύστημα O2 add class City with extension type tuple(name: string, map: Bitmap, hotels: set(Hotel)) add class Monument type tuple(name: string, address: Address, description: string, closing_days: list(string), admission_fee: integer)

  48. Από το σύστημα O2 add class Address type tuple(street: string, city: City) add class Hotel type tuple(name: string, address: Address, facilities: list(string), stars: integer, rate: float)

  49. Από το σύστημα O2 add name Eiffel_tower: Monument, ήισοδύναμαEiffel_tower = new(Monument) add method increase_fee(amount: integer) in class Monument is private add class Historical_hotel inherits Monument, Hotel add method print_height(amount: float) in object Eiffel_tower

  50. Από το σύστημα GemStone (που ακολουθεί το παράδειγμα της Smalltalk) Object subclass: 'Department' instVarNames: #('dptID' 'dptName' 'SubDpts' 'BelongsTo' 'manager') classVars: #() constraints: #[ #[#dptID, Integer], #[#dptName, String], #[#manager, String]]. method: Department dptName ^dptName %

More Related