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

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

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

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

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

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

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Ειδικά Θέματα Προγραμματισμού

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

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διδακτική της Πληροφορικής

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Ειδικά Θέματα Προγραμματισμού

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Υπολογιστικά Συστήματα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

Θεωρία Πιθανοτήτων & Στατιστική

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

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

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

Αρχιτεκτονική Υπολογιστών Εργαστήριο

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

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

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 11: Vectors (διανύσματα)

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Ψηφιακή Τεχνολογία σε Ακαδημαϊκό Περιβάλλον

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Δομές ελέγχου ροής προγράμματος

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

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Στέλλα Λάμπουρα

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Σχεδίαση με Ηλεκτρονικούς Υπόλογιστές

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

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Ιστορία της μετάφρασης

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

Αυτοματοποιημένη χαρτογραφία

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

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

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Αυτοματοποιημένη χαρτογραφία

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ ΥΛΟΠΟΙΗΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΑΛΥΣΗΣ UML ΜΕ JAVA. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

{ int a = 5; { int b = 7; a = b + 3;

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 10: Έλεγχος και Αποσφαλμάτωση Γρηγόρης Τσουμάκας, Επικ. Καθηγητής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Έλεγχος και Αποσφαλμάτωση

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τα παραδείγματα κώδικα που χρησιμοποιούνται σε κάποιες από τις ακόλουθες διαφάνειες μπορούν να βρεθούν στον παρακάτω σύνδεσμο: http://users.auth.gr/greg/oop.zip

Ποιο το Αποτέλεσμα; public static void main(string[] args) { int sum = 1; for (int i = 0; i <= 4; i++); { sum = sum + 1; System.out.println("Result: " + sum); System.out.println("Double: " + sum + sum); Quiz.java

Ουδείς Άσφαλτος Συντακτικά σφάλματα. Τα εντοπίζει ο μεταγλωττιστής. Λογικά σφάλματα (γνωστά και ως bugs). Δεν μπορεί να βοηθήσει ο μεταγλωττιστής. Ορισμένα λογικά σφάλματα δεν εμφανίζουν προφανή παρατηρήσιμα συμπτώματα. Τα εμπορικά λογισμικά σπανίως είναι 100% ορθά. Μείωση πιθανότητας σφαλμάτων; Χρήση αρχών ορθής σχεδίασης (π.χ. ενθυλάκωση).

Έλεγχος και Αποσφαλμάτωση Ελεγχος (testing). Διερεύνηση σφαλμάτων σε ένα τμήμα κώδικα. Αποσφαλμάτωση (debugging). Εύρεση της αιτίας ενός σφάλματος, η οποία μπορεί να είναι σε αρκετή «απόσταση» μακριά από το σημείο εμφάνισης του σφάλματος. Διόρθωση του σφάλματος. Σημαντικές δεξιότητες τεχνολογίας λογισμικού. Δικός σας κώδικας, τρίτος κώδικας.

Καλές Πρακτικές Ελέγχου Έλεγχος κατά την ανάπτυξη της εφαρμογής. Σταδιακή προσθήκη επιπλέον ελέγχων. Ενημέρωση προηγούμενων ελέγχων. Όλοι οι έλεγχοι πρέπει να εκτελούνται ξανά έπειτα από κάθε βήμα ανάπτυξης της εφαρμογής. Πλεονέκτημα. Εύρεση προβλημάτων νωρίς => μικρότερο χρονικό κόστος διόρθωσης τους. Πως και τι ελέγχουμε στην πράξη;

Έλεγχος Μονάδας (Unit Testing) Μονάδα κώδικα = μέθοδος, κλάση, πακέτο. Κατανόηση της αναμενόμενης συμπεριφοράς της μονάδας (το συμβόλαιο της). Εξέταση περιπτώσεων παράβασης του συμβολαίου. Θετικά και αρνητικά τεστ. Κάνει αυτά που πρέπει. Δεν κάνει αυτά που δεν πρέπει. Οριακά τεστ. Κενή συλλογή, ένα στοιχείο, γεμάτος πίνακας.

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

Παράδειγμα (1/6) Ηλεκτρονικό κατάστημα. Σε αρχικό στάδιο ανάπτυξης. Προϊόντα. Περιγραφή, τιμή, λίστα με σχόλια. Επιτρέπεται ένα μόνο σχόλιο από κάθε χρήστη. Σχόλια. Χρήστης, κείμενο, βαθμολογία, άθροισμα θετικών και αρνητικών ψήφων. Βαθμολογία [1..5].

Παράδειγμα (2/6) public class Comment { private String author; private String text; private int rating; private int votes; public Comment(String a, String t, int r) { public void upvote() { votes++; public void downvote() { votes--; public String getauthor() { return author; public int getrating() { return rating; public int getvotecount() { return votes; public String getfulldetails() {

Παράδειγμα (3/6) public class SalesItem { private String name; private int price; private ArrayList<Comment> comments; public SalesItem(String name, int price) { public boolean addcomment(string a, String t, int r) { public void removecomment(int index) { public void upvotecomment(int index) { public void downvotecomment(int index) { public Comment findmosthelpfulcomment() { private boolean ratinginvalid(int rating) { private String pricestring(int price) {

Παράδειγμα (4/6) private boolean ratinginvalid(int rating) { return rating < 0 rating > 5; --------------------------------------------------- public Comment findmosthelpfulcomment() { Iterator<Comment> it = comments.iterator(); Comment best = it.next(); while(it.hasnext()) { Comment current = it.next(); if (current.getvotecount() > best.getvotecount()) best = current; return best;

Παράδειγμα (5/6) public class SalesItemTest { public void testratinginvalid { SalesItem i = new SalesItem("x",10.00); if (i.ratinginvalid(0) && i.ratinginvalid(6) &&!i.ratinginvalid(1) &&!i.ratinginvalid(5)) System.out.println("ok"); else System.out.println("σφάλμα");

Παράδειγμα (6/6) public void testfindmosthelpfulcomment { SalesItem i = new SalesItem("x",10.00); Comment comment = i.findmosthelpfulcomment(); if (comment == null) System.out.println("ok"); else System.out.println("σφάλμα"); public static void main(string[] args) { SalesItemTest test = new SalesItemTest(); test.testratinginvalid(); test.testfindmosthelpfulcomment();

Το Πλαίσιο Ελέγχου JUnit (1/2) JUnit. Ένα δημοφιλές πλαίσιο ελέγχου κώδικα Java. @Test. Δηλώνει μια μέθοδο ως περίπτωση ελέγχου. assertequals(object, Object). Έλεγχος αναμενόμενης συμπεριφοράς μεθόδων. fail(string). Σήμανση αποτυχίας του ελέγχου.

Το Πλαίσιο Ελέγχου JUnit (2/2) @Before public void setup(). Εκτελείται πριν από κάθε περίπτωση ελέγχου. Π.χ. δημιουργία αντικειμένου της κλάσης, άνοιγμα κάποιου ρεύματος. @After public void teardown(). Εκτελείται έπειτα από κάθε περίπτωση ελέγχου. Π.χ. κλείσιμο κάποιου ρεύματος.

Παράδειγμα (1/2) @Test public void testfindmosthelpfulcomment() { System.out.println("findMostHelpfulComment"); SalesItem instance = new SalesItem("wine", 10); Comment expresult = null; Comment res = instance.findmosthelpfulcomment(); assertequals(expresult, res); @Test public void testaddcomment() { System.out.println("addComment"); SalesItem instance = new SalesItem("wine", 10); boolean result = instance.addcomment("greg","ok",0); boolean expresult = false; assertequals(expresult, result);

Παράδειγμα (2/2) private SalesItem instance; @Before public void setup() { instance = new SalesItem("wine", 10); @Test public void testfindmosthelpfulcomment() { Comment res = instance.findmosthelpfulcomment(); assertequals(null, res); @Test public void testaddcomment() { boolean result = instance.addcomment("greg","ok",0); assertequals(false, result);

Αποσφαλμάτωση Ανάπτυξη δεξιότητας ανίχνευσης σφαλμάτων. Όσο καλύτερος προγραμματιστής => τόσο χειρότερος ανιχνευτής σφαλμάτων. Όσο χειρότερος προγραμματιστής => τόσο καλύτερος ανιχνευτής σφαλμάτων. Ανάπτυξη δεξιότητας ανάγνωσης κώδικα. Συχνά η αποσφαλμάτωση θα εφαρμόζεται σε κώδικα που δεν έχετε γράψει εσείς. Διευκόλυνση ανάγνωσης κώδικα με συγγραφή καλής τεκμηρίωσης και δομοστοιχειοποίηση.

Τεχνικές Αποσφαλμάτωσης Χειροκίνητη εκτέλεση. Εντολές εμφάνισης στην οθόνη. Χρήση αποσφαλματωτή (debugger).

Χειροκίνητη Εκτέλεση (1/2) Δεν απαιτεί εξεζητημένη τεχνολογία. Απομακρυνθείτε από τον υπολογιστή. Τρέξτε ένα πρόγραμμα με το χέρι/μυαλό σας. Επίπεδο εξέτασης του κώδικα. Υψηλό (βασικές λειτουργίες). Χαμηλό (εξειδικευμένες μέθοδοι). Παρατηρήσεις. Δεν χρησιμοποιείται συχνά. Πιο ισχυρή απ ότι φαίνεται.

Χειροκίνητη Εκτέλεση (2/2) Η συμπεριφορά ενός αντικειμένου εξαρτάται σημαντικά από την κατάστασή του. Εσφαλμένη συμπεριφορά είναι συνήθως αποτέλεσμα εσφαλμένης κατάστασης. Πίνακας κατάστασης αντικειμένου. Φτιάξτε ένα πίνακα με τιμές για τα σημαντικότερα πεδία. Καταγράψτε τις αλλαγές κατάστασης έπειτα από κάθε κλήση μεθόδων του αντικειμένου. calculator

Προφορικές Εκτελέσεις Εξηγήστε σε κάποιον τι κάνει ο κώδικας σας. Μπορεί να εντοπίσουν το σφάλμα. Η διαδικασία της εξήγησης θα σας κάνει να το εντοπίσετε οι ίδιοι.

Εντολές Εμφάνισης στην Οθόνη Η πιο διαδεδομένη τεχνική. Δεν απαιτούνται ιδιαίτερα εργαλεία, αφού την υποστηρίζουν όλες οι γλώσσες προγραμματισμού. Αποτελεσματική μόνο αν οι εντολές προστεθούν στις κατάλληλες μεθόδους. Πιθανή ύπαρξη μεγάλου όγκου εξόδου. (Απ)ενεργοποίηση θέλει καλό σχεδιασμό.

Παράδειγμα public class Debug { public static final boolean DEBUG = false; public static void debug(string message) { if (DEBUG) { System.err.println(message); ---------------------------------------------------- import static Debug.*; public class Quiz { public static void main(string[] args) { debug("debug");

Αποσφαλματωτές Κάθε γλώσσα και ολοκληρωμένο περιβάλλον έχει το δικό της αποσφαλματωτή. Υποστηρίζουν σημεία διακοπής. Ελεγχόμενη εκτέλεση με Step και Step-into. Στοίβα κλήσεων. Κατάσταση αντικειμένων. calculator

Σύνοψη Τα σφάλματα είναι αναπόφευκτα. Καλές πρακτικές προγραμματισμού μειώνουν την εμφάνιση των σφαλμάτων. Σημαντικές οι δεξιότητες ελέγχου και αποσφαλματωσης. Κάντε τον έλεγχο συνήθεια. Αυτοματοποιήστε τον έλεγχο σε κάθε ευκαιρία. Συνεχής εκτέλεση ελέγχων. Δοκιμάστε διάφορες τεχνικές αποσφαλμάτωσης.

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τέλος Ενότητας Επεξεργασία: Εμμανουήλ Ρήγας Θεσσαλονίκη, Εαρινό Εξάμηνο 2013-2014