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



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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Βασικά Στοιχεία της Java

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

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

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

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

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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

Τύποι δεδομένων, τελεστές, μεταβλητές

4 Συλλογές Αντικειμένων

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

ΘΠ06 Μεταγλωττιστές. Εργασία Εξαμήνου: Υλοποίηση ενός Μεταγλωττιστή για τη Γλώσσα Floop2009

ιαδικαστικός Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

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

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

Βασικά Στοιχεία της Java

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Εισαγωγή στον Προγραμματισμό

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

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

Εισαγωγή στον Προγ/μό Η/Υ

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

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

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

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Προγραμματισμός Η/Υ (ΤΛ2007 )

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

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

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

Περιεχόμενα. Πρόλογος... 21

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Δεδομένα, τελεστές, είσοδος/έξοδος

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

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

Διαγράμματα Κλάσεων στη Σχεδίαση

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Προγραμματισμός Ι (ΗΥ120)

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

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

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

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

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

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

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

Transcript:

Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή μας σε ένα ανώτερο επίπεδο κατανόησης του προβλήματος. Αρθρωσιμότητα (modularization) είναι η διαδικασία κατάτμησης του όλου σε καλώς ορισμένα τμήματα, που μπορούν να αναπτυχθούν και να ελεγχθούν ξεχωριστά, και αλληλεπιδρούν με σαφώς ορισμένους τρόπους. Παράδειγμα: κατασκευή αυτοκινήτου Με άλλα λόγια: Διαίρει και Βασίλευε 68 Ψηφιακό Ρολόι Κατάτμηση του Ψηφιακού Ρολογιού Μια οθόνη τεσσάρων ψηφίων; Ήδύοοθόνεςδύοψηφίων; Ώρες και λεπτά ωω:λλ από 00:00 έως 23:59 69 Στον αντικειμενοστρεφή προγραμματισμό, τα τμήματα είναι αντικείμενα. Πολλάαντικείμεναμπορείνασυνδυάζονταισεένα. 70 Κλάση Διψήφιας Οθόνης Κλάση Οθόνης Ρολογιού Πηγαίος κώδικας clock-display-gigas /** * Διψήφια ψηφιακή οθόνη */ public class NumberDisplay // δείχνει από 00 ως limit-1 private int limit; // τρέχουσα τιμή private int value; 71 /** * Η οθόνη του ψηφιακού ρολογιού * αποτελείται από δύο διψήφιες οθόνες * που προβάλλουν την ώρα και τα λεπτά */ public class ClockDisplay Η κλάση που ορίσαμε προηγουμένως 72 http://www.syros.aegean.gr/users/gaviotis/tmp2 1

Διάγραμμα Αντικειμένων Διάγραμμα Κλάσεων UML τοπική εμβέλεια για ιδιότητες NumberDisplay Όνομα κλάσης ClockDisplay - limit: int - value: int Ιδιότητες - hours: NumberDisplay -minutes:numberdisplay Αναφορά + NumberDisplay(rollOverLimit: int) + ClockDisplay(hour: int, minute:int) Κατασκευαστές + getvalue(): int + getdisplayvalue(): String + setvalue(int newvalue): void + increment(): void Μέθοδοι + timetick(): void + settime (int hour, int minute): void + gettime(): String Project: clock-display: εκτέλεση και παρατήρηση συμπεριφοράς και κατάστασης 73 δημόσια εμβέλεια για μεθόδους Παράμετρος μεθόδου τύπος αποτελέσματος 74 Διαγράμματα Διάγραμμα κλάσεων (class diagram) Δείχνει τις κλάσεις μιας εφαρμογής και τις συσχετίσεις μεταξύ τους Δίνει πληροφορίες για τον πηγαίο κώδικα Στατική όψη του προγράμματος Διάγραμμα αντικειμένων (object diagram) Δείχνει αντικείμενα και τις συσχετίσεις του κατά μια συγκεκριμένη στιγμή της εκτέλεσης του προγράμματος Δίνει πληροφορίες για τα αντικείμενα κατά το χρόνο εκτέλεσης Δυναμική όψη του προγράμματος 75 Είδη Τύπων Δεδομένων Η Java έχει δύο είδη τύπων δεδομένων: βασικοί τύποι (primitive data types) τύποι αντικειμένων (object data types) Οι βασικοί τύποι, όπως int, boolean, είναι προκαθορισμένοι από τη γλώσσα. Η αναπαράσταση και η συμπεριφορά τους δεν αλλάζει. Πραγματικοί: double Χαρακτήρες: char Οι τύποι αντικειμένων προέρχονται από κλάσεις. Κάποιοι ορίζονται από το σύστημα, πχ String Ο προγραμματιστής μπορεί να ορίσει κι άλλους, πχ NumberDisplay, ή να τροποποιήσει κάποιους από τους υπάρχοντες. 76 Παραδείγματα Ειδών Τύπων Δεδομένων Τύπος int i; Βασικοί τύποι 32 Project: clock-display: επιθεώρηση κώδικα SomeObject obj; boolean isopen; true 77 public class NumberDisplay private int limit; // όριο που ποτέ δεν φτάνει private int value; // τρέχουσα τιμή οθόνης public NumberDisplay(int rolloverlimit) //κατασκευαστής limit = rolloverlimit; value = 0; public int getvalue() return value; //ανάγνωση τιμής public String getdisplayvalue() // ανάγνωση τιμής if (value < 10) return "0" + value; else return "" + value; Λογική σύζευξη ΚΑΙ public void setvalue(int newvalue) // θέτει νέα τιμή if ((newvalue >= 0) && (newvalue < limit)) value = newvalue; Υπόλοιπο ακέραιης διαίρεσης public void increment() // προχωράει την τιμή value = (value + 1) % limit; Υλοποίηση ClockDisplay 78 http://www.syros.aegean.gr/users/gaviotis/tmp2 2

