Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας"

Transcript

1 Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 3η: 08/03/2006 & 09/03/2006 1

2 Ορίζοντας κλάσεις I 2

3 Εισαγωγικά Οι κλάσεις είναι το πιο σηµαντικό χαρακτηριστικό µιας γλώσσας που υποστηρίζει τον Αντικειµενοστραφή Προγραµµατισµό Ο προγραµµατισµός στη Java συνίσταται στον ορισµό ενός αριθµού κλάσεων Κάθε πρόγραµµα είναι µια κλάση Όλο το βοηθητικό λογισµικό αποτελείται από κλάσεις Όλοι οι τύποι που ορίζονται από τον προγραµµατιστή είναι κλάσεις Οι κλάσεις είναι κεντρική έννοια στη Java 3

4 Ορισµοί κλάσεων Γνωρίζουµε ήδη πώς να χρησιµοποιούµε κλάσεις καθώς και τα αντικείµενα που δηµιουργούνται από αυτές, και πώς να ενεργοποιούµε τις µεθόδους τους Για παράδειγµα, έχουµε ήδη χρησιµοποιήσει τις προκαθορισµένες κλάσεις String και Scanner Τώρα θα µάθουµε πώς να ορίζουµε τις δικές µας κλάσεις και τις µεθόδους τους, και πώς να δηµιουργούµε αντικείµενα από αυτές 4

5 Μια κλάση είναι ένας τύπος Μια κλάση είναι ένας ειδικός τύπος δεδοµένων ορισµένος από τον προγραµµατιστή, και παρέχεται η δυνατότητα να ορίζουµε µεταβλητές αυτού του τύπου Η τιµή µιας κλάσης είναι ένα αντικείµενο ή στιγµιότυπο (instance) της κλάσης Εάν A είναι µια κλάση, τότε οι φράσεις "bla is of type A," "bla is an object of the class A," και "bla is an instance of the class A" σηµαίνουν το ίδιο πράγµα Μια κλάση προσδιορίζει τους τύπους των δεδοµένων που µπορεί να περιέχει ένα αντικείµενο, καθώς και τις ενέργειες που µπορεί να εκτελέσει 5

6 Τιµές primitive τύπων vs. Τιµές τύπου κλάσης Ένας primitive τύπος είναι ένα απλό κοµµάτι δεδοµένων Μια τιµή τύπου κλάσης ή αντικείµενο µπορεί να περιέχει περισσότερα από ένα κοµµάτια απλών δεδοµένων, καθώς επίσης και ενέργειες που αποκαλούνται µέθοδοι (methods) Όλα τα αντικείµενα µιας κλάσης έχουν τις ίδιες µεθόδους Όλα τα αντικείµενα µιας κλάσης έχουν τα ίδια κοµµάτια δεδοµένων (δηλ., όνοµα, τύπο, και αριθµό) Για ένα δεδοµένο αντικείµενο, κάθε κοµµάτι δεδοµένων µπορεί να κρατά µια διαφορετική τιµή 6

7 Τα περιεχόµενα του ορισµού µιας κλάσης Ο ορισµός µιας κλάσης καθορίζει τα δεδοµένα και τις µεθόδους που θα έχουν όλα τα αντικείµενά της Αυτά τα δεδοµένα και οι µέθοδοι αποκαλούνται συχνά µέλη (members) του αντικειµένου Τα δεδοµένα αποκαλούνται πεδία (fields) ή µεταβλητές στιγµιότυπου (instance variables) ΟΙ δηλώσεις των instance variable και οι ορισµοί των µεθόδων τοποθετούνται χωρίς ιδιαίτερη διάταξη (σειρά) µέσα στον ορισµό της κλάσης 7

8 Ο τελεστής new Ένα αντικείµενο µιας κλάσης ονοµατίζεται ή δηλώνεται µε µια µεταβλητή του τύπου της κλάσης: ClassName classvar; Ο τελεστής new πρέπει κατόπιν να χρησιµοποιηθεί για να δηµιουργήσουµε το αντικείµενο και να συσχετίσουµε µε αυτό το όνοµα της µεταβλητής: classvar = new ClassName(); Αυτά µπορούν να συνδυαστούν ως εξής: ClassName classvar = new ClassName(); 8

9 Instance variables και methods Οι instance variables µπορούν να οριστούν όπως στα ακόλουθα δυο παραδείγµατα Παρατηρήστε τον modifier public (προς το παρόν): public String instancevar1; public int instancevar2; Για να αναφερθούµε σε µια instance variable, τοποθετούµε µπροστά της το όνοµα του αντικειµένου ως εξής: objectname.instancevar1 objectname.instancevar2 9

10 Instance variables και methods Οι ορισµοί των µεθόδων διαιρούνται σε δυο τµήµατα: την κεφαλίδα (heading) και το σώµα της µεθόδου (method body): public void mymethod() { code to perform some action Body and/or compute a value Heading } Οι µέθοδοι ενεργοποιούνται χρησιµοποιώντας το όνοµα του καλούντος αντικειµένου και το όνοµα της µεθόδου ως εξής: classvar.mymethod(); Η ενεργοποίηση µιας µεθόδου είναι ισοδύναµη µε την εκτέλεση του σώµατος της µεθόδου 10

11 Ονόµατα αρχείων και θέσεις Υπενθύµιση: ένα αρχείο Java πρέπει να έχει το ίδιο όνοµα όπως το όνοµα της κλάσης που περιέχει και να έχει επέκταση αρχείου.java Για παράδειγµα, µια κλάση µε όνοµα MyClass πρέπει να βρίσκεται στο αρχείο µε όνοµα MyClass.java Προς το παρόν, το πρόγραµµά µας και όλες οι κλάσεις που θα χρησιµοποιεί θα βρίσκονται στον ίδιο φάκελο 11

12 Περισσότερα για τις µεθόδους Υπάρχουν δυο είδη µεθόδων: Μέθοδοι που υπολογίζουν και επιστρέφουν µια τιµή Μέθοδοι που εκτελούν µια ενέργεια Αυτό το είδος µεθόδου δεν επιστρέφει τιµή και αποκαλείται void µέθοδος Κάθε τύπος µεθόδου διαφέρει ελαφρά στο πώς δηλώνεται καθώς και πώς (συνήθως) ενεργοποιείται 12

13 Περισσότερα για τις µεθόδους Μια µέθοδος που επιστρέφει µια τιµή πρέπει να καθορίζει τον τύπο της επιστρεφόµενης τιµής στην κεφαλίδα της (heading): public typereturned methodname(paramlist) Μια µέθοδος void χρησιµοποιεί την keyword void στην κεφαλίδα της για να δείξει ότι δεν επιστρέφει κάποια τιµή: public void methodname(paramlist) 13

