Outline. 4 Object-Oriented Programming

Σχετικά έγγραφα
(Imperative Programming) Pascal, C, Ada, Pazcal. (Functional Programming) Prolog (Logic Programming) (object-oriented programming) Java, C#

ΚΥΡΙΑ ΜΟΝΤΕΛΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Μοντέλα Προγραµµατισµού

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

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

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

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

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών

Εισαγωγή στο Συναρτησιακό Προγραμματισμό

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

Κεφάλαιο 7: Υπορουτίνες

Αρχές Προγραμματισμού Υπολογιστών

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Μαλούτα Θεανώ Σελίδα 1

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Θεωρητικό Υπόβαθρο και Μοντέλα

Μετάφραση προγραμμάτων

Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα

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

Κεφάλαιο 1 Προγραμματισμός Υπολογιστή. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

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

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

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

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

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

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

Κεφάλαιο 9 Συναρτησιακός προγραμματισμός Υπολογισμός με συναρτήσεις

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

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Αναδρομή Ανάλυση Αλγορίθμων

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

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

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

ΚΕΦΑΛΑΙΟ 2: Δηλωτικός Προγραμματισμός

Αφαίρεση στον FP. Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

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

Μεθοδολογία Προγραμματισμού

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

Προγραμματισμός και Εφαρμογές Υπολογιστών

Σχήματα McCarthy I. Το σχήμα McCarthy είναι ένα γενικότερο προγραμματιστικό σχήμα:

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

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

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

Από τον αλγόριθμο στην ανάπτυξη προγράμματος

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

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

τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε

Προγραμματισμό για ΗΜΥ

6. 1 Η έννοια του προγράμματος

Βασικές Αρχές Προγραμματισμού

Μεταγλωττιστές Βελτιστοποίηση

ΑΕΠΠ Ερωτήσεις θεωρίας

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

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

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

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

Αναδρομικοί Αλγόριθμοι

PROLOG Εισαγωγή (PROgramming in LOGic)

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

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

Θέματα Μεταγλωττιστών

Κεφάλαιο 1. Εισαγωγή

Η ΑΕΠΠ IN A GLANCE! ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΟΛΥΜΕΝΗ

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

ηµιουργία νέου τύπου δεδοµένων από το χρήστη

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

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

Συναρτησιακός Προγραμματισμός: γενικά (Ι) Ο καθαρός Συναρτησιακός Προγραμματισμός (FP) έχει τα εξής χαρακτηριστικά: Το βασικό εργαλείο είναι οι (μαθημ

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

6. Εισαγωγή στον προγραµµατισµό

Ενότητα 13: Διδασκαλία Οντοκεντρικού Προγραμματισμού. Διδάσκων: Βασίλης Κόμης, Καθηγητής

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

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

Προγραµµατισµός Η/Υ. Μέρος2

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Transcript:

Προγραμματισμός Ηλεκτρονικών Υπολογιστών Φιλοσοφίες γλωσσών προγραμματισμού Διδάσκων: Στάθης Ζάχος Επιμέλεια Διαφανειών: Μάκης Αρσένης CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Ιανουάριος 2016 ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 1 / 25

Outline 1 Φιλοσοφία Γλωσσών Προγραμματισμού 2 Συναρτησιακός Προγραμματισμός (Functional Programming) 3 Λογικός Προγραμματισμός (Prolog) 4 Object-Oriented Programming ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 2 / 25

Προγραμματιστικά Μοντέλα Προγραμματιστικό Μοντέλο Γλώσσες Προστακτικός Προγραμματισμός FORTRAN, Algol, COBOL (Imperative Programming) Pascal, C, Ada, Pazcal Συναρτησιακός Προγραμματισμός LISP, ML, Scheme, Haskell (Functional Programming) Λογικός Προγραμματισμός Prolog (Logic Programming) Αντικειμενοστρεφής Προγραμματισμός Simula, Smalltalk, C++ (object-oriented programming) Java, C# ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 3 / 25

Outline 1 Φιλοσοφία Γλωσσών Προγραμματισμού 2 Συναρτησιακός Προγραμματισμός (Functional Programming) 3 Λογικός Προγραμματισμός (Prolog) 4 Object-Oriented Programming ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 4 / 25

No side-effects Σε μία γλώσσα συναρτησιακού προγραμματισμού, η αποτίμηση μιας συνάρτησης δίνει πάντα το ίδιο αποτέλεσμα για τις ίδιες τιμές των παραμέτρων της. Η σημαντική αυτή ιδιότητα δεν ισχύει κατ ανάγκη στις γλώσσες προστακτικού προγραμματισμού Στις προστακτικές γλώσσες αυτό συμβαίνει λόγω: Μεταβλητών που ορίζονται και αλλάζουν τιμές εκτός του σώματος της συνάρτησης (global variables) Εξάρτησης από την κατάσταση (state) του υπολογισμού Άλλων παρενεργειών (side-effects) που μπορεί να υπάρχουν στο πρόγραμμα Υπενθύμιση: Στα μαθηματικά οι συναρτήσεις εξαρτώνται μόνο από τα ορίσματά τους ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 5 / 25

No side-effects Σε μία γλώσσα συναρτησιακού προγραμματισμού, η αποτίμηση μιας συνάρτησης δίνει πάντα το ίδιο αποτέλεσμα για τις ίδιες τιμές των παραμέτρων της. Η σημαντική αυτή ιδιότητα δεν ισχύει κατ ανάγκη στις γλώσσες προστακτικού προγραμματισμού Στις προστακτικές γλώσσες αυτό συμβαίνει λόγω: Μεταβλητών που ορίζονται και αλλάζουν τιμές εκτός του σώματος της συνάρτησης (global variables) Εξάρτησης από την κατάσταση (state) του υπολογισμού Άλλων παρενεργειών (side-effects) που μπορεί να υπάρχουν στο πρόγραμμα Υπενθύμιση: Στα μαθηματικά οι συναρτήσεις εξαρτώνται μόνο από τα ορίσματά τους ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 5 / 25

No side-effects Σε μία γλώσσα συναρτησιακού προγραμματισμού, η αποτίμηση μιας συνάρτησης δίνει πάντα το ίδιο αποτέλεσμα για τις ίδιες τιμές των παραμέτρων της. Η σημαντική αυτή ιδιότητα δεν ισχύει κατ ανάγκη στις γλώσσες προστακτικού προγραμματισμού Στις προστακτικές γλώσσες αυτό συμβαίνει λόγω: Μεταβλητών που ορίζονται και αλλάζουν τιμές εκτός του σώματος της συνάρτησης (global variables) Εξάρτησης από την κατάσταση (state) του υπολογισμού Άλλων παρενεργειών (side-effects) που μπορεί να υπάρχουν στο πρόγραμμα Υπενθύμιση: Στα μαθηματικά οι συναρτήσεις εξαρτώνται μόνο από τα ορίσματά τους ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 5 / 25

No side-effects Σε μία γλώσσα συναρτησιακού προγραμματισμού, η αποτίμηση μιας συνάρτησης δίνει πάντα το ίδιο αποτέλεσμα για τις ίδιες τιμές των παραμέτρων της. Η σημαντική αυτή ιδιότητα δεν ισχύει κατ ανάγκη στις γλώσσες προστακτικού προγραμματισμού Στις προστακτικές γλώσσες αυτό συμβαίνει λόγω: Μεταβλητών που ορίζονται και αλλάζουν τιμές εκτός του σώματος της συνάρτησης (global variables) Εξάρτησης από την κατάσταση (state) του υπολογισμού Άλλων παρενεργειών (side-effects) που μπορεί να υπάρχουν στο πρόγραμμα Υπενθύμιση: Στα μαθηματικά οι συναρτήσεις εξαρτώνται μόνο από τα ορίσματά τους ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 5 / 25

No side-effects Σε μία γλώσσα συναρτησιακού προγραμματισμού, η αποτίμηση μιας συνάρτησης δίνει πάντα το ίδιο αποτέλεσμα για τις ίδιες τιμές των παραμέτρων της. Η σημαντική αυτή ιδιότητα δεν ισχύει κατ ανάγκη στις γλώσσες προστακτικού προγραμματισμού Στις προστακτικές γλώσσες αυτό συμβαίνει λόγω: Μεταβλητών που ορίζονται και αλλάζουν τιμές εκτός του σώματος της συνάρτησης (global variables) Εξάρτησης από την κατάσταση (state) του υπολογισμού Άλλων παρενεργειών (side-effects) που μπορεί να υπάρχουν στο πρόγραμμα Υπενθύμιση: Στα μαθηματικά οι συναρτήσεις εξαρτώνται μόνο από τα ορίσματά τους ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 5 / 25

No side-effects Σε μία γλώσσα συναρτησιακού προγραμματισμού, η αποτίμηση μιας συνάρτησης δίνει πάντα το ίδιο αποτέλεσμα για τις ίδιες τιμές των παραμέτρων της. Η σημαντική αυτή ιδιότητα δεν ισχύει κατ ανάγκη στις γλώσσες προστακτικού προγραμματισμού Στις προστακτικές γλώσσες αυτό συμβαίνει λόγω: Μεταβλητών που ορίζονται και αλλάζουν τιμές εκτός του σώματος της συνάρτησης (global variables) Εξάρτησης από την κατάσταση (state) του υπολογισμού Άλλων παρενεργειών (side-effects) που μπορεί να υπάρχουν στο πρόγραμμα Υπενθύμιση: Στα μαθηματικά οι συναρτήσεις εξαρτώνται μόνο από τα ορίσματά τους ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 5 / 25

Παραδείγματα Δήλωση Συναρτήσεων: inc n = n + 1 f t = t * inc t Δήλωση Τιμών: x = f 6 y = f (f 2) Τύποι: inc, f :: Int -> Int x, y :: Int ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 6 / 25

Παραδείγματα Δήλωση Συναρτήσεων: inc n = n + 1 f t = t * inc t Δήλωση Τιμών: x = f 6 y = f (f 2) Τύποι: inc, f :: Int -> Int x, y :: Int ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 6 / 25

Παραδείγματα Δήλωση Συναρτήσεων: inc n = n + 1 f t = t * inc t Δήλωση Τιμών: x = f 6 y = f (f 2) Τύποι: inc, f :: Int -> Int x, y :: Int ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 6 / 25

Αναγωγές inc n = n + 1 f t = t * inc t y = f (f 2) Παράδειγμα εσωτερικότερων αναγωγών: y f (f 2) f (2 * inc 2) f (2*(2+1)) f (2*3) f 6 6 * inc 6 6*(6+1) 6*7 42 Παράδειγμα εξωτερικότερων αναγωγών/οκνηρή αποτίμηση (lazy evalutation): y f (f 2) f 2 * inc (f 2) (2 * inc 2) * inc (2 * inc 2) (2*(2+1)) * inc (2*(2+1) (2*(2+1)) * (2 * (2+1) + 1) 42 ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 7 / 25

Αναγωγές inc n = n + 1 f t = t * inc t y = f (f 2) Παράδειγμα εσωτερικότερων αναγωγών: y f (f 2) f (2 * inc 2) f (2*(2+1)) f (2*3) f 6 6 * inc 6 6*(6+1) 6*7 42 Παράδειγμα εξωτερικότερων αναγωγών/οκνηρή αποτίμηση (lazy evalutation): y f (f 2) f 2 * inc (f 2) (2 * inc 2) * inc (2 * inc 2) (2*(2+1)) * inc (2*(2+1) (2*(2+1)) * (2 * (2+1) + 1) 42 ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 7 / 25

Αναγωγές inc n = n + 1 f t = t * inc t y = f (f 2) Παράδειγμα εσωτερικότερων αναγωγών: y f (f 2) f (2 * inc 2) f (2*(2+1)) f (2*3) f 6 6 * inc 6 6*(6+1) 6*7 42 Παράδειγμα εξωτερικότερων αναγωγών/οκνηρή αποτίμηση (lazy evalutation): y f (f 2) f 2 * inc (f 2) (2 * inc 2) * inc (2 * inc 2) (2*(2+1)) * inc (2*(2+1) (2*(2+1)) * (2 * (2+1) + 1) 42 ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 7 / 25

Επιπλέον παραδείγματα f(x, y) = if (x == 0) then 1 else f(x-1, f(x, y)) Η οκνηρή αποτίμηση δίνει π.χ.: f (2, 0) f (1, f (2, 0)) f (0, f (1, f (2, 0))) 1. ενώ με τις εσωτ. αναγωγές έχουμε: f (2, 0) f (1, f (2, 0)) f (1, f (1, f (2, 0)))... ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 8 / 25

Επιπλέον παραδείγματα f(x, y) = if (x == 0) then 1 else f(x-1, f(x, y)) Η οκνηρή αποτίμηση δίνει π.χ.: f (2, 0) f (1, f (2, 0)) f (0, f (1, f (2, 0))) 1. ενώ με τις εσωτ. αναγωγές έχουμε: f (2, 0) f (1, f (2, 0)) f (1, f (1, f (2, 0)))... ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 8 / 25

Επιπλέον παραδείγματα f(x, y) = if (x == 0) then 1 else f(x-1, f(x, y)) Η οκνηρή αποτίμηση δίνει π.χ.: f (2, 0) f (1, f (2, 0)) f (0, f (1, f (2, 0))) 1. ενώ με τις εσωτ. αναγωγές έχουμε: f (2, 0) f (1, f (2, 0)) f (1, f (1, f (2, 0)))... ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 8 / 25

Συναρτήσεις twice :: (Int -> Int, Int) -> Int twice (f, x) = f (f x) inc n = n + 1 plus2 x = twice (inc, x) plusn :: Int -> (Int -> Int) plusn n = f where f x = x + n ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 9 / 25

Currying add :: (Int, Int) -> Int add (x, y) = x + y Μπορεί να γραφεί διαφορετικά με την τεχνική Currying ως εξής: add :: Int -> (Int -> Int) add x = f where f y = x + y Δηλαδή η add δέχεται το πρώτο όρισμα x και επιστρέφει μια συνάρτηση η οποία δέχεται το δεύτερο όρισμα y και επιστρέφει το άθροισμα x + y. Ισχύει λοιπόν η παρακάτω ισοδυναμία: add (x, y) == (add x) y ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 10 / 25

Παραδείγματα factorial n = if n <= 1 then 1 else n * factorial (n-1) gcd (n, 0) = n gcd (n, m) = if (n < m) then gcd (m, n) else gcd (m, n mod m) ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 11 / 25

Συμπεράσματα Η απόδειξη της ορθότητας ενός προγράμματος μπορεί να γίνει εύκολα ελέγχοντας τις αντικαταστάσεις (αναγωγές). Η απόδειξη ορθότητας αναδρομικών συναρτήσεων γίνεται με χρήση μαθηματικής επαγωγής. Πλεονεκτήματα συναρτησιακού προγραμματισμού: Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Μειονεκτήματα Μειωμένη απόδοση στην εκτέλεση Μεγαλύτερες απαιτήσεις μνήμης ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 12 / 25

Συμπεράσματα Η απόδειξη της ορθότητας ενός προγράμματος μπορεί να γίνει εύκολα ελέγχοντας τις αντικαταστάσεις (αναγωγές). Η απόδειξη ορθότητας αναδρομικών συναρτήσεων γίνεται με χρήση μαθηματικής επαγωγής. Πλεονεκτήματα συναρτησιακού προγραμματισμού: Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Μειονεκτήματα Μειωμένη απόδοση στην εκτέλεση Μεγαλύτερες απαιτήσεις μνήμης ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 12 / 25

Συμπεράσματα Η απόδειξη της ορθότητας ενός προγράμματος μπορεί να γίνει εύκολα ελέγχοντας τις αντικαταστάσεις (αναγωγές). Η απόδειξη ορθότητας αναδρομικών συναρτήσεων γίνεται με χρήση μαθηματικής επαγωγής. Πλεονεκτήματα συναρτησιακού προγραμματισμού: Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Μειονεκτήματα Μειωμένη απόδοση στην εκτέλεση Μεγαλύτερες απαιτήσεις μνήμης Διδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 12 / 25

Συμπεράσματα Η απόδειξη της ορθότητας ενός προγράμματος μπορεί να γίνει εύκολα ελέγχοντας τις αντικαταστάσεις (αναγωγές). Η απόδειξη ορθότητας αναδρομικών συναρτήσεων γίνεται με χρήση μαθηματικής επαγωγής. Πλεονεκτήματα συναρτησιακού προγραμματισμού: Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Μειονεκτήματα Μειωμένη απόδοση στην εκτέλεση Μεγαλύτερες απαιτήσεις μνήμης Διδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 12 / 25

Συμπεράσματα Η απόδειξη της ορθότητας ενός προγράμματος μπορεί να γίνει εύκολα ελέγχοντας τις αντικαταστάσεις (αναγωγές). Η απόδειξη ορθότητας αναδρομικών συναρτήσεων γίνεται με χρήση μαθηματικής επαγωγής. Πλεονεκτήματα συναρτησιακού προγραμματισμού: Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Μειονεκτήματα Μειωμένη απόδοση στην εκτέλεση Μεγαλύτερες απαιτήσεις μνήμης Διδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 12 / 25

Συμπεράσματα Η απόδειξη της ορθότητας ενός προγράμματος μπορεί να γίνει εύκολα ελέγχοντας τις αντικαταστάσεις (αναγωγές). Η απόδειξη ορθότητας αναδρομικών συναρτήσεων γίνεται με χρήση μαθηματικής επαγωγής. Πλεονεκτήματα συναρτησιακού προγραμματισμού: Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Μειονεκτήματα Μειωμένη απόδοση στην εκτέλεση Μεγαλύτερες απαιτήσεις μνήμης Διδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 12 / 25

Συμπεράσματα Η απόδειξη της ορθότητας ενός προγράμματος μπορεί να γίνει εύκολα ελέγχοντας τις αντικαταστάσεις (αναγωγές). Η απόδειξη ορθότητας αναδρομικών συναρτήσεων γίνεται με χρήση μαθηματικής επαγωγής. Πλεονεκτήματα συναρτησιακού προγραμματισμού: Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Μειονεκτήματα Μειωμένη απόδοση στην εκτέλεση Μεγαλύτερες απαιτήσεις μνήμης Διδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 12 / 25

Συμπεράσματα Η απόδειξη της ορθότητας ενός προγράμματος μπορεί να γίνει εύκολα ελέγχοντας τις αντικαταστάσεις (αναγωγές). Η απόδειξη ορθότητας αναδρομικών συναρτήσεων γίνεται με χρήση μαθηματικής επαγωγής. Πλεονεκτήματα συναρτησιακού προγραμματισμού: Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Μειονεκτήματα Μειωμένη απόδοση στην εκτέλεση Μεγαλύτερες απαιτήσεις μνήμης Διδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 12 / 25

Outline 1 Φιλοσοφία Γλωσσών Προγραμματισμού 2 Συναρτησιακός Προγραμματισμός (Functional Programming) 3 Λογικός Προγραμματισμός (Prolog) 4 Object-Oriented Programming ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 13 / 25

Κεντρική Ιδέα Το πρόγραμμα είναι εκφρασμένο σε μια μορφή συμβολικής λογικής με δήλωση των σχέσεων μεταξύ των δεδομένων που διαχειρίζεται. Η εκτέλεση του προγράμματος ισοδυναμεί με τη διεξαγωγή συλλογισμών σε αυτή τη λογική. Βιβλιογραφία: W.F. Clocksin and C.S. Mellish, Programming in Prolog, Springer ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 14 / 25

Κεντρική Ιδέα Το πρόγραμμα είναι εκφρασμένο σε μια μορφή συμβολικής λογικής με δήλωση των σχέσεων μεταξύ των δεδομένων που διαχειρίζεται. Η εκτέλεση του προγράμματος ισοδυναμεί με τη διεξαγωγή συλλογισμών σε αυτή τη λογική. Βιβλιογραφία: W.F. Clocksin and C.S. Mellish, Programming in Prolog, Springer Διδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 14 / 25

Κεντρική Ιδέα Το πρόγραμμα είναι εκφρασμένο σε μια μορφή συμβολικής λογικής με δήλωση των σχέσεων μεταξύ των δεδομένων που διαχειρίζεται. Η εκτέλεση του προγράμματος ισοδυναμεί με τη διεξαγωγή συλλογισμών σε αυτή τη λογική. Βιβλιογραφία: W.F. Clocksin and C.S. Mellish, Programming in Prolog, Springer Διδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 14 / 25

Παράδειγμα Γεγονότα: male(john). male(george). female(mary). female(jenny). parent(john,george). parent(mary,george). parent(john,jenny). parent(mary,jenny). Κανόνες: father(x,y) :- parent(x,y), male(x). mother(x,y) :- parent(x,y), female(x). human(x) :- male(x). human(x) :- female(x). brother(x,y) :- male(x), parent(z,x), parent(z,y). sister(x,y) :- female(x), parent(z,x), parent(z,y). ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 15 / 25

Ερωτήσεις?- male(john). yes?- male(mary). no?- male(peter). no?- male(x). X = john ; X = george ; no?- brother(george,jenny). yes?- human(x). X = john; X = george; X = mary; X = jenny; no?- mother(x,george). X = mary; no?- sister(x,y). X = jenny, Y = george; X = jenny, Y = jenny; X = jenny, Y = george; X = jenny, Y = jenny; no ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 16 / 25

Παραδείγματα Ι engineer(x) :- graduate(x), experience(x). rational(x) :- X = A/B, integer(a), integer(b), not(b = 0). Μέγιστος Κοινός Διαιρέτης: gcd(x, 0, X). gcd(0, X, X). gcd(x, Y, D) :- X < Y, Y1 is Y mod X, gcd(x, Y1, D). gcd(x, Y, D) :- Y < X, gcd(y, X, D). ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 17 / 25

Παραδείγματα Ι engineer(x) :- graduate(x), experience(x). rational(x) :- X = A/B, integer(a), integer(b), not(b = 0). Μέγιστος Κοινός Διαιρέτης: gcd(x, 0, X). gcd(0, X, X). gcd(x, Y, D) :- X < Y, Y1 is Y mod X, gcd(x, Y1, D). gcd(x, Y, D) :- Y < X, gcd(y, X, D). ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 17 / 25

Παραδείγματα ΙΙ Παραγοντικό: factorial(0, 1). factorial(n, Result) :- N > 0, N1 is N-1, factorial(n1, Facmin), Result is Facmin*N. ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 18 / 25

Outline 1 Φιλοσοφία Γλωσσών Προγραμματισμού 2 Συναρτησιακός Προγραμματισμός (Functional Programming) 3 Λογικός Προγραμματισμός (Prolog) 4 Object-Oriented Programming ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 19 / 25

Object-Oriented Programming Γλώσσες Simula (Norway), Smalltalk (Xerox, California), C++ (Denmark), Eiffel (France), Java (Sun Microsystems), C# (Microsoft) Χαρακτηριστικά: messages αντί για procedures (functions) objects αντί για data classes (families of objects) αντί για types Information Hiding Data Abstraction Dynamic Binding Inheritance ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 20 / 25

Object-Oriented Programming Γλώσσες Simula (Norway), Smalltalk (Xerox, California), C++ (Denmark), Eiffel (France), Java (Sun Microsystems), C# (Microsoft) Χαρακτηριστικά: messages αντί για procedures (functions) objects αντί για data classes (families of objects) αντί για types Information Hiding Data Abstraction Dynamic Binding Inheritance ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 20 / 25

Object-Oriented Programming Γλώσσες Simula (Norway), Smalltalk (Xerox, California), C++ (Denmark), Eiffel (France), Java (Sun Microsystems), C# (Microsoft) Χαρακτηριστικά: messages αντί για procedures (functions) objects αντί για data classes (families of objects) αντί για types Information Hiding Data Abstraction Dynamic Binding Inheritance ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 20 / 25

Object-Oriented Programming Γλώσσες Simula (Norway), Smalltalk (Xerox, California), C++ (Denmark), Eiffel (France), Java (Sun Microsystems), C# (Microsoft) Χαρακτηριστικά: messages αντί για procedures (functions) objects αντί για data classes (families of objects) αντί για types Information Hiding Data Abstraction Dynamic Binding Inheritance ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 20 / 25

Object-Oriented Programming Γλώσσες Simula (Norway), Smalltalk (Xerox, California), C++ (Denmark), Eiffel (France), Java (Sun Microsystems), C# (Microsoft) Χαρακτηριστικά: messages αντί για procedures (functions) objects αντί για data classes (families of objects) αντί για types Information Hiding Data Abstraction Dynamic Binding Inheritance ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 20 / 25

Object-Oriented Programming Γλώσσες Simula (Norway), Smalltalk (Xerox, California), C++ (Denmark), Eiffel (France), Java (Sun Microsystems), C# (Microsoft) Χαρακτηριστικά: messages αντί για procedures (functions) objects αντί για data classes (families of objects) αντί για types Information Hiding Data Abstraction Dynamic Binding Inheritance ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 20 / 25

Object-Oriented Programming Γλώσσες Simula (Norway), Smalltalk (Xerox, California), C++ (Denmark), Eiffel (France), Java (Sun Microsystems), C# (Microsoft) Χαρακτηριστικά: messages αντί για procedures (functions) objects αντί για data classes (families of objects) αντί για types Information Hiding Data Abstraction Dynamic Binding Inheritance ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 20 / 25

Object-Oriented Programming Γλώσσες Simula (Norway), Smalltalk (Xerox, California), C++ (Denmark), Eiffel (France), Java (Sun Microsystems), C# (Microsoft) Χαρακτηριστικά: messages αντί για procedures (functions) objects αντί για data classes (families of objects) αντί για types Information Hiding Data Abstraction Dynamic Binding Inheritance ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 20 / 25

Object-Oriented Programming Η επίλυση προβλημάτων γίνεται μέσω αντικειμένων (objects) που αλληλεπιδρούν: δεδομένα που ξέρουν να εφαρμόζουν μεθόδους στον εαυτό τους. Οι μέθοδοι μιας κλάσης (class methods) ορίζουν λειτουργίες που η κλάση ξέρει πώς να κάνει δεν ορίζουν αντικείμενα της κλάσης. Οι κλήσεις μεθόδων είναι κάτι σαν τις συνήθεις κλήσεις συναρτήσεων στις μη αντικειμενοστρεφείς γλώσσες. Το πρόγραμμα είναι οργανωμένο ως ένα σύνολο από αλληλεπιδρώντα αντικείμενα Κάθε αντικείμενο περιέχει: δεδομένα (data), που χαρακτηρίζουν την κατάστασή του μεθόδους (methods), δηλαδή κώδικα που υλοποιεί τη συμπεριφορά του ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 21 / 25

Object-Oriented Programming Η επίλυση προβλημάτων γίνεται μέσω αντικειμένων (objects) που αλληλεπιδρούν: δεδομένα που ξέρουν να εφαρμόζουν μεθόδους στον εαυτό τους. Οι μέθοδοι μιας κλάσης (class methods) ορίζουν λειτουργίες που η κλάση ξέρει πώς να κάνει δεν ορίζουν αντικείμενα της κλάσης. Οι κλήσεις μεθόδων είναι κάτι σαν τις συνήθεις κλήσεις συναρτήσεων στις μη αντικειμενοστρεφείς γλώσσες. Το πρόγραμμα είναι οργανωμένο ως ένα σύνολο από αλληλεπιδρώντα αντικείμενα Κάθε αντικείμενο περιέχει: δεδομένα (data), που χαρακτηρίζουν την κατάστασή του μεθόδους (methods), δηλαδή κώδικα που υλοποιεί τη συμπεριφορά του ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 21 / 25

Object-Oriented Programming Η επίλυση προβλημάτων γίνεται μέσω αντικειμένων (objects) που αλληλεπιδρούν: δεδομένα που ξέρουν να εφαρμόζουν μεθόδους στον εαυτό τους. Οι μέθοδοι μιας κλάσης (class methods) ορίζουν λειτουργίες που η κλάση ξέρει πώς να κάνει δεν ορίζουν αντικείμενα της κλάσης. Οι κλήσεις μεθόδων είναι κάτι σαν τις συνήθεις κλήσεις συναρτήσεων στις μη αντικειμενοστρεφείς γλώσσες. Το πρόγραμμα είναι οργανωμένο ως ένα σύνολο από αλληλεπιδρώντα αντικείμενα Κάθε αντικείμενο περιέχει: δεδομένα (data), που χαρακτηρίζουν την κατάστασή του μεθόδους (methods), δηλαδή κώδικα που υλοποιεί τη συμπεριφορά του ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 21 / 25

Object-Oriented Programming Η επίλυση προβλημάτων γίνεται μέσω αντικειμένων (objects) που αλληλεπιδρούν: δεδομένα που ξέρουν να εφαρμόζουν μεθόδους στον εαυτό τους. Οι μέθοδοι μιας κλάσης (class methods) ορίζουν λειτουργίες που η κλάση ξέρει πώς να κάνει δεν ορίζουν αντικείμενα της κλάσης. Οι κλήσεις μεθόδων είναι κάτι σαν τις συνήθεις κλήσεις συναρτήσεων στις μη αντικειμενοστρεφείς γλώσσες. Το πρόγραμμα είναι οργανωμένο ως ένα σύνολο από αλληλεπιδρώντα αντικείμενα Κάθε αντικείμενο περιέχει: δεδομένα (data), που χαρακτηρίζουν την κατάστασή του μεθόδους (methods), δηλαδή κώδικα που υλοποιεί τη συμπεριφορά του ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 21 / 25

Object-Oriented Programming Η επίλυση προβλημάτων γίνεται μέσω αντικειμένων (objects) που αλληλεπιδρούν: δεδομένα που ξέρουν να εφαρμόζουν μεθόδους στον εαυτό τους. Οι μέθοδοι μιας κλάσης (class methods) ορίζουν λειτουργίες που η κλάση ξέρει πώς να κάνει δεν ορίζουν αντικείμενα της κλάσης. Οι κλήσεις μεθόδων είναι κάτι σαν τις συνήθεις κλήσεις συναρτήσεων στις μη αντικειμενοστρεφείς γλώσσες. Το πρόγραμμα είναι οργανωμένο ως ένα σύνολο από αλληλεπιδρώντα αντικείμενα Κάθε αντικείμενο περιέχει: δεδομένα (data), που χαρακτηρίζουν την κατάστασή του μεθόδους (methods), δηλαδή κώδικα που υλοποιεί τη συμπεριφορά του ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 21 / 25

Object-Oriented Programming class Circle { real x, y, r; Circle (real radius) { } x = 0; y = 0; r = radius; } real circumference() { return 2*3.14*r; } real area() { return 3.14*r*r; } ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 22 / 25

Ιεραρχίες κλάσεων Κληρονομικότητα (inheritance) Εξειδίκευση των αντικειμένων μιας κλάσης, υποστηρίζοντας πρόσθετη ή διαφοροποιημένη συμπεριφορά. ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 23 / 25

Βασικές Αρχές Object-Oriented Programming Αφαίρεση, δόμηση, επαναχρησιμοποίηση Κατά την ανάλυση και τη σχεδίαση: objects ανάλογα με interface και όχι με implementation. Απόκρυψη όσο το δυνατόν περισσότερο της υλοποίησης. Επαναχρησιμοποιήση των αντικείμενων. Ελαχιστοποιήση διαδράσεων (interactions) μεταξύ αντικειμένων. ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 24 / 25

Βασικές Αρχές Object-Oriented Programming Αφαίρεση, δόμηση, επαναχρησιμοποίηση Κατά την ανάλυση και τη σχεδίαση: objects ανάλογα με interface και όχι με implementation. Απόκρυψη όσο το δυνατόν περισσότερο της υλοποίησης. Επαναχρησιμοποιήση των αντικείμενων. Ελαχιστοποιήση διαδράσεων (interactions) μεταξύ αντικειμένων. ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 24 / 25

Βασικές Αρχές Object-Oriented Programming Αφαίρεση, δόμηση, επαναχρησιμοποίηση Κατά την ανάλυση και τη σχεδίαση: objects ανάλογα με interface και όχι με implementation. Απόκρυψη όσο το δυνατόν περισσότερο της υλοποίησης. Επαναχρησιμοποιήση των αντικείμενων. Ελαχιστοποιήση διαδράσεων (interactions) μεταξύ αντικειμένων. ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 24 / 25

Βασικές Αρχές Object-Oriented Programming Αφαίρεση, δόμηση, επαναχρησιμοποίηση Κατά την ανάλυση και τη σχεδίαση: objects ανάλογα με interface και όχι με implementation. Απόκρυψη όσο το δυνατόν περισσότερο της υλοποίησης. Επαναχρησιμοποιήση των αντικείμενων. Ελαχιστοποιήση διαδράσεων (interactions) μεταξύ αντικειμένων. ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 24 / 25

Βασικές Αρχές Object-Oriented Programming Αφαίρεση, δόμηση, επαναχρησιμοποίηση Κατά την ανάλυση και τη σχεδίαση: objects ανάλογα με interface και όχι με implementation. Απόκρυψη όσο το δυνατόν περισσότερο της υλοποίησης. Επαναχρησιμοποιήση των αντικείμενων. Ελαχιστοποιήση διαδράσεων (interactions) μεταξύ αντικειμένων. ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 24 / 25

Object-Oriented Programming Συνεπώς: Εύκολη και γρήγορη ανάπτυξη πρωτότυπων συστημάτων λογισμικού. Εύκολη τροποποίηση για επαναχρησιμοποίηση και εύκολος εντοπισμός λαθών. Ομως: απώλεια αποδοτικότητας, κόστος μεταγλωττισμού,... ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 25 / 25

Object-Oriented Programming Συνεπώς: Εύκολη και γρήγορη ανάπτυξη πρωτότυπων συστημάτων λογισμικού. Εύκολη τροποποίηση για επαναχρησιμοποίηση και εύκολος εντοπισμός λαθών. Ομως: απώλεια αποδοτικότητας, κόστος μεταγλωττισμού,... ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 25 / 25

Object-Oriented Programming Συνεπώς: Εύκολη και γρήγορη ανάπτυξη πρωτότυπων συστημάτων λογισμικού. Εύκολη τροποποίηση για επαναχρησιμοποίηση και εύκολος εντοπισμός λαθών. Ομως: απώλεια αποδοτικότητας, κόστος μεταγλωττισμού,... ιδάσκων: Στάθης Ζάχος ( CoReLab - NTUA) Προγραμματισμός Η/Υ Ιανουάριος 2016 25 / 25