Τεχνολογία Λογισµικού II

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

Wrapper Classes, Abstract Classes and Interfaces

Η γλώσσα προγραμματισμού C

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Σύνθεση και Κληρονομικότητα

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

Σύνθεση και Κληρονομικότητα

Εισαγωγή στην επιστήμη των υπολογιστών

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Οι δείκτες στη γλώσσα C

. Μεθοδολογία Προγραμματισμού. Εισαγωγή. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

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

Οντοκεντρικός Προγραμματισμός

Ηλεκτρονικοί Υπολογιστές

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

ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

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

Στοιχειώδης προγραμματισμός σε C++

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

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Διαδικαστικά

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Α. Ερωτήσεις Ανάπτυξης

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

16 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΣΧΕ ΙΑΣΗ

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

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

Βασικά της γλώσσας JAVA

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

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

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

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

Προγραµµατιστικές τεχνικές

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

Κλάσεις και αντικείμενα #include <iostream.h<

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

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

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΠαράδειγµαΠρογραµµατισµού

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

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

ΑΣΚΗΣΗ 1. Structural Programming

Τι είναι κλάση Κλάση

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

Δομημένος Προγραμματισμός

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Θεόδωρος Γ. Λάντζος Διάλεξη Νο1

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

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

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Κλάσεις στην Python. Δημιουργία κλάσεων

B. Ενσωμάτωση Ιθαγενών Μεθόδων

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Τελικό τεστ - απαντήσεις

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

ΚΕΦΑΛΑΙΟ 6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Transcript:

Τεχνολογία Λογισµικού II Εισαγωγή στον Αντικειµενοστρεφή Προγραµµατισµό Πάνος Βασιλειάδης pvassil@dbnet.ece.ntua.gr Σεπτέµβρης 2001

Θεµατολόγιο Πληροφορίες σχετικά µε το µάθηµα Εισαγωγή στον αντικειµενοστρεφή προγραµµατισµό 2

Σχετικά µε το µάθηµα Αντικείµενο Βαθµολογία Web: http://www.dbnet.ece.ntua.gr/~pvassil/tuc/log201/ 3

Βιβλιογραφία B. Eckel, Thinking in C++. F.B. Brokken, C++ Annotations Version 5.1.0a S. Qualline, Practical C++ Programming, O Reilly. Stroustrup, Ηγλώσσα προγραµµατισµού C++. 4

Οι γλώσσες προγραµµατισµού λύνουν προβλήµατα Λάθος!!! Πρόβληµα: Βγάλε τιµολόγιο στον κ. Χ που αγόρασε τα αντικείµενα Υ και Ζ Λύση: Ο υπάλληλος χτυπάει 3 κουµπιά σε µια µηχανή και βγαίνει το τιµολόγιο Πρόβληµα: Βγάλε τιµολόγιο στον τυχαίο πελάτη που αγόρασε το τυχαίο τιµολόγιο Λύση: Ολογιστήςσκέφτεταιµια διαδικασία έκδοσης τιµολογίου και ο προγραµµατιστής την απεικονίζει σε ένα πρόγραµµα στον υπολογιστή. 5

Λύσεις στον πραγµατικό κόσµο? Οι γλώσσες προγραµµατισµού είναι απεικονίσεις πραγµατικών λύσεων στον υπολογιστή, και όχι λύσεις αυτές καθεαυτές. Πριν προγραµµατίσουµε µια λύση στον υπολογιστή, πρέπει να έχουµε στο µυαλό µας τη λύση στον πραγµατικό κόσµο! 6

Οι γλώσσες είναι αφαιρετικά µέσα και όχι λύσεις... 7

Oι γλώσσες προγραµµατισµού είναι αφαιρέσεις Assembly: αφαίρεση σε σχέση µετηγλώσσα µηχανής. C, Basic, Fortran: αφαίρεση σε σχέση µετην Assembly. Καιπούείναιηαφαίρεσησεσχέσηµετηλύση των πραγµατικών προβληµάτων? 8

Αντικειµενοστρεφής Προγραµµατισµός Αντικειµενοστρεφής Προγραµµατισµός: Απεικόνιση των αντικειµένων του προβλήµατος σε αντικείµενα του προγράµµατος Προσοχή!!! αντικειµενοστρεφής και όχι αντικειµενοστραφής 9

Καιπούείναιηαφαίρεσησεσχέσηµε τον υπολογιστή? Κάθε αντικείµενο είναι ένας µικρός «υπολογιστής»: έχει µια κατάσταση (µεταβλητές, δηλ., που την χαρακτηρίζουν) και λειτουργίες (που παίρνουν το αντικείµενο από µια αρχική κατάσταση, το τροποποιούν, και καταλήγουν σε µια νέα κατάσταση), τις οποίες και θα αποκαλούµε µεθόδους. 10

Παράδειγµα my L a mp -id : int = 1 -status : int = 1 +getstatus() : int +on() : void +off() : void Όπως βλέπουµε στο παράδειγµα, το αντικείµενο my_lamp έχει τιµές µεταβλητών που εκφράζουν την κατάστασή του λειτουργίες που επηρρεάζουν την κατάσταση αυτή 11