14 Η main είναι µια µέθοδος void Ένα πρόγραµµα στη Java είναι απλά µια κλάση που έχει τη µέθοδο main Όταν δίνουµε µια εντολή εκτέλεσης ενός Java προγράµµατος, το run-time σύστηµα ενεργοποιεί τη µέθοδο main Σηµειώστε ότι η main είναι µια µέθοδος void, as που σηµειώνεται στην κεφαλίδα της: public static void main(string[] args) 14

15 ηλώσεις return Το σώµα και των δυο τύπων των µεθόδων περιέχει µια λίστα δηλώσεων σε ζεύγος άγκιστρων public <void or typereturned> mymethod() { } declarations Body statements 15

16 ηλώσεις return Το σώµα µιας µεθόδου που επιστρέφει µια τιµή πρέπει επίσης να περιέχει µια ή περισσότερες δηλώσεις return Μια δήλωση return καθορίζει την τιµή που επιστρέφεται και τερµατίζει την εκτέλεση της µεθόδου: return Expression; Η Expression µπορεί να είναι µια οποιαδήποτε έκφραση που αποτιµάται σε κάτι µε ίδιο τύπο µε αυτόν που καθορίζεται στην κεφαλίδα της µεθόδου 16

17 ηλώσεις return Μια µέθοδος void δεν χρειάζεται να περιέχει µια δήλωση return, εκτός και εάν υπάρχει µια κατάσταση που απαιτεί τον τερµατισµό της µεθόδου πριν εκτελεστεί ολόκληρο το σώµα της Στο πλαίσιο αυτό, αφού δεν επιστρέφεται κάποια τιµή, µια δήλωση return χρησιµοποιείται χωρίς κάποια έκφραση: return; 17

18 Ορισµοί µεθόδων Μια ενεργοποίηση µιας µεθόδου που επιστρέφει κάποια τιµή µπορεί να χρησιµοποιηθεί ως έκφραση οπουδήποτε µπορεί να χρησιµοποιηθεί µια τιµή του typereturned: typereturned trvariable; trvariable = objectname.methodname(); Μια ενεργοποίηση µιας µεθόδου void είναι απλά µια δήλωση: objectname.methodname(); 18

19 Οποιαδήποτε µέθοδος µπορεί να χρησιµοποιηθεί ως µέθοδος void Μια µέθοδος που επιστρέφει µια τιµή µπορεί επίσης να εκτελεί µια ενέργεια Εάν επιθυµούµε απλώς την ενέργεια, αλλά δεν χρειαζόµαστε την επιστρεφόµενη τιµή, µπορούµε να ενεργοποιήσουµε τη µέθοδο ως να ήταν µια µέθοδος void, και η επιστρεφόµενη τιµή θα απορριφθεί: objectname.returnedvaluemethod(); 19

20 Τοπικές µεταβλητές Μια µεταβλητή που δηλώνεται µέσα σε µια µέθοδο αποκαλείται τοπική µεταβλητή (local variable) Όλες οι µεταβλητές που δηλώνονται στη main είναι τοπικές µεταβλητές Όλες οι παράµετροι των µεθόδων είναι τοπικές µεταβλητές Εάν δυο µέθοδοι έχουν µια τοπική µεταβλητή µε το ίδιο όνοµα, οι δυο µεταβλητές είναι εντελώς ξεχωριστές µεταβλητές 20

21 Καθολικές µεταβλητές Μερικές γλώσσες προγραµµατισµού περιλαµβάνουν ένα άλλο τύπο µεταβλητής, που αποκαλείται καθολική µεταβλητή (global variable) Η γλώσσα Java ΕΝ ΕΧΕΙ καθολικές µεταβλητές 21

22 Blocks Ένα block είναι ένα εναλλακτικό όνοµα για µια σύνθετη δήλωση, δηλ., ένα σύνολο δηλώσεων σε Java µέσα σε άγκιστρα,{} Μια µεταβλητή που δηλώνεται µέσα σε ένα block, δεν µπορεί να χρησιµοποιηθεί έξω από αυτό το block Αφού δηλωθεί µια µεταβλητή µέσα σε ένα block, το όνοµά της δεν µπορεί να χρησιµοποιηθεί για τίποτε άλλο µέσα στον ορισµό της ίδιας µεθόδου 22

23 ήλωση µεταβλητών µέσα σε µια δήλωση for Μπορούµε να δηλώσουµε µια ή περισσότερες µεταβλητές στο τµήµα αρχικοποίησης της δήλωσης for Μια µεταβλητή που δηλώνεται έτσι θα είναι τοπική στο βρόχο for, και δεν µπορεί να χρησιµοποιηθεί εκτός του βρόχου Εάν πρέπει να χρησιµοποιήσουµε τη µεταβλητή εκτός του βρόχου, τότε τη δηλώνουµε εκτός βρόχου 23

24 Παράµετροι primitive τύπου Οι µέθοδοι που είδαµε µέχρι στιγµής δεν είχαν παραµέτρους, και αυτό σηµατοδοτούνταν µε κενό ζεύγος παρενθέσεων στην κεφαλίδα της µεθόδου Μερικές µέθοδοι χρειάζονται να λαµβάνουν επιπλέον δεδοµένα διαµέσου µιας λίστας παραµέτρων (parameters) ώστε να εκτελέσουν την εργασία τους Αυτές οι παράµετροι αποκαλούνται επίσης και τυπικοί παράµετροι (formal parameters) 24

25 Παράµετροι primitive τύπου Η λίστα των παραµέτρων παρέχει µια περιγραφή των δεδοµένων που απαιτούνται από τη µέθοδο Καθορίζει τον αριθµό και τον τύπο δεδοµένων που απαιτούνται, τη σειρά µε την οποία πρέπει να δοθούν, και το τοπικό όνοµα για τα δεδοµένα αυτά όπως θα χρησιµοποιηθούν στη µέθοδο public double mymethod(int p1, int p2, double p3) 25

26 Παράµετροι primitive τύπου Όταν ενεργοποιείται µια µέθοδος, οι κατάλληλες τιµές θα πρέπει να περάσουν στη µέθοδο µε τη µορφή των ορισµάτων (arguments) Τα ορίσµατα αποκαλούνται επίσης πραγµατικοί παράµετροι (actual parameters) Ο αριθµός και η σειρά των ορισµάτων πρέπει να ταιριάζει ακριβώς µε τα αντίστοιχα της λίστας παραµέτρων Ο τύπος κάθε ορίσµατος πρέπει να είναι συµβατός µε τον τύπο της αντίστοιχης παραµέτρου int a=1,b=2,c=3; double result = mymethod(a,b,c); 26

