Classes. Σημερινό Μάθημα. Constructor και destructor Συναρτήσεις μέλη const Inline συναρτήσεις Δηλώσεις κλάσεων Σύνθετες κλάσεις

Σχετικά έγγραφα
Συναρτήσεις & Κλάσεις

Κληρονομικότητα. Σήμερα! Κλάση Βάσης Παράγωγη κλάση Απλή κληρονομικότητα Protected δεδομένα Constructors & Destructors overloading

Συναρτήσεις. Σημερινό μάθημα

Κληρονομικότητα. Σήμερα!

Αναφορές (References)

Pointers. Σημερινό Μάθημα! Χρήση pointer Τελεστής * Τελεστής & Γενικοί δείκτες Ανάκληση Δέσμευση μνήμης new / delete Pointer σε αντικείμενο 2

Ειδικά Θέματα Ι. Σήμερα!

Πολυμορφισμός. Σήμερα!

Αναγνώριση Προτύπων. Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις

Πολυμορφισμός. Σήμερα! Virtual Κληρονομικότητα Mixin classes Αφηρημένοι τύποι δεδομένων Pure Virtual συναρτήσεις

Συναρτήσεις ΙΙ. Σημερινό μάθημα

Ειδικά Θέματα. Σήμερα. Ισότητα Αντικειμένων Friend classes Operator overloading

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

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

Παραβολή ψ=αχ 2 +βχ+γ, α 0. Η παραβολή ψ = αχ 2. Γενικά : Κάθε συνάρτηση της μορφής ψ=αχ 2 + βχ +γ, α 0 λέγεται τετραγωνική συνάρτηση.

Aντικειμενοστραφής. Προγραμματισμός. Κληρονομικότητα

ΣΧΟΛΙΚΟ ΕΤΟΣ ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ A ΛΥΚΕΙΟΥ. Ονοματεπώνυμο Τμήμα

Εισαγωγικά. 1.1 Η σ-αλγεβρα ως πληροφορία

Αναγνώριση Προτύπων. Σημερινό Μάθημα

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ Γ ΛΥΚΕΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

Προτεινόμενα θέματα στο μάθημα. Αρχές Οικονομικής Θεωρίας ΟΜΑΔΑ Α. Στις προτάσεις από Α.1. μέχρι και Α10 να γράψετε στο τετράδιό σας τον αριθμό της

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΣΤΟ ΦΑΡΜΑΚΕΙΟ. Με την πιστοποίηση του έχει πρόσβαση στο περιβάλλον του φαρμακείου που παρέχει η εφαρμογή.

Το κράτος είναι φτιαγμένο για τον άνθρωπο και όχι ο άνθρωπος για το κράτος. A. Einstein Πηγή:

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

Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή.

Αναγνώριση Προτύπων. Σημερινό Μάθημα

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 20 ΙΟΥΝΙΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ : ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΠΕΝΤΕ (5)

Γενικό Λύκειο Μαραθοκάμπου Σάμου. Άλγεβρα Β λυκείου. 13 Οκτώβρη 2016

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Β ΤΑΞΗ. ΘΕΜΑ 1ο

5.1 Μετρήσιμες συναρτήσεις

Ας υποθέσουμε ότι ο παίκτης Ι διαλέγει πρώτος την τυχαιοποιημένη στρατηγική (x 1, x 2 ), x 1, x2 0,

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Εφαρμογές στην κίνηση Brown

Ευρωπαϊκά παράγωγα Ευρωπαϊκά δικαιώματα

«ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ»

CSE.UOI : Μεταπτυχιακό Μάθημα

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Μονάδες α. Να γράψετε στο τετράδιό σας τον παρακάτω πίνακα σωστά συµπληρωµένο.

Φροντιστήριο 2: Ανάλυση Αλγόριθμου. Νικόλας Νικολάου ΕΠΛ432: Κατανεμημένοι Αλγόριθμοι 1 / 10

ΤΑΞΙΝΟΜΗΣΗ ΟΡΓΑΝΙΣΜΩΝ