Κλάσεις αντικειµένων Ενδιαφέρουσα παρατήρηση: όλες οι λάµπες που µας ενδιαφέρει να κατασκευάσουµεέχουντιςίδιες µεταβλητές κατάστασης και λειτουργίες. Κλάση είναι µια οµάδα από αντικείµενα µε παρόµοια σηµασιολογία, δοµή και λειτουργίες. Κάθε αντικείµενο είναι µοναδικό, αλλά ταυτόχρονα ανήκει και σε µια κλάση (οµοειδών) αντικειµένων. Λέµε ότι το αντικείµενο είναι στιγµιότυπο της εν λόγω κλάσης. 12

Αποστολή Μηνύµατος Πώς ζητάω, όµως, από ένα αντικείµενο να αλλάξει κατάσταση? Του ζητώ να εκτελέσει µια από τις λειτουργίες του («τρέχω µια συνάρτησή του» στην ορολογία του διαδικαστικού προγραµµατισµού). Λέµεότι πρόκειται για την αποστολή µηνύµατος στο αντικείµενο αυτό. Παράδειγµα: mylamp.on(); 13

ιαπροσωπεία κλάσης Τι µπορώ να ζητήσω από ένα αντικείµενο? Μπορώ να ζητήσω µόνο ότι λειτουργία είναι δηλωµένη. Το σύνολο των λειτουργιών που µπορώ να χρησιµοποιήσω για να επικοινωνήσω µε έναστιγµιότυπο µιας κλάσης ονοµάζεται διαπροσωπεία της κλάσης. Παράδειγµα: on() off() getstatus() 14

