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

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

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

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

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

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

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

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

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

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

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

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

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

Ειδικά Θέματα Προγραμματισμού

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

Εισαγωγή στον Προγραµµατισµό - Εβδοµάδα 7

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

Δεδομένα, τελεστές, είσοδος/έξοδος

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 6: Pass-by-value και φαινομενικό pass-by-reference

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 5 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό με τη Java

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

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

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

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

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

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

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο )

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 4 : Πράξεις με bits. Δρ. Γκόγκος Χρήστος

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 2: Βασικές εντολές

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

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

Transcript:

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Ευχαριστίες Στην ανάπτυξη του υλικού βοήθησαν οι φοιτητές Λάζαρος Τουμανίδης, Λίλιαν Γούσιου και ο βοηθός εργαστηρίου Κόγιας Δημήτριος. 4

Βιβλιογραφία Harvey Deitel,Paul Deitel, «Java Προγραμματισμός, 8η έκδοση», Γκιούρδας, 2010. Γιώργος Λιακέας, «Εισαγωγή στη Java», Κλειδάριθμος, 2009. Χρήστος Κυτάγιας, Κώστας Δ. Κυτάγιας, Γιώργος Πρεζεράκος, Δημήτρης Κυτάγιας, «Αντικειμενοστραφής Προγραμματισμός με Java», Σύγχρονη Εκδοτική, 2013. Wanda Dann, Stephen Cooper, and Randy Pausch, «Learning to program with Alice» 3rd edition, Pearson Education, 2012. Michael Kölling, «Introduction to Programming with Greenfoot». «Object-Oriented Programming in Java with Games and Simulations», Pearson Education, August 2009. Οι σημειώσεις είναι βασισμένες και σε υλικό του καθηγητή του ΤΕΙ Πειραιά Γ. Πρεζεράκου. 5

Περιεχόμενα 2.1 Τύποι δεδομένων, μεταβλητές και τελεστές 2.2 Περισσότεροι τύποι δεδομένων 2.3 Μέθοδοι 6

Προσδοκώμενα Αποτελέσματα Στην ενότητα αυτή θα μάθετε για: Τους βασικούς τύπους δεδομένων των μεταβλητών, Τελεστές, χαρακτήρες και αλφαριθμητικά (String), Τη σειρά εκτέλεσης των πράξεων και μετατροπές τύπων δεδομένων Δημιουργία μεθόδων και τις παραμέτρους τους. 7

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

Τύποι Δεδομένων Τα είδη των τιμών που μπορούμε να αποθηκεύουμε σε μεταβλητές και να τις χειριζόμαστε. Τύπος τιμών Μήκος σε bytes Πεδίο τιμών Αρχική τιμή byte 1-128... 127 0 short 2-32768... 32767 0 Ακέραιος int 4-2 31... 2 31-1 / 0... 2 32-1 (Java SE8) 0 long 8-2 63... 2 63-1 / 0... 2 64-1 (Java SE8) 0 float 4 single-precision 32-bit IEEE 754 floating point 0 double Κινητής υποδιαστολής 8 double-precision 32-bit IEEE 754 floating point 0 char Χαρακτήρας 2 \u0000' (0)... '\uffff' (65.535) 0 boolean Λογική τιμή? false - true false 9

Μεταβλητές Τοποθεσίες στη μνήμη του υπολογιστή, τις οποίες έχουμε ονομάσει και στις οποίες αποθηκεύεται μία τιμή. Παράδειγμα: String a = "a"; String b = "letter b"; int k = 15; a = "letter a"; String c = a + "and" + b; 10

Μεταβλητές και Σταθερές Μία μεταβλητή Μπορεί να παίρνει διαφορετικές τιμές κατά τη διάρκεια του προγράμματος. Μπορεί να δηλωθεί σε κάποιο σημείο και να πάρει (και να ξαναπάρει) τιμή αλλού. int numberofhoursinaday= 67; numberofhoursinaday= 24; Μία σταθερά Παίρνει μία τιμή (μπορεί και μετά τη δήλωσή της ). Δηλώνεται σε ένα σημείο του κώδικα και δεν μπορεί να ξαναδηλωθεί. Η σύμβαση λέει ότι πρέπει να χρησιμοποιούνται κεφαλαία γράμματα και το σύμβολο _ για την ονομασία της. final int NUMBER_OF_HOURS_IN_A_DAY = 24; 11

Τελεστές Σύμβολα που υλοποιούν απλούς υπολογισμούς και πράξεις. Ανάθεση: = Πρόσθεση: + Αφαίρεση: - Πολ/μός: * Διαίρεση: / 12