27 Παράµετροι primitive τύπου Στο προηγούµενο παράδειγµα, η τιµή κάθε ορίσµατος (όχι το όνοµα της µεταβλητής) ενσωµατώνεται στην αντίστοιχη παράµετρο της µεθόδου Αυτός ο τρόπος ενσωµάτωσης ορισµάτων αντί για τις τυπικές παραµέτρους είναι γνωστός ως µηχανισµός κλήσης µε τιµή (call-by-value mechanism) 27

28 Παράµετροι primitive τύπου Εάν ο τύπος του ορίσµατος και της παραµέτρου δεν ταιριάζουν ακριβώς, η Java θα επιχειρήσει έναν αυτόµατο µετασχηµατισµό τύπου Στο προηγούµενο παράδειγµα, η τιµή int του ορίσµατος c θα µετατραπεί σε έναν double Ένα όρισµα primitive τύπου µπορεί αυτόµατα να µετασχηµατιστεί σε έναν από τους επόµενους τύπους από αυτούς που εµφανίζονται στα δεξιά του: byte short int long float double char 28

29 Παράµετροι primitive τύπου Μια παράµετρος συχνά εκλαµβάνεται ως κενό ή placeholder το οποίο γεµίζει µε την τιµή του αντίστοιχου ορίσµατος Όµως, µια παράµετρος είναι κάτι πολύ περισσότερο από αυτό: στην ουσία είναι µια τοπική µεταβλητή Όταν ενεργοποιείται µια µέθοδος, υπολογίζεται η τιµή του ορίσµατος, και η αντίστοιχη παράµετρος (δηλ., τοπική µεταβλητή) αρχικοποιείται σε αυτή τη τιµή Ακόµα και εάν η τιµή µιας τυπικής παραµέτρου µεταβληθεί µέσα σε µια µέθοδο (δηλ., χρησιµοποιηθεί ως τοπική µεταβλητή) η τιµή του ορίσµατος δεν µπορεί να µεταβληθεί 29

30 Τυπική παράµετρος ως τοπική µεταβλητή (1/5) 30

31 Τυπική παράµετρος ως τοπική µεταβλητή (2/5) 31

32 Τυπική παράµετρος ως τοπική µεταβλητή (3/5) 32

33 Τυπική παράµετρος ως τοπική µεταβλητή (4/5) 33

34 Τυπική παράµετρος ως τοπική µεταβλητή (5/5) 34

35 Παγίδα: Χρήση των όρων Παράµετρος και Όρισµα εν πρέπει να µας προκαλεί έκπληξη όταν κάποιοι (ίσως και στις διαλέξεις του µαθήµατος αυτού) συχνά χρησιµοποιούνε τους δυο όρους ως αµοιβαία εναλλάξιµους Όταν βλέπουµε αυτούς τους όρους, θα προσδιορίζουµε το νόηµά τους από τα συµφραζόµενα 35

36 Η παράµετρος this Όλες οι instance variables έχουν το καλούν αντικείµενο να προηγείται της κλήσης τους, δηλ., <the calling object>. Εάν απαιτείται ένα explicit όνοµα για το καλούν αντικείµενο, µπορεί να χρησιµοποιηθεί η keyword this Η myinstancevariable πάντα σηµαίνει και είναι αµοιβαία εναλλάξιµη µε το this.myinstancevariable 36

37 Η παράµετρος this Η παράµετρος this πρέπει να χρησιµοποιείται εάν µια παράµετρος ή άλλη τοπική µεταβλητή µε το ίδιο όνοµα χρησιµοποιείται στη µέθοδο ιαφορετικά, όλα τα στιγµιότυπα του ονόµατος της µεταβλητής θα ερµηνεύεται ως η τοπική µεταβλητή int somevariable = this.somevariable local instance 37

38 Η παράµετρος this Η παράµετρος this είναι ένα είδος κρυφής παραµέτρου Παρόλο που δεν εµφανίζεται στη λίστα παραµέτρων µιας µεθόδου, εξακολουθεί να είναι µια παράµετρος Όταν ενεργοποιείται µια µέθοδος, στο καλούν αντικείµενο αυτόµατα ενσωµατώνεται η this 38

39 Μέθοδοι που επιστρέφουν τιµή Boolean Μια ενεργοποίηση µιας µεθόδου που επιστρέφει µια τιµή τύπου boolean επιστρέφει είτε true είτε false Εποµένως, είναι κοινή πρακτική να χρησιµοποιούµε µια ενεργοποίηση µιας τέτοιας µεθόδου για να ελέγξουµε δηλώσεις και βρόχους εκεί όπου απαιτείται µια Boolean έκφραση if-else δηλώσεις, while βρόχοι, κ.τ.λ. 39

40 Οι µέθοδοι equals και tostring Η Java περιµένει κάποιες µεθόδους, όπως οι equals και tostring, να βρίσκονται σε όλες, ή σχεδόν σε όλες τις κλάσεις Ο σκοπός της equals, µια µέθοδος µε τιµή boolean, είναι να συγκρίνει δυο αντικείµενα της κλάσης για να δούµε εάν ικανοποιούν την έννοια της ισότητας Σηµείωση: εν µπορούµε να χρησιµοποιήσουµε το == για να συγκρίνουµε δυο αντικείµενα public boolean equals(classname objectname) Ο σκοπός της µεθόδου tostring είναι να επιστρέφει µια τιµή String που αντιπροσωπεύει τα δεδοµένα του αντικειµένου public String tostring() 40

41 Μέθοδοι ελέγχου Κάθε µέθοδος θα πρέπει να ελέγχεται σε ένα πρόγραµµα, στο οποίο είναι η µόνη µη ελεγµένη µέθοδος Ένα πρόγραµµα του οποίου ο σκοπός είναι να ελέγξει µια µέθοδο, λέγεται driver program Μια µέθοδος συχνά ενεργοποιεί άλλες µεθόδους, έτσι ένας τρόπος για να το κάνουµε αυτό είναι να ελέγξουµε πρώτα όλες τις µεθόδους που ενεργοποιούνται από αυτή, και κατόπιν να ελέγξουµε τη συγκεκριµένη µέθοδο Αυτό λέγεται έλεγχος από-κάτω-προς-τα-πάνω (bottom-up testing) Μερικές φορές είναι απαραίτητο να ελέγξουµε µια µέθοδο πριν από κάποια άλλη µέθοδο από την οποία εξαρτάται αλλά η οποία δεν έχει ελεγχθεί ή ολοκληρωθεί Στην περίπτωση αυτή, χρησιµοποιούµε µια απλοποιηµένη έκδοση της µεθόδου, που αποκαλείται stub, για να επιστρέφει µια τιµή απλά για έλεγχο 41

42 Θεµελιώδης κανόνας για έλεγχο µεθόδων Κάθε µέθοδος θα πρέπει να ελέγχεται σε ένα πρόγραµµα, στο οποίο κάθε άλλη µέθοδος στο πρόγραµµα ελέγχου έχει ήδη ελεγχθεί εξαντλητικά και αποσφαλµατωθεί 42