[Αφηρηµένοι] Τύποι εδοµένων Μια κλάση είναι και αυτή ένας τύπος δεδοµένων. Έχει εσωτερική κατάσταση και λειτουργίες όπως και ένας ακέραιος (ο οποίος έχει και αυτός µια κατάσταση, την αναπαράστασή του σε bytes και λειτουργίες (όπως πρόσθεση, ολίσθηση, κλπ). Η διαφορά είναι ότι οι κλάσεις βρίσκονται ένα επίπεδο πιο ψηλά από τους κλασικούς τύπους δεδοµένων σε ότι αφορά τη σηµασιολογία τους. Έτσι, τις κλάσεις τις ονοµάζουµεκαιαφηρηµένους τύπους δεδοµένων. 15

Σύνθεση αντικειµένων Σύνθεση Αντικειµένων: σχέση «ΕΧΕΙ» (HAS-A) και «ΕΙΝΑΙ ΜΕΡΟΣ» (PART-OF) µεταξύ των αντικειµένων. Room Co u r s e Bu i l d i n g 16

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

Απόκρυψη δεδοµένων ηλώνουµε ως... ηµόσια (public) δεδοµένα/λειτουργίες: αυτά που µπορούν να χρησιµοποιηθούν (κληθούν/ προσπελαστούν) από τα άλλα αντικείµενα. Ιδιωτικά (private) δεδοµένα/λειτουργίες: αυτά που χρησιµοποιούνται µόνο από το ίδιο το αντικείµενο. 18

Απόκρυψη εδοµένων Παράδειγµα... La mp - i d : i n t - s t a t u s : i n t +get St at us() : i nt + o n ( ) : v o i d + o f f ( ) : v o i d Private members Public members 19

Κληρονοµικότητα Επαναχρησιµοποίηση δεδοµένων και λειτουργιών. Κλάση Βάσης (ή βασική κλάση) είναι η κλάση από την οποία κληρονοµούνται τα χαρακτηριστικά Εξαγόµενη κλάση είναι η κλάση που κληρονοµεί την κλάση βάσης. 20

Κληρονοµικότητα S h a p e + d r a w ( ) : v o i d + m o v e ( ) : v o i d C i r c l e S q u a r e T r i a n g l e 21

Κληρονοµικότητα Οποιοδήποτε στιγµιότυπο της εξαγόµενης κλάσης µπορεί να χρησιµοποιηθεί σα στιγµιότυπο της βασικής κλάσης. Έτσι, µπορούµε να στείλουµε όλα τα µηνύµατα που θα έπαιρνε η βασική κλάση, στην εξαγόµενη κλάση. Ο κώδικας για τα µηνύµατα αυτά Επαναχρησιµοποιείται ως έχει, αν δε χρειάζονται αλλαγές Τροποποιείται στην εξαγόµενη κλάση, αν χρειάζεται Υπερκέραση λειτουργιών 22

Κληρονοµικότητα - Παράδειγµα Shape +dr aw( ) : voi d +move( ) : voi d Ci rcl e Square Tr i a ng l e +dr aw( ) : voi d +dr aw( ) : voi d +draw() : void +flip() : void 23

Κληρονοµικότητα Σχέση «ΕΙΝΑΙ» (IS-A) µεταξύ εξαγόµενης και βασικής κλάσης Το καλύτερο τεστ για το αν πρέπει να χρησιµοποιήσουµε σχέση «ΕΙΝΑΙ», είναι να σκεφτούµε αν στον πραγµατικό κόσµο, ένα στιγµιότυπο της εξαγόµενης κλάσης είναι όντως και στιγµιότυπο της βασικής. 24

Πολυµορφισµός Shape +dr aw( ) : voi d +move( ) : voi d Έστω ότι κάθε σχήµα ζωγραφίζεται διαφορετικά... Ci rcl e Square Tr i a ng l e +dr aw( ) : voi d +dr aw( ) : voi d +draw() : void +flip() : void 25

Πολυµορφισµός Circle mycircle; Square mysquare; Triangle mytriangle;... randommove(mycircle); randommove(mysquare); randommove(mytriangle);... void randommove(shape &myshape){ myshape.move(); myshape.draw();... } Κάθε σχηµατάκι θα ζωγραφιστεί µε βάση τη δική του µέθοδο 26

Πολυµορφισµός Πολυµορφισµός είναι η δυνατότητα να µπορώ να δηλώσω ένα αντικείµενο της βασικής κλάσης στον κώδικα και στο runtime να αποφασίζεται ποια µέθοδος της εξαγόµενης κλάσης θα τρέξει για αυτό. Απαραίτητη προϋπόθεση για αυτό είναι να δηλωθεί η µέθοδος της βασικής κλάσης ως virtual. Τότε, για ένα όνοµα µεθόδου, εξετάζεται πρώτα αν υπάρχει στην εξαγόµενη κλάση, και µόνο αν δεν υπάρχει εκτελείται η µέθοδος της βασικής κλάσης. 27

Τα πάντα είναι θέµα στυλ... Ονόµατα µεταβλητών και µεθόδων: ξεκινούν µε µικρό, συγχωνεύουν τις επιµέρους λέξεις. Π.χ. mycompositevariable. Μπορείτε επίσης να χρησιµοποιείτε και _ γιαναενώσετετιςεπίµέρους λέξεις του ονόµατος της µεταβλητής, π.χ. my_composite_variable Ονόµατα κλάσεων: ξεκινούν µε κεφαλαίο γράµµα. Π.χ. MyClassDefinition Σταθερές όπως ορίζονται µε δηλώσειςτύπουconst ή #define γράφονται µε όλαταγράµµατα κεφαλαία. Π.χ. MY_CONSTANT_VALUE Ηβασικότερησυµβουλή είναι πάντως, όποιο συµβολισµό κι αν ακολουθήσετε, να το κάνετε µε συνέπεια παντού, χωρίς να αλλάζετε στυλ. 28

Τα πάντα είναι θέµα σχολίων... /* *************************************************** * Program: simple program that prints a simple message * * Author: Nicko McBrain * * Purpose: As an example of a commented program * * Usage: No parameters required! * * Created: 1 Jan 2001 * * Modified: 2 Jan 2001: wrote the code * * 3 Jan 2001: wrote the comments * * File: hello.cpp * ***************************************************** */ #include <iostream.h> main(){ //This is a simple, single line comment cout << "Hello world\n"; } 29

Όποιος βιάζεται, σκοντάφτει! Να είστε απλοί και σαφείς!!! Keep It Simple Stupid (KISS)!!! Γράψτε το πρόγραµµα ώστε να το καταλαβαίνει και ο πιο απλοϊκός, µη-σχετικός, µηπρογραµµατιστής! ώστε ονόµατα στις µεταβλητές µε βάσητονρόλοτους(και όχι µε βάση το πόσο γρήγορα πληκτρολογούνται)! Think Small!!! Γράψτε µικρές µεθόδους, µικρές if εντολές, µικρές κλάσεις! Να θυµάστε ότι ένα κοµµάτι κώδικα, είναι τόσο πιο απλό, όσο πιο µικρό το σκεφτείτε! Στοιχίστε σωστά το κείµενο! Πρώτα το στοιχίζουµε καιµετά το γράφουµε... Η αξία του προγραµµατιστή είναι ο κώδικάς του να είναι επαναχρησιµοποιήσιµος (ήτοι απλός) και συντηρήσιµος (ήτοι αναγνώσιµος)!!! 30

Συνοψίζοντας... Ένα αντικείµενο αποτελείται από δεδοµένα, λογική και τη διαπροσωπεία που τα ενθυλακώνει και που καθορίζει τη συµπεριφορά του αντικειµένου. Τα αντικείµενα επικοινωνούν µε µηνύµατα. Μια µέθοδος είναι η υλοποίηση ενός µηνύµατος Αντικείµενα οµοειδή ανήκουν στην ίδια κλάση Ο µόνος τρόπος για να υπάρξει επικοινωνία µε ένα αντικείµενο είναι µέσω της διαπροσωπείας του. ύο αντικείµενα µπορεί να υλοποιούν το ίδιο µήνυµα µέσω διαφορετικών µεθόδων. Τα αντικείµενα οργανώνονται σε ιεραρχίες κληρονοµικότητας 31