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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Περιγραφή αλγορίθµων. ιαγράµµατα ροής

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

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

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

Στοιχεία Συναρτήσεων. 1. Να βρεθεί το πεδίο ορισμού των παρακάτω συναρτήσεων: στ. x 1

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

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

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

Γ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι

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

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Γ7.8 Εγγραφές (Structures) Γ Λυκείου Κατεύθυνσης

Ανάπτυξη και Σχεδίαση Λογισμικού

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

Διορθώσεις Συμπληρώσεις επί της επανεκτύπωσης 2003 της 2 ης έκδοσης του βιβλίου «Διαδικαστικός Προγραμματισμός C»

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ

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

Προγραμματισμός ΙI (Θ)

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Μ Α Θ Η Μ Α Τ Α Γ Λ Υ Κ Ε Ι Ο Υ

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 10 Ο. Δομές Ενώσεις Απαριθμητοί τύποι δεδομένων ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΥ ΕΡΓΑΣΤΗΡΙΟ 9. ΑΣΚΗΣΕΙΣ (με ενδεικτική λύση)

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Τι είναι υποπρόγραμμα; Τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομο υπολογιστικό έργο (γράφεται χωριστά από το υπόλοιπο πρόγραμμα)

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

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

Ασκήσεις Προγραμματισμού για το Μάθημα : Εφαρμογές Πληροφορικής. Π=3.14 Μεταβλητές Πραγματικές: X,A,B,Y Αρχή

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο. Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

Προγραμματισμός ΙI (Θ)

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

Αντικειμενοστρεφής προγραμματισμός Object Oriented Programming (OOP) Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

7.1 Αλφάβητο. 7.2 Τύποι δεδομένων. 7.3 Σταθερές. 7.4 Μεταβλητές. 7.5 Αριθμητικοί τελεστές. 7.6 Συναρτήσεις. 7.7 Αριθμητικές εκφράσεις. 7.

Πληροφορική. Ενότητα 1: Α. Οργάνωση μαθήματος. Β. Στοιχεία Προγραμματισμού -Προγραμματιστικές Δομές, Πρόγραμμα, Γλώσσες.

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωμύλος Κορακίτης Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Kλάσεις: : constructors, δηλώσεις, παραδείγματα Κλάσεις Σύνθετες, οριζόμενες από το χρήστη δομές, οι οποίες περιέχουν Δεδομένα και Συναρτήσεις Τα δεδομένα αντιστοιχούν σε Ιδιότητες (πεδία, fields, attributes)...ενώ οι συναρτήσεις περιγράφουν τη Συμπεριφορά (μεθόδους, methods, member functions)..των οντοτήτων που παριστάνει μια κλάση, τα μέλη των οποίων λέγονται "αντικείμενα" object-oriented programming = αντικειμενοστρεφής προγραμματισμός Οι κλάσεις μπορούν να ιδωθούν: Ως προγραμματιστικό εργαλείο Ως εργαλείο μοντελοποίησης δεδομένων 1

Παραδείγματα κλάσεων Ενα σημείο Δεδομένα: x, y, id Συμπεριφορά: νέο_σημείο() Μια γραμμή Δεδομένα: x1, y1, x2, y2, id Συμπεριφορά: νέα_γραμμή(), μήκος(), χάραξη() Ενα τρίγωνο Δεδομένα: κορυφή 1, κορυφή 2, κορυφή 3, id Συμπεριφορά: νέο_τρίγωνο(), εμβαδόν(), περίμετρος() Ενας μιγαδικός αριθμός Δεδομένα: πραγματικό μέρος, φανταστικό μέρος Συμπεριφορά: νέος_αριθμός(), πρόσθεση(), αφαίρεση() Ενα πολύγωνο Δεδομένα: πλήθος κορυφών, συντεταγμένες κορυφών, id Συμπεριφορά: εμβαδόν(), περίμετρος(), κέντρο_βάρους() Ορισμός κλάσεων Τρόπος 1 Προσδιοριστής ορατότητας: Δήλωση μεταβλητών μνήμης (πεδίων) Δήλωση και υλοποίηση συναρτήσεων (μεθόδων) 2

Ορισμός κλάσεων Τρόπος 1 Προσδιοριστής ορατότητας: Δήλωση μεταβλητών μνήμης (πεδίων) Δήλωση και υλοποίηση συναρτήσεων (μεθόδων) Ορισμός κλάσεων Τρόπος 2 Προσδιοριστής ορατότητας: Δήλωση μεταβλητών μνήμης (πεδίων) Δήλωση συναρτήσεων (μεθόδων) Υλοποίηση μεθόδων (χρήση του τελεστή ::) 3