Εστω X σύνολο και A μια σ-άλγεβρα στο X. Ονομάζουμε το ζεύγος (X, A) μετρήσιμο χώρο.

HY 280. θεμελιακές έννοιες της επιστήμης του υπολογισμού ΑΣΚΗΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ. Γεώργιος Φρ.

Οι γέφυρες του ποταμού... Pregel (Konigsberg)

Εργαστήριο 10 Κλάσεις

ΚΛΑΔΟΣ: ΠΕ11 ΦΥΣΙΚΗΣ ΑΓΩΓΗΣ

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)?

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

Εκφωνήσεις και Λύσεις των Θεμάτων

Αλγόριθμοι & Βελτιστοποίηση

Το υπόδειγμα IS-LM: Εισαγωγικά

Δήμος Σωτήριος Υ.Δ. Εργαστήριο Λογικής & Επιστήμης Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Σ.Η.Μ.Μ.Υ. Ε.Μ.Π.

Αναλυτικές ιδιότητες

ιάσταση του Krull Α.Π.Θ. Θεσσαλονίκη Χ. Χαραλαμπους (ΑΠΘ) ιάσταση του Krull Ιανουάριος, / 27

Η ανισότητα α β α±β α + β με α, β C και η χρήση της στην εύρεση ακροτάτων.

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

{ i f i == 0 and p > 0

Γραμμική Ανεξαρτησία. Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών και ικτύων Πανεπιστήμιο Θεσσαλίας. 17 Μαρτίου 2013, Βόλος

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

ΣΤΟ ΙΑΤΡΕΙΟ. Με την πιστοποίηση του αποκτά πρόσβαση στο περιβάλλον του ιατρού που παρέχει η εφαρμογή.

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. Πρώτη Γραπτή Εργασία. Εισαγωγή στους υπολογιστές Μαθηματικά

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

Επίλυση ειδικών μορφών ΣΔΕ

Επιχειρησιακή Ερευνα Ι

ΜΙΚΡΟΟΙΚΟΝΟΜΙΚΗ Η ΚΑΤΑΝΑΛΩΤΙΚΗ ΑΠΟΦΑΣΗ. Άσκηση με θέμα τη μεγιστοποίηση της χρησιμότητας του καταναλωτή

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

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

Διάρκεια: 2 ώρες 17/9/2009 ΘΕΜΑΤΑ 1) (2 μονάδες) Δεδομένης της περιγραφής που ακολουθεί δώστε το σχεδιασμό κλάσεων του συστήματος:

τους στην Κρυπτογραφία και τα

Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α. 1η σειρά ασκήσεων

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

Ανελίξεις σε συνεχή χρόνο

ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ. Σχηματική παράσταση του προγράμματος. logariasmos

Αρτιες και περιττές συναρτήσεις

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

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

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

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

Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Εκθετικά πινάκων. 9 Απριλίου 2013, Βόλος

Παντού σε αυτό το κεφάλαιο, αν δεν αναφέρεται κάτι διαφορετικό, δουλεύουμε σε ένα χώρο πιθανότητας (Ω, F, P) και η G F είναι μια σ-άλγεβρα.

2 Η ΠΑΓΚΥΠΡΙΑ ΟΛΥΜΠΙΑ Α ΦΥΣΙΚΗΣ Γ ΓΥΜΝΑΣΙΟΥ

Η εξίσωση Black-Scholes

Επαναληπτικές Ασκήσεις

Εκφωνήσεις και Λύσεις των Θεμάτων

Ο τύπος του Itô. f (s) ds (12.1) f (g(s)) dg(s). (12.2) t f (B s ) db s + 1 2

Graphics.h Διασύνδεση με τη Βιβλιοθήκη Γραφικών

Κατασκευή της κίνησης Brown και απλές ιδιότητες

ΑΣΚΗΣΕΙΣ ΔΙΚΤΥΑ ΠΡΟΣΒΑΣΗΣ ΑΣΚΗΣΗ 1

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

Στοχαστικές διαφορικές εξισώσεις