Χαρακτήρες Δηλώνονται με το char. Μπορούν να περιλαμβάνουν οποιοδήποτε χαρακτήρα (γράμμα, ψηφίο, σημείο στίξης κ.λ.π). Οι ειδικοί χαρακτήρες χρησιμοποιούν τις ακολουθίες διαφυγής (escape sequences) στην αναπαράστασή τους. \b backspace \t tab \n line feed \f form feed \r carriage return \" διπλά εισαγωγικά \ απλό εισαγωγικό \\ backslash 13

Αλφαριθμητικά (String) Υπάρχουν διάφορες κλάσεις για αποθήκευση και διαχείριση αλφαριθμητικών. Οι πιο σημαντικές είναι οι String και StringBuffer. Ένα String περικλείεται μέσα σε διπλά εισαγωγικά: "Hello". Μπορούμε να συνδέσουμε δύο Strings με χρήση του συμβόλου +: String1+String2. Μπορούμε να αναθέσουμε μία νέα τιμή σε ένα String αλλά όχι να το τροποποιήσουμε. Μέθοδοι (χαρακτηριστικές) του αντικειμένου String. Μέθοδος charat(int index) compareto(string anotherstring) contains(charsequence s) indexof(int ch) isempty() Length() replace(char oldchar, char newchar) tolowercase() / touppercase() Λειτουργία Επιστρέφει το χαρακτήρα στη θέση index Συγκρίνει δύο strings Επιστρέφει true μόνο εάν το string περιέχει τη σειρά χαρακτήρων s Επιστρέφει τη θέση στην οποία θα συναντήσει για πρώτη φορά το χαρακτήρα ch στο string Επιστρέφει true, εάν το string είναι κενό (δηλαδή έχει μηδενικό μήκος) Επιστρέφει το μήκος ενός string Αντικαθιστά όλες τις εμφανίζεις του oldchar με newchar. Μετατρέπει όλους τους χαρακτήρες στο string σε lowercase/uppercase 14

StringBuffer Για να έχουμε τη δυνατότητα να τροποποιήσουμε ένα αλφαριθμητικό, χρησιμοποιούμε την κλάση StringBuffer. Τα αντικείμενα τύπου StringBuffer μπορούν να περιέχουν αχρησιμοποίητο χώρο για χαρακτήρες (ενώ τα τύπου String δεν μπορούν). StringBuffer sb = newstringbuffer(10) κρατάει χώρο για 10 χαρακτήρες στο αντικείμενο sb. Οι μέθοδοι length() και capacity() μας δείχνουν το μήκος και τη χωρητικότητα ενός αντικειμένου τύπου StringBuffer. Μπορούμε να μετατρέψουμε ένα αντικείμενο StringBuffer σε String, με χρήση της μεθόδου tostring(). Η Stringbuffer παρέχει και τη δυνατότητα αντιστροφής χαρακτήρων με τη μέθοδο reverse(). 15

Μαθηματικές συναρτήσεις Περιλαμβάνονται στην κλάση Math. Ορισμένες μέθοδοι. Μέθοδος abs(όρισμα) ceil(όρισμα) cos(όρισμα) exp(όρισμα) log(όρισμα) round(όρισμα) Λειτουργία Επιστρέφει την απόλυτη τιμή του ορίσματος Επιστρέφει την τιμή του μικρότερου ακέραιου που είναι μεγαλύτερος ή ίσος με το όρισμα Επιστρέφει το (τύπου double)συνημίτονο του (τύπου double) ορίσματος Επιστρέφει το (τύπου double) eορίσματος Επιστρέφει τον (τύπου double) φυσικό λογάριθμο του ορίσματος Επιστρέφει τον πλησιέστερο προς το όρισμα ακέραιο random() Επιστρέφει έναν τυχαίο αριθμό ανάμεσα σε 0 και 1 min(όρισμα1,όρισμα2) Επιστρέφει το μικρότερο των δύο ορισμάτων 16

