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

Σχετικά έγγραφα
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 12 : ΜΙΚΡΟΕΦΑΡΜΟΓΕΣ (APPLETS)

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

6.1 Εισαγωγή. 6.2 Ασφάλεια

ηµιουργία ιαλογικών Προγραµµάτων για το Web

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

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Προγραµµατισµός ΙΙ Java 2

Γενικά (για τις γραπτές εξετάσεις)

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

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

5. Τα βασικά των Applets στην Java

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

Υποστηρικτικό υλικό Σημειώσεις

Κεφάλαιο 3 Βασική Σχεδίαση και Επεξεργασία

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

java.awt Font Γραµµατοσειρές Color Χρώµατα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

9.1 JFC Swing. 9.1 JFC Swing Java (GUI) Java. Java Foundation Classes (JFC) Swing GUI. JFC Card Pile GameFrame GUI

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

Μικροεφαρμογές (Applets)

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

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

Create Sprite at Runtime

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

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

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

(2) Thread Thread. Runnable. ( ) Java. Sample91. Thread Thread ) Thread. Runnable. run() / run() Runnnale ( ) MyRun implements Runnable Runnable

Εργαστήριο #12. Βήμα 1 ο. Βήμα 2 ο. Βήμα 3 ο. Βήμα 4 ο.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ & ΑΕΡΟΝΑΥΠΗΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΤΑΣΚΕΥΑΣΤΙΚΟΣ ΤΟΜΕΑΣ ΕΚΠΑΙΔΕΥΤΙΚΟ ΠΑΡΑΔΕΙΓΜΑ 2

Εισαγωγή στη γλώσσα προγραμματισμού Java 69

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

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

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

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

4. Εισαγωγή στη Java

Βασικά της γλώσσας JAVA

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

Κεφάλαιο VII : Εργαστηριακές ασκήσεις που αφορούν τη χρήση. τη χρήση γραµµατοσειρών και χρωµάτων καθώς και τη δηµιουργία γραφικών στη Java.

JAVA TUTORIAL ΠΕΡΙΕΧΟΜΕΝΑ. ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Μπορούμε να χρησιμοποιήσουμε τις παρακάτω μορφές συντεταγμένων με οποιοδήποτε συνδυασμό θέλουμε. Καρτεσιανές συντεταγμένες

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΕΙΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ιανουάριος 2007 Οι απαντήσεις να είναι καθαρογραμμένες με ευδιάκριτους όλους του χαρακτήρες.

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

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

Το παρακάτω πρόγραμμα ορίζει δυο κλάσεις την SimpleThread και την TwoThreadsTest:

Μαθαίνω τα βασικά εργαλεία του προγράμματος ζωγραφικής για να μπορώ να ζωγραφίζω στον ηλεκτρονικό υπολογιστή.

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Wrapper Classes, Abstract Classes and Interfaces

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

