34
Αντικειμενοστρεφής Αντικειμενοστρεφής Προγραμματισμός Προγραμματισμός Object-Oriented Object-Oriented Programming Programming

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

  • Upload
    carlyn

  • View
    49

  • Download
    3

Embed Size (px)

DESCRIPTION

Αντικειμενοστρεφής Προγραμματισμός. Object-Oriented Programming. Αντικειμενοστρεφής Προγραμματισμός. Τι είναι: Μοντέλο προγραμματισμού -> Ένας τρόπος σκέψης Τυπικός ορισμός: - PowerPoint PPT Presentation

Citation preview

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

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

Object-Oriented ProgrammingObject-Oriented Programming

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

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

Τι είναι:

Μοντέλο προγραμματισμού -> Ένας τρόπος σκέψης

Τυπικός ορισμός:

Η αντικειμενοστρέφεια (object-orientation) είναι μία προσέγγιση στην ανάπτυξη λογισμικού που οργανώνει τόσο το πρόβλημα όσο και τη λύση του ως μία συλλογή από διακριτά αντικείμενα.

Τα αντικείμενα αλληλεπιδρούν για την επίλυση του προβλήματος

Eight Queens Problem

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

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

Ιστορία:

1967: Simula67 (Νορβηγία) -> πρώτη αντικειμενοστρεφής γλώσσα

’70: Smalltalk (Palo Alto, CA) -> κάθε στοιχείo ένα αντικείμενο

Αρχές ’80: o αντικειμενοστρεφής τρόπος σκέψης εισάγεται σε ακαδημαϊκούς κύκλους

’80: C++ (Stroustrup, AT&T): σοβαρή, αποδοτική γλώσσα, πρότυπο στη βιομηχανία

1995: Java (Sun Microsystems)

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

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

Αποδοχή:

Υψηλότατη τα τελευταία χρόνια

Λόγοι:

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

• Προσομοιάζει τις τεχνικές καθημερινών προβλημάτων

• Πολλές διαθέσιμες γλώσσες

• Πολλές διαθέσιμες βιβλιοθήκες

• Μόδα !!!

• Η λανθασμένη αντίληψη ότι αν κάποιος γνωρίζει C, μπορεί εύκολα να μάθει C++

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

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

Επηρεάζουν οι γλώσσες τον τρόπο σκέψης ?

Παράδειγμα Εσκιμώων: πολλαπλές λέξεις για την έννοια χιόνι

(Μία κοινότητα ατόμων με κοινά ενδιαφέροντα αναπτύσσει εξειδικευμένο λεξιλόγιο)

Δεν αντιλαμβάνονται οι Εσκιμώοι με διαφορετικό τρόπο τον κόσμο. Με κατάλληλη εκπαίδευση θα μπορούσαν και άλλοι να διακρίνουν διάφορες μορφές χιονιού.

Οι υπόλοιπες γλώσσες όμως δεν μας οδηγούν προς αυτή την κατεύθυνση

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

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

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

Παράδειγμα

Ένας φοιτητής γενετικής αντιμετώπιζε το πρόβλημα ανάλυσης DNA. (εύρεση σχήματος μήκους m)

1 <-------- m --------> <-------- m --------> n t c g a g t c g a g

Ο φοιτητής χρησιμοποίησε FORTRAN, που είναι μεν γρήγορη, αλλά η επίλυση του προβλήματος απαιτούσε πολύ χρόνο !!

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

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

Ο φοιτητής ζήτησε βοήθεια από κάποιον άλλο, που ήταν χρήστης της APL (γνωστής για την μικρή ταχύτητά της)

Ωστόσο ο δεύτερος φοιτητής έλυσε το πρόβλημα σε λίγα λεπτά (αντί για ώρες)

Οργάνωσε τα δεδομένα σε πίνακα με n γραμμές και m στήλες

x1 x2 . . . xm x2 x3 . . . xm+1 . . . . . . xn-m . . . . . . xn-1

