Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Εργαστήριο Πολυμέσων Java references site Java tutorials

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Εργαστήριο Πολυμέσων Java references site Java tutorials"— Μεταγράφημα παρουσίασης:

1 Εργαστήριο Πολυμέσων Java references site Java tutorials documentationhttp://java.sun.com/docs/index.html doc. SDK v SDK platformhttp://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.java Java interpreter – java.exe java Appletviewer – Internet Browsers

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

6 .java Editor javac.exejavac.java.class java.exejava Εκτέλεση

7 Παράδειγμα: Compiler - Interpreter */ 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

9 Example: Java Applet 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 A Simple Program Here is the output of my program: Hello.html C:\temp\java Εφαρμογή του appletviewer

11 Example: Java Applet

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 Κληρονομικότητα (Inheritance) A BC D Η κλάση Β κληρονομεί από την Α {Β} extends {A} Β υποκλάση της Α, Α υπερκλάση της Β {D} extends {C} και {C} extends {A} => {D} extends {A} A B

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}() παραδείγματα Object obj; 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 package folder1; public class Test1{ } temp folder1 folder2 Παράδειγμα με packages: Test1.java Test2.java 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 Primitive Data Types KeywordDescriptionSize/Format (integers) byteByte-length integer8-bit two's complement shortShort integer16-bit two's complement intInteger32-bit two's complement longLong integer64-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) charA single character16-bit Unicode character boolean A boolean value (true or false) true or false

25 Literal Values and Their Data Types LiteralData Type 178int 8864Llong double Ddouble Ffloat 26.77e3double ' c 'char trueboolean falseboolean

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

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

28 Αριθμητικοί Τελεστές – Arithmetic Operators OperatorUseDescription +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

29 Αριθμητικοί Τελεστές OperatorUseDescription ++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 Σχεσιακοί Τελεστές – Τελεστές Συνθήκης OperatorUseReturns true if >op1 > op2op1 is greater than op2 >=op1 >= op2op1 is greater than or equal to op2

31 Σχεσιακοί Τελεστές – Τελεστές Συνθήκης OperatorUseReturns true if &&op1 && op2 op1 and op2 are both true, conditionally evaluates op2 ||op1 || op2 either op1 or op2 is true, conditionally evaluates op2 !! opop 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 Λογικοί Τελεστές OperatorUseOperation &op1 & op2bitwise and |op1 | op2bitwise or ^op1 ^ op2bitwise xor ~~op2bitwise complement

33 Τελεστές Ανάθεσης OperatorUseEquivalent to +=op1 += op2op1 = op1 + op2 -=op1 -= op2op1 = op1 - op2 *=op1 *= op2op1 = op1 * op2 /=op1 /= op2op1 = op1 / op2 %=op1 %= op2op1 = op1 % op2 &=op1 &= op2op1 = op1 & op2

34 Τελεστές Ανάθεσης OperatorUseEquivalent to |=op1 |= op2op1 = op1 | op2 ^=op1 ^= op2op1 = op1 ^ op2 <<=op1 <<= op2op1 = op1 << op2 >>=op1 >>= op2op1 = op1 >> op2 >>>=op1 >>>= op2op1 = op1 >>> op2

35 Άλλοι Τελεστές OperatorUseDescription ?: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.op2Is a reference to the op2 member of op1.

36 Άλλοι Τελεστές OperatorUseDescription ?: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.op2Is 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; } Αύξηση κώδικα κατά 400% Χωρίς χρήση βρόγχου Try - Catch

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; } Αύξηση κώδικα κατά 250% Με χρήση βρόγχου Try - Catch

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 1.Public void init() { … } 2.Public void start() { … } 3.Public void stop() { … } 4.Public void destroy() { … } 5.Public void paint (Graphics g) { … } import java.awt.Graphics

43 “Κύκλος ζωής” του Applet Applet's life cycle Simple.java lc.html

44 Γραφικά 0,0 Χ Υ 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); import java.awt.Graphics

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 Παράδειγμα

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.*

51 Ιεραρχία Event Listeners Interfaces του package java.awt.event

52 Interfaces του πακέτου java.awt.event ActionListener AdjustmentListener ComponentListener FocusListener ItemListener KeyListener MouseListener MouseMotionListener TextListener WindowListener ContainerListener java.awt.event Καταχώρηση ακροατή γεγονότων: addInterfaceNameListener( SomeClass c) Η κλάση someClass πρέπει να υλοποιεί ΟΛΕΣ τις συναρτήσεις του αντιστοίχου interface. Συνήθως όμως χρειάζόμαστε ελάχιστες από τις συναρτήσεις που υλοποιούνται στο εκάστοτε interface (π.χ. Μας ενδιαφέρει μόνο το mouse click του αριστερού πλήκτρου).

53 Adapter classes  Προκαθορισμένες κλάσεις (για κάθε τύπο γεγονότων) οι οποίες υλοποιούν τα αντίστοιχα interfaces (Περιέχουν τις απαιτούμενες συναρτήσεις με κενό όμως σώμα.)  Ο χρήστης ορίζει αντικείμενα των adapter κλάσεων και επαναπροσδιορίζει τις συναρτήσεις που τον ενδιαφέρουν (override)  Η δημιουργία νέων αντικειμένων κλάσεων μπορεί να γίνει απευθείας κατά την καταχώρηση του ακροατή γεγονότων στο όρισμα.  Παράδειγμα: addMouseListener ( new MouseAdapter( ) Δημιουργία νέου { object public void mouseClicked(MouseEvent evt) παράκαμψη της { mouseClicked( ){ } Κώδικας προς εκτέλεση... την οποία περιέχει } by dafeult ένα object } της κλάσης ); MouseAdapter