43 Απόκρυψη πληροφορίας και Ενθυλάκωση Απόκρυψη Πληροφορίας (Information hiding) είναι η πρακτική του διαχωρισµού του πώς να χρησιµοποιήσουµε µια κλάση από τις λεπτοµέρειες υλοποίησής της Αφαίρεση (Abstraction) είναι ένας άλλος όρος που χρησιµοποιείται για να εκφράσει την έννοια της αγνόησης των λεπτοµερειών ώστε να αποφύγουµε την υπερφόρτωση µε πληροφορίες (information overload) Ενθυλάκωση (Encapsulation) σηµαίνει ότι τα δεδοµένα και οι µέθοδοι µιας κλάσης συνδυάζονται σε µια ενόττηα (δηλ., σε ένα αντικείµενο της κλάσης), το οποίο αποκρύπτει τις λεπροµέρειες υλοποίησης Η γνώση των λεπτοµερειών είναι µη αναγκαία, γιατί η αλληλεπίδραση µε το αντικείµενο λαµβάνει χώρα διαµέσου µιας καλά καθορισµένης και απλής διεπαφής Στη Java, η απόκρυψη πληροφοριών γίνεται µε τον προσδιορισµό τους ως private 43

44 Ένα ζεύγος ακρώνυµων:api και ADT Το API ή application programming interface για µια κλάση είναι η περιγραφή του πώς να χρησιµοποιήσουµε την κλάση Ένας προγραµµατιστής χρειάζεται να διαβάσει µόνο το API ώστε να χρησιµοποιήσει µια καλά σχεδιασµένη κλάση Ένας ADT ή abstract data type είναι ένας τύπος δεδοµένων που έχει γραφεί µε χρήση ορθών τεχνικών απόκρυψης πληροφορίας 44

45 public και private modifiers Ο modifier public (δηµόσιος) σηµαίνει ότι δεν υπάρχουν περιορισµοί στο πού µπορεί να χρησιµοποιηθεί µια instance variable ή µια µέθοδος της κλάσης Ο modifier private (ιδιωτικός) σηµαίνει ότι µια instance variable ή µέθοδος δεν µπορεί να προσπελαστεί µε όνοµα (accessed by name) εκτός της κλάσης Θεωρείται καλή προγραµµατιστική τακτική να δηλώνουµε όλες τις instance variables ως private Οι περισσότερες µέθοδοι είναι public, και έτσι παρέχουν ελεγχόµενη προσπέλαση στο αντικείµενο Συνήθως, οι µέθοδοι δηλώνονται ως private µόνο εάν χρησιµοποιούνται ως βοηθητικές µέθοδοι για άλλες µεθόδους της κλάσης 45

46 Accessor και Mutator µέθοδοι Οι Accessor µέθοδοι επιτρέπουν στον προγραµµατιστή να πάρει (διαβάσει) την τιµή των instance variables ενός αντικειµένου Τα δεδοµένα µπορούν να προσπελαστούν, αλλά όχι να τροποποιηθούν Το όνοµα µιας accessor µεθόδου συνήθως αρχίζει µε τη λέξη get Οι Mutator µέθοδοι επιτρέπουν στον προγραµµατιστή να αλλάξει την τιµή των instance variables του αντικειµένου µε ελεγχόµενο τρόπο Τα εισερχόµενα δεδοµένα συνήθως ελέγχονται και φιλτράρονται Το όνοµα µιας mutator µεθόδου συνήθως αρχίζει µε τη λέξη set 46

47 Ενθυλάκωση (Encapsulation) 47

48 Κάθε κλάση έχει πρόσβαση στα ιδιωτικά µέλη όλων των αντικειµένων της κλάση αυτής Μέσα στον ορισµό µιας κλάσης, τα ιδιωτικά (private) µέλη οποιουδήποτε αντικειµένου της κλάσης µπορούν να προσπελαστούν, όχι µόνο τα ιδιωτικά µέλη του καλούντος αντικειµένου 48

49 Οι mutator µέθοδοι θα µπορούσαν να επιστρέφουν µια Boolean τιµή Μερικές mutator µέθοδοι σηµατοδοτούν µήνυµα σφάλµατος και τερµατίζουν το πρόγραµµα όταν τους δίνονται τιµές που δεν έχουν νόηµα για τη λογική του προγράµµατος Μια εναλλακτική προσέγγιση είναι να κάνουµε τη mutator µέθοδο να ελέγχει τις τιµές, αλλά να µην τερµατίζει το πρόγραµµα Εναλλακτικά, να επιστρέφει µια boolean τιµή, και να αφήνει το καλούν πρόγραµµα να χειριστεί τις περιπτώσεις όπου οι αλλαγές δεν ακολουθούν τη λογική του προγράµµατος 49

50 Preconditions και Postconditions Η precondition µιας µεθόδου δηλώνει αυτό που υποτίθεται ότι είναι αληθές όταν καλείται η µέθοδος Η postcondition µιας µεθόδου δηλώνει αυτό που θα είναι αληθές µετά την εκτέλεση της µεθόδου, υπό την προϋπόθεση ότι η precondition ισχύει Είναι καλή πρακτική να σκεφτόµαστε πάντα µε όρους preconditions και postconditions όταν σχεδιάζουµε µια µέθοδο, και όταν γράφουµε τα σχόλια για τη µέθοδο 50

51 Υπερφόρτωση (Overloading) Overloading είναι όταν δυο ή περισσότερες µέθοδοι στην ίδια κλάση έχουν το ίδιο όνοµα Για να είναι έγκυρες, δυο οποιοιδήποτε ορισµοί για τη µέθοδο πρέπει να έχουν διαφορετικές ι (signatures) Μια υπογραφή αποτελείται από το όνοµα της µεθόδου µαζί µε τη λίστα των παραµέτρων της ιαφορετικές υπογραφές πρέπει να έχουν διαφορετικό αριθµό και/ή τύπων δεδοµένων για τις παραµέτρους 51

52 Overloading και αυτόµατη µετατροπή τύπων Εάν η Java δεν µπορεί να βρει µια µέθοδο της οποίας η υπογραφή ταιριάζει ακριβώς µε την ενεργοποίηση της µεθόδου, θα προσπαθήσει να χρησιµοποιήσει την τεχνική της αυτόµατης µετατροπής τύπων Η αλληλεπίδραση overloading και αυτόµατης µετατροπής τύπων µπορεί να έχει απρόβλεπτα αποτελέσµατα Σε µερικές περιπτώσεις overloading, εξαιτίας της αυτόµατης µετατροπής τύπων, η ενεργοποίηση µιας απλής µεθόδου µπορεί να αναλυθεί σε πολλαπλούς τρόπους ιφορούµενη ενεργοποίηση µεθόδου (ambiguous method invocation) θα προκαλέσει λάθος στη Java 52

