operators Java boolean byte char short int long
Βασικοί Τύποι / Τελεστές • Βασικοί τύποι • – Έχουν ένα σύνολο τελεστών που υποστηρίζεται από τη γλώσσα. • • – – • Τελεστές (operators) – Αναθέσεις – Απλές μαθηματικές εκφράσεις – Απλές εκφράσεις σχετικές με τη δομή της γλώσσας – Υπάρχει προτεραιότητα, που (συνήθως) μπορεί να αλλάξει με χρήση παρενθέσεων. Οι γλώσσες με αυστηρό έλεγχο τύπων απαιτούν ακριβείς χρήσεις τους ακόμα και για τους βασικούς τύπους – Η Java είναι τέτοια γλώσσα. • • • boolean byte, char, short, int, long float, double Void Βασικοί Τελεστές = Simple assignment operator + Additive operator (also used for String concatenation) Subtraction operator * Multiplication operator / % • 6/14/2021 Java Built-in types Division operator Remainder operator Unary Τελεστές ++ Increment operator; increments a value by 1 -Decrement operator; decrements a value by 1 ! Logical compliment operator; inverts the value of a boolean Equality και Relational Τελεστές == Equal to != Not equal to > Greater than >= Greater than or equal to < Less than <= Less than or equal to Conditional Τελεστές && Conditional-AND || Conditional-OR ? : Ternary (shorthand for if-then-else statement) Type Comparison Τελεστής instanceof Compares an object to a specified type Διαδίκτυο και Εφαρμογές 3
Object Oriented Programming: Inheritance (1) // Παράδειγμα Inheritance • Ένα class μπορεί να «επεκτείνει» ένα άλλο – Ιδιότητες και λειτουργίες μπορούν να προστεθούν. • Το νέο class είναι το πλουσιότερο! – Το παλαιό δεν άλλαξε καθόλου, ούτε κι ο κώδικας που το χρησιμοποιεί! – Το νέο class μπορεί να χρησιμοποιηθεί όπου και το παλαιό. • Απλώς άλλαξε συμπεριφορά class Line { float x 0, y 0; float x 1, y 1; float length() { float dx = x 0 – x 1; float dy = y 0 – y 1; return Math. sqrt( dx*dx + dy*dy ); } } class Line 3 D extends Line { float z 0, z 1; Line. length() float length() { float dz = z 0 – z 1; float dxy = super. length() * super. length(); return Math. sqrt( dxy + dz*dz ); } } Line. User u = new Line. User(); Line l 1 = new Line(); Line 3 D l 2 = new Line 3 D(); Line l 3 = new Line 3 D(); u. add. Length. Of( l 1 ); u. add. Length. Of( l 2 ); u. add. Length. Of( l 3 ); 6/14/2021 Διαδίκτυο και Εφαρμογές 17
Object Oriented Programming: Abstraction (2) public abstract class Shape { protected Point center; public Point get. Center() { return center; } Θέλουμε τα sub-class να «βλέπουν» το center. Ποιοι άλλοι το «βλέπουν» ; public abstract float area(); } public class Rectangle extends Shape { private Point upleft; public class Circle extends Shape { private float radius; public float area() { float dx = upleft. x – center. x; float dy = upleft. y – center. y; public float area() { return Math. PI * radius; } } return 2*dx * 2*dy; } } 6/14/2021 Διαδίκτυο και Εφαρμογές 21
Java & Object Oriented Programming • Ιδιαίτερα στοιχεία της Java – Single class inheritance • Σχηματίζεται ένα δέντρο «ιεραρχίας» • Στη ρίζα του δέντρου είναι το java. lang. Object – Interfaces • Είναι τμήμα της γλώσσας • Multiple interface inheritance • Overriding & Overloading – Διαφορετικοί μηχανισμοί για διαφορετικό σκοπό – Γενικά: • Overloading: επαναχρησιμοποίηση ονομάτων με άλλα ορίσματα • Overriding: χρήση πολυμορφισμού, επαναπροσδιορισμός συμπεριφοράς • Ορολογία: – Η υλοποίηση ενός abstract method ΔΕΝ είναι overriding! 6/14/2021 interface Iface { void foo(); void bar(); } Marker Interface interface Empty { } abstract class Base { void foo() { … } abstract void foobar(); } class Concrete extends Base implements Iface, Empty { void bar() { … } void foo(int a) { … } void foo() { … } } Διαδίκτυο και Εφαρμογές Overloading Overriding 24
Object Construction (2) • new 1. 2. Δέσμευση μνήμης Αρχικοποίηση member fields • Για όσα δεν υπάρχει αρχική τιμή, μηδενίζεται η μνήμη: – – – 3. 4. • class Foo { static final int CONSTANT = 18; int cnstr. Args = -18; { // initializer. cnstr. Args = 0; } Booleans: false Numerical types: zero Reference types (classes & arrays): null Εκτέλεση instance initializers Καλείται ο constructor Foo() { } • Foo(int a) { cnstr. Args = 1; } Foo(int a, int b) { cnstr. Args = 2; } Επιλογή βάσει τύπων παραμέτρων που δόθηκαν στον new operator. Class Loading – – Foo( double c ) { this( (int) c ); } Πριν τη χρήση ενός class, αυτό γίνεται “load”. H διαδικασία είναι: 1. 2. 3. 6/14/2021 Δέσμευση μνήμης Αρχικοποίηση static member fields Εκτέλεση static initializers // correct: not-a-constructor! void Foo() { … } } Διαδίκτυο και Εφαρμογές 36
Exceptions • Exceptions: ο μηχανισμός της Java για τη διαχείριση λαθών. • Όταν συμβαίνει ένα λάθος στο πρόγραμμα η τρέχουσα μέθοδος κάνει throw ένα exception – Αλλάζει η ροή του προγράμματος. • Τα μόνα αντικείμενα που μπορούν να γίνουν throw, είναι subclasses του Throwable. – Τα subclasses του Exception ονομάζονται checked exceptions. – Αλλά όχι τα subclasses του Runtime. Exception, που είναι subclass του Exception! void foo( String name ) throws IOException { if( name == null ) throw new Null. Pointer. Exception(); this. source = new Buffered. Reader( new File. Reader( name ) ); } • java. lang. Throwable (implements java. io. Serializable) – java. lang. Error • • java. lang. Assertion. Error java. lang. Linkage. Error java. lang. Thread. Death java. lang. Virtual. Machine. Error – – – java. lang. Exception • • java. lang. Class. Not. Found. Exception java. lang. Runtime. Exception – – – • Διαδίκτυο και Εφαρμογές java. lang. Arithmetic. Exception java. lang. Index. Out. Of. Bounds. Exception java. lang. Null. Pointer. Exception java. io. IOException – – 6/14/2021 java. lang. Internal. Error java. lang. Out. Of. Memory. Error java. lang. Stack. Overflow. Error java. lang. Unknown. Error java. io. File. Not. Found … 43
Προγράμματα Java • Σημείο έναρξης προγράμματος – main() – ΠΑΝΤΑ δηλωμένη με ακριβώς τον ίδιο τρόπο: • public static void main(String[] args) • Το throw list μπορεί να περιέχει ότι χρειάζεται. • Μπορούμε να χρησιμοποιούμε static members & fields για βασικά Ι/Ο public class Program { public static void main(String[ ] args) { System. out. println( “Hello world!” ); System. err. println( “Not an error : )” ); } } public class Program { public static void main(String[ ] args) throws IOException { Buffered. Reader input = new Buffered. Reader( new Input. Stream. Reader( System. in ) ); System. out. println( “Say something!” ); String something = input. read. Line(); System. out. println( “You said: ” + something ); – Π. χ. System. out. println() } } 6/14/2021 Διαδίκτυο και Εφαρμογές 50
Java Platform & Libraries (1) • H πλατφόρμα Java περιλαμβάνει πολλές τεχνολογίες – Αυτές υποστηρίζονται από της βιβλιοθήκες που περιλαμβάνονται σε κάθε JRE • Μερικά απαραίτητα στοιχεία, σχεδόν σε κάθε πρόγραμμκα – java. lang – – java. util java. io java. math java. net – lookups, . . . java. sql – java. awt – javax. swing – components java. applet 6/14/2021 — basic language functionality and fundamental types — collection data structure classes — file operations — multiprecision arithmetics — networking operations, sockets, DNS — Java Database Connectivity (JDBC) to access databases — basic hierarchy of packages for native GUI components — hierarchy of packages for platform-independent rich GUI — classes for creating and implementing applets Διαδίκτυο και Εφαρμογές 54
Java Platform & Libraries (2) 6/14/2021 Διαδίκτυο και Εφαρμογές 55
Java Platform & Libraries (3) 6/14/2021 Διαδίκτυο και Εφαρμογές 56
Java Documentation: javadoc • Class Hierarchy • Implemented Interfaces – Και αυτά που κάνουν implement τα super-class • Γενικές πληροφορίες για – Υλοποίηση – Χρήση • Constructors & Methods • Inherited Methods 6/14/2021 Διαδίκτυο και Εφαρμογές 59
Και τώρα; • To Java. Doc είναι φίλος μας! • Human beings, who are almost unique in having the ability to learn from the experience of others, are also remarkable for their apparent disinclination to do so. – Douglas Adams, Last Chance to See • Προγραμματίστε και πειραματιστήτε! 6/14/2021 Διαδίκτυο και Εφαρμογές 61
- Slides: 62