1 / 73

medialab.ece.ntua.gr/medialab/education/education.html

Εργαστήριο Πολυμέσων. www.medialab.ece.ntua.gr/medialab/education/education.html. Java references site Java http://java.sun.com tutorials http://java.sun.com/docs/books/tutorial documentation http://java.sun.com/docs/index.html

Download Presentation

medialab.ece.ntua.gr/medialab/education/education.html

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Εργαστήριο Πολυμέσων www.medialab.ece.ntua.gr/medialab/education/education.html • Java references • site Java http://java.sun.com • tutorials http://java.sun.com/docs/books/tutorial • documentation http://java.sun.com/docs/index.html • doc. SDK v1.3.1 http://java/sun.com/j2se/1.3/docs.html • SDK platform http://java.sun.com/downloads/

  2. Ύλη Java • Εργαλεία της Java • Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό • Ορισμός Κλάσης • Κληρονομικότητα • Κατασκευαστές • Access specifiers – modifiers • Τύποι δεδομένων – exceptions • Applets

  3. Χαρακτηριστικά της Java • Object-Oriented programming language • Ενσωμάτωση - Encapsulation • Κληρονομικότητα – Inheritance • Πολυμορφισμός – Polymorphism Δημιουργία ανεξάρτητων εφαρμογών (Applets) Interpreted programming language Κατανεμημένη Multithreaded Υποστηρίζει multimedia εφαρμογές

  4. Εργαλεία της Java • Java compiler – javac.exe javac <filename>.java • Java interpreter – java.exe java <filename> • Appletviewer – Internet Browsers

  5. JDK compiler javac.exe JRE java.exe JVM linux win32

  6. Editor <filename>.java javac.exe javac <filename>.java <filename>.class java.exe java <filename> Εκτέλεση

  7. Παράδειγμα: Compiler - Interpreter http://www.medialab.ece.ntua.gr/medialab/education/education.html */ The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); //Display the string. } } HelloWorldApp.java C:\temp\java Εφαρμογή των javac.exe και java.exe

  8. Παράδειγμα: Compiler - Interpreter http://www.medialab.ece.ntua.gr/medialab/education/education.html

  9. Example: Java Applet http://www.medialab.ece.ntua.gr/medialab/education/education.html import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); } } HelloWorld.java C:\temp\java Εφαρμογή του javac.exe

  10. Example: Java Applet http://www.medialab.ece.ntua.gr/medialab/education/education.html <HTML><HEAD> <TITLE>A Simple Program</TITLE></HEAD> <BODY> Here is the output of my program: <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> </APPLET> </BODY></HTML> Hello.html C:\temp\java Εφαρμογή του appletviewer

  11. Example: Java Applet http://www.medialab.ece.ntua.gr/medialab/education/education.html

  12. Ορισμός κλάσεως: • Η κλάση χρησιμεύει για να δημιουργεί αντικείμενα (object) • Object = στιγμιότυπο μιας κλάσεως • Δομή κλάσεως: • - Δήλωση • - Σώμα (body) • Δήλωση κλάσεως: • {access specifier} class {class_name} extends {name_of_superclass} implements {name_of_interface}

  13. Packages • Package = sub-directory / folder • Χρησιμοποιούνται με σκοπό την ομαδοποίηση συγκεκριμένων κλάσεων. Σε κάθε package έχουμε κλάσεις που σχετίζονται μεταξύ τους • Για να περιέχεται μια κλάση σε ένα package πρέπει ο πηγαίος κώδικας της να περιέχεται στο αντίστοιχο folder • Η δήλωση του package (package statement) γίνεται στην αρχή

  14. B A Κληρονομικότητα (Inheritance) A B C D Η κλάση Β κληρονομεί από την Α {Β}extends {A} Β υποκλάση της Α, Α υπερκλάση της Β {D}extends {C}και {C}extends {A} => {D}extends {A}

  15. Προσδιοριστές πρόσβασης κλάσεως: • public • Μπορεί να κληρονομηθεί από όλες τις κλάσεις • protected • Μπορεί να κληρονομηθεί απόκλάσεις που ανήκουν στο ίδιο package • private • Δεν μπορεί να κληρονομηθεί από υποκλάσεις της(πεδία/μέθοδοι) • final • Η κλάση αυτή δεν έχει υποκλάσεις • abstract • Η κλάση αυτή περιέχει έστω μια μη ολοκληρωμένη (abstract) μέθοδο • “κενό” ή default • Η κλάση αυτή είναι public για το τρέχων package

  16. Δημιουργία Στιγμιοτύπου (instance) – Kατασκευαστή (constructor): • {Instance’s_type} {instance’s_name} • {instance’s_name} = new {Instance’s_type}() • παραδείγματα • Objectobj; • obj = new Object(); • A a = new A(); • String str = new String("Hello, I am a new string!");

  17. Σημειώσεις: • Ο constructor με κενή λίστα παραμέτρων καλείται default ή null constructor της κλάσης. • Αν η κλάση Β κληρονομεί απο την Α, (Β υποκλάση της Α) και δεν έχουν οριστεί constructors σε αυτήν τότε χρησιμοποιείται ο default constructor της Α • Όταν ένας constructor καλείται, πριν κάνει οτιδήποτε άλλο καλεί τον default constructor της υπερκλάσης του, για την δημιουργία και αρχικοποίηση των πεδίων που κληρονομούνται από αυτή.

  18. Παράδειγμα Κληρονομικότητας: class A { int a; void add(int x) { a += x;} } class B extends A { // Τα 'a' και 'void add(int x) {...}' υπονοούνται int prev; void sub(int x) { prev = a; a - = x; } }

  19. Παράδειγμα Κληρονομικότητας με overriding: class A { int a; void add(int x) { a += x;} } class B extends A { // Τα 'a' και 'void add(int x) {...}' υπονοούνται float a; // αλλάγή τύπου του a void add(int x) { a = a + ((float) x); // αλλάγή της add(int x) } } ** H μέθοδος που υπερκαλύπτεται πρέπει να έχει το ίδιο όνομα, λίστα παραμέτρων και επιστρεφόμενο τύπο με αυτήν που κληρονομεί

  20. Οι μεταβλητές this - super: class A { void doSomething() { ...... } } class B extends A { void doSomething() { // "Υπερκαλύπτει" (overrides) την ........ // doSomething() της κλάσης Α. } } A o1; B o2; o1.doSomething();// Καλείται η doSomething() της Α o2.doSomething();// Καλείται η doSomething() της Β

  21. Οι μεταβλητές this - super: super Εάν θέλουμε να καλέσουμε μια μέθοδο της Α την οποία έχουμε υπερκαλύψει στην Β τότε την καλουμε ως εξής: super.doSomething(); // τώρα καλείται η doSomething() της Α this class A { int a; void set(int a) { this.a = a; } } class A { void make_a_new_object() { B tmp; tmp.owner(this); } }

  22. Παράδειγμα με προσδιοριστές πρόσβασης κλάσεων: class A { int b; //φαίνεται σε όλο το package, πρακτικά παντού protected c; //φαίνεται στην Α και την Β private d; //φαίνεται μόνο στην Α public A() {...} //ορατή από παντού private void who_am_i() { System.out.println("I am class A!"); } } class B extends A { // Κληρονομεί: b, c, A() via super() // Δεν Κληρονομεί: d, who_am_i() }

  23. Παράδειγμα με packages: folder1 temp folder2 Test1.java Test2.java package folder1; public class Test1{ } Test1.java package folder2; public class Test2 extends folder1.Test1 { } Test2.java C:\temp\java\javac folder1/Test1.java C:\temp\java\javac folder2/Test2.java

  24. Keyword Description Size/Format (integers) byte Byte-length integer 8-bit two's complement short Short integer 16-bit two's complement int Integer 32-bit two's complement long Long integer 64-bit two's complement (real numbers) float Single-precision floating point 32-bit IEEE 754 double Double-precision floating point 64-bit IEEE 754 (other types) char A single character 16-bit Unicode character boolean A boolean value (true or false) true or false Primitive Data Types

  25. Literal Data Type 178 int 8864L long 37.266 double 37.266D double 87.363F float 26.77e3 double ' c ' char true boolean false boolean Literal Values and Their Data Types

  26. Reference Data Types Σε αντίθεση με τα Primitive Data Types δείχνουν σε μια διεύθυνση της τιμής ή συνόλου τιμών που αντιπροσοπεύουν την μετάβλητη Π.χ. Πίνακες (arrays), κλάσεις (classes)

  27. Τελεστές (Operators) • Αριθμητικοί (Arithmetic) • Σχεσιακοί – Συνθήκης (Relational – Conditional) • Λογικοί (Logical) • Ανάθεσης (Assignment) • Άλλοι (Others)

  28. Operator Use Description + op1 + op2 Adds op1 and op2 - op1 - op2 Subtracts op2 from op1 * op1 * op2 Multiplies op1 by op2 / op1 / op2 Divides op1 by op2 % op1 % op2 Computes the remainder of dividing op1 by op2 Αριθμητικοί Τελεστές – Arithmetic Operators

  29. Αριθμητικοί Τελεστές Operator Use Description ++ op++ Increments op by 1; evaluates to the value of op before it was incremented ++ ++op Increments op by 1; evaluates to the value of op after it was incremented -- op-- Decrements op by 1; evaluates to the value of op before it was decremented -- --op Decrements op by 1; evaluates to the value of op after it was decremented

  30. ΣχεσιακοίΤελεστές – ΤελεστέςΣυνθήκης Operator Use Returns true if > op1 > op2 op1 is greater than op2 >= op1 >= op2 op1 is greater than or equal to op2 < op1 < op2 op1 is less than op2 <= op1 <= op2 op1 is less than or equal to op2 == op1 == op2 op1 and op2 are equal != op1 != op2 op1 and op2 are not equal

  31. ΣχεσιακοίΤελεστές – ΤελεστέςΣυνθήκης Operator Use Returns true if && op1 && op2 op1 and op2 are both true, conditionally evaluates op2 || op1 || op2 either op1 or op2 is true, conditionally evaluates op2 ! ! op op is false & op1 & op2 op1 and op2 are both true, always evaluates op1 and op2 | op1 | op2 either op1 or op2 is true, always evaluates op1 and op2 ^ op1 ^ op2 if op1 and op2 are different--that is if one or the other of the operands is true but not both

  32. ΛογικοίΤελεστές Operator Use Operation & op1 & op2 bitwise and | op1 | op2 bitwise or ^ op1 ^ op2 bitwise xor ~ ~op2 bitwise complement

  33. Τελεστές Ανάθεσης Operator Use Equivalent to += op1 += op2 op1 = op1 + op2 -= op1 -= op2 op1 = op1 - op2 *= op1 *= op2 op1 = op1 * op2 /= op1 /= op2 op1 = op1 / op2 %= op1 %= op2 op1 = op1 % op2 &= op1 &= op2 op1 = op1 & op2

  34. Τελεστές Ανάθεσης Operator Use Equivalent to |= op1 |= op2 op1 = op1 | op2 ^= op1 ^= op2 op1 = op1 ^ op2 <<= op1 <<= op2 op1 = op1 << op2 >>= op1 >>= op2 op1 = op1 >> op2 >>>= op1 >>>= op2 op1 = op1 >>> op2

  35. Άλλοι Τελεστές Operator Use Description ?: op1 ? op2 : op3 If op1 is true, returns op2. Otherwise, returns op3. [] type [] Declares an array of unknown length, which contains type elements. [] type[ op1 ] Creates and array with op1 elements. Must be used with the new operator. [] op1[ op2 ] Accesses the element at op2 index within the array op1. Indices begin at 0 and extend through the length of the array minus one. . op1.op2 Is a reference to the op2 member of op1.

  36. Άλλοι Τελεστές Operator Use Description ?: op1 ? op2 : op3 If op1 is true, returns op2. Otherwise, returns op3. [] type [] Declares an array of unknown length, which contains type elements. [] type[ op1 ] Creates and array with op1 elements. Must be used with the new operator. [] op1[ op2 ] Accesses the element at op2 index within the array op1. Indices begin at 0 and extend through the length of the array minus one. . op1.op2 Is a reference to the op2 member of op1.

  37. Εξαιρέσεις – Exception Handlers try { statement(s) } catch (exceptiontype name) { statement(s) } finally { statement(s) } Παράδειγμα readFile { open the file; determine its size; allocate that much memory; read the file into memory; close the file; }

  38. Εξαιρέσεις – Exception Handlers errorCodeType readFile { initialize errorCode = 0; open the file; if (theFileIsOpen) { determine the length of the file; if (gotTheFileLength) { allocate that much memory; if (gotEnoughMemory) { read the file into memory; if (readFailed) { errorCode = -1; } } else { errorCode = -2; } } else { errorCode = -3; } close the file; if (theFileDidntClose && errorCode == 0) { errorCode = -4; } else { errorCode = errorCode and -4; } } else { errorCode = -5; } return errorCode; } Χωρίς χρήση βρόγχου Try - Catch Αύξηση κώδικα κατά 400%

  39. Εξαιρέσεις – Exception Handlers readFile { try { open the file; determine its size; allocate that much memory; read the file into memory; close the file; } catch (fileOpenFailed) { doSomething; } catch (sizeDeterminationFailed) { doSomething; } catch (memoryAllocationFailed) { doSomething; } catch (readFailed) { doSomething; } catch (fileCloseFailed) { doSomething; } } Με χρήση βρόγχου Try - Catch Αύξηση κώδικα κατά 250%

  40. Εξαιρέσεις – Exception Handlers try { statement(s) } catch (exceptiontype name) { statement(s) } finally { statement(s) } try { if (a == 10) { return; } } finally { print("finally\n"); } print("after try\n");

  41. Java Applets Δημιουργία ενός Applet Κάθε Applet υλοποιείται με την δημιουργία μιας υποκλάσης της κλάσης Applet του πακέτου java.applet Public class myClass extends java.applet.Applet { … } ή import java.applet.Applet; Public class myClass extends Applet { … }

  42. Βασικές λειτουργίες των Java Applets • Δημιουργία ενός Applet • Public void init() { … } • Public void start() { … } • Public void stop() { … } • Public void destroy() { … } • Public void paint (Graphics g) { … } • import java.awt.Graphics

  43. “Κύκλος ζωής” του Applet Simple.java http://java.sun.com/docs/books/tutorial/applet/overview/index.html lc.html <html> <head> <title>Applet's life cycle</title> </head> <body> <applet code=“Simple.class" width=250 height=150></applet> </body> </html>

  44. Γραφικά 0,0 Χ Υ import java.awt.Graphics drawLine(startX, startY, width, height); drawRect(startX, startY, width, height); fillRect(startX, startY, width, height); drawRoundRect(startX, startY, width, height);fillRoundRect(startX, startY, width, height); draw3DRect(startX, startY, width, height, boolean value);fillRect(startX, startY, width, height, boolean value); drawPolygon(arrayX, arrayY, array length); fillPolygon(arrayX, arrayY, array length); drawPolygon(polygon object); fillPolygon(polygon object);

  45. Γραμματοσειρές Για να χρησιμοποιηθούν μέθοδοι των γραμματοσειρών της κλάσης Fonts πρέπει ο κώδικάς της να περιληφθεί στην αρχή του κώδικα της Applet εφαρμογής δηλώνοντας: import java.awt.Fonts Κατασκευαστής της κλάσης Fonts Font fb = new Font(“TimesRoman”, Font.BOLD, 24) Font af = new Font(“Arial”, Font.BOLD, 20) Font fbi = new Font(“TimesRoman”, Font.BOLD+ Font.ITALIC, 18) Για την σχεδίαση γραμματοσειράς στην οθόνη χρησιμοποιείται η μέθοδος: setFont(fontObject);

  46. Χρώματα Για να χρησιμοποιηθούν μέθοδοι της κλάσης Color πρέπει ο κώδικάς της να περιληφθεί στην αρχή του κώδικα της Applet εφαρμογής δηλώνοντας: import java.awt.Color Κατασκευαστής της κλάσης Color Color c = new Color(redValue, greenValue, blueValue); 0 … 255, 0 … 255, 0 … 255 Για την σχεδίασηχρώματος στην οθόνη χρησιμοποιείται η μέθοδος: setColor(Color.white);

  47. Παράδειγμα http://www.medialab.ece.ntua.gr/medialab/education/education.html

  48. Βασικά στοιχεία ενός GUI Ένα GUI αποτελείται από GUI-components. Οι κλάσεις που χρησιμοποιούνται για την κατασκευή αντικειμένων τύπου GUI-components ανήκουν στο java.awt (Abstract Windowing Toolkit) package. Οι βασικότερες από αυτές είναι η κλάση Component και η κλάση Container. import java.awt.*

  49. Γεγονότα στα GUI(GUI Events) Γεγονότα στέλνονται σε ένα πρόγραμμα Java από τα Windows. Η πληροφορία σχετικά με ένα GUI event, αποθηκεύεται σε ένα αντικείμενο που ανήκει στην κλάση ή σε υποκλάσεις της AWTEvent. Η AWTEvent είναι ορισμένη στο πακέτο java.awt.event. Το επόμενο σχήμα εμφανίζει την ιεραρχία των κλάσεων του πακέτου java.awt.event. import java.awt.event.*

  50. Διαχείριση γεγονότων (events) Γεγονότα:Κλήσεις που παράγονται από γραφικά (Components) Περιλαμβάνουν ( click ποντικιού, μετακίνηση ποντικιού, πληκτρολόγηση κ.λ.π.) Ακρόαση-Διαχείριση γεγονότων:Ανατίθεται σε αντικείμενα κλάσεων που υλοποιούν ένα απαιτούμενο interface. Για κάθε ομάδα γεγονότων (π.χ. Mouse events, Action events) έχει προκαθοριστεί και ένα αντίστοιχο interface. Περιέχονται στο πακέτο java.awt.event.*

More Related