54 1 η Άσκηση Γραφικής Anisotropic mapping mode 0,0 Χ = 10 Y = 10 Ανισοτροπικό σύστημα συντεταγμένων Είναι το σύστημα στο οποίο η οπτική αναλογία των συντεταγμένων, διαφέρει από αυτή που ορίζεται. Χ / Υ = 1 x / y = 2

55 Παράδειγμα (Κβαντοποίηση) V = 100 Volts( Hexadecimal system) 16 καταστάσεις 0, 1, …, 9, a, b, …, f / 16 maxValue (A) / maxValue (B) A B

56 Παράδειγμα (Κβαντοποίηση) / 16 maxValue (A) / maxValue (B) A B int iX (float x) {return Math.round (x/transformValue);} maxB = n – 1;// n = 16 καταστάσεις transformValue = Volt / maxB;

57 1 η Άσκηση Γραφικής Anisotropic mapping mode 0.0, , , , 7.5

58 Περιστροφή γύρω σημείο Ο κατά γωνία φ στο πεδίο Χ,Υ φ φ ( 1, 0 ) ( 0, 1 ) ( cosφ, sinφ ) ( -sinφ, cosφ ) O

59 ( x, y ) O ( x ', y ' ) Κλιμάκωση γύρω από το Ο κατά s x και s y

60 Ολίσθηση σημείου O ( x, 0 ) ( 0, y ) ( x, y ) ( x+ay, y ) L L

61 Συνδυασμός Γραμμικών Μετασχηματισμών φ φ ( 1, 0 ) ( 0, 1 ) ( cosφ, sinφ ) ( -sinφ, cosφ ) O ( -sinφ,-cosφ ) ( cosφ, -sinφ ) Περιστροφή Κλιμάκωση

62 Συνδυασμός Γραμμικών Μετασχηματισμών Κλιμάκωση Πίνακας Περιστροφής Πίνακας Κλιμάκωσης Περιστροφή

63 Μη Γραμμικός Μετασχηματισμός Συντεταγμένων στο πεδίο Χ,Υ ( x, y ) O ( 0, y ) ( x, 0 ) a b

64 2 η Άσκηση Γραφικής Περιστροφή γύρω από μεταβλητό σημείο στο πεδίο Χ,Υ Μεταβλητό σημείο O σημείο C(x c, y c ) σημείο C' Αλλαγή Συστ. Συντεταγμένων με αρχή αξόνων το σημείο Ο Περιστροφή γύρω απο το σημείο Ο κατά γωνία φ Επαναφορά στο αρχικό Συστ. Συντεταγμένων ) φ

65 1.Αλλαγή Συστ. Συντεταγμένων με αρχή αξόνων το σημείο Ο(x c, y c ) 2. Περιστροφή γύρω απο Ο κατά γωνία φ C  C' 3. Επαναφορά στο αρχικό Συστ. Συντεταγμένων C'

66 Αλλαγή Συστ. Συντεταγμένων με αρχή αξόνων το σημείο Ο Περιστροφή γύρω απο το σημείο Ο κατά γωνία φ Επαναφορά στο αρχικό Συστ. Συντεταγμένων

67 3 η Άσκηση Γραφικής Περιστροφή γύρω από τυχαίο άξονα x y z

68 Περιστροφή γύρω απο τον άξονα x 2D περιστροφή γύρω από το πεδίο yz Περιστροφή γύρω απο τον άξονα y 2D περιστροφή γύρω από το πεδίο zx Περιστροφή γύρω απο τον άξονα z 2D περιστροφή γύρω στο πεδίο xy

69 3 η Άσκηση Γραφικής Περιστροφή γύρω από τυχαίο άξονα v1v1 v2v2 v3v3 θ φ x y z O α

70

71 1.Περιστροφή του συστήματος συντεταγμένων γύρω από τον άξονα z υπό γωνία φ, χρησιμοποιώντας τον πίνακα περιστροφής R z -1 2.Περιστροφή του συστήματος συντεταγμένων γύρω από τον άξονα y υπό γωνία θ, χρησιμοποιώντας τον πίνακα περιστροφής R y -1 3.Περιστροφή στο πεδίο xy υπό γωνία α μέσω του πίνακα R v 4.Αντίστροφη διαδικασία του βήματος 2 5.Αντίστροφη διαδικασία του βήματος 1 Περιστροφή γύρω από τυχαίο άξονα από O(0,0,0) Τελικά:

72 z y v x 3 η Άσκηση Γραφικής Περιστροφή γύρω από τυχαίο άξονα ( προβολή στο πεδίο xy )

73 1.Αλλαγή του συστήματος συντεταγμένων ( Α  Ο ) 2.Περιστροφή γύρω από τυχαίο άξονα από το Ο μέσω του πίνακα R (με ομογενείς συντεταγμένες  πίνακας 4x4) 3.Αντίστροφη διαδικασία του βήματος 1 Περιστροφή γύρω από τυχαίο άξονα από A  O(0,0,0) Τελικά:


Κατέβασμα ppt "Εργαστήριο Πολυμέσων Java references site Java tutorials"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google