Παράδειγμα class GravityCalculator { public static void main(string[]args){ double gravity = -9.81; double initialvelocity = 0.0; double fallingtime = 10.0; double initialposition = 0.0; double finalposition =.5 * gravity * fallingtime * fallingtime; finalposition = finalposition + initialvelocity * fallingtime; finalposition = finalposition + initialposition; System.out.println("I thesi enos antikeimenou meta apo " + fallingtime + " sec einai " + finalposition + " m."); 17

Παράδειγμα finalposition = finalposition + initialvelocity * fallingtime; finalposition = finalposition + initialposition; Ή finalposition += initialvelocity * fallingtime; finalposition += initialposition; 18

2.2 Περισσότεροι τύποι δεδομένων 20

Διαίρεση Η διαίρεση ("/") λειτουργεί διαφορετικά στους ακέραιους και στους πραγματικούς. Παράδειγμα: double a= 5.0/2.0; // a = 2.5 int b = 4/2; // b = 2 int c = 5/2; // c = 2 double d = 5/2; // d = 2.0 Δίνεται προτεραιότητα, όπως και στα μαθηματικά, στην εκτέλεση των πράξεων από τα αριστερά προς τα δεξιά. 21

Σειρά Εκτέλεσης των Πράξεων Εκτιμάμε το δεξί μέρος του τελεστή ανάθεσης ("=") πρώτα. Οι παρενθέσεις έχουν τη μεγαλύτερη προτεραιότητα. double x = 3 / 2 + 1; // x = 2.0 double y = 3 / (2+1); // y = 1.0 22

"Αταίριαστοι" Τύποι Δεδομένων H Java επαληθεύει ότι δεν ταιριάζουν όλοι οι τύποι δεδομένων: String five = 5; // ΛΑΘΟΣ! Αναμονή για συμβολοσειρά και όχι νούμερο Εμφανίζεται το εξής μήνυμα λάθους: test.java.2: incompatible types found: int required: java.lang.string String five = 5; 23

Μετατροπές Τύπου Δεδομένων (Casting) Μπορεί να εφαρμοστεί σε μεταβλητές και κλάσεις Τοποθετούμε τον επιθυμητό τύπο μεταβλητής σε παρένθεση και στη συνέχεια το όνομα της μεταβλητής στην οποία θέλουμε να κάνουμε τη μετατροπή: (επιθυμητός τύπος) όνομα μεταβλητής 24

Μετατροπές Τύπου Δεδομένων (Casting) int a = 2; // a = 2 double a = 2; // a = 2.0 (Έμμεση Μετατροπή) int a = 18.7; // ΛΑΘΟΣ! int a = (int) 18.7; // a = 18 int a = 2; // a = 2 double a = (double) 2/3; // a = 0.6666 25

Ιεραρχία τύπων δεδομένων και implicit typecast Οι τύποι δεδομένων στη Java είναι ιεραρχημένοι. Το νόημα είναι να μπορεί ένας αριθμός που ανήκει σε τύπο πιο ψηλά στην ιεραρχία, να συγκρατήσει την ακρίβεια του χαμηλότερου στη μετατροπή (άρα όσο πιο ψηλά, τόσο μεγαλύτερη ακρίβεια ενός τύπου) Η ιεραρχία είναι: 1. double 2. float 3. long 4. int 5. short 6. Byte Implicit typecast: Αναβαθμίζει τον τύπο, σύμφωνα με την ιεραρχία 26

Explicit typecast Κατά την ανάθεση, χρησιμοποιούμε το (new type) πριν τα δεδομένα τα οποία ήταν στον παλιό τύπο. Εδώ μπορούμε να κατέβουμε την ιεραρχία, αλλά θα χάσουμε σε ακρίβεια. Παράδειγμα int x = (int)3.7; Εδώ το x θα πάρει την τιμή 3 byte bt = (byte) 200; Εδώ το bt θα πάρει την τιμή -56 (αναδίπλωση) (μπορείτε να εξηγήσετε γιατί;) 27

Παράδειγμα Ποιά από τα παρακάτω επιτρέπονται; int x = 3.5; float x = 3; long i = 3; byte x = 155; Δεν επιτρέπεται γιατί το 3.5 δεν χωράει στο int Επιτρέπεται γιατί το 3 είναι τύπου int που που χωράει στο float Επιτρέπεται γιατί το 3 είναι τύπου int που που χωράει στο long Δεν επιτρέπεται γιατί το 155 είναι πολύ μεγάλο για να χωρέσει ένα byte (<=127) double d = 3.14159F; double Επιτρέπεται γιατί to 3.14159F είναι τύπου float, που χωράει στο 28

2.3 Μέθοδοι 30

Μέθοδοι Public static void main (String[] arguments) { System.out.println("hi"); 31

Δημιουργώντας Μεθόδους public static void NAME() { ΕΝΤΟΛΕΣ Η μέθοδος έχει τη μορφή: ΝΑΜΕ( ) ; 32

Παράδειγμα class NewLine { public static void newline() { System.out.println(""); public static void threelines() { newline(); newline(); newline(); public static void main(string[] arguments) { System.out.println("Line 1"); threelines(); System.out.println("Line 2"); 33

Παράδειγμα class NewLine { public static void newline() { System.out.println(""); public static void threelines() { newline(); newline(); newline(); public static void main(string[] arguments) { System.out.println("Line 1"); threelines(); System.out.println("Line 2"); 34

Παράδειγμα class NewLine { public static void newline() { System.out.println(""); public static void threelines() { newline(); newline(); newline(); public static void main(string[] arguments) { System.out.println("Line 1"); threelines(); System.out.println("Line 2"); 35

Παράμετροι public static void NAME(TYPE NAME) { ΕΝΤΟΛΕΣ Η μέθοδος έχει τη μορφή: NAME (EXPRESSION); 36

Παράδειγμα class Square { public static void printsquare(int x) { System.out.println(x*x); public static void main(string[] arguments) { int value = 2; printsquare(value); printsquare(3); printsquare(value*2); Σωστό Πρόγραμμα! 37

Παράδειγμα class Square2 { public static void printsquare(int x) { System.out.println(x*x); public static void main(string[] arguments) { printsquare("hello"); printsquare(5.5); Πού βρίσκεται το λάθος στην κλάση Square 2; 38

Παράδειγμα class Square3 { public static void printsquare(double x) { System.out.println(x*x); public static void main(string[] arguments) { printsquare(5); Πού βρίσκεται το λάθος στην κλάση Square 3; 39

Πολλαπλοί Παράμετροι [ ]NAME(TYPE NAME, TYPE NAME){ ΕΝΤΟΛΕΣ Η μέθοδος έχει τη μορφή: ΝΑΜΕ (arg1, arg2); 40

Παράδειγμα class Multiply { public static void times (double a, double b) { System.out.println(a*b); public static void main(string[] arguments) { times(2.0,2.0); //Σωστό times(3,4); // Λάθος 41

Τιμές που Επιστρέφονται Public static TYPE NAME() { ΕΝΤΟΛΕΣ return ΕΚΦΡΑΣΗ; Το "void" σημαίνει ότι η συνάρτηση δεν επιστρέφει κάποιον τύπο δεδομένων. 42

Παράδειγμα class Square3 { public static void printsquare(double x) { System.out.println(x*x); public static void main(string[] arguments) { printsquare(5); 43

Παράδειγμα class Square4 { public static double square(double x) { return x*x; public static void main(string[] arguments) { System.out.println(square(5)); System.out.println(square(2)) 44

Πεδίο Εμβέλειας Μεταβλητών Το πεδίο ορατότητας (ή ισχύος) μιας μεταβλητής είναι το block "{ ", στο οποίο ορίζονται (πεδίο εμβέλειας). Οι παράμετροι σε μια μέθοδο είναι οι μεταβλητές που ορίζονται μέσα στη μέθοδο. 45

Παράδειγμα class SquareChange { public static void printsquare(int x){ System.out.println("printSquare x =" + x); //printsquare x= 5 x = x*x; System.out.println("printSquare x =" + x); //printsquare x= 25 public static void main(string [] arguments) { int x = 5; System.out.println("main x =" + x); //main x= 5 printsquare(x); System.out.println("main x =" + x); //main x= 5 46

Παράδειγμα class Scope { public static void main(string[] arguments) { int x = 5; if (x == 5) { int x = 6; int y = 72; System.out.println("x = " + x + " y = " + y ); System.out.println("x = " + x + " y = " + y); 47

Μέθοδοι: Φτιάχνοντας Blocks Τα μεγάλα προγράμματα φτιάχνονται από πολλές μικρές μεθόδους. Οι μέθοδοι μπορούν να αναπτυχθούν, να δοκιμαστούν και να επαναχρησιμοποιηθούν μεμονομένα. Η χρήση μιας μεθόδου δεν προαπαιτεί να γνώριζει κανείς τον τρόπο που αυτή λειτουργεί. Στη γλώσσα των υπολογιστών αυτό ονομάζεται «αφαίρεση». 48

Μαθηματικές Συναρτήσεις Math.sin(x) Math.cos(Math.PI/2) Math.pow(2, 3) Math.log(Math.log(x + y)) 49

Σε αυτή την ενότητα μιλήσαμε για: 2.1 Τύποι δεδομένων, μεταβλητές και τελεστές 2.2 Περισσότεροι τύποι δεδομένων 2.3 Μέθοδοι 51

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