Ορισμός κλάσεων Τρόπος 2 Προσδιοριστής ορατότητας: Δήλωση μεταβλητών μνήμης (πεδίων) Δήλωση συναρτήσεων (μεθόδων) Υλοποίηση μεθόδων (χρήση του τελεστή ::) Ορισμός κλάσεων Γενικά Προσδιοριστής ορατότητας 1: Δήλωση μεταβλητών μνήμης (πεδίων) Δήλωση/υλοποίηση συναρτήσεων (μεθόδων) Προσδιοριστής ορατότητας 2: Δήλωση μεταβλητών μνήμης (πεδίων) Δήλωση/υλοποίηση συναρτήσεων (μεθόδων)... Υλοποίηση μεθόδων (χρήση του τελεστή ::) 4

Ορισμός κλάσεων Γενικά (παράδειγμα) public: Δήλωση ορατών από έξω μεταβλητών μνήμης (πεδίων) Δήλωση ορατών από έξω συναρτήσεων (μεθόδων) private: Δήλωση μη ορατών από έξω μεταβλητών μνήμης (πεδίων) Δήλωση/υλοποίηση μη ορατών από έξω συναρτήσεων (μεθόδων) Υλοποίηση μεθόδων (χρήση του τελεστή ::) Ορισμός κλάσεων public: Δήλωση ορατών από έξω μεταβλητών μνήμης (πεδίων) Δήλωση ορατών από έξω συναρτήσεων (μεθόδων) private: Δήλωση μη ορατών από έξω μεταβλητών μνήμης (πεδίων) Δήλωση/υλοποίηση μη ορατών από έξω συναρτήσεων (μεθόδων) Υλοποίηση μεθόδων (χρήση του τελεστή ::) 5

Χαρακτηριστικές μέθοδοι κλάσεων Constructors Μέθοδοι που εκτελούνται αυτόματα με τη δήλωση ενός αντικειμένου της κλάσης Εχουν υποχρεωτικά το όνομα της κλάσης και ΔΕΝ έχουν τύπο Μπορεί να είναι περισσότερες του ενός, αλλά πρέπει να διαφέρουν ως προς τις παραμέτρους που δέχονται Destructors Μέθοδοι που εκτελούνται αυτόματα με την καταστροφή ενός αντικειμένου της κλάσης Εχουν το όνομα της κλάσης, με το "~" στην αρχή του Κάθε κλάση έχει μόνο έναν destructor Ισχυρότατο εργαλείο προγραμματισμού! Constructors: παράδειγμα Μια γραμμή ως κλάση Δεδομένα: x1, y1, x2, y2, len: πραγματικοί αριθμοί Συμπεριφορά: νέα_γραμμή() Διάβασε όλα τα δεδομένα της γραμμής από το πληκτρολόγιο Υπολόγισε το μήκος μήκος() Υπολόγισε το μήκος και ενημέρωσε το πεδίο len νέα_γραμμή(σχ1, συ1, σχ2, συ2) Τα δεδομένα της γραμμής δίνονται ως παράμετροι Υπολόγισε το μήκος νέα_γραμμή(σχ2, συ2) Δίνεται το δεύτερο άκρο ως παράμετροι, και ΘΕΩΡΟΥΜΕ ότι το πρώτο είναι το (0,0) Υπολόγισε το μήκος 6

Constructors: παράδειγμα Παράδειγμα 7

Γιατί είναι χρήσιμες οι κλάσεις;;; Στην ανάλυση προβλημάτων Κατάλληλες για παράσταση σύνθετων εννοιών Στην υλοποίηση Οταν ολοκληρωθεί ο ορισμός μιας κλάσης, η προσοχήμαςαφιερώνεταιστο πραγματικό πρόβλημα και όχι στα τεχνικά σημεία Στον προγραμματισμό περιβαλλόντων με γραφικά ΟΛΑ ανεξαιρέτως απαιτούν αντικειμενοστρεφή προγραμματισμό Στην επαναχρησιμοποίηση έτοιμων λύσεων Βρίσκουμε έτοιμες βιβλιοθήκες για "τα πάντα" και δεν χρειάζεται να ξέρουμε να προγραμματίζουμε αυτά που υλοποιούν οι βιβλιοθήκες: απλά τα χρησιμοποιούμε αμέσως Στην επέκταση έτοιμων λύσεων Προσθέτουμε δικά μας στοιχεία συμπεριφοράς σε έτοιμα προγράμματα (πχ: arcview, autocad, msword, κλπ) Παράδειγμα 8