xn-(m-1) . . . xn-1 xn

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

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

στη συνέχεια ταξινόμησε τις γραμμές του πίνακα.

Επαναλαμβανόμενο σχήμα = συνεχόμενες γραμμές με ίδιες τιμές

. . . . . . .

T G G A C C

T G G A C C

. . . . . . .

Η γλώσσα προγραμματισμού επηρεάζει τον τρόπο επίλυσης:

Στη γλώσσα APL η ταξινόμηση είναι πολύ ευκολότερη από ότι στη FORTRAN

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

Ένας τρόπος θεώρησης του κόσμου Ένας τρόπος θεώρησης του κόσμου

Chris

θέλει να στείλει λουλούδια στην

Mary

Chris Fredbla bla

Mary

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

Ένας τρόπος θεώρησης του κόσμου Ένας τρόπος θεώρησης του κόσμου

O μηχανισμός για την επίλυση του προβλήματος περιλαμβάνει την εύρεση ενός διαμεσολαβητή και τη μεταφορά σε αυτόν ενός μηνύματος (message).

Είναι ευθύνη του Fred να ικανοποιήσει την επιθυμία του Chris.

Προφανώς υπάρχει κάποια μέθοδος (method) για την επίτευξη του σκοπού.

Ωστόσο, ο Chris, δεν χρειάζεται να γνωρίζει τον τρόπο με τον οποίο ο ανθοπώλης θα στείλει τα λουλούδια. Η πληροφορία αυτή, που δεν αφορά τον Chris, είναι υπό μία έννοια κρυμμένη.

Ο ανθοπώλης ενδεχομένως να αλληλεπιδρά με διάφορα άλλα άτομα (προμηθευτές, άλλους ανθοπώλες, courier)

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

Ένας τρόπος θεώρησης του κόσμου Ένας τρόπος θεώρησης του κόσμου

Ένα αντικειμενοστρεφές πρόγραμμα είναι δομημένο ως ένα Ένα αντικειμενοστρεφές πρόγραμμα είναι δομημένο ως ένα σύνολο αλληλεπιδρώντων διαμεσολαβητών, που ονομάζονται σύνολο αλληλεπιδρώντων διαμεσολαβητών, που ονομάζονται αντικείμενααντικείμενα. Κάθε αντικείμενο έχει τον δικό του διακριτό . Κάθε αντικείμενο έχει τον δικό του διακριτό ρόλο. Κάθε αντικείμενο παρέχει μία υπηρεσία η οποία ρόλο. Κάθε αντικείμενο παρέχει μία υπηρεσία η οποία χρησιμοποιείται από άλλα μέλη του συνόλου.χρησιμοποιείται από άλλα μέλη του συνόλου.

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

Ένας τρόπος θεώρησης του κόσμου Ένας τρόπος θεώρησης του κόσμου

Η αλυσιδωτή αντίδραση ξεκίνησε από μία αίτηση

Chris Fredbla bla

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

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

Ένας τρόπος θεώρησης του κόσμου Ένας τρόπος θεώρησης του κόσμου

Μία αρχή του αντικειμενοστρεφούς προγραμματισμού είναι κοντά στις ανθρώπινες αδυναμίες……

Αν υπάρχει κάποια εργασία που πρέπει να εκτελεστεί, πρώτη Αν υπάρχει κάποια εργασία που πρέπει να εκτελεστεί, πρώτη σκέψη είναι η εύρεση κάποιου άλλου που θα την εκτελέσει !!σκέψη είναι η εύρεση κάποιου άλλου που θα την εκτελέσει !!

Ωστόσο, ο καλός προγραμματιστής διαφέρει, ακριβώς λόγω αυτού του στοιχείου:

Η διάθεση να εμπιστευθούμε τμήματα λογισμικού που έχουν αναπτυχθεί από άλλους είναι ένα σημαντικό βήμα προς την κατεύθυνση του επαναχρησιμοποιούμενου λογισμικού (reusable software)

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

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

