Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ"— Μεταγράφημα παρουσίασης:

1 ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
ΠΑΝΕΠΙΣΤΗΜΙΟ αΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ 4η Διάλεξη (γ) Κ.ΑΛΑΦΟΔΗΜΟΣ καθηγητής Δ.Παπαχρήστος μέλος ΕΔΙΠ ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ

2 Σκοπός Διάλεξης η παράθεση βασικών εννοιών & ορισμών τoυ Αντικειμενοστραφή Προγραμματισμού

3 Αντικειμενοστραφής Προγραμματισμός
Δομημένος Προγραμματισμός Ο δομημένος προγραμματισμός (structured programming) βασίζεται στην οργάνωση του προγράμματος σε μικρές, αυτόνομα κατανοητές, οντότητες Για να επιτευχθεί αυτό κάθε οντότητα έχει ένα σημείο εισόδου και ένα σημείο εξόδου Η δομή του προγράμματος βασίζεται σε τρεις μόνο λογικές δομές: ακολουθία (sequence) επιλογή (condition) επανάληψη (repetition) Με τη χρήση των παραπάνω δομών μπορεί να εκφραστεί οποιοσδήποτε αλγόριθμος Σε περιπτώσεις που η σχολαστική τήρηση των παραπάνω κάνει το πρόγραμμα δυσανάγνωστο πρέπει οι εξαιρέσεις να κωδικοποιούνται δομημένα, τεκμηριωμένα, με οικονομία στη χρήση τους, και με τάξη

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

5 Αντικειμενοστραφής Προγραμματισμός
Μειονεκτήματα (-) Η πολυπλοκότητα Τα δεδομένα έχουν υποεκτιμηθεί Η τοπικότητα των μεταβλητών Υπάρχουν οι καθολικές αλλά τότε αυξάνει η  πολυπλοκότητα Αυξημένη πιθανότητα λάθους Αυξημένη πολυπλοκότητα και στη διαχείριση των δεδομένων Η δημιουργία νέων τύπων δεδομένων είναι  δύσκολη

6 Αντικειμενοστραφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός, ΑΠ (object oriented programming, ΟΟΡ) προγραμματιστική τεχνική έμφαση στη  δημιουργία μονάδων οι οποίες  θα  περιλαμβάνουν τα δεδομένα αλλά και  τις εντολές που τα διαχειρίζονται βασίζεται στα αντικείμενα (object) και στις αλληλεπιδράσεις μεταξύ τους

7 Αντικειμενοστραφής Προγραμματισμός
Ο κόσμος αποτελείται από αντικείμενα απλά ή  σύνθετα, που αλληλεπιδρούν μεταξύ τους που αλληλεπιδρούν μεταξύ τους Για κάθε αντικείμενο του φυσικού κόσμου  μπορούμε να ορίσουμε, μια αφηρημένη έννοια που  περιγράφει: - τον τρόπο με τον οποίο το αντικείμενο  επικοινωνεί μετο περιβάλλον του - το πώς αυτό είναι οργανωμένο εσωτερικά ο ΑΠ ονομάζει στιγμιότυπα (instances) τα  πραγματικά αντικείμενα και κλάσεις (classes) τις  αφηρημένες έννοιες που τα περιγράφουν.

8 Αντικειμενοστραφής Προγραμματισμός
Κλάσεις κα αντικείμενα είναι οι δύο κύριες πτυχές του αντικειμενοστραφή προγραμματισμού Η κλάση δημιουργεί ένα νέο τύπο, όπου τα αντικείμενα είναι στιγμιότυπα της κλάσης Κλάση: Προγραμματιστής Η/Υ Στιγμιότυπο: Δ.Παπαχρήστος Κλάση: Γλώσσα Προγραμματισμού Στιγμιότυπο: Python

9 Αντικειμενοστραφής Προγραμματισμός
Κλάσεις Αντικείμενα ή στιγμιότυπα

10 Αντικειμενοστραφής Προγραμματισμός
Διαθέτει μηχανισμούς: απόκρυψης πληροφορίας περάσματος μηνυμάτων  δημιουργίας και καταστροφής  στιγμιοτύπων  αναπαράστασης ιεραρχίας κληρονομικότητας 

11 Αντικειμενοστραφής Προγραμματισμός
Οι μηχανισμοί αυτοί βελτιώνουν την  ποιότητα  του λογισμικού ως προς τα  χαρακτηριστικά του: επαναχρησιμοποίηση (reusability) επεκτασιμότητα (extendibility) ορθότητα (correctness) ευρωστία (robustness) συντηρησιμότητα (maintainability)

12 Αντικειμενοστραφής Προγραμματισμός
Βασικά χαρακτηριστικά ΑΠ