Παράδειγμα Παράδειγμα 9

Παραδείγματα struct και κλάσεων Ορισμός struct που παριστάνει πολύγωνο α) για το πλήθος των κορυφών του πολυγώνου (ακέραιος αριθμός που δεν μπορεί να είναι μεγαλύτερος από έναν αριθμό MAXK που δηλώνεται ως σταθερά στην αρχή του προγράμματος). β) για τις συντεταγμένες x και y των κορυφών του πολυγώνου (δύο μονοδιάστατοι πίνακες πραγματικών αριθμών με διάσταση MAXK) γ) το εμβαδό και την περίμετρο του πολυγώνου (πραγματικοί αριθμοί) δ) τις συντεταγμένες ενός εσωτερικού σημείου του πολυγώνου (πραγματικοί αριθμοί const int MAXK = 100; struct polygon int K; } Παραδείγματα struct και κλάσεων Ορισμός struct που παριστάνει πολύγωνο α) για το πλήθος των κορυφών του πολυγώνου (ακέραιος αριθμός που δεν μπορεί να είναι μεγαλύτερος από έναν αριθμό MAXK που δηλώνεται ως σταθερά στην αρχή του προγράμματος). β) για τις συντεταγμένες x και y των κορυφών του πολυγώνου (δύο μονοδιάστατοι πίνακες πραγματικών αριθμών με διάσταση MAXK) γ) το εμβαδό και την περίμετρο του πολυγώνου (πραγματικοί αριθμοί) δ) τις συντεταγμένες ενός εσωτερικού σημείου του πολυγώνου (πραγματικοί αριθμοί const int MAXK = 100; struct polygon int K; float x[maxk], y[maxk]; } 10

Παραδείγματα struct και κλάσεων Ορισμός struct που παριστάνει πολύγωνο α) για το πλήθος των κορυφών του πολυγώνου (ακέραιος αριθμός που δεν μπορεί να είναι μεγαλύτερος από έναν αριθμό MAXK που δηλώνεται ως σταθερά στην αρχή του προγράμματος). β) για τις συντεταγμένες x και y των κορυφών του πολυγώνου (δύο μονοδιάστατοι πίνακες πραγματικών αριθμών με διάσταση MAXK) γ) το εμβαδό και την περίμετρο του πολυγώνου (πραγματικοί αριθμοί) δ) τις συντεταγμένες ενός εσωτερικού σημείου του πολυγώνου (πραγματικοί αριθμοί const int MAXK = 100; struct polygon int K; float x[maxk], y[maxk]; float Area, Perimeter; } Παραδείγματα struct και κλάσεων Ορισμός struct που παριστάνει πολύγωνο α) για το πλήθος των κορυφών του πολυγώνου (ακέραιος αριθμός που δεν μπορεί να είναι μεγαλύτερος από έναν αριθμό MAXK που δηλώνεται ως σταθερά στην αρχή του προγράμματος). β) για τις συντεταγμένες x και y των κορυφών του πολυγώνου (δύο μονοδιάστατοι πίνακες πραγματικών αριθμών με διάσταση MAXK) γ) το εμβαδό και την περίμετρο του πολυγώνου (πραγματικοί αριθμοί) δ) τις συντεταγμένες ενός εσωτερικού σημείου του πολυγώνου (πραγματικοί αριθμοί const int MAXK = 100; struct polygon int K; float x[maxk], y[maxk]; float Area, Perimeter; float Xin, Yin; } 11

Kατασκευάστε τη συνάρτηση init_polygon(polygon p) ηοποίαδέχεται ως όρισμα μια μεταβλητή p τύπου polygon και διαβάζει από το αρχείο polygon.txt τις συντεταγμένες του εσωτερικού σημείου και των κορυφών του πολυγώνου, τις οποίες και τοποθετεί στα αντίστοιχα πεδία του struct p. Προσέξτε τη σωστή ενημέρωση του πεδίου που αντιστοιχεί στο πλήθος των κορυφών του πολυγώνου. Να κάνετε την παραδοχή ότι στο αρχείο polygon.txt δεν περιέχονται περισσότερες από MAXK κορυφές. Στη συνέχεια κατασκευάστε τη συνάρτηση polygon_data(polygon p) η οποία δέχεται επίσης ως όρισμα μια μεταβλητή p τύπου polygon και εμφανίζει στην οθόνη τις συντεταγμένες των κορυφών του πολυγώνου. 12