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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Advertisements

Τύποι δεδομένων και τελεστές,
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Γλωσσική Τεχνολογία Object-Orientation in Python.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή Ειδικά Θέματα Μεταγγλωτιστών Χειμερινό Εξάμηνο / Κατασκευή compiler για την γλώσσα Minijava.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Classes, Objects, και Events.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Περιστροφή γύρω σημείο Ο κατά γωνία φ στο πεδίο Χ,Υ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Abstract Window Toolkit (AWT) Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία και Πακέτο που περιέχει τις απαραίτητες κλάσεις για τη δημιουργία.
Εισαγωγή στη JAVΑ (μέρος Α’)
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
Αντικειμενοστραφής Προγραμματισμός & JAVA
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
Διαχείριση γεγονότων (events) Γεγονότα: Κλήσεις που παράγονται από γραφικά στοιχεία (Components) π.χ. click ποντικιού, μετακίνηση ποντικιού Ακρόαση-Διαχείριση.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Applets Εκτελούνται από τον appletviewer και από Java enabled web browsers Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Εισαγωγή στον Προγ/μό Η/Υ
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Software Engineering for Web Applications
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
Wrapper Classes, Abstract Classes and Interfaces
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Υπολογιστών
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Swing II Εβδομάδα Νο. 6.
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Τύποι δεδομένων και τελεστές,
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Εξαιρέσεις [Exceptions]
Μεταγράφημα παρουσίασης:

Εργαστήριο Πολυμέσων Java references site Java tutorials documentationhttp://java.sun.com/docs/index.html doc. SDK v SDK platformhttp://java.sun.com/downloads/

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

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

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

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

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

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

Παράδειγμα: Compiler - Interpreter

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

Example: Java Applet A Simple Program Here is the output of my program: Hello.html C:\temp\java Εφαρμογή του appletviewer

Example: Java Applet

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

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

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

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

Δημιουργία Στιγμιοτύπου (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!");

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

Παράδειγμα Κληρονομικότητας: 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; }

Παράδειγμα Κληρονομικότητας με 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 μέθοδος που υπερκαλύπτεται πρέπει να έχει το ίδιο όνομα, λίστα παραμέτρων και επιστρεφόμενο τύπο με αυτήν που κληρονομεί

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

Οι μεταβλητές 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); }

Παράδειγμα με προσδιοριστές πρόσβασης κλάσεων: 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() }

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

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

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

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

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

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

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

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

Σχεσιακοί Τελεστές – Τελεστές Συνθήκης 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

Λογικοί Τελεστές OperatorUseOperation &op1 & op2bitwise and |op1 | op2bitwise or ^op1 ^ op2bitwise xor ~~op2bitwise complement

Τελεστές Ανάθεσης 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

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

Άλλοι Τελεστές 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.

Άλλοι Τελεστές 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.

Εξαιρέσεις – 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; }

Εξαιρέσεις – 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

Εξαιρέσεις – 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

Εξαιρέσεις – 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");

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

Βασικές λειτουργίες των 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

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

Γραφικά 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

Γραμματοσειρές Για να χρησιμοποιηθούν μέθοδοι των γραμματοσειρών της κλάσης 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);

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

Παράδειγμα

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

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

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

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

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 του αριστερού πλήκτρου).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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