Στην τεχνολογία των CSS, οι κανόνες στυλ (style

Δημιουργώντας μια εφαρμογή ζωγραφικής. 2 η Εργασία

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

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

2 ο Εργαστήριο Αλληλεπίδραση και Animation

HY-252 Αντικειµενοστραφής Προγραµµατισµός. Χειµερινό Εξάµηνο 2010 ιδάσκων: Χριστοφίδης Βασίλης. Ηµεροµηνία Παράδοσης: 15/10/2010

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

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

Κλάσεις και Αντικείµενα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Σχήµα 4.1: Εισαγωγή βρόγχου while-loop.

Τεχνολογίες Διαδικτύου (Εξασκηθείτε στην HTML)

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

Συστήματα Αναμονής (Queuing Systems)

Βιοϊατρική τεχνολογία

Σχεδίαση με το AutoCAD

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Μέθοδοι. Μέθοδοι ηµιουργοί, Υπερφόρτωση και Υπέρβαση Μεθόδων

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

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

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

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

Transcript:

Εξάμηνο Μάθημα Τίτλος 2013 2014 Εαρινό Αντικειμενοστραφής Προγραμματισμός Applets Α. Ύλη εργαστηρίου 6.1 Applets 6.2 Μέθοδοι start, init, paint, stop και destroy 6.3 Γραφικά 6.4 Χρώματα 6.5 Σχήματα Προετοιμασία εργαστηρίου: Στο φάκελο <Tα έγγραφα μου> ή <My Documents> δημιουργήστε φάκελο με τον αριθμό μητρώου σας π.χ ΤΧΧΧ και εκεί δημιουργήστε το φάκελο Lab7. Όλες οι ασκήσεις που ακολουθούν για αυτό το εργαστήριο θα αποθηκευθούν εκεί και μόνον εκεί. Όταν τελειώσει το εργαστήριο αυτό μπορείτε να αντιγράψετε το φάκελο για να έχετε τις ασκήσεις και να συνεχίσετε να εργάζεστε εκτός εργαστηρίου. Β. Ασκήσεις λυμένες για το εργαστήριο Άσκηση 1 η Να γράψετε ένα applet ShowColors το οποίο να τυπώνει ένα μήνυμα µε πολλούς συνδυασμούς χρωμάτων. // ShowColors.java import java.awt.*; import java.applet.*; // εισαγωγή πακέτου για χρήση των applets public class ShowColors extends Applet { //επεκτείνω την υπάρχουσα κλάση Applet // προσοχή το όνομα του πακέτου είναι applet ενώ // το όνομα της κλάσης που επεκτείνω είναι Applet public void paint(graphics g) { for (int i=1; i<11;i++ ) { // set new drawing color using integers int rc = (int)(math.random()*256); int gc = (int)(math.random()*256); int bc = (int)(math.random()*256); Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 1 / 14

Color col = new Color(rc,gc,bc); g.setcolor( col ); g.drawstring( "Hello! Welcome to Java programming with applets ", 130, 30*i ); Άσκηση 2 η Να γράψετε ένα applet DrawLines1 το οποίο να σχεδιάζει 10 ευθύγραμμα τμήματα όπως στο παρακάτω σχήμα. import java.awt.*; import java.applet.*; public class DrawLines1 extends Applet { public void paint(graphics g) { int counter = 1; while (counter<=10){ g.drawline(10,10,250, counter *10); ++counter; Άσκηση 3 η Να γράψετε ένα applet TestPolygon1 το οποίο να σχεδιάζει ένα τυχαίο πεντάγωνο. import java.awt.*; import java.applet.*; public class TestPolygon1 extends Applet { Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 2 / 14

public void paint(graphics g) { int xpoints[]={30,140,160,130,50; int ypoints[]={40,70,100,140,120; int points=5; g.drawpolygon(xpoints,ypoints,points); Άσκηση 4η Δημιουργήστε ένα applet που θα προσθέτει 2 Double precision αριθμούς. Αυτό το applet θα ζητά από το χρήστη να εισάγει δύο αριθμούς κινητής υποδιαστολής (δηλαδή, τους αριθμούς με δεκαδικό σημείο, όπως 7.33, 0.0975 και 1000.12345). Για την αποθήκευση αριθμών κινητής υποδιαστολής στη μνήμη μας εισαγάγει primitive τύπου δεδομένων διπλό(double), το οποίο αντιπροσωπεύει διπλής ακρίβειας αριθμών κινητής υποδιαστολής(double-precision floating-point). Υπάρχει επίσης τύπος δεδομένων float για την αποθήκευση και μονής ακρίβειας αριθμών (single-precision) κινητής υποδιαστολής. Μια διπλή απαιτεί περισσότερη μνήμη για την αποθήκευση μιας κινητής υποδιαστολής τιμή, αλλά το αποθηκεύει με περίπου δύο φορές την ακρίβεια ενός float (15 ψηφία για το σημαντικό διπλό έναντι επτά σημαντικά ψηφία για float). Για μία ακόμη φορά, να ζητήσει JOptionPane.showInputDialog χρήση εισροών(input) από το χρήστη. Η εφαρμογή υπολογίζει το άθροισμα των τιμών των εισροών και εμφανίζει το αποτέλεσμα με βάση μια σειρά μέσα σε ένα ορθογώνιο, για την εφαρμογή. Το αρχείο HTML για να φορτώσει αυτό το applet σε appletviewer είναι το παρακάτω: 1 <html> 2 <applet code = "AdditionApplet.class" width = "300" height = "65"> 3 </applet> 4 </html> Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 3 / 14

/* * AdditionApplet.java * * * * To change this template, choose Tools Template Manager * and open the template in the editor. */ // Adding two floating-point numbers. // Java core packages import java.awt.graphics; // import class Graphics // Java extension packages import javax.swing.*; // import package javax.swing public class AdditionApplet extends JApplet { double sum; // sum of values entered by user // initialize applet by obtaining values from user public void init() { String firstnumber; // first string entered by user String secondnumber; // second string entered by user double number1; // first number to add double number2; // second number to add // obtain first number from user firstnumber = JOptionPane.showInputDialog( "Enter first floatingpoint value" ); // obtain second number from user Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 4 / 14

secondnumber = JOptionPane.showInputDialog( "Enter second floating-point value" ); // convert numbers from type String to type double number1 = Double.parseDouble( firstnumber ); number2 = Double.parseDouble( secondnumber ); // add numbers sum = number1 + number2; // draw results in a rectangle on applet s background public void paint( Graphics g ) { // call inherited version of method paint super.paint( g ); // draw rectangle starting from (15, 10) that is 270 // pixels wide and 20 pixels tall g.drawrect( 15, 10, 270, 20 ); // draw results as a String at (25, 25) g.drawstring( "The sum is " + sum, 25, 25 ); // end method paint // end class AdditionApplet Άσκηση 5η Δημιουργήστε ένα applet που θα χρωματίζει το background με χρώμα κυανό. Θα παίρνει τις συντεταγμένες τις Οθόνης από το σύστημα και θα δημιουργεί ένα ορθογώνιο χρώματος μπλέ γύρο από την οθόνη όπως φαίνεται και στο σχήμα. Στη συνέχεια θα δημιουργεί την πρόταση I m a simple applet σε χρώμα γραμματοσειράς κόκκινο. Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 5 / 14

import java.applet.applet; import java.awt.graphics; import java.awt.color; public class SimpleApplet extends Applet { String text = "I'm a simple applet"; text = "I'm a simple applet"; setbackground(color.cyan); public void start() { System.out.println("starting..."); public void stop() { System.out.println("stopping..."); public void destroy() { System.out.println("preparing to unload..."); public void paint(graphics g){ System.out.println("Paint"); g.setcolor(color.blue); g.drawrect(0, 0, getsize().width -1, getsize().height -1); g.setcolor(color.red); g.drawstring(text, 15, 25); Άσκηση 6η Δημιουργήστε το project applet με αρχείο Balls.Σκοπός της άσκησης είναι να τροποποιήσετε το applet ώστε να εκτυπώνει μία γραμμή από μπάλες δεξιά της πρώτης που σας δίνεται. Το συνολικό πλήθος από μπάλες το δίνει ο χρήστης, εδώ έδωσε 7 Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 6 / 14

import java.awt.*; import java.applet.*; import javax.swing.joptionpane; public class Game extends Applet { private int diameter = 40; private int[] x; private int[] y; private int n; private int width, height; //diameter of balls //x-coordinate of balls //y-coordinate of balls //number of balls //applet's width and height //find applet's width and height width = Integer.parseInt(getParameter("width")); height = Integer.parseInt(getParameter("height")); //interact with user String in = JOptionPane.showInputDialog(null, "Give a series of balls: "); in = in.trim(); n = Integer.parseInt(in); if(n > 0){ x = new int[n]; //initialize array y = new int[n]; //initialize array public void paint(graphics g) { //set background color setbackground(color.lightgray); g.setcolor(color.red); //draw balls if(n > 0){ int length = n*diameter; //total length of balls x[0] = (width - length)/2; //find x- coordinate of first ball Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 7 / 14

of first ball y[0] = (height - diameter)/2; //find y-coordinate g.filloval(x[0], y[0], diameter, diameter); for(int i=1; i<n; i++){ x[i] = x[i-1] + diameter; y[i] = y[0]; g.filloval(x[i], y[i], diameter, diameter); Άσκηση 7η Να δημιουργήσετε ένα applet με όνομα Lines που θα σχεδιάζει μία οριζόντια γραμμή χρώματος μπλέ, μια κατακόρυφη και μία γραμμή υπό γωνία χρώματος κόκκινου όπως φαίνεται στο σχήμα. Σκοπός μας να κάνουμε χρήση της μεθόδου: drawline(int x1, int y1, int x2, int y2). import java.awt.*; import java.applet.*; import javax.swing.joptionpane; public class Lines extends Applet { //specify 3 rows with 2 points each private int[][] coords = {{10, 30, 300, 30, {100, 5, 100, 150, {10, 10,150, 150; setbackground(color.lightgray); public void paint(graphics g) { g.setcolor(color.blue); //draw horizontal line Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 8 / 14

g.drawline(coords[0][0], coords[0][1], coords[0][2], coords[0][3]); g.setcolor(color.red); //draw vertical line g.drawline(coords[1][0], coords[1][1], coords[1][2], coords[1][3]); //g.setcolor(color.black); g.drawline(coords[2][0], coords[2][1], coords[2][2], coords[2][3]); Άσκηση 8η Να δημιουργήσετε ένα applet με όνομα DrawShapes που θα σχεδιάζει μία έλλειψη, ένα κύκλο γεμάτο με χρώμα, ένα τρίγωνο και ένα ορθογώνιο γεμάτο με χρώμα όπως φαίνεται στο σχήμα. Σκοπός μας να κάνουμε χρήση των μεθόδων: drawoval(int x, int y, int width, int height) filloval(int x, int y, int width, int height) //γεμίζει το Oval drawpolyline(int[] xpoints, int[] ypoints, int npoints) fillrect(int x, int y, int width, int height) H drawoval(int x, int y, int width, int height) δέχεται τις συντεταγμένες (x, y) της πάνω αριστερής γωνίας του περιγεγραμμένου ορθογωνίου της έλλειψης και το πλάτος και το ύψος της είναι : Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 9 / 14

H fillrect(int x, int y, int width, int height) δέχεται τις συντεταγμένες (x, y) της πάνω αριστερής γωνίας του ορθογωνίου της έλλειψης και το πλάτος και το ύψος της είναι : import java.awt.*; import java.applet.*; import javax.swing.joptionpane; public class DrawShapes extends Applet { setbackground(color.lightgray); public void paint(graphics g) { g.setcolor(color.blue); //draw ellipsis g.drawoval(50, 50, 180, 100); g.setcolor(color.red); //fill circle g.filloval(200, 50, 100, 100); g.setcolor(color.black); //draw triangle int x[] = {40, 200, 320, 40; int y[] = {180, 40, 160, 180; g.drawpolyline(x, y, x.length); g.setcolor(color.magenta); //fill rectangle g.fillrect(30, 30, 80, 50); Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 10 / 14

Άσκηση 9η Να δημιουργήσετε ένα applet με όνομα Hello που ζητά το όνομά σας και μετά το εκτυπώνει import java.awt.*; import java.applet.*; import javax.swing.joptionpane; public class HiString extends Applet { private String str; static boolean iterations = false; setbackground(color.lightgray); //interact with user String name = JOptionPane.showInputDialog(null, "Give me your name: "); str = new String("Welcome " + name + ". This is a Java Applet!!"); public void paint(graphics g) { g.setcolor(color.red); //set font Font f = new Font("Serif", Font.BOLD+Font.ITALIC, 20); g.setfont(f); Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 11 / 14

//examine if an event triggers method paint() repeatedly if (!iterations) JOptionPane.showMessageDialog(null, "Font = " + f.tostring()); iterations = true; //write string g.drawstring(str, 10, 50 ); Γ. Ασκήσεις άλυτες για το εργαστήριο Άσκηση 4 η Να γράψετε ένα applet TestOval το οποίο να σχεδιάζει 10 ομόκεντρους κύκλους. (Δείτε στις Παρατηρήσεις τον ορισμό της μεθόδου drawoval()) Άσκηση 5η Να γράψετε ένα applet TestRectangle το οποίο να ρωτά τον χρήστη πόσα ορθογώνια να σχεδιάσει και στη συνέχεια να σχεδιάζει τόσα τυχαία ορθογώνια µε τυχαία χρώµατα. Άσκηση 6η Να γράψετε ένα applet TestPolygon2 το οποίο να σχεδιάζει ένα κανονικό εξάγωνο. Άσκηση 7η Να γράψετε ένα applet DrawLamp το οποίο να σχεδιάζει την παρακάτω λάμπα. Αντικειμενοστραφής Προγραμματισμός Κ. Κόκκινος Σελίδα 12 / 14

Παρατηρήσεις Applet Ta applet είναι κώδικας γραμμένος σε Java και δεν μπορούν να τρέξουν άμεσα αλλά μόνο αν κληθούν από ένα HTML αρχείο σε κάποιο browser (Netscape, Internet explorer κλπ) ή τον appletviewer. Πως φτιάχνουμε ένα applet - Δημιουργία java κώδικα. H κλάση που θα περιέχει τον ορισμό του νέου applet θα κληρονομεί την κλάση Applet που είναι ήδη ορισμένη στην Java με κάποια βασικά χαρακτηριστικά και κάποιες μεθόδους όπως θα δείτε παρακάτω - Δημιουργία html αρχείου - Εκτέλεση από explorer ή appletviewer Όταν δημιουργώ μέσα από το JCreator νέο applet ταυτόχρονα δημιουργείτε και το Html αρχείο που περιέχει το applet. Ο ορισμός της κλάσης ενός applet έχει ως εξής public class HelloWorldApplet extends Applet Η λέξη κλειδί extends υπονοεί ότι αυτή η κλάση είναι μια υποκλάση της κλάσης Applet. Ή αλλιώς η Applet είναι η υπερκλάση του HelloWorldApplet. Η κλάση Applet προσδιορίζεται στο πακέτο java.applet.applet. Εφόσον το HelloWorldApplet είναι υποκλάση του Applet, τότε το HelloWorldApplet κληρονομεί όλη τη λειτουργικότητα του αρχικού Applet. Ό,τι μπορεί να κάνει η κλάση Applet, μπορεί να το κάνει και το HelloWorldApplet επίσης. Μέθοδοι που χρησιμοποιεί ένα applet Για την δημιουργία Java εφαρμογών, η κλάση της εφαρμογής πρέπει να διαθέτει την μέθοδο main(). Οταν η εφαρμογή αρχίζει να τρέχει, εκτελείται η μέθοδος main() η οποία καθορίζει την συμπεριφορά του προγράμματος. Αντιθέτως στα Applets προγράμματα υπάρχουν διαφορετικές λειτουργίες που αντιστοιχούν σε γεγονότα που συμβαίνουν κατά τη διάρκεια της ζωής τoυ Applet (πχ. γεγονότα αρχικοποίησης, ζωγραφικής, ποντικιού κλπ). Σε κάθε λειτουργία αντιστοιχεί και κάποια μέθοδος η οποία καλείται από τον Browser όταν ένα γεγονός συμβεί. Η μέθοδοι των λειτουργιών έτσι όπως ορίζονται στην Applet κλάση της Java δεν κάνουν τίποτε. Για να δώσουμε κάποια συμπεριφορά σε κάποιο γεγονός της Applet εφαρμογή μας πρέπει να ξαναορίσουμε την μέθοδο που αντιστοιχεί στο γεγονός (τεχνική method overriding) μέσα στην υποκλάση της Applet που δημιουργήσαμε. Οι πέντε πιο βασικές μέθοδοι μιας applet είναι: public void init() public void start() public void stop() : κατά την φόρτωση του applet, αρχικές τιμές, πέρασμα παραμέτρων, φόρτωση εικόνων & γραμματοσειρών :μετά την init(), ή σε αλλαγή σελίδας και επιστροφή, μπορεί να εκτελεσθεί πολλές φορές :όταν θέλουμε να σταματήσουμε κάποιες εργασίες που ξεκίνησαν με την start() ή όταν ο χρήστης αλλάζει σελίδα public void destroy():καλείται από την stop() όταν κλείνει το πρόγραμμα ανάγνωσης ιστοσελίδων και γίνεται απελευθέρωση των πόρων του συστήματος που είχαν δεσμευτεί από το applet public void paint(graphics g): καλείται κάθε φορά που χρειάζεται να σχεδιαστεί κάτι στην οθόνη, πχ μερική επικάλυψη παραθύρου από άλλο. Η μέθοδος paint χρησιμοποιεί ένα αντικείμενο Graphics που Προχωρηµένες Εφαρµογές Προγραµµατισµού Σελίδα 13 / 14

επιλέγουμε να το λέμε g. Η κλάση Graphics ορίζεται στο πακέτο java.awt.graphics Γραφικά Το πακέτο Abstract Window Toolkit AWT, και το πακέτο swing που είναι νεώτερο του AWT και πιο πλούσιο. Με την εντολή import java.awt.*; ή import javax.swing.*; κάνω import όλων των κλάσεων του πακέτου για να είναι διαθέσιμες στο applet που έχω δημιουργήσει. Χρώμα Στο πακέτο awt υπάρχει η τάξη Color με την οποία ρυθμίζουμε τα χρώματα στην οθόνη. (RGB- Red,Green,Blue 0-255). Υπάρχουν και τα έτοιμα χρώματα π.χ. blue, red, white κ.λ.π. Μέθοδοι για ορισμό χρώματος στο Προσκήνιο : setforeground(color.gray) Παρασκήνιο : setbackground(color.cyan) Χρήση : g.setcolor(color.yellow) Σύστημα συντεταγμένων Η σχεδίαση ενός αντικειμένου στην οθόνη, γίνεται μέσω μεθόδων της κλάσης Graphics. Όλες οι μέθοδοι σχεδίασης παίρνουν ορίσματα που αφορούν σημεία, γωνίες ή αρχικά σημεία των αντικειμένων στο σύστημα συντεταγμένων μιας applet. Το σύστημα συντεταγμένων έχει την αρχή του (0,0) στην αριστερή άνω γωνία. Οι θετικές τιμές του x βρίσκονται στα δεξιά και οι θετικές y τιμές είναι προς τα κάτω. 0,0 +x +y Γεωμετρικά σχήματα Μέθοδοι για να ζωγραφίσουμε γεωμετρικά σχήματα g.drawline(x1,y1,x2,y2) -> ζωγραφίζει ένα ευθύγραμμο τμήμα από τo σημείο x1,y1 ως to σημείο x2,y2 g.drawrect(x1,y1,πλάτος, ύψος) -> Παραλληλόγραμμο g.drawoval(x1,y1,πλάτος, ύψος) -> έλλειψη g.drawarc(x1,y1,πλάτος, ύψος, αρχική γωνία, άνοιγμα γωνίας) -> Τόξο g.drawpolygon(int xpoints[],int ypoints[],int points) -> Πολύγωνο Βιβλιογραφία Γιώργος Λιακέας, Εισαγωγή στη JAVA 2, Κλειδάριθµος, 2003. Deitel H. M., Deitel P. J., JAVA: How To Program, Pearson Education Inc., USA, 2003 (Fifth edition). Προχωρηµένες Εφαρµογές Προγραµµατισµού Σελίδα 14 / 14