Πώς γνωρίζει ο Chris τι υπηρεσίες παρέχει ο Fred ?

Ο όρος ανθοπώλης αναπαριστά μία κατηγορία (κλάσηκλάση) της οποίας ο Fred είναι ένα αντικείμενοαντικείμενο.

Όλα τα αντικείμενα είναι στιγμιότυπα μιας κλάσης. Η μέθοδος που ενεργοποιείται από ένα αντικείμενο ως απόκριση σε ένα μήνυμα καθορίζεται από την κλάση του αποδέκτη. Όλα τα αντικείμενα μιας κλάσης χρησιμοποιούν την ίδια μέθοδο ως απόκριση στον ίδιο τύπο μηνύματος.

Κάθε αντικείμενο έχει ιδιότητες και συμπεριφορά

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

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

Επιπλέον στοιχεία που γνωρίζει ο Chris για τον ανθοπώλη Fred προκύπτουν από το γεγονός ότι ο Fred είναι επίσης ιδιοκτήτης καταστήματος.

Δυνατότητα οργάνωσης της γνώσης υπό μορφή μιας ιεραρχίας κατηγοριών

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

Κληρονομικότητα Κληρονομικότητα

Η αρχή, ότι η γνώση που ισχύει για μία γενική κατηγορία εφαρμόζεται και σε ειδικότερες κατηγορίες, ονομάζεται κληρονομικότητα.

Συνήθως η απεικόνιση της κληρονομικής σχέσης, πραγματοποιείται με δενδροειδή ιεραρχικά διαγράμματα

Οι κλάσεις είναι δυνατόν να οργανωθούν σε μία ιεραρχική κληρονομική δομή. Μία κλάση παιδί (υποκείμενη κλάση) κληρονομεί χαρακτηριστικά και ιδιότητες από μία γονική κλάση που βρίσκεται υψηλότερα στην ιεραρχία.

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

Διασύνδεση Μεθόδων Διασύνδεση Μεθόδων

Θηλαστικά Πτηνά

ΖώαΖώα ιδιότητα: γέννηση

μικρά αβγά

Επομένως, στο μοντέλο του αντικειμενοστρεφούς Επομένως, στο μοντέλο του αντικειμενοστρεφούς προγραμματισμού, θα πρέπει να υπάρχει μία τεχνική εισαγωγής προγραμματισμού, θα πρέπει να υπάρχει μία τεχνική εισαγωγής εξαιρέσεων σε ένα γενικό κανόναεξαιρέσεων σε ένα γενικό κανόνα

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

Διασύνδεση ΜεθόδωνΔιασύνδεση Μεθόδων

Αυτό επιτυγχάνεται με τη δυνατότητα η πληροφορία (χαρακτηριστικά και ιδιότητες) που ενυπάρχει σε μία κλάση, να μπορεί να επικαλύψει την πληροφορία που κληρονομείται από τις γονικές κλάσεις.

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

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

Επικάλυψη και ΠολυμορφισμόςΕπικάλυψη και Πολυμορφισμός

Η δυνατότητα, δύο διαφορετικά αντικείμενα που ανήκουν σε κλάσεις που συνδέονται με κληρονομικότητα, να αντιδρούν με διαφορετικό τρόπο στο ίδιο μήνυμα, ονομάζεται:

• επικάλυψηεπικάλυψη (χρησιμοποιείται στατική διασύνδεση) ή

• πολυμορφισμόςπολυμορφισμός (χρησιμοποιείται δυναμική διασύνδεση).

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

Θεωρούμε το ακόλουθο παράδειγμα ενός απλού μοντέλου για την εκτύπωση και άθροιση δύο ακεραίων:

εκτύπωση (518, 202)

εκτύπωση (“Το άθροισμα των αριθμών είναι”)

εκτύπωση (720)

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

