ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο2-Νο3

Σχετικά έγγραφα
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Θεόδωρος Γ. Λάντζος Διάλεξη Νο1

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

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

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

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

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

Τι είναι κλάση Κλάση

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο6

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

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

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο8

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

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

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

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

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

Η βασική συνάρτηση προγράμματος main()

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

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

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

Υπερφόρτωση τελεστών (operator(

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

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

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

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

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

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

Μεθόδων Επίλυσης Προβλημάτων

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

Μεθόδων Επίλυσης Προβλημάτων

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

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

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

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

Ηβασικήσυνάρτηση προγράμματος main()

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Σηµειώσεις Θεωρίας)

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

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

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Copy Constructor Deep and Shallow Copies

Υπερφόρτωση τελεστών

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Τεχνικός Εφαρμογών Πληροφορικής

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

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

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

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

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

Transcript:

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο2-Νο3 1

Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας Επιτρέπετε το νερό, τα αναψυκτικά και ο καφές με την προϋπόθεση να μην λερώνουμε το χώρο και πετάμε τα σκουπίδια εκτός των καλαθιών. Κινητά αθόρυβα και μόνον σε περίπτωση άμεσης ανάγκης. Σε περίπτωση συναγερμού, αποχωρούμε από την αίθουσα για το σημείο συγκέντρωσης σταδιακά, χωρίς πανικό και πιέσεις. 2

Συναντήσεις και Forum Οι διαλέξεις θα διεξάγονται κάθε Πέμπτη 12 14 στην αίθουσα 106 ΣΤΕΦ Κάθε Πέμπτη 15 17 Θα υπάρχει ανοιχτό discussion forum προγραμματισμού στις επάνω αίθουσες της ΣΤΕΦ Ανακοινώσεις στην σελίδα μου http://www.teiser.gr/icd/staff/lantzos Ερωτήσεις δια μέσο email οι οποίες όμως θα απατούνται και αναλύονται στο forum. lantzos@teiser.gr 3

ΑΝΤΙΚΕΙΜΕΝΑ ΚΑΙ ΚΛΑΣΕΙΣ Κλάση Δ εδ ο μ έν α Συνήθως private για την εφαρμογή της ιδιήτητας data hiding data 1 data 2 data 3.......... Συν α ρ τή σ εις function1() function2() function3().......... Συνήθω ς public για την δυνατότητα κλήσης έξω απο τις κλάσεις Κ λ ά σ η :: Η γ εν νή τρ ια π α ρ α γ ω γ ή ς α ν τικ ειμ έν ω ν 4

Πού δηλώνουμε την κλάση στην γλώσσα C++ ; 1. Στην ίδια ακριβώς θέση όπου δηλώναμε και την struct. Δηλαδή, μετά το τέλος των directive εντολών (include, define) και πριν από την main(). 2. Σε ξεχωριστά αρχεία class_name.h οι δηλώσεις της δομής της κλάσης και class_name.cpp ο κώδικας των συναρτήσεων. Στο κυρίως πρόγραμμα απλά χρειάζεται να δηλώσουμε ένα include class_name.h 5

Πού & Πώς ορίζουμε αντικείμενα; Με τον ίδιο ακριβώς τρόπο όπως όταν δηλώναμε μεταβλητές μια δικιάς μας δομής. (Δηλαδή. Στο χώρο δήλωσης μεταβλητών). Ορίζουμε ένα νέο αντικείμενο απλά δηλώνοντας το με το όνομα Κλάσης όνομα αντικειμένου. Π.χ. Person p1; Π.χ. Person p1,p2,p3; 6

Πώς δίνουμε αρχικές τιμές σε αντικείμενα; Συναρτήσεις Εγκατάστασης (constructor) Περισσότερες από μία Οι συναρτήσεις εγκατάστασης περιγράφονται στο ίδιο μέρος όπου περιγράφονται όλες οι συναρτήσεις Οι συναρτήσεις εγκατάστασης έχουν το ίδιο όνομα με την κλάση και μπορούνε να υπερφορτωθούν δια μέσο διαφορετικών παραμέτρων 7

Πώς καταστρέφουμε αντικείμενα; Συναρτήσεις αποσύνδεσης (destructors) Είναι συνάρτηση η οποία δηλώνεται μαζί με όλες τις άλλες συναρτήσεις Έχει το ίδιο όνομα με την κλάση Ξεχωρίζει από τον constructor διότι μπροστά από το όνομα έχει μια περισπωμένη ~ π.χ ~Person() 8

Πώς γράφουμε και διαβάζουμε τα δεδομένα ενός αντικειμένου; Η κάθε κλάση χρειάζεται να έχει μηχανισμούς για ανάθεση & ανάγνωση τιμών στα χαρακτηριστικά της. Δηλαδή έναν τρόπο προσπέλασης στα δεδομένα της. H προσπέλαση στα δεδομένα του αντικειμένου γίνεται με συναρτήσεις που επιστρέφουν ή τοποθετούν τιμές στα χαρακτηριστικά του αντικειμένου Για ανάγνωση τιμής ενός χαρακτηριστικού δημιουργούμε συνάρτηση την οποία ονομάζουμε get_variable_name() και επιστρέφει την τιμή του χαρακτηριστικού στο οποίο αναφέρεται. π.χ. int get_age() { } return age; Για ανάθεση τιμής σε χαρακτηριστικό αντικειμένου δημιουργούμε συνάρτηση την οποία συνήθως τις ονομάζουμε set_variable_name (τύπος μεταβλητής).αυτό γίνεται για κάθε χαρακτηριστικό της κλάσης Π.χ. Void set_age(int a) { age =a; 9

Πώς λειτουργεί ένα ΟΟ πρόγραμμα; Δημιουργώντας αντικείμενα μέσα στο κυρίως πρόγραμμα, και καλώντας της συναρτήσεις του (user interface) αντικειμένου. Μια συνάρτηση ενός αντικειμένου καλείται με το όνομα_αντικειμένου.όνομα_συνάρτησης Π.χ main() { Person P1; } P1.get_age(); 10

11

12

13

Συνάρτηση Αποσύνδεσης 14

15

16

Κλήση + Διαχείριση Επιστρεφόμενης Τιμής (αντικείμενο) 17

Συναρτήσεις μέλη ορισμένα έξω από την κλάση Χρησιμοποιώντας τον τελεστή διάκρισης εμβέλειας (scope resolution operator) μπορούμε να καθορίσουμε σε ποια κλάση ανήκει μια συνάρτηση. Συνεπώς η δήλωση αλλάζει μορφή έχοντας τύπος_επιστρεφόμενης_τιμής Όνομα_κλάσης :: όνομα_συνάρτησης(παράμετρος1,..παράμετροςν) Π.χ void Account ::deposit(float money) { Balance += money; } Δυνατότητα αλλαγής της δομής του προγράμματος με δημιουργία ευέλικτων δομών με βιβλιοθήκες και αύξηση της επαναχρησιμοποίησης τους με την χρήση των directive εντολών include Αναλυτικά τα πρωτότυπα της κλάσης δηλώνονται σε ένα αρχείο class_name.h πχ. Account.h Κώδικας των συναρτήσεων δηλώνετε σε ένα αρχείο Account.cpp Το πρόγραμμα το οποίο θέλουμε να δημιουργήσουμε και θα χρησιμοποιεί την κλάση Account πρέπει να περιέχει μια δήλωση στην αρχή #include Account.h 18

Αντικείμενα και κοινά δεδομένα Δια μέσο της δήλωσης static εμπρός μια δήλωσης χαρακτηριστικού Πχ.static int count; Το χαρακτηριστικό αυτό θα είναι ευρέως γνωστό για όλα τα αντικείμενα της κλάσης Το παράδειγμα που ακολουθεί παρουσιάζει το πώς ένα χαρακτηριστικό της κλάσης μπορεί να είναι ορατό από όλα τα αντικείμενα 19

20