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

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

Outline. 4 Object-Oriented Programming

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

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

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

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

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

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

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

ιαφάνειες παρουσίασης #3

Κάποιες γενικές παρατηρήσεις:

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

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

Αντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908

Τι σημαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγμα επισημειώσεων τύπων στην ML. Επισημειώσεις τύπων (type annotations) f : A B σημαίνει:

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

Ονόματα και Εμβέλεια. Wassily Kandinsky, Black lines, 1913

ιαφάνειες παρουσίασης #3

ιαφάνειες παρουσίασης #4

ιαφάνειες παρουσίασης #5

ιαφάνειες παρουσίασης #11

Η γλώσσα ML σε βάθος. Τι σημαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγμα επισημειώσεων τύπων στην ML. Επισημειώσεις τύπων (type annotations)

Τι σηµαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγµα επισηµειώσεων τύπων στην ML. Επισηµειώσεις τύπων (type annotations) Σύνταξη ταιριάσµατος

Η γλώσσα ML σε βάθος. Joan Miró, El Carnaval del Arlequín, Κωστής Σαγώνας Νίκος Παπασπύρου

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

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

ιαφάνειες παρουσίασης #5 (β)

Η γλώσσα ML σε βάθος. Γλώσσες Προγραμματισμού Ι. Διδάσκοντες: Νικόλαος Παπασπύρου, Κωστής Σαγώνας

ιαφάνειες παρουσίασης #3

ιαφάνειες παρουσίασης #4

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

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

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

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

Δομές Δεδομένων & Αλγόριθμοι

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

ιαφάνειες παρουσίασης #7

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

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

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

Προγραμματισμός Υπολογιστών με C++

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο

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

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

Ευφυείς Τεχνολογίες ----Πράκτορες

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

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

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

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

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

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

Computing. Νοέμβριος Έκδοση 1.0

ιαφάνειες παρουσίασης #4

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

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

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

Βασικές Έννοιες Δοµών Δεδοµένων

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

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Εμβέλεια. Παραδείγματα. Παραδείγματα. Μπλοκ (blocks)

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Εισαγωγή. Όλες οι (άλλες) επιστήµες µηχανικών βασίζονται σε σταθερό θεωρητικό (µαθηµατικό) υπόβαθρο

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

Επανάληψη για τις Τελικές εξετάσεις

Συμπερασμός Τύπων και Πολυμορφισμός 4

AVL-trees C++ implementation

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Τυπικές Μέθοδοι στην Ανάπτυξη Συστηµάτων Λογισµικού

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

υναµικές οµές εδοµένων

Αποτελέσματα προόδου

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

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

ιαφάνειες παρουσίασης #5

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

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

εύτερη γενιά: γλώσσα assembly

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

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

Transcript:

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ http://courses.softlab.ntua.gr/softeng/ ιδάσκοντες: (nickie@softlab.ntua.gr) Βασίλης Βεσκούκης (bxb@softlab.ntua.gr) Γλώσσες Προγραµµατισµού και Ανάπτυξη Συστηµάτων Λογισµικού ΤΛ και ΓΠ Γλώσσες προγραµµατισµού Επιθυµητά χαρακτηριστικά ΓΠ Επιλεγµένα ειδικά θέµατα ΓΠ 1

ΤΛ και ΓΠ Σχέση µεταξύ ανάπτυξης λογισµικού και σχεδίασης γλωσσών προγραµµατισµού ανάλυση µοντέλο σχεδίαση σχέδιο / λύση κωδικοποίηση πρόγραµµα Η σχεδίαση των ΓΠ επηρεάζει τη διαδικασία ανάπτυξης λογισµικού... και αντίστροφα 2

«Το τρίγωνο των εργαλείων» Εκτέλεση Γλώσσες Προγραµµατισµού (απόδοση) Αφηρηµένη σχεδίαση (εκφραστικότητα) Γλώσσες Μοντελοποίησης Ανάλυση (ορθότητα) Programming Languages and Software Engineering Τεχνολογία Gregory Λογισµικού T. Sullivan April 10, 2002 MIT AI Lab 3