53 Παγίδα: εν µπορούµε να επιτύχουµε overload µε βάση τον επιστρεφόµενο τύπο Η υπογραφή µιας µεθόδου αποτελείται µόνο από το όνοµά της και τους τύπους των ορισµάτων της Η υπογραφή δεν περιλαµβάνει τον επιστρεφόµενο τύπο Η Java δεν επιτρέπει µεθόδους µε το ίδιο όνοµα και διαφορετικούς επιστρεφόµενους τύπους στην ίδια κλάση 53

54 εν µπορούµε να κάνουµε overload τους τελεστές στη Java Παρόλο που πολλές γλώσσες προγραµµατισµού, όπως η C++, επιτρέπουν την υπερφόρτωση τελεστών (+, -, etc.), η Java δεν το επιτρέπει Μπορούµε µόνο να χρησιµοποιήσουµε το όνοµα µιας µεθόδου και κανονική σύνταξη µιας µεθόδου για να επιτύχουµε τις λειτουργίες ποτ επιθυµούµε 54

55 Κατασκευαστές (Constructors) Ένας constructor είναι ένας ειδικός τύπος µεθόδου που υπάρχει για να αρχικοποιούµε τις instance variables ενός αντικειµένου: public ClassName(anyParameters){code} Ένας constructor ΠΡΕΠΕΙ να έχει το ίδιο όνοµα µε αυτό της κλάσης Ένας constructor δεν έχει επιστρεφόµενο τύπο, ΟΥΤΕ void Συνήθως κάνουµε υπερφόρτωση των constructors 55

56 Κατασκευαστές (Constructors) Ένας constructor καλείται όταν κατασκευάζεται ένα αντικείµενο της κλάσης µε τον τελεστή new ClassName objectname = new ClassName(anyArgs); Το όνοµα του constructor και λίστα των ορισµάτων (εάν υπάρχουν κάποια) πρέπει να έπονται του τελεστή new Αυτός είναι ο µόνος έγκυρος τρόπος να ενεργοποιήσουµε έναν constructor: ένας constructor ΕΝ µπορεί να ενεργοποιηθεί όπως µια συνηθισµένη µέθοδος Εάν ένας constructor ενεργοποιηθεί ξανά (µε χρήση του new), το πρώτο αντικείµενο απορρίπτεται και δηµιουργείται ένα εντελώς νέο Εάν χρειαστεί να αλλάξουµε τις τιµές των instance variables του αντικειµένου, θα πρέπει να χρησιµοποιήσουµε τις mutator µεθόδους 56

57 Μπορούµε να ενεργοποιήσουµε µια άλλη µέθοδο µέσα σε έναν constructor Η πρώτη ενέργεια που λαµβάνει χώρα από έναν constructor είναι να δηµιουργηθεί ένα αντικείµενο µε instance variables Εποµένως, είναι έγκυρο να ενεργοποιήσουµε µια άλλη µέθοδο µέσα στον ορισµό ενός constructor, αφού το αντικείµενο που µόλις δηµιουργήθηκε είναι το καλούν αντικείµενο Για παράδειγµα, οι mutator µέθοδοι µπορούν να χρησιµοποιηθούν για να θέσουµε τις τιµές των instance variables Είναι επίσης δυνατό ένας constructor να ενεργοποιήσει κάποιον άλλο 57

58 Ένας constructor έχει την παράµετρο this Όπως κάθε συνηθισµένη µέθοδος, κάθε constructor έχει την παράµετρο this Η παράµετρος this µπορεί να χρησιµοποιηθεί ρητά, αλλά συνήθως εκλαµβάνεται ως υπάρχουσα ακόµα και εάν δεν γραφεί Είδαµε ότι η πρώτη ενέργεια που γίνεται από έναν constructor είναι να δηµιουργήσει αυτόµατα ένα αντικείµενο µε instance variables Κατόπιν, µέσα στον ορισµό του constructor, η παράµετρος this αναφέρεται στο αντικείµενο που δηµιουργήθηκε από τον constructor 58

59 Φτιάξτε έναν constructor χωρίς ορίσµατα Εάν δεν φτιάξετε κανέναν constructor στην κλάση σας, η Java αυτόµατα θα δηµιουργήσει έναν εξ ορισµού (default) ή χωρίς ορίσµατα (no-argument) constructor που δεν έχει κανένα όρισµα, δεν εκτελεί αρχικοποιήσεις, αλλά επιτρέπει τη δηµιουργία ενός αντικειµένου Εάν φτιάξετε έστω και έναν constructor στην κλάση σας, η Java δεν θα φτιάξει τον default constructor Εάν φτιάξετε κάποιους constructors στην κλάση σας, µην ξεχάσετε να φτιάξετε και τον no-argument constructor 59

60 Εξ ορισµού αρχικοποιήσεις µεταβλητών Οι instance variables αρχικοποιούνται αυτόµατα στη Java Οι boolean τύποι αρχικοποιούνται στην τιµή false Οι άλλοι primitive τύποι αρχικοποιούνται στο µηδέν του τύπου τους Οι τύποι κλάσεων αρχικοποιούνται στο null Όµως, είναι ορθότερη πρακτική να αρχικοποιούµε ρητά τις instance variables στον constructor Σηµείωση: Οι local variables δεν αρχικοποιούνται αυτόµατα 60

61 Η κλάση StringTokenizer Η κλάση StringTokenizer χρησιµοποιείται για να ανακτούµε λέξεις ή tokens σε ένα String που αποτελείται από πολλές λέξεις Μπορούµε να χρησιµοποιήσουµε χαρακτήρες whitespace για να διαχωρίσουµε κάθε token, ή µπορούµε να ορίσουµε τους χαρακτήρες που επιθυµούµε ως διαχωριστές Για να χρησιµοποιήσουµε την κλάση StringTokenizer, πρέπει να βάλουµε το εξής στην αρχή του αρχείου πηγαίου κώδικα: import java.util.stringtokenizer; 61

62 Μερικές µέθοδοι της κλάσης StringTokenizer (1/2) 62

63 Μερικές µέθοδοι της κλάσης StringTokenizer (2/2) 63

64 Ορίζοντας κλάσεις II 64

65 Μέθοδοι static Μια static µέθοδος είναι εκείνη που µπορεί να χρησιµοποιηθεί χωρίς να υπάρχει καλούν αντικείµενο Μια static µέθοδος εξακολουθεί να ανήκει σε κάποια κλάση, και ο ορισµός της δίνεται µέσα στον ορισµό της κλάσης Όταν ορίζεται µια static µέθοδος, η keyword static τοποθετείται στην κεφαλίδα της µεθόδου public static returnedtype mymethod(parameters) {... } Οι static µέθοδοι ενεργοποιούνται χρησιµοποιώντας το όνοµα της κλάσης στη θέση του καλούντος αντικειµένου returnedvalue = MyClass.myMethod(arguments); 65