ΑΣΕΠ 2000 ΑΣΕΠ 2000 Εμπορική Τράπεζα 1983 Υπουργείο Κοιν. Υπηρ. 1983

α) Το έλλειμμα ή το πλεόνασμα του εμπορικού ισοζυγίου δεν μεταβάλλεται

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

ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Σχεδίαση Λογικών Κυκλωμάτων

Φύλλο Ασκήσεων 1 Εισαγωγή στο Adobe Photoshop Επιμέλεια Ασκήσεων: Νίκος Πλόσκας

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Transcript:

Classes Σημερινό Μάθημα Constructor και destructor Συναρτήσεις μέλη const Inline συναρτήσεις Δηλώσεις κλάσεων Σύνθετες κλάσεις 2 1

Constructor και destructor Αν δεν δηλώσουμε constructor ή/και destructor ο compiler χρησιμοποιεί προκαθορισμένους. Οι προκαθορισμένοι constructor και destructor δεν κάνουν τίποτα και δεν επιστρέφουν τίποτα, ισοδυναμούν με: cat() & ~cat() Όταν δηλώσουμε ένα αντικείμενο κλάσης καλούμε τον constructor Αν ο constructor δεν παίρνει παραμέτρους, μπορούμε να γράψουμε: Cat Frisky; Συνίσταται όταν δηλώνουμε constructor να δηλώνουμε και destructor 3 Πρόγραμμα/1 #include <iostream.h> class Cat { Cat(int initialage); ~Cat(); int GetAge(); void SetAge (int age); void Meow(); private: int itsage; ; // constructor // destructor 4 2