Επικάλυψη και ΠολυμορφισμόςΕπικάλυψη και Πολυμορφισμός

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

write_two_integers(518, 202);

write_string("The sum of these numbers is:");

write_one_integer(720);

Αν ο μεταγλωττιστής είναι σε θέση να αποφασίσει βάσει του τύπου και αριθμού των ορισμάτων ποια υλοποίηση θα χρησιμοποιήσει:

write(518, 202);

write("The sum of these numbers is:");

write(720);

Αν η δυνατότητα αυτή υπάρχει σε μία γλώσσα προγραμματισμού, θεωρείται ότι είναι δυνατή η επικάλυψη μιας λειτουργίας

Η διασύνδεση ονόματος και υλοποίησης που πραγματοποιείται κατά τη μεταγλώττιση (at compile time) ονομάζεται στατική διασύνδεση.

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

Επικάλυψη και ΠολυμορφισμόςΕπικάλυψη και Πολυμορφισμός

Παράδειγμα 2

Θεωρούμε μία ομάδα ατόμων, ορισμένα εκ των οποίων είναι φοιτητές. Ζητούμε από τα μέλη της ομάδας να παρουσιάσουν τον εαυτό τους:

• Κάθε φοιτητής θα πρέπει να δώσει το όνομα του καθώς και τη σχολή στην οποία φοιτά,

• όλα τα υπόλοιπα μέλη της ομάδας πρέπει να δώσουν μόνο το όνομά τους.

Δημιουργούμε ένα αντικειμενοστρεφές μοντέλο αυτής της ομάδας εισάγοντας δύο κλάσεις, Person και Student. Η κλάση Person έχει μία μέθοδο present_yourself που εκτυπώνει το όνομα ενώ η κλάση Student έχει μία μέθοδο present_yourself που εκτυπώνει το όνομα και τη σχολή φοίτησης.

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

Επικάλυψη και ΠολυμορφισμόςΕπικάλυψη και Πολυμορφισμός

Στην πραγματικότητα αλλά και στο μοντέλο η απαίτηση είναι απλή: η απάντηση στο ερώτημα present_yourself να δοθεί με βάση την κλάση στην οποία ανήκει το κάθε αντικείμενο.

φοιτητής φοιτητής φοιτητήςάλλο άλλο άλλοάλλο

παρουσιάσου

όνομα

σχολή

παρουσιάσου

όνομα

παρουσιάσου

όνομα

σχολή

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

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

Επικάλυψη και ΠολυμορφισμόςΕπικάλυψη και Πολυμορφισμός

Κατά συνέπεια, δεν είναι σαφές κατά τη μεταγλώττιση ποια υλοποίηση της λειτουργίας παρουσιάσου θα πρέπει να καλείται κάθε φορά.

Ωστόσο, κατά την εκτέλεση του προγράμματος η λίστα των αντικειμένων υπάρχει.

Αν το σύστημα έχει τη δυνατότητα να επιλέξει τη σωστή υλοποίηση κατά το χρόνο που εκτελείται ένα πρόγραμμα, το πρόβλημα επιλύεται.

Η δυνατότητα διασύνδεσης μεταξύ ονόματος και υλοποίησης μιας μεθόδου κατά την εκτέλεση ενός προγράμματος ονομάζεται δυναμική διασύνδεση.δυναμική διασύνδεση.

Κατά συνέπεια υπάρχει η δυνατότητα, αντικείμενα που ανήκουν Κατά συνέπεια υπάρχει η δυνατότητα, αντικείμενα που ανήκουν σε κλάσεις που συνδέονται με κληρονομικότητα, να σε κλάσεις που συνδέονται με κληρονομικότητα, να ανταποκρίνονται με διαφορετικό τρόπο στο ίδιο μήνυμα.ανταποκρίνονται με διαφορετικό τρόπο στο ίδιο μήνυμα.