66 Παγίδα: Ενεργοποίηση µιας non-static µεθόδου µέσα σε µια static µέθοδο Μια static µέθοδος δεν µπορεί να αναφερθεί σε µια instance variable της κλάσης, και δεν µπορεί να ενεργοποιήσει (καλέσει) µια non-static µέθοδο της κλάσης Μια static µέθοδος δεν έχει παράµετρο this, και συνεπώς δεν µπορεί να χρησιµοποιήσει µια instance variable ή µέθοδο που έχουν µια έµµεσή ή άµεση this για το καλούν αντικείµενο Μια static µέθοδος µπορεί να ενεργοποιήσει µια άλλη static µέθοδο 66

67 Υπόδειξη: Μπορούµε να βάλουµε µια main σε οποιαδήποτε κλάση Παρόλο που η µέθοδος main συχνά βρίσκεται από µόνη της σε µια κλάση χωριστά από τις άλλες κλάσεις ενός προγράµµατος, µπορεί να περιέχεται σε µια κανονική κλάση Με τον τρόπο αυτό, η κλάση στην οποία περιέχεται µπορεί να χρησιµοποιηθεί για να δηµιουργηθούν αντικείµενα άλλων κλάσεων ή να χρησιµοποιηθεί για να εκτελεστεί ως πρόγραµµα Μια µέθοδος main που περιλαµβάνεται σε µια κανονική κλάση είναι εξαιρετικά χρήσιµη όταν περιέχει διαγνωστικό κώδικα για την κλάση 67

68 Μια άλλη κλάση µε main (1/4) 68

69 Μια άλλη κλάση µε main (2/4) 69

70 Μια άλλη κλάση µε main (3/4) 70

71 Μια άλλη κλάση µε main (4/4) 71

72 Static µεταβλητές Μια static µεταβλητή είναι µια µεταβλητή που ανήκει στην κλάση, και όχι σε ένα συγκεκριµένο αντικείµενο Υπάρχει µόνο ένα αντίγραφο µιας static µεταβλητής ανά κλάση, αντίθετα µε τις instance variables που κάθε αντικείµενο έχει το δικό του αντίγραφο από κάθε instance variable Όλα τα αντικείµενα της κλάσης µπορούν να διαβάζουν και να τροποποιούν µια static µεταβλητή Παρόλο που µια static µέθοδος δεν µπορεί να προσπελάσει µια instance variable, µια static µέθοδος µπορεί να προσπελάσει µια static µεταβλητή Μια static µεταβλητή δηλώνεται όπως µια instance variable, µε την προσθήκη του modifier static private static int mystaticvariable; 72

73 Static µεταβλητές Οι static µεταβλητές µπορούν να δηλωθούν και να αρχικοποιηθούν την ίδια στιγµή private static int mystaticvariable = 0; Εάν δεν αρχικοποιηθούν ρητά, µια static µεταβλητή θα πάρει αυτόµατα µια εξ ορισµού τιµή Οι boolean static µεταβλητές αρχικοποιούνται σε false Οι static µεταβλητές άλλων primitive τύπων αρχικοποιούνται στο µηδέν του τύπου τους Οι static µεταβλητές τύπου κλάσης αρχικοποιούνται σε null Είναι πάντα προτιµητέο να αρχικοποιούµε ρητά τις static µεταβλητές παρά να βασιζόµαστε στην εξ ορισµού αρχικοποίηση 73

74 Static µεταβλητές Μια static µεταβλητή θα πρέπει πάντα να δηλώνεται ως private, εκτός και εάν είναι µια ορισµένη σταθερά (defined constant) Η τιµή µιας static defined constant δεν µπορεί να αλλάξει, εποµένως είναι ασφαλές να τη δηλώνουµε ως public Επιπρόσθετα ως static, η δήλωση για µια static defined constant πρέπει να περιλαµβάνει τον modifier final, ο οποίος προσδιορίζει ότι η τιµή της δεν µπορεί να αλλαχτεί public static final int BIRTH_YEAR = 1954; Όταν αναφερόµαστε σε µια τέτοια defined constant εκτός της κλάσης της, χρησιµοποιούµε το όνοµα της κλάσης της στη θέση του καλούντος αντικειµένου int year = MyClass.BIRTH_YEAR; 74

75 Η κλάση Math Η κλάση Math παρέχει έναν αριθµό συνηθισµένων µαθηµατικών µεθόδων Βρίσκεται στο java.lang package, και συνεπώς δεν χρειάζεται να χρησιµοποιήσουµε τη δήλωση import Όλες οι µέθοδοί της και τα δεδοµένα της είναι static, εποµένως ενεργοποιούνται µε το όνοµα της κλάσης Math αντί για το καλούν αντικείµενο Η κλάση Math έχει δυο προκαθορισµένες σταθερές, την E (e, η βάση των φυσικών λογαρίθµων) και PI (π, ) area = Math.PI * radius * radius; 75

76 Μερικές µέθοδοι της κλάσης Math (1/5) 76

77 Μερικές µέθοδοι της κλάσης Math (2/5) 77

78 Μερικές µέθοδοι της κλάσης Math (3/5) 78

79 Μερικές µέθοδοι της κλάσης Math (4/5) 79

80 Μερικές µέθοδοι της κλάσης Math (5/5) 80

81 Wrapper κλάσεις Οι wrapper κλάσεις παρέχουν έναν τύπο κλάσης που αντιστοιχεί σε κάθε έναν από τους primitive τύπους Αυτό καθιστά εφικτό να έχουµε τύπους κλάσεων που συµπεριφέρονται όπως και οι primitive τύποι Οι wrapper κλάσεις για τους primitive τύπους byte, short, long, float, double, και char είναι (αντίστοιχα) Byte, Short, Long, Float, Double, και Character Οι wrapper κλάσει περιέχουν επίσης έναν αριθµό χρήσιµων προκαθορισµένων σταθερών και static µεθόδων 81

82 Wrapper κλάσεις Boxing: η διαδικασία µετασχηµατισµού µιας τιµή primitive τύπου σε αντικείµενο της αντίστοιχης wrapper κλάσης Για να µετατρέψουµε µια primitive τιµή σε µια ισοδύναµη τιµή τύπου κλάσης, δηµιουργούµε ένα αντικείµενο της αντίστοιχης wrapper κλάσης χρησιµοποιώντας την primitive τιµή ως όρισµα Το νέο αντικείµενο θα περιέχει µια instance variable που αποθηκεύει ένα αντίγραφο της primitive τιµής ιαφορετικά από άλλες κλάσεις, µια wrapper ΕΝ έχει no-argument constructor Integer integerobject = new Integer(42); 82