public class ClockDisplay public ClockDisplay(int hour, int minute) minutes = new NumberDisplay(60) ; settime(hour, minute); public void timetick() minutes.increment(); if (minutes.getvalue() == 0) hours.increment(); public void settime(int hour, int minute) hours.setvalue(hour); minutes.setvalue(minute); public String gettime() return hours.getdisplayvalue() + ":" + minutes.getdisplayvalue(); Αναφορά Κλήση κατασκευαστή Υλοποίηση ClockDisplay 79 Τελεστές και Ορίσματα Τελεστής (operator) είναι το σύμβολο μιας πράξης. Ορίσματα (operands) είναιοιπαραστάσειςπάνω στις οποίες εφαρμόζονται οι τελεστές. Πχ στην παράσταση 4 + 5 τα ορίσματα είναι οι αριθμοί 4, 5 και ο τελεστής είναι το + Συνηθισμένοι τελεστές είναι οι αριθμητικοί: + - * / Οι λογικοί τελεστές (logic operators) στη Java είναι: && σύζευξη λογικό ΚΑΙ διάζευξη λογικό Ή! άρνηση λογικό ΌΧΙ 80 Υπερφόρτωση Τελεστών ΟΤελεστήςΥπόλοιπο Ένας τελεστής είναι υπερφορτωμένος (overloaded operator), όταν εκτελεί διαφορετικές πράξεις ανάλογα με τον τύπο των ορισμάτων που δέχεται. Ο τελεστής + εκτελεί πρόσθεση όταν εφαρμόζεται σε αριθμούς και συνένωση όταν εφαρμόζεται σε συμβολοσειρές. 3+2 5, ενώ "Καλή" + "μέρα" "Καλήμέρα" Ο τελεστής / εκτελεί ακέραια διαίρεση, όταν εφαρμόζεται σε ακεραίους. 5 / 2 2 ενώ 5.0 / 2 2.5 (μετατρέπει και το 2 σε πραγματικό 2.0) Οτελεστής% επιστρέφει το υπόλοιπο (modulo)της ακέραιης διαίρεσης. 10 % 4 2 101 % 50 1 10 % 5 0 Τα ορίσματα του % πρέπει να είναι ακέραιοι. Αν κ, λ είναι ακέραιοι, τι τιμές μπορεί να πάρει η παράσταση κ % λ ; 81 82 Δημιουργία Στιγμιότυπων Η Κατάσταση των Αντικειμένων Μέχρι τώρα δημιουργούσαμε αντικείμενα με δεξί κλικ πάνω στην κλάση τους και επιλέγοντας new απότοαναδυόμενομενού. Με κώδικα αυτό γίνεται καλώντας το κατασκευαστή μαζί με τη δεσμευμένη λέξη new σε μια εντολή ανάθεσης. hours = new NumberDisplay( 24 ); Μεταβλητή τύπου Όνομα κατασκευαστή Πραγματική παράμετρος 83 84 http://www.syros.aegean.gr/users/gaviotis/tmp2 3