Η δυνατότητα αυτή ονομάζεται Η δυνατότητα αυτή ονομάζεται πολυμορφισμός.πολυμορφισμός.

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

Σύνοψη Αντικειμενοστρεφών Εννοιών

1. Οτιδήποτε είναι ένα αντικείμενο

2. Οι υπολογισμοί επιτυγχάνονται με την αλληλεπίδραση των αντικειμένων. Τα αντικείμενα αλληλεπιδρούν με την αποστολή μηνυμάτων. Ένα μήνυμα είναι μία αίτηση για εκτέλεση λειτουργίας.

3. Κάθε αντικείμενο έχει τη δική του μνήμη.

4. Κάθε αντικείμενο είναι ένα στιγμιότυπο μιας κλάσης. Μία κλάση αναπαριστά ένα σύνολο αντικειμένων με κοινά χαρακτηριστικά και ιδιότητες.

5. Η κλάση είναι η αποθήκη συμπεριφοράς που σχετίζεται με ένα αντικείμενο. Αυτό σημαίνει, ότι όλα τα αντικείμενα μέλη μιας κλάσης μπορούν να επιτελέσουν τις ίδιες λειτουργίες.

6. Οι κλάσεις είναι οργανωμένες σε μία δενδροειδή ιεραρχία. Η συμπεριφορά που σχετίζεται με τα αντικείμενα μιας γονικής κλάσης είναι αυτομάτως διαθέσιμη σε οποιαδήποτε υποκείμενη κλάση.

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

Αφαίρεση

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

Αφαίρεση

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

Αφαίρεση

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

Αφαίρεση

Είναι προφανές ότι, για λόγους διαχείρισης της πληροφορίας, ορισμένη ποσότητα πληροφορίας αποκρύπτεται σκοπίμως.

Αφαίρεση ονομάζεται η σκόπιμη σύμπτυξη ή απόκρυψη πληροφορίας που αφορά μία διαδικασία ή ένα κατασκεύασμα, με σκοπό την καλύτερη κατανόηση άλλων απόψεων, λεπτομερειών ή δομής.

Η ιδέα της αφαίρεσης μπορεί να υποδιαιρεθεί σε διάφορες υποκατηγορίες: • Η πλέον συνήθης τεχνική αφαίρεσης είναι ο διαμερισμός ενός συνόλου στα τμήματα που το αποτελούν και στη συνέχεια ο διαμερισμός καθενός από τα τμήματα κ.ο.κ. "διαίρει και βασίλευε" (divide and conquer). •Εξειδίκευση του γενικού, προσέγγιση που υλοποιείται στις αντικειμενοστρεφείς γλώσσες με τις αρχές της κληρονομικότητας. •Ύπαρξη πολλαπλών απόψεων ενός συστήματος, κάθε μία από τις οποίες επικεντρώνεται σε συγκεκριμένα χαρακτηριστικά.

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

Αφαίρεση

Οι τεχνικές του διαμερισμού σε τμήματα και του διαχωρισμού σε ειδικότερες κατηγορίες αντιστοιχούν στις δύο πιο σημαντικές μορφές αφαίρεσης στον αντικειμενοστρεφή προγραμματισμό όπου είναι συνήθως γνωστές ως:• αφαίρεση τύπου "έχειέχει" (has-a abstraction) και ως • αφαίρεση τύπου "είναιείναι" (is-a abstraction) αντίστοιχα.

Κατά το διαμερισμό σε τμήματα για παράδειγμα, ένα αυτοκίνητο "έχει" μία μηχανή και "έχει" ένα σύστημα μετάδοσης.

Στον διαχωρισμό σε ειδικότερες κατηγορίες, ένα ποδήλατο "είναι" ένα όχημα, ή "είναι" ένα δίκυκλο για παράδειγμα.

Οι δύο αυτές μορφές αφαίρεσης συνδέονται στενά με συγκεκριμένες προγραμματιστικές έννοιες σε διάφορες αντικειμενοστρεφείς γλώσσες προγραμματισμού.

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