83 Wrapper κλάσεις Unboxing: η διαδικασία µετασχηµατισµού ενός αντικειµένου µιας wrapper κλάσης στην αντίστοιχη τιµή ενός primitive τύπου Οι µέθοδοι µετατροπής ενός αντικειµένου από τις wrapper κλάσεις Byte, Short, Integer, Long, Float, Double, και Character στον αντίστοιχο primitive τύπο είναι (αντίστοιχα) bytevalue, shortvalue, intvalue, longvalue, floatvalue, doublevalue, και charvalue Καµία από αυτές τις µεθόδους δεν παίρνει όρισµα int i = integerobject.intvalue(); 83

84 Αυτόµατο Boxing και Unboxing Από την έκδοση 5.0, η Java µπορεί να εκτελέσει αυτόµατα boxing και unboxing Αντί να δηµιουργούµε ένα αντικείµενο µιας wrapper κλάσης χρησιµοποιώντας τη λειτουργία new (όπως δείξαµε πριν), µπορεί να γίνει ως αυτόµατα προσαρµογή τύπου: Integer integerobject = 42; Αντί να ενεργοποιούµε την κατάλληλη µέθοδο (όπως intvalue, doublevalue, charvalue, κ.τ.λ.) για να µετατρέψουµε ένα αντικείµενο µιας wrapper κλάσης στην τιµή του αντίστοιχου primitive τύπου, η primitive τιµή ανακτάται αυτόµατα int i = integerobject; 84

85 Σταθερές και static µέθοδοι σε wrapper κλάσεις Οι wrapper κλάσεις περιλαµβάνουν χρήσιµες σταθερές που δίνουν τις µεγαλύτερες και µικρότερες τιµές για οποιονδήποτε από τους primitive αριθµητικούς τύπους Για παράδειγµα, Integer.MAX_VALUE, Integer.MIN_VALUE, Double.MAX_VALUE, Double.MIN_VALUE, κ.τ.λ. Η Boolean κλάση έχει ονόµατα για δυο σταθε ρές τύπου Boolean Boolean.TRUE και Boolean.FALSE είναι δυο Boolean αντικείµενα που αντιστοιχούν στις τιµές true και false του primitive τύπου boolean 85

86 Σταθερές και static µέθοδοι σε wrapper κλάσεις Οι wrapper κλάσεις έχουν static µεθόδους που µετατρέπουν µια ορθά σχηµατισµένη αναπαράσταση αριθµού ως αλφαριθµητικό σε αριθµό του αντίστοιχου τύπου Οι µέθοδοι Integer.parseInt, Long.parseLong, Float.parseFloat, και Double.parseDouble εκτελούν αυτή τη λειτουργία για τους primitive τύπους (αντίστοιχα) int, long, float, και double Επίσης, οι wrapper κλάσεις έχουν static µεθόδους που µετατρέπουν µια αριθµητική τιµή σε αλφαριθµητικό Για παράδειγµα, η έκφραση Double.toString(123.99); επιστρέφει το αλφαριθµητικό "123.99" Η κλάση Character περιέχει έναν αριθµό static µεθόδων χρήσιµων για επεξεργασία αλφαριθµητικών 86

87 Μερικές µέθοδοι της κλάσης Character (1/3) 87

88 Μερικές µέθοδοι της κλάσης Character (2/3) 88

89 Μερικές µέθοδοι της κλάσης Character (3/3) 89

90 Μεταβλητές και µνήµη Κάθε υπολογιστής έχει δυο τύπους µνήµης ευτερεύουσα µνήµη (Secondary memory): χρησιµοποιείται για να κρατά αρχεία για µόνιµη αποθήκευση Κύρια µνήµη (Main memory): χρησιµοποιείται από τον υπολογιστή όταν εκτελείται ένα πρόγραµµα Οι τιµές που αποθηκεύονται στις µεταβλητές ενός προγράµµατος κρατούνται στην κύρια µνήµη 90

91 Μεταβλητές και µνήµη Η κύρια µνήµη αποτελείται από µια µακρά λίστα αριθµηµένων θέσεων από αποκαλούνται bytes Κάθε byte περιέχει οκτώ bits: οκτώ ψηφία 0 ή 1 Ο αριθµός που προσδιορίζει ένα byte αποκαλείται διεύθυνσή (address) του Ένα δεδοµένο µπορεί να αποθηκευτεί σε ένα (ή περισσότερα) από αυτά τα bytes Η διεύθυνση του byte χρησιµοποιείται για να εντοπίσουµε το δεδοµένο όταν χρειαστεί 91

92 Μεταβλητές και µνήµη Οι τιµές των περισσοτέρων τύπων δεδοµένων απαιτούν περισσότερα από ένα byte για την αποθήκευσή τους Στην περίπτωση αυτή, αρκετά γειτονικά bytes χρησιµοποιούνται για την αποθήκευση του δεδοµένου Ολόκληρο το τµήµα της µνήµης που κρατά το δεδοµένο αποκαλείται η θέση µνήµης (memory location) του Η διεύθυνση του πρώτου byte αυτής της µνήµης χρησιµοποιείται ως διεύθυνση του δεδοµένου αυτού Η κύρια µνήµη ενός υπολογιστή µπορεί να θεωρηθεί ως µια µακρά λίστα θέσεων µνήµης µεταβλητού µεγέθους (varying sizes) 92

93 Μεταβλητές στη µνήµη 93

94 Αναφορές (References) Κάθε µεταβλητή υλοποιείται ως µια θέση στη µνήµη του υπολογιστή Όταν η µεταβλητή είναι primitive τύπου, η τιµή της µεταβλητής αποθηκεύεται στη θέση µνήµης που ανατέθηκε στη µεταβλητή Κάθε primitive τύπος πάντα απαιτεί το ίδιο χώρο µνήµης για να αποθηκεύσει τις εκάστοτε τιµές του 94

95 Αναφορές (References) Όταν η µεταβλητή είναι τύπου κλάσης, µόνο η διεύθυνση της µνήµης (ή αναφορά - reference), όπου αποθηκεύεται το αντικείµενο ανατίθεται, στη µεταβλητή Το αντικείµενο που καθορίζεται από τη µεταβλητή αποθηκεύεται σε κάποια άλλη θέση µνήµης Όπως και στην περίπτωση των primitives, η τιµή της µεταβλητής τύπου κλάσης έχει σταθερό µέγεθος Αντίθετα από την περίπτωση των primitives, η τιµή της µεταβλητής τύπου κλάσης είναι µια διεύθυνση µνήµης ή αναφορά (reference) Το αντικείµενο, του οποίου η διεύθυνση αποθηκεύεται στην µεταβλητή, µπορεί να έχει οποιοδήποτε µέγεθος 95