Πολλαπλοί Κατασκευαστές Μέχρι τώρα κάθε κλάση έχει έναν κατασκευαστή που τον χρησιμοποιούμε για να δημιουργούμε στιγμιότυπα. Μπορούμε να έχουμε πολλούς κατασκευαστές Όλοι θα έχουν το ίδιο όνομα το όνομα της κλάσης Θα έχουν διαφορετικές παραμέτρους για να ξεχωρίζουν κατά την κλήση τους. Αυτό ονομάζεται υπερφόρτωση (overloading). Πού ξανασυναντήσαμε κάτι ανάλογο; 85 Παράδειγμα Υπερφόρτωσης Κατασκευαστών public class ClockDisplay /** δημιουργεί ρολόι που έχει ώρα 00:00 */ public ClockDisplay() /** δημιουργεί ρολόι που έχει συγκεκριμένη * ώρα hour και λεπτά minute */ public ClockDisplay(int hour, int minute) setclock(hour, minute); 86 Κλήση Μεθόδου της Ίδιας Κλάσης public ClockDisplay(int hour, int minute) settime(hour, minute); κλήση μεθόδου public void settime(int hour, int minute) hours.setvalue(hour); minutes.setvalue(minute); Σύνταξη: όνομαμεθόδου ( λίσταπαραμέτρων ); 87 Κλήση Μεθόδου Άλλης Κλάσης Σύνταξη: αντικείμενο. όνομαμεθόδου ( λίσταπαραμέτρων ); public void timetick() minutes.increment (); κλήση μεθόδου if (minutes.getvalue() == 0) hours.increment(); public class NumberDisplay public void increment() ορισμός σε άλλη κλάση 88 Να η Αφαίρεση! Η δεσμευμένη λέξη this Ξεκινήσαμε να φτιάξουμε ένα ψηφιακό ρολόι. Διαπιστώσαμε ότι μπορεί να αποτελείται από δύο διψήφιες οθόνες για τις ώρες και τα λεπτά. Φτιάξαμε κώδικα κλάσης για μια «γενική» οθόνη. Μετράει μέχρι όπου της πει ο κατασκευαστής της. Το ρολόι είναι σύνθεση δύο οθόνων. Φτιάξαμε δύο στιγμιότυπα και καλέσαμε μεθόδους τους. Δεν χρειάζεται να γνωρίζουμε πώς λειτουργούν οι μέθοδοι για να τις καλέσουμε! public class Auto //μεταβλητές στιγμιότυπου private int kyvika ; private String montelo ; public Auto (int kyvika, String montelo) this.kyvika = kyvika ; this.montelo = montelo ; Στο σώμα του κατασκευαστή υπάρχουν δύο μεταβλητές με το όνομα kyvika: η τυπική παράμετρος και η μεταβλητή στιγμιότυπου (υπερφόρτωση ονόματος). 89 90 http://www.syros.aegean.gr/users/gaviotis/tmp2 4

Αποσφαλμάτωση Τεχνικές Αποσφαλμάτωσης Σπάνια γράφεται λογισμικό δίχως σφάλματα (bugs). Υπάρχουν δύο είδη σφαλμάτων: Συντακτικά, που τα συλλαμβάνει ο μεταγλωττιστής string onoma; onoma = αννα"; Λογικά, που τα βρίσκει (;) οπρογραμματιστής int a = 0; int b = 10 / a; Εντοπίζουμε σφάλματα: Διαβάζοντας τον κώδικα (& κατανοώντας πώς λειτουργεί) Παρακολουθώντας την εκτέλεση του προγράμματος με χρήση του debugger 91 Σημείο διακοπής (breakpoint): η εκτέλεση διακόπτεται όταν φτάσει στο σημείο αυτό. Τότε μπορούμε να εξετάσουμε τις τιμές των μεταβλητών. Εκτέλεση κώδικα γραμμή προς γραμμή Κατά την κλήση μιας μεθόδου, έχουμε δύο επιλογές: Να παρακολουθήσουμε την εκτέλεση μέσα στο σώμα της μεθόδου (step into) Να την αφήσουμε να εκτελεστεί και να προχωρήσουμε στην επόμενη εντολή (step over) 92 Ακολουθία Κλήσεων Κατά την εκτέλεση του προγράμματος μπορούμε να δούμε τις μεθόδους που εκτελούνται (call sequence). Έτσι μπορούμε να δούμε ποιος κάλεσε ποιον και ποιες μέθοδοι είναι ενεργές. Εκτελείται η getdisplayvalue που κλήθηκε από την updatedisplay που είχε κληθεί από την timeclick 93 Όροι Ενότητας 3 Αφαίρεση Αρθρωσιμότητα Διάγραμμα κλάσεων Διάγραμμα αντικειμένων Βασικοί τύποι δεδομένων Τύποι δεδομένων αντικειμένων Τελεστές Ορίσματα Λογικοί τελεστές Υπερφορτωμένος τελεστής Υπόλοιπο ακέραιης διαίρεσης Δημιουργία αντικειμένων Κλήση μεθόδου Υπερφόρτωση ονόματος μεθόδου Αποσφαλμάτωση Σημείο διακοπής Τεκμήρια ενότητας 3 &&! % new. ( ) this 94 http://www.syros.aegean.gr/users/gaviotis/tmp2 5