Γλώσσες προγραµµατισµού (i) Σχολές προγραµµατισµού προστακτικός (imperative) προγραµµατισµός: το πρόγραµµα περιγράφεται ως µια ακολουθία εντολών (προσταγών) που πρέπει να εκτελεστούν συναρτησιακός (functional) προγραµµατισµός: το πρόγραµµα περιγράφεται ως ένα σύνολο µαθηµατικών συναρτήσεων λογικός (logic) προγραµµατισµός το πρόγραµµα περιγράφεται ως ένα σύνολο γεγονότων και συλλογιστικών κανόνων 4

Γλώσσες προγραµµατισµού (ii) Επιµέρους παραδείγµατα προγραµµατισµού δοµηµένος (structured) προγραµµατισµός υψηλού επιπέδου δοµές ελέγχου, αφαίρεση δεδοµένων αντικειµενοστρεφής (object-oriented) προγραµµατισµός αφαίρεση δεδοµένων συνδυάζοντας κατάσταση και συµπεριφορά, επαναχρησιµοποίηση 5

Γλώσσες προγραµµατισµού (iii) Επιµέρους παραδείγµατα προγραµµατισµού παράλληλος (parallel) και κατανεµηµένος (distributed) προγραµµατισµός συστήµατα λογισµικού που λειτουργούν σε ένα δίκτυο από συνεργαζόµενους υπολογιστές ψηφιδοστρεφής (component-oriented) προγραµµατισµός και scripting languages συστήµατα λογισµικού που αποτελούνται από πολλά συνεργαζόµενα τµήµατα 6

Γλώσσες προγραµµατισµού (iv) 7

Γλώσσες προγραµµατισµού (v) 8

Επιθυµητά χαρακτηριστικά ΓΠ Εκτέλεση προγραµµάτων αποδοτική (τεχνικές υλοποίησης) ασφαλής (type systems, run-time safety) Αφαίρεση ροής ελέγχου: δοµηµένος προγραµµατισµός structured programming δεδοµένων: απόκρυψη πληροφοριών data abstraction / information hiding Επαναχρησιµοποίηση συστατικών Προγραµµατισµός σε υψηλό επίπεδο 9

Αφαίρεση ροής ελέγχου οµές ελέγχου υψηλού επιπέδου επιλογής (if-then-else, case) βρόχων (for, while, repeat) υποπρογράµµατα εξαιρέσεις exceptions συνέχειες continuations... και όχι... άλµατα (goto) 10

Αφαίρεση δεδοµένων Συναρτήσεις και τύποι υψηλής τάξης ιαχωρισµός τύπου και υλοποίησης class-based object-oriented languages Modules signature implementation Παραµετρικά modules functors Components 11

Επαναχρησιµοποίηση συστατικών Κελυφοποίηση encapsulation αντικείµενα µε κατάσταση και συµπεριφορά Κληρονοµικότητα διαπροσωπείας συµπεριφοράς υλοποίησης Πολυµορφισµός inheritance παραµετρικός parametric polymorphism σχέση υποτύπου subtyping δυναµικό δέσιµο µεθόδων dynamic binding 12

Επιλεγµένα ειδικά θέµατα ΓΠ (i) Εξαιρέσεις βλ. C++ ή Java try { try { solveusingmethoda(problem); } catch (Failure...) { solveusingmethodb(problem); } } catch (Failure...) { print("both methods failed..."); } catch (Impossible...) { print("no solution exists..."); } 13

Επιλεγµένα ειδικά θέµατα ΓΠ Τύποι υψηλής τάξης fun sum : int list -> int (ii) βλ. ML fun sum [] = 0 sum (h:t) = h + sum(t); Τύποι υψηλής τάξης template <class T> class List {... }; List<int> l1; List<Person> l2; βλ. C++ τύποι που δέχονται ως παράµετρο τύπο 14