96 Αναφορές (References) υο µεταβλητές αναφοράς µπορεί να περιέχουν την ίδια αναφορά, και εποµένως να ονοµατίζουν το ίδιο αντικείµενο Ο τελεστής ανάθεσης θέτει την αναφορά (διεύθυνση µνήµης) της µιας µεταβλητής τύπου κλάσης ίση µε την άλλη Κάθε αλλαγή στο αντικείµενο που ονοµατίζεται από µια από τις δυο αυτές µεταβλητές θα παράξει µια αλλαγή στο αντικείµενο που ονοµατίζεται από την άλλη, αφού πρόκειται για το ίδιο αντικείµενο variable2 = variable1; 96

97 Μεταβλητές τύπου κλάσης αποθηκεύουν αναφορές (1/2) 97

98 Μεταβλητές τύπου κλάσης αποθηκεύουν αναφορές (2/2) 98

99 Τελεστής ανάθεσης µε µεταβλητές τύπου κλάσης (1/3) 99

100 Τελεστής ανάθεσης µε µεταβλητές τύπου κλάσης (2/3) 100

101 Τελεστής ανάθεσης µε µεταβλητές τύπου κλάσης (3/3) 101

102 Στην επόµενη διάλεξη Κλάσεις & αντικείµενα (συνέχεια) Κλάσεις ως παράµετροι Copy constructors Packages javadoc Κληρονοµικότητα 102

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

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα τοποθετούνται

Διαβάστε περισσότερα

Προγραµµατισµό. Ηγλώσσααντικειµενοστραφούς. Ορίζοντας κλάσεις I. Εισαγωγικά

Προγραµµατισµό. Ηγλώσσααντικειµενοστραφούς. Ορίζοντας κλάσεις I. Εισαγωγικά Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 3η: 21/03/2007 & 22/03/2007

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 16/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της

Διαβάστε περισσότερα

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

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

Διαβάστε περισσότερα

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

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι Μαθήματα από το lab Boolean μεταβλητές: Συνήθως τα ονόματα που δίνουμε στις boolean μεταβλητές περιγράφουν

Διαβάστε περισσότερα

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

Διαβάστε περισσότερα

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές

Διαβάστε περισσότερα

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Αυτό-αξιολόγηση 1η: 08/02/2006 1

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Μαθήματα από τα εργαστήρια ΕΡΓΑΣΤΗΡΙΟ 1 Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 23/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Υπερφόρτωση μεθόδων Υπερφόρτωση μεθόδων Πολλαπλές

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?

Διαβάστε περισσότερα

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων Μέθοδοι Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων Μέθοδοι Οιµέθοδοικαθορίζουντηνσυµπεριφοράενόςαντικειµένου. Τα βασικά µέρη από τα οποία αποτελείται µία µέθοδος είναι τα εξής: Το όνοµα της µεθόδου

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιεπαφές και Εσωτερικές κλάσεις Interfaces and Inner Classes. ιεπαφές - Interfaces

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιεπαφές και Εσωτερικές κλάσεις Interfaces and Inner Classes. ιεπαφές - Interfaces Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 8η: 10/05/2006 & 11/05/2006

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 8η: 10/05/2006 & 11/05/2006

Διαβάστε περισσότερα

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

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 Constructors (Κατασκευαστές) Ειδικός τύπος μεθόδων που δημιουργούν αντικείμενα μιας κλάσης και: Εκτελούνται κατά την αρχικοποίηση των αντικειμένων

Διαβάστε περισσότερα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 9η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

Βασικά στοιχεία της Java

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Δείκτες Δείκτες Υπάρχουν περιπτώσεις που δεν ενδιαφέρει το περιεχόμενο αλλά η μιας μεταβλητής. Χρειάζεται κατάλληλος μηχανισμός αναφοράς και επεξεργασίας τιμών που

Διαβάστε περισσότερα

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

Διαβάστε περισσότερα

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

Διαβάστε περισσότερα

Δομές ελέγχου ροής προγράμματος

Δομές ελέγχου ροής προγράμματος Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής

Διαβάστε περισσότερα

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράµµατα «γράφονται» χρησιµοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαµβάνει

Διαβάστε περισσότερα

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

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

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιαχείριση Εξαιρέσεων. Εισαγωγή στη ιαχείριση Εξαιρέσεων

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιαχείριση Εξαιρέσεων. Εισαγωγή στη ιαχείριση Εξαιρέσεων Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 6η: 06/04/2006 1 ιαχείριση

Διαβάστε περισσότερα

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

Διαβάστε περισσότερα

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

Διαβάστε περισσότερα

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

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Δοµικά στοιχεία Πίνακες Το κόσκινο του Ερατοσθένη Αντιγραφή πινάκων

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 Εκτέλεση μεθόδου του αντικειμένου μιας κλάσης: 1) Δημιουργία αντικειμένου (στιγμιότυπου) της κλάσης: = new ( ); 2) Κλήση μεθόδου της κλάσης (στην

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι Ορισμός κλάσης και αντικειμένων Μία κλάση Κ ορίζεται από

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

Διαβάστε περισσότερα

Mεταβλητές (variables) και Σταθερές (constants)

Mεταβλητές (variables) και Σταθερές (constants) Mεταβλητές (variables) και Σταθερές (constants) Οι μεταβλητές είναι οι θέσεις μνήμης στις οποίες ένα πρόγραμμα τοποθετεί τα δεδομένα του κατά τη διάρκεια της λειτουργίας του. θα μάθουμε: πως δηλώνουμε

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Σύγκριση JAVA-C ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΣΥΓΚΡΙΣΗ JAVA - C ΤΥΠΟΙ

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Ένα ιστόγραμμα τιμών μετράει για ένα σύνολο από τιμές πόσες φορές εμφανίστηκε η κάθε τιμή. Για παράδειγμα

Διαβάστε περισσότερα

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1 Αντικείμενα στη Java Παύλος Εφραιμίδης Java Αντικείμενα στη Java 1 Αντικείμενα (Objects) στην Java Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας

Διαβάστε περισσότερα

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

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση

Διαβάστε περισσότερα

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 18/4/216 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

Διαβάστε περισσότερα

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Wrapper Classes Τοποθέτηση Δεδομένων Κλήση Μεθόδων. Παναγιώτης Σφέτσος, PhD

Wrapper Classes Τοποθέτηση Δεδομένων Κλήση Μεθόδων. Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Wrapper Classes Τοποθέτηση Δεδομένων Κλήση Μεθόδων PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Wrapper Classes Τοποθέτηση Δεδομένων

Διαβάστε περισσότερα