Ενσωμάτωση

Θεμελιώδης έννοια στον Αντικειμενοστρεφή Προγραμματισμό:

Object

Ενσωμάτωση: Ενσωμάτωση: Το αντικείμενο περιλαμβάνει τόσο δεδομένα όσο και

τις μεθόδους που χειρίζονται τα δεδομένα

:Λογαριασμός:Λογαριασμός

• Όνομα κατόχου

• Αριθμός

• Υποκατάστημα Τραπέζης

Δεδομένα, Ιδιότητες (Attributes)

• Υπολογισμός τόκων

• Εκτύπωση υπολοίπου

• Μεταφορά σε άλλο λογαριασμό

Συμπεριφορά, Λειτουργίες (Methods)

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

Ενσωμάτωση

Λογ. Α

• Όνομα κατόχου: Πέτρου• Αριθμός: 58936500• Υποκατάστημα: Μαρτίου

• Υπολογισμός τόκων• Εκτύπωση υπολοίπου• Μεταφορά σε άλλο λογαριασμό

Λογαριασμός• Όνομα κατόχου: ΧΧΧΧ• Αριθμός: ΧΧΧΧ• Υποκατάστημα : ΧΧΧΧ

• Υπολογισμός τόκων

• Εκτύπωση υπολοίπου

• Μεταφορά σε άλλο λογαριασμό

Λογ. Β

• Όνομα κατόχου: Νικολάου• Αριθμός: 67936512• Υποκατάστημα: Τσιμισκή

• Υπολογισμός τόκων• Εκτύπωση υπολοίπου• Μεταφορά σε άλλο λογαριασμό

Λογ. Γ

• Όνομα κατόχου: Ξένος• Αριθμός: 33936789• Υποκατάστημα: Χαριλάου

• Υπολογισμός τόκων• Εκτύπωση υπολοίπου• Μεταφορά σε άλλο λογαριασμό

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

Σύνθεση

Αυτοκίνητο• Τύπος: ΧΧΧΧ

• Μηχανή:

• CD Player:

Μηχανή CD Player

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

Αντικειμενοστρεφής Σχεδίαση

Το να προγραμματίζει κανείς σε μία αντικειμενοστρεφή γλώσσα δεν είναι ούτε αναγκαία ούτε ικανή συνθήκη για αντικειμενοστρεφή σχεδίαση

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

Τεχνική Σχεδίασης: Κατανομή Ευθυνών – Αρμοδιοτήτων

Ευθύνη

-> αναμένεται ότι τηρούνται κάποιοι κανόνες

-> προϋποθέτει ένα βαθμό αυτονομίας

Διαφορά μεταξύ συμβατικού μοντέλου προγραμματισμού και αντικειμενοστρεφούς μοντέλου:

-> εκτέλεση εργασίας από ένα παιδί υπό συνεχή επίβλεψη

-> ανάθεση ευθύνης στο παιδί – ανεξάρτητη εκτέλεση

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

Προγραμματισμός σε μικρή και μεγάλη κλίμακα

Προγραμματισμός σε μικρή κλίμακα:• ανάπτυξη του κώδικα από μικρή ομάδα προγραμματιστών• Κύριο πρόβλημα: σχεδίαση των αλγορίθμων

Προγραμματισμός σε μεγάλη κλίμακα:• ανάπτυξη του συστήματος από μεγάλη ομάδα προγραμματιστών, με διακριτούς ρόλους• Κύριο πρόβλημα: διαχείριση της πληροφορίας και επικοινωνία μεταξύ τμημάτων του έργουεπικοινωνία μεταξύ τμημάτων του έργου

Ο αντικειμενοστρεφής προγραμματισμός ενδείκνυται για έργα Ο αντικειμενοστρεφής προγραμματισμός ενδείκνυται για έργα λογισμικού μεγάλης κλίμακαςλογισμικού μεγάλης κλίμακας