Πρόγραμμα/2 Cat::Cat(int initialage) { itsage = initialage; Cat::~Cat(){ int Cat::GetAge() { return itsage; void Cat::SetAge(int age) { itsage = age; void Cat::Meow() { cout << ʺMeow.\nʺ; 5 Πρόγραμμα/3 int main() { Cat Frisky(5); Frisky.Meow(); cout << ʺFrisky is a cat who is ʺ ; cout << Frisky.GetAge() << ʺ years old.\nʺ; Frisky.Meow(); Frisky.SetAge(7); cout << ʺNow Frisky is ʺ ; cout << Frisky.GetAge() << ʺ years old.\nʺ; return 0; 6 3

Συναρτήσεις μέλη const Με μία συνάρτηση const μέσα στην κλάση, πληροφορούμε τον compiler, ότιδεναλλάζειτα τα δεδομένα της κλάσης void SomeFunction() const; int GetAge() const; Είναι καλή προγραμματιστική τεχνική να δηλώνουμε το μέγιστο δυνατό αριθμό const συναρτήσεων για προστασία 7 Inline συναρτήσεις Αν μας ενδιαφέρει η ταχύτητα εκτέλεσης και η συνάρτηση που θέλουμε να γράψουμε είναι απλή τότε μπορούμε να τη δηλώσουμε ως inline π.χ. inline int square(int x) {return x*x; 8 4

Inline συναρτήσεις Μπορούμε να γράψουμε εκτός κλάσης inline int Cat::GetWeight(){ return itsweight; Ή αν τη δηλώσουμε μέσα στην κλάση γίνεται αυτόματα inline class Cat{ int GetWeight() { return itsweight; // inline void SetWeight(int aweight); ; 9 Δηλώσεις κλάσεων Συνηθίζεται να δηλώνουμε τις κλάσεις, καθώς και όλεςτιςδηλώσειςενόςπρογράμματοςσεξεχωριστό ενός αρχείο. Αυτό το αρχείο ονομάζεται header file, έχει το ίδιο όνομα με το αρχείο του προγράμματος και επέκταση.h ή.hpp Αν δηλώσουμε μία κλάση σε ξεχωριστό αρχείο, το αρχείο παίρνει το όνομα της κλάσης. Στο κυρίως αρχείο πρέπει να συμπεριλάβουμε τα header files με τις βιβλιοθήκες. 10 5

CAT.H #include <iostream.h> class Cat { Cat (int initialage); ~Cat(); int GetAge() { return itsage; // inline! void SetAge (int age) { itsage = age; // inline! void Meow() { cout << ʺMeow.\nʺ; // inline! private: int itsage; ; 11 CAT.CPP #include ʺcat.hʺ Cat::Cat(int initialage) { itsage = initialage; Cat::~Cat() { int main() { Cat Frisky(5); Frisky.Meow(); cout << ʺFrisky y is a cat who is ʺ ; cout << Frisky.GetAge() << ʺ years old.\nʺ; Frisky.Meow(); Frisky.SetAge(7); cout << ʺNow Frisky is ʺ ; cout << Frisky.GetAge() << ʺ years old.\nʺ; return 0; 12 6

Σύνθετες κλάσεις Πρόκειται για κλάσεις, που στα δεδομένα τους συμπεριλαμβάνουν άλλες απλούστερες κλάσεις Αυτό δηλώνει μία σχέση μεταξύ των κλάσεων Η/Υ Οθόνη desktop mouse πληκτρολόγιο μητρική τροφοδοτικό Σκληρός δισκος Κάρτα δικτύου 13 Παράδειγμα Θεωρούμε κλάση τετραγώνου, το οποίο ορίζεται μέσω δύο σημείων:» Το πάνω αριστερά και» το κάτω δεξιά Το σημείο ορίζεται μέσω των συντεταγμένων του Χ και Υ. 14 7

RECT.H/1 #include <iostream.h> class Point { // no constructor void SetX(int x) { itsx = x; void SetY(int y) { itsy = y; int GetX()const { return itsx; int GetY()const { return itsy; private: int itsx; int itsy; ; 15 RECT.H/2 class Rectangle { Rectangle (int top, int left, int bottom, int right); ~Rectangle () { int GetTop() const { return itstop; int GetLeft() const { return itsleft; int GetBottom() const { return itsbottom; int GetRight() const { return itsright; Point GetUpperLeft() const { return itsupperleft; Point GetLowerLeft() const { return itslowerleft; Point GetUpperRight() const { return itsupperright; 16 8

RECT.H/3 Point GetLowerRight() const { return itslowerright; void SetUpperLeft(Point Location) {itsupperleft = Location; void SetLowerLeft(Point Location) {itslowerleft = Location; void SetUpperRight(Point Location) {itsupperright = Location; void SetLowerRight(Point Location) {itslowerright = Location; void SetTop(int top) { itstop = top; void SetLeft (int left) { itsleft = left; void SetBottom (int bottom) { itsbottom = bottom; void SetRight (int right) { itsright = right; int GetArea() const; 17 RECT.H/4 private: Point itsupperleft; Point itsupperright; Point itslowerleft; Point itslowerright; int itstop; int itsleft; int itsbottom; int itsright; ; 18 9

RECT.CPP/1 #include ʺrect.hʺ Rectangle::Rectangle(int g top, int left, int bottom, int right) { itstop = top; itsleft = left; itsbottom = bottom; itsright = right; itsupperleft.setx(left); itsupperleft.sety(top); itsupperright.setx(right); itsupperright.sety(top); itslowerleft.setx(left); itslowerleft.sety(bottom); itslowerright.setx(right); itslowerright.sety(bottom); 19 RECT.CPP /2 int Rectangle::GetArea() const { int Width = itsright itsleft; int Height = itstop itsbottom; return (Width * Height); int main() { Rectangle MyRectangle (100, 20, 50, 80 ); int Area = MyRectangle.GetArea(); cout << ʺArea: ʺ << Area << ʺ\nʺ; cout << ʺUpper Left X Coordinate: ʺ; cout << MyRectangle.GetUpperLeft().GetX(); return 0; 20 10

Τι πάει στραβά εδώ; class Square { int Side; 21 Γιατί δεν είναι χρήσιμο; class Cat { int GetAge()const; private: int itsage; ; 22 11

Βρείτε 3 λάθη class TV { void SetStation(int Station); int GetStation() const; private: int itsstation; ; main() { TV mytv; mytv.itsstation = 9; TV.SetStation(10); TV myothertv(2); 23 12