13 Αντικειμενοστραφής Προγραμματισμός
Κλάση στην Python: H κλάση card() αφορά «θεωρητικά» μια τράπουλα: Τα c1 & c2 είναι μεταβλητές που παίρνουν ως τιμή αυτό που επιστρέφει η card() Η card() είναι μια «μηχανή» που φτιάχνει τραπουλόχαρτα

14 Αντικειμενοστραφής Προγραμματισμός
Για να αποκτήσουν τα τραπουλόχαρτα τιμή – αξία πρέπει να γραφτεί πάνω τους μέσω dot notation ορίζοντας χαρακτηριστικά (ιδιότητες) και τιμές: c1: 5 καρώ (d=diamond), κόκκινο (R=red) όχι φιγούρα (c1.fig=False) c2: 5 ρήγας (K=King), σπαθί (c=club) μαύρο (B-black) & φιγούρα (c2.fig=True)

15 Αντικειμενοστραφής Προγραμματισμός
Πλέον μπορεί να χρησιμοποιηθούν αυτές οι τιμές: Πρόγραμμα «τραπουλομηχανής» όπου κάνουμε χρήση συνάρτησης (def) όπου δέχεται τις δύο παραμέτρους (value, symbol) και υπολογίζει τις άλλες δύο (color, fig):

16 Αντικειμενοστραφής Προγραμματισμός
Όνομα συνάρτησης: _init_ (ειδικές συναρτήσεις) Καθορίζει πως θα συμπεριφέρονται τα αντικείμενα που θα δημιουργεί η κλάση Ορίζει επακριβώς τι γίνεται μόλις δημιουργηθεί ένα αντικείμενο Η ονομασία “self” χρησιμοποιείται γιατί δεν γνωρίζει πως θα ονομασθεί το αντικείμενο (c1 ή c2) Συνεπώς : c1=card(‘5’,’d’) -> self=c1 , val=‘5’ , sym = ‘d’

17 Αντικειμενοστραφής Προγραμματισμός
στη συνέχεια θα εκτελεστούν οι 2 πρώτες εντολές της συνάρτησης _init_ : και θα δοθούν τιμές στην c1.value & c1.symbol έτσι στις επόμενες εντολές υπολογίζονται οι τμές των c1.color & c1.fig: η κλάση card() δεν περιλαμβάνει τις παραμέτρους κατά τον ορισμό της κλάσης γιατί χρησιμοποιείται για άλλο σκοπό δηλ. να ορίσει κληρονομικότητα από άλλες κλάσεις

18 Αντικειμενοστραφής Προγραμματισμός
Μπορούμε να τυπώνουμε τις τμές όλων των ιδιοτήτων των αντικειμένων που ορίζουμε: Αν τυπώσουμε το ίδιο το αντικείμενο, παίρνουμε μόνο αναφορές στις διευθύνσεις μνήμης σην οποία βρίσκονται:

19 Αντικειμενοστραφής Προγραμματισμός
Κάθε αντικείμενο μπορούμε να το φανταστούμε σαν ένα κουτί που περιέχει τιμές για διάφορες ιδιότητες, ενδεχομένως συναρτήσεις/μεθόδους, ακόμα και άλλα αντικείμενα/κουτιά

20 Αντικειμενοστραφής Προγραμματισμός
Η __str__ δεν χρειάζεται άλλη παράμετρο παρά μόνο το αντικείμενο (self) πάντα επιστρέφει ένα αλφαριθμητικό (string) Εδώ επιστρέφει το self.value+self.symbol Συνεπώς μπορούμε πλέον να δώσουμε:

21 Αντικειμενοστραφής Προγραμματισμός
εκτός από τις ειδικές συναρτήσεις μπορούμε να προσθέσουμε μέσα στην κλάση δικές μας συναρτήσεις οι οποίες θα καλούνται ως μέθοδοι με dot notation:

22 Αντικειμενοστραφής Προγραμματισμός
Δημιουργία νέας κλάσης που θα δημιουργεί πλήρεις τράπουλες με όλα τα τραπουλόχαρτα Μια κλάση μπορεί να καλέσει αντικείμενα άλλης κλάσης

23 Αντικειμενοστραφής Προγραμματισμός
4 μεταβλητές μέσα στην κλάση deck αλλά έξω από τις μεθόδους (για να τις προσπελάσει μια μέθοδος θα πρέπει να τις καλέσει με dot notation από το αντικείμενο self, πχ. self.values) Η values περιέχει σε ένα αλφαριθμητικό όλες (13) τις πιθανές αξίες ενός τραπουλόχαρτου στην __init__συνδυάζουμε τις 13 αξίες με τα 4 σύμβολα για να φτιάξουμε όλα τα 13x4=52 τραπουλόχαρτα τα αποθηκεύουμε σε μία λίστα (content) που γεμίζει από την __init__ η λίστα pile χρησιμοποιείται ως μνήμη για να «θυμάται» η τράπουλα ποιά φύλλα έχει μοιράσει (δεν είναι απαραίτητη, όμως διευκολύνει όταν τελειώσει ένα παιχνίδι και θα πρέπει να ξανασυγκεντρωθούν όλα τα χαρτιά στην τράπουλα για να αρχίσει το επόμενο η μέθοδος collect() μαζεύει τα τραπουλόχαρτα από την pile

24 Αντικειμενοστραφής Προγραμματισμός
Η __init__ έχει μόνο ένα όρισμα, το self για να δημιουργήσουμε μια τράπουλα δεν δίνουμε καμμία παράμετρο στην deck: >>> d=deck() Το πρώτο for περνάει από όλα τα σύμβολα, το δεύτερο από όλες τις αξίες, και η c=card(v,s) δημιουργεί ένα τραπουλόχαρτο το οποίο μπαίνει στο τέλος της content με την κλήση self.content.append(c) Όταν τελειώσουν οι δύο for όλα τα τραπουλόχαρτα θα είναι με τη σειρά στη λίστα content τον τρόπο εκτύπωσης καθορίζει η __str__:

25 Αντικειμενοστραφής Προγραμματισμός
Ανακάτεμα τράπουλας (καλεί μια μέθοδο με όμοιο όνομα από το module random για αυτό δηλώνουμε import την random στην αρχή του κώδικα) Μοίρασμα φύλου (χρήση μεθόδου draw() που έχει προγραμματιστεί στην κλάση και όταν καλείται επιστρέφει το φύλλο που βρίσκεται πρώτο (self.content[0]) στην τράπουλα, εκτός αν είναι άδεια, οπότε επιστρέφει «empty». Το φύλλο αφαιρείται από τη λίστα content και ένα αντίγραφό του αποθηκεύεται στην pile)

26 Αντικειμενοστραφής Προγραμματισμός
Η μέθοδος collect() προσθέτει την pile στο τέλος της content και μετά αδειάζει την pile Με αυτόν τον τρόπο ξανασυγκεντρώνει όλα τα φύλλα της τράπουλας για να ξεκινήσει νέο παιχνίδι

27 Αντικειμενοστραφής Προγραμματισμός
Η κληρονομικότητα (inheritance) παρέχει έναν βολικό μηχανισμό για την κατασκευή ομάδων συσχετισμένων αφαιρέσεων Επιτρέπει στους προγραμματιστές να δημιουργούν μια ιεραρχία τύπων στην οποία κάθε τύπος κληρονομεί ιδιότητες από τους τύπους που βρίσκονται ψηλότερα από αυτόν στην ιεραρχία

28 Αντικειμενοστραφής Προγραμματισμός
Person TEI Person Student Undergr graduat

29 Αντικειμενοστραφής Προγραμματισμός
class TEIPerson (Person): nextIdNum = 0 # αναγνωριστικός αριθμός def __init__(self,name): Person.__init__(self,name) self.idNum = TEIPerson.nextIdNum TEIPerson.nextIdNum+=1 def getIdNum(self): return self.idNum def __It__(self,other): return self.idNum < other.idNum

30 Αντικειμενοστραφής Προγραμματισμός
class Student (TEIPerson): pass class Undergr(Student): def __init__(self, name, ClassYear): TEIPerson.__init__(self, name) self.year = clasYear def getClass(self): return self.year class Graduat(Student):

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

32 Αντικειμενοστραφής Προγραμματισμός
Αρχή αντικατάστασης Οι υποκλάσεις επεκτείνουν την συμπεριφορά των υπερκλάσεων τους Επιτυγχάνεται με την προσθήκη νέων ιδιοτήτων ή την υποσκέλιση ιδιοτήτων που κληρονομούνται από μια υπερκλάση

33 Αντικειμενοστραφής Προγραμματισμός
class TransferStudent(Student): def __init__(self, name, fromschool): TEIPerson.__init__(self, name) self.fromschool = fromSchool def get0ldSchool(self): return self.fromschool

34 Αντικειμενοστραφής Προγραμματισμός
UML & OOP Το διάγραμμα κλάσης είναι ένας γράφος που περιέχει διασυνδέσεις, πακέτα, σχέσεις & στιγμιότυπα (αντικείμενα, συνδέσμους) Το διάγραμμα αντικειμένων είναι ένας γράφος στιγμιότυπων (αντικειμένων, τιμών δεδομένων) Τα διαγράμματα κλάσεων (Class diagrams) βοηθούν τον εντοπισμό των κυρίαρχων εννοιών και συνεπώς την κατανόηση του πεδίου εφαρμογής (πολύ βασικό στην αρχή ενός έργου)

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

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

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

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

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

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

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

42 Σας ευχαριστώ για την προσοχή σας…


Κατέβασμα ppt "ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google