Επιλεγµένα ειδικά θέµατα ΓΠ (iii) Συναρτήσεις υψηλής τάξης βλ. C void qsort ( συναρτήσεις που unsigned n, void *array, δέχονται ως int (*cmp)(void *x, void *y) παράµετρο ); συνάρτηση Συναρτήσεις υψηλής τάξης fun qsort : string list * (string * string -> order) -> string list; π.χ. βλ. ML qsort(["dong","bell","ding"], strcmp) ["bell","ding","dong"] 15

Επιλεγµένα ειδικά θέµατα ΓΠ (iv) Συναρτήσεις υψηλής τάξης π.χ. βλ. ML fun cmpfirst : int -> (string * string -> comparison); συνάρτηση που επιστρέφει ως αποτέλεσµα συνάρτηση fun cmpfirst n (s1,s2) = let t1 = substring(s1,1,n); t2 = substring(s1,1,n); in strcmp(t1,t2) qsort(["dong","bell","ding"], cmpfirst(1)) ["bell","dong","ding"] 16

Επιλεγµένα ειδικά θέµατα ΓΠ (v) Παραµετρικός πολυµορφισµός fun id : 'a -> 'a fun id x = x; fun length : 'a list -> int; fun length [] = 0 length (h:t) = 1 + length(t); βλ. ML fun qsort : 'a list * ('a * 'a -> order) -> 'a list; Παραµετρικός πολυµορφισµός για κάθε τύπο 'a βλ. C++ template <class T> void qsort (unsigned n, T *array, int (*cmp)(const T &x, const T &y) ); 17

Επιλεγµένα ειδικά θέµατα ΓΠ Modules ιαπροσωπεία: πολυµορφικό λεξικό (vi) βλ. ML signature DICT = sig type 'a t exception unknown val empty : 'a t val lookup : 'a t * string -> 'a val insert : 'a t * string * 'a -> 'a t end; 18

Επιλεγµένα ειδικά θέµατα ΓΠ Modules (συνέχεια) Υλοποίηση 1: µε λίστα (vii) βλ. ML structure Dict1 : DICT = struct type 'a t = (string * 'a) list; exception unknown of string; val empty = []; fun lookup ([],k) = raise unknown(k) lookup ((s,x):d,k) = if k=s then x else lookup(d,k); fun insert (d,k,y) = (k,y):d; end; 19

Επιλεγµένα ειδικά θέµατα ΓΠ Modules (συνέχεια) Υλοποίηση 2: µε δυαδικό δέντρο (viii) βλ. ML structure Dict2 : STACK = struct datatype 'a t = leaf node of string * 'a * 'a t * 'a t; exception unknown of string; val empty = leaf; fun lookup (leaf,k) = raise unknown(k) lookup (node(s,x,l,r),k) = if k=s then x else if k<s then lookup(l,k) else lookup(r,k); 20

Επιλεγµένα ειδικά θέµατα ΓΠ (ix) Modules (συνέχεια) βλ. ML Υλοποίηση 2: µε δυαδικό δέντρο (συνέχεια) fun insert (leaf,k,y) = node(s,x,leaf,leaf) insert (node(s,x,l,r),k,y) = if k=s then node(k,y,l,r) else if k<s then node(s,x,insert(l,k,y),r) else node(s,x,l,insert(r,k,y)); end; 21

Επιλεγµένα ειδικά θέµατα ΓΠ (x) Functors: παραµετρικά modules βλ. ML functor UseDict (D:DICT) = struct fun many (d,[]) = d many (d,(k,y):t) = many(insert(d,k,y),t); fun learnfrench d = many(d,[("one", "un"), ("two", "deux"), ("three", "trois")]; end; let d = UseDict(Dict2). learnfrench(dict2.empty) in Dict2.lookup(d,"two") "deux" 22