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

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

[A6] – Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java Επιμόρφωση Εκπαιδευτικών Πληροφορικής.

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


Παρουσίαση με θέμα: "[A6] – Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java Επιμόρφωση Εκπαιδευτικών Πληροφορικής."— Μεταγράφημα παρουσίασης:

1 [A6] – Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java Επιμόρφωση Εκπαιδευτικών Πληροφορικής

2 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 2 Διάρθρωση Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Εισαγωγή στη Java Hello World Βασικές Έννοιες Κλάσεις Βιβλιοθήκη της Java (API) Swing Eclipse Αναφορές και σύνδεσμοι

3 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 3 Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Κίνητρο  Ανάγκη δημιουργίας σύνθετων εφαρμογών  Ανάγκη για επαναχρησιμοποίηση κώδικα  Ανάγκη για εύκολη κατανόηση και συντήρησή του Αντικειμενοστρεφές μοντέλο  Η κλάση είναι ένας σύνθετος τύπος δεδομένων ο οποίος εκτός από δεδομένα έχει και λειτουργίες διαχείρισης τους  Κληρονομικότητα κλάσεων – Προσαρμογή κληρονομημένων ιδιοτήτων  Τα αντικείμενα αποτελούν στιγμιότυπα κλάσεων  Εφαρμογή = αντικείμενα που συνεργάζονται

4 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 4

5 5 Εισαγωγή στη Java Αντικειμενοστρεφής γλώσσα Δημιουργήθηκε από τη Sun Βασίζεται στην αρχιτεκτονική εικονικής μηχανής (Java Virtual Machine)  Ανεξάρτητη πλατφόρμας Πλούσια βιβλιοθήκη έτοιμων κλάσεων (API)

6 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 6 Hello World Το πρώτο μας πρόγραμμα σε Java Απλά τυπώνει το String “Hello World” 1 class HelloWorld { 2 public static void main (String args[]) { 3 System.out.println("Hello World!"); 4 } 5 } >javac HelloWorld.java >java HelloWorld

7 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 7 Βασικές Έννοιες (1/4) Σχόλια Βασικοί τύποι Λέξη κλειδίΠεριγραφήΕύρος Τιμών Ακέραιοι byteByte-length integer8-bit (-128 εως 127) shortShort integer16-bit (-32768 εως 32767) intInteger32-bit (-2^32/2 to 2^32/2-1) longLong integer64-bit Πραγματικοί αριθμοί floatΚινητής υποδιαστολής μονής ακρίβειας 32-bit doubleΚινητής υποδιαστολής διπλής ακρίβειας 64-bit Άλλοι τύποι charΧαρακτήρας16-bit Unicode character: 'a', '?' BooleanBoolean τιμήtrue, false 1 /* Σχόλιο πολλών 2 Γραμμών */ 3 //Σχόλιο μονής γραμμής 4 /** Αυτό είναι ένα 5 * σχόλιο τύπου 6 * Javadoc 7 */

8 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 8 Βασικές Έννοιες (2/4) Μεταβλητές  Τοπικές μεταβλητές  Παράμετροι μεθόδων  Μεταβλητές στιγμιοτύπων (Instance Variables)  Στατικές μεταβλητές κλάσης (Static Variables) Σταθερές (final) Πίνακες 1 // Μεταβλητές 2 float f = 0.0f; 3 char c = 'λ'; 4 String hello = "Hello world"; 5 6 // Σταθερά 7 String final String java = "Java"; 8 9 // Πίνακες 10 int array [] = new int[12]; 12 int arrayNew[] = {1, 2, 3}; 13 array[1] = 0;

9 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 9 Βασικές Έννοιες (3/4) Τελεστές  Αριθμητικοί  Σύγκρισης  Λογικοί  Bitwise ΑριθμητικοίΣύγκρισηςΛογικοί + Πρόσθεση == Ισότητα - Αφαίρεση != Ανισότητα * Πολλαπλασ. > Μεγαλύτερο && Σύζευξη (Λογικό ΚΑΙ) / Διαίρεση < Μικρότερο && Διάζευξη (Λογικό Η) % Υπολ. Διαιρ. >= Μεγαλύτερο ίσο ++ Αύξ. κατά 1 <= Μικρότερο ίσο -- Μειωση κατά 1 Οι τελεστές έχουν συγκεκριμένη σειρά προτεραιότητας Χρησιμοποιώντας παρενθέσεις καθορίζουμε την επιδιωκόμενη σειρά προτεραιότητας += Ανάθεση με αύξηση -= Ανάθεση με μείωση *= Ανάθεση με πολλαπλασιασμό /= Ανάθεση με διαίρεση %= Ανάθεση με υπόλοιπο

10 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 10 Βασικές Έννοιες (4/4) Δομές ελέγχου  If else  Switch Επαναληπτικές δομές  While  Do while  For break, continue 1 int n = 10; 2 while (n > 0) { // Εφόσον n μεγαλύτερο του 0 3n--; // Μείωσε το n κατά 1 4 } 5 6 n = 10; 7 8 for(int i = 0; // Αρχικ. μεταβλητής ελέγχου 9 i < 10; // Συνθήκη ελέγχου 10 i++){ // Αύξηση κατά ένα 11// Εφόσον i < 10 12if(n == 1)// Αν το n είναι 1 13 continue; // επόμενη επανάληψη 14else if(n == 2)// Αν το n είναι 2 15 break;// Διέκοψε το βρόγχο 16n--;// Αλλιώς μείωσε το n 17 }

11 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 11 Κλάσεις 1/14 Μία κλάση είναι ένας σύνθετος τύπος δεδομένων, ο οποίος ορίζεται από τον προγραμματιστή και αποτελείται από:  Άλλους τύπους δεδομένων, που ονομάζονται γνωρίσματα, πεδία ή μεταβλητές στιγμιοτύπου  Λειτουργίες, που ονομάζονται μέθοδοι  Τα παραπάνω αποτελούν τα μέλη μιας κλάσης Μία κλάση στη Java ορίζεται σε ένα αρχείο που έχει το όνομα της κλάσης και κατάληξη ‘.java’. 1 class Vehicle { // Ορισμός κλάσης vehicle 2// Δήλωση πεδίων 3String manufacturer; 4String platesNumber; 5 }

12 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 12 Κλάσεις 2/14  Μία ολοκληρωμένη κλάση  Πεδία  Κατασκευάστριες μέθοδοι  Μέθοδοι  Παράμετροι  Επιστρεφόμ. τιμές 1 class Vehicle {// Ορισμός κλάσης vehicle 2 // Δήλωση πεδίων 3 String manufacturer; 4 String platesNumber = "Unknown"; // Αρχική τιμή 5 Vehicle() { // Η προεπιλεγμένη κατασκευάστρια μέθοδος 6 this("Unknown"); // Κλήση 2ης κατασκευάστριας μεθόδου 7 } 8 // Ακόμα μία κατασκευάστρια μέθοδος, αρχικοποιεί τον κατασκευαστή 9 Vehicle(String manufacturer) { 10 this.manufacturer = manufacturer; // Αρχικοποίηση 11 } 12 // Μέθοδος που επιστρέφει τον κατασκευαστή 13 String getManufacturer(){ 14 return manufacturer; 15 } 16 // Μέθοδος που δίνει τιμή στον κατασκ. και δεν επιστρέφει τίποτα 17 void setManufacturer(String manufacturer){ 18 this.manufacturer = manufacturer; 19 } 20 // Μέθοδος που τυπώνει πληροφορίες για το όχημα 21 String info() { 22 String s = "Vehicle: " + manufacturer + " " + platesNumber; 23 return s; 24 } 25}

13 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 13 Κλάσεις 3/14 Κάθε πρόγραμμα σε Java ξεκινάει την εκτέλεση του με μία κλήση στη μέθοδο main Η μέθοδος αυτή δηλώνεται static Παράδειγμα main, δημιουργία στιγμιότυπων Vehicle 1 public class MyProgram { 2 // Ένα πρόγραμμα ξεκινά πάντα με την κλήση της main 3public static void main(String[] args) { 4Vehicle vehicle1 = new Vehicle(); // Δημιουργία αντικειμένου 5Vehicle vehicle2 = new Vehicle("Mazerati", "ΗΡΑ-0000"); 6// Αναφορά σε μεταβλήτή στιγμιοτύπου και ανάθεση νέας τιμής 7vehicle1.manufacturer = new String("Peugeuot"); 8System.out.println(vehicle1.info()); // Κλήση μεθόδων 9System.out.println(vehicle2.info()); // Κλήση μεθόδων 10}// Τέλος της main 11 }

14 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 14 Κλάσεις 4/14 Πακέτα  Προσφέρουν τη δυνατότητα ομαδοποίησης των κλάσεων  Αποφυγή συγκρούσεων ονομασίας κλάσεων  Ένα πακέτο ορίζεται χρησιμοποιώντας τη λέξη κλειδί package και το όνομα του πακέτου  Ένα πακέτο εισάγεται χρησιμοποιώντας τη λέξη κλειδί import και το όνομα του πακέτου Περιορισμοί προσπέλασης Περιορισμοί Προσπέλασης Τύποι προσπέλασης (λέξεις κλειδιά) publicprivateprotectedΜη ορισμένος Ίδια ΚλάσηΝαι Ίδιο ΠακέτοΝαιΌχιΝαι Διαφορετικό Πακέτο ΝαιΌχι *Ναι για κλάσεις που την κληρονομούν, αλλιώς όχι Όχι

15 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 15 Κλάσεις 5/14 Κληρονομικότητα (Inheritance)  Μία γενική κλάση ορίζει μία σειρά από κοινά χαρακτηριστικά (πεδία ή λειτουργίες) για ένα ευρύ σύνολο αντικειμένων (Υπερκλάση)  Η υπερκλάση μπορεί να κληρονομηθεί από άλλες, πιο εξειδικευμένες κλάσεις, οι οποίες προσθέτουν συγκεκριμένα χαρακτηριστικά (Υποκλάσεις)  Μία κλάση έχει το πολύ μία υπερκλάση (Single Inheritance)  Public και protected μέθοδοι μιας κλάσης κληρονομούνται αυτόματα και στην υποκλάση  Public και protected πεδία μπορούν να αναφερθούν απευθείας από την υποκλάση  Για να κληρονομήσει μία κλάση κάποια άλλη χρησιμοποιούμε τη λέξη κλειδί extends

16 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 16 1 public class Car extends Vehicle{ 2private int cc = 0; // Νέο πεδίο της Car σε σχέση με τη Vehicle 3public Car() { // Μία κατασκευάστρια μέθοδος 4super();// Κλήση κατασκευάστριας μεθόδου της υπερκλάσης Vehicle 5} 6// Ακόμα μία κατασκευάστρια μέθοδος, αρχικοποιεί τον κατασκευαστή 7public Car(String manufacturer) { 8super(manufacturer); // Κλήση κατασκευάστριας υπερκλάσης Vehicle 9} 10// Ακόμα μία κατασκευάστρια μέθοδος, αρχικοποιεί όλα τα πεδία 11public Car(String manufacturer, String platesNumber, int cc) { 12// Κλήση constructor υπερκλάσης, Vehicle 13super(manufacturer, platesNumber); 14this.cc = cc; // Αρχικοποιήσεις 15 } 16public int getCC(){return cc;} // Μέθοδος που επιστρέφει τον κυβισμό 17// Μέθοδος που δίνει τιμή στον κυβισμό και δεν επιστρέφει τίποτα 18public void setCC(int cc){this.cc = cc;} 19 } Κλάσεις 6/14

17 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 17 Κλάσεις 7/14 Διεπαφές (Interface)  Μία διεπαφή αποτελείται μόνο από ένα όνομα και ένα σύνολο επικεφαλίδων μεθόδων  Μία διεπαφή ορίζεται χρησιμοποιώντας τη λέξη κλειδί interface  Οι διεπαφές υλοποιούνται από άλλες κλάσεις  Κάθε κλάση που υλοποιεί μία διεπαφή, πρέπει να υλοποιεί όλες τις μεθόδους της. Χρήση της λέξης κλειδί implements  Χρησιμοποιώντας interfaces μπορούμε να ορίσουμε κλάσεις που θα διαχειρίζονται αντικείμενα που τα υλοποιούν 1 public interface Ownership{ //Δήλωση της διεπαφής 2public Object getOwner () ; //Οι μέθοδοι που πρέπει να υλοποιηθούν 3public void setOwner(Object owner); 4public int getPrice(); 5public void setPrice(int price); 6 }

18 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 18 Κλάσεις 8/14 1 class Vehicle implements Ownership{ // Ορισμός κλάσης vehicle 2 private String owner = "Unknown"; 3 // Πεδία και μέθοδοι όπως πριν.... 4// Υλοποίηση μεθόδων του interface 5public String getOwner(){ 6return owner; 7} 8public void setOwner(Object owner){ 9// Εάν το αντικείμενο owner είναι κλάσης String 10if(owner instanceof String) 11this.owner = (String) (owner); // Μετατροπή από Object σε String 12else 13System.out.println("Δεν μπορεί να εισαχθεί ο ιδιοκτήτης"); 14 } 15public int getPrice(){ 16return price; 17} 18public void setPrice(int price){ 19this.price = price; 20} 21} // Τέλος κλάσης

19 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 19 Κλάσεις 9/14 Αφηρημένες κλάσεις (Abstract)  Θέλουμε μία υπερκλάση που δεν έχει όλες τις μεθόδους της υλοποιημένες  Δηλώνονται με τη λέξη κλειδί abstract  Επιτρέπουν την υλοποίηση μεθόδων, σε αντίθεση με τις διεπαφές  Οι μη υλοποιημένες μέθοδοι δηλώνονται με τη λέξη κλειδί abstract  Κάθε κλάση που τις κληρονομεί, πρέπει να υλοποιεί όλες τις αφηρημένες μεθόδους της 1 public abstract class OwnershipAbstract { 2private int price = 0; 3//Οι υλοποιημένες μέθοδοι 4public int getPrice() { 5return price; 6} 7public void setPrice(int price) { 8this.price = price; 9} 10//Οι μέθοδοι που πρέπει να υλοποιηθούν από τις κλάσεις που την κληρονομούν 12abstract public Object getOwner(); 13abstract public void setOwner(Object owner); 14 }

20 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 20 Κλάσεις 10/14 1 class Vehicle extends OwnershipAbstract{ // Ορισμός κλάσης vehicle 2 private String owner = "Unknown"; 3 // Πεδία και μέθοδοι όπως πριν.... 4 // Μέθοδοι που πρέπει να υλοποιηθούν 5public String getOwner(){ 6return owner; 7} 8public void setOwner(Object owner){ 9// If object is a string 10if(owner instanceof String) 11// Μετατροπή από Object σε String 12this.owner = (String) (owner ); 13else 14System.out.println("Δεν μπορεί να εισαχθεί ο ιδιοκτήτης"); 15} 16}// Τέλος κλάσης

21 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 21 Κλάσεις 11/14 Πολυμορφισμός  Υπερφόρτωση (Overloading) Στατικός πολυμορφισμός Η εκ νέου δήλωση μιας ήδη υπάρχουσας μεθόδου με το ίδιο όνομα αλλά διαφορετικό πλήθος ή τύπο παραμέτρων και την ίδια επιστρεφόμενη τιμή Παράδειγμα αποτελούν οι κατασκευάστριες μέθοδοι της κλάσης Vehicle  Υποσκελισμός (Overriding) Δυναμικός πολυμορφισμός Μία υποκλάση μπορεί να θέλει να υλοποιήσει μια συγκεκριμένη ενέργεια που κληρονομεί από την υπερκλάση με διαφορετικό τρόπο, κρατώντας όμως τα ίδια χαρακτηριστικά της (όνομα, παραμέτρους και επιστρεφόμενες τιμές)

22 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 22 Κλάσεις 12/14 1 public class Car extends Vehicle{ 2 // Πεδία και μέθοδοι όπως πριν... 3 // Μέθοδος που τυπώνει πληροφορίες για το αυτοκίνητο, Overriding 4public String info() { 5String s = "Car: " + getManufacturer() + " " + getPlatesNumber(); 6s += " " + cc + " " + horsePower + " " + numberOfDoors; 7return s; 8} 9 } 1 public class MyProgramOverriding{ 2 //Ένα πρόγραμμα ξεκινά πάντα με την κλήση της main 3public static void main(String a[]) { 4// Δημιουργία οχήματος 5Vehicle t1 = new Vehicle("Kawasaki", "ΗΡΑ-000"); 6// Δημιουργία αυτοκινήτου 7Car c1 = new Car("Audi","HPA-007",1800,120,4); 8System.out.println(t1.info()); 9System.out.println(c1.info()); 10}// Τέλος της main 11} Η εξοδος του προγράμματος είναι η εξής: Vehicle: Kawasaki ΗΡΑ-000 Car: Audi HPA-007 1800 120 4

23 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 23 Κλάσεις 13/14 Ενθυλάκωση  Ένας μηχανισμός με τον οποίο τα πεδία και οι μέθοδοι ενός αντικειμένου κρατούνται κρυμμένα μέσα στο ίδιο το αντικείμενο και ασφαλή από εξωτερικές παρεμβάσεις  Ο χρήστης του αντικειμένου χρειάζεται να γνωρίζει μόνο τον τρόπο επικοινωνίας μαζί του και όχι τις εσωτερικές του λειτουργίες  Τα πεδία δηλώνονται ως private και υπάρχουν κατάλληλες μέθοδοι get και set για την διαχείριση των τιμών τους ADTs (Abstract Data Types)  Χρησιμοποιούν τον μηχανισμό της ενθυλάκωσης  Περιγραφή συνόλου δεδομένων καθώς και του συνόλου των λειτουργιών που μπορούν να εκτελεστούν πάνω του  Ανεξάρτητος από συγκεκριμένες υλοποιήσεις  Οι χρήστες ενός ADT ενδιαφέρονται μόνο για το πώς θα επικοινωνήσουν μαζί του και όχι για το πώς υλοποιείται

24 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 24 Κλάσεις 14/14 Εξαιρέσεις (Exceptions)  Αντικείμενο που περιέχει πληροφορίες για κάποιο σφάλμα  Υπάρχουν διαφορετικού τύπου εξαιρέσεις, ανάλογα με τα σφάλματα  Διαχείριση εξαιρέσεων με τη χρήση λέξεων κλειδιών try, catch, throw, throws και finally 1 try{ 2 //ο κώδικας που ενδέχεται να προκαλέσει μια εξαίρεση 3 } 4 catch(Τύπος_Εξαίρεσης e){ //π.χ. ArithmeticException 5//διαχείριση της εξαίρεσης 6 } 7 finally{ 8 //ο κώδικας που θα εκτελεστεί πριν τερματίσει το πρόγραμμα 9 } 1 public void mymethod(int index, int []array)throws ArrayIndexOutOfBoundsException{ 2 // Κάποιες ενέργειες 3if(index>=0 && index<array.length){ 4// Κάποιες ενέργειες 5}//διαφορετικά δημιούργησε μια τέτοιου είδους εξαίρεση 6throw new ArrayIndexOutOfBoundsException(); 7 }

25 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 25 Βιβλιοθήκη της Java (API) 1/2 Η εταιρία Sun για να διευκολύνει τους χρήστες της γλώσσας έχει δημιουργήσει μια βιβλιοθήκη που περιέχει πολλές έτοιμες κλάσεις οργανωμένες σε πακέτα. Για να χρησιμοποιήσουμε μια κλάση της βιβλιοθήκης θα πρέπει να γνωρίζουμε σε ποιο πακέτο βρίσκεται Πληροφορίες για το API μπορείτε να βρείτε στην ιστοσελίδα http://java.sun.com/javase/6/docs/api/ http://java.sun.com/javase/6/docs/api/

26 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 26 Βιβλιοθήκη της Java (API) 2/2 1 import java.util.ArrayList; // Εισαγωγή ArrayList από το πακέτο java.util 2 import javax.swing.JOptionPane; 3 public class ArrayListExample { 4public static void main(String[] args){ 5Truck truck = new Truck("Volvo", 1000); 6Car car = new Car("Toyota"); 7String name = JOptionPane.showInputDialog("Give the owner"); 8Vehicle vehicle1 = new Vehicle("Yugo"); 9vehicle1.setOwner(name); 10Vehicle vehicle2 = new Vehicle(); 11ArrayList list = new ArrayList(); 12// Εισάγουμε τα αντικέιμενα 13list.add(truck); 14list.add(car); 15list.add(vehicle1); 16list.size(); // Επιστρέφει τον αριθμό των στοιχείων της λίστας (3) 17list.contains(truck); //true, περιέχει το truck 18list.contains(vehicle2); //false, δεν περιέχει το vehicle2 19list.indexOf(car);// Η θέση που βρίσκεται το car (2) 20list.get(0); // Επιστρέφει το truck 21for(int i = 0; i < list.size(); i++) { 22Vehicle temp = (Vehicle)list.get(i); 23System.out.println(temp.info() + temp.getOwner()); 24} 25list.clear();// Καθαρίζουμε τη λίστα 26} 27 }

27 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 27 Γραφικές Διεπαφές – Swing 1/10 Γραφική Διεπαφή GUI– Υπεύθυνη για την επικοινωνία με το χρήστη Εύκολη είσοδος δεδομένων και ελκυστική έξοδος στο χρήστη Η βιβλιοθήκη της Java, παρέχει ένα σύνολο κλάσεων για την υλοποίηση και διαχείριση των γραφικών και των συσκευών εισόδου Επιμέρους σημαντικά συστατικά  Πλαίσια, παράθυρα με τίτλο, μενού, κουμπιά  Υποδοχείς, συστατικά που περιέχουν άλλα συστατικά  Κουμπιά, περιοχές συσχετισμένες με μία ενέργεια  Πεδία κειμένου, περιοχές όπου ο χρήστης μπορεί να εισάγει κείμενο

28 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 28 Γραφικές Διεπαφές – Swing 2/10 Component  Αφηρημένη κλάση με ένα σύνολο βασικών μεθόδων  Τα συνήθη συστατικά αποτελούν υποκλάσεις της Component  Κυριότερες μέθοδοι void setLocation(int x,int y) void setSize(int width,int height) void setBounds(int x,int y,int width,int height) void setFont(Font f) void setBackground(Color c) void setVisible(boolean isVisible) void addKeyListener(KeyListener kl) Προσθέτει ένα ακροατή για συμβάντα πληκτρολογίου void addActionListener(ActionListener al) Προσθέτει ένα ακροατή για συμβάντα ενέργειας  Τα πακέτα της βιβλιοθήκης της Java που χρησιμοποιούνται για τον προγραμματισμό με γραφικές διεπαφές είναι τα java.awt, javax.swing και java.awt.event.

29 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 29 Γραφικές Διεπαφές – Swing 3/10 Υποδοχείς – Πλαίσια  Ένας υποδοχέας είναι αντικείμενο της κλάσης Container, η οποία είναι υποκλάση της Component  Ένας υποδοχέας μπορεί να περιέχει άλλους υποδοχείς και συστατικά, δημιουργώντας με αυτό τον τρόπο σύνθετα GUIs  Ένας από τους βασικούς υποδοχείς είναι τα πλαίσια, παράθυρα που αποτελούνται από τίτλο, γραμμή μενού, κουμπιά αλλαγής μεγέθους και κλεισίματος.  Η κλάση JFrame (javax.swing.JFrame) είναι η συνηθέστερη για την κατασκευή τέτοιων πλαισίων. 1 import javax.swing.*; 2 public class SimpleFrame extends JFrame{ 3public static void main(String[] args){ 4JFrame frame=new JFrame("A Simple Frame"); 5frame.setBounds(300,300,200,100); 6frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 7frame.setVisible(true); 8} 9}

30 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 30 Γραφικές Διεπαφές – Swing 4/10 Συστατικά  Τα μέρη από τα οποία δομείται ένα GUI  Ένα σύνολο συστατικών τοποθετείται μέσα σε ένα υποδοχέα  Όλα τα συστατικά που θα περιγραφούν στη συνέχεια αποτελούν υπόκλάσεις της Component JButton (javax.swing.JButton)  Χρησιμοποιείται για την δημιουργία κουμπιών  Μπορούν να περιέχουν κείμενο, εικόνα, ή και τα δύο JButton(), JButton(String text), JButton(Icon ic) JButton(String text,Icon ic) JLabel (javax.swing.JLabel)  Χρησιμοποιείται για τη δημιουργία ετικετών  Μπορούν να περιέχουν κείμενο, εικόνα, ή και τα δύο  Επεξεργάζονται μόνο από τον προγραμματιστή και όχι από το χρήστη JLabel(),JLabel(String text), JLabel(Icon ic), JLabel(String text,Icon ic)

31 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 31 Γραφικές Διεπαφές – Swing 5/10 JTextField (javax.Swing.JTextField)  Χρησιμοποιείται για τη δημιουργία μιας περιοχής κειμένου την οποία μπορεί να επεξεργαστεί ο χρήστης JTextField() JTextField(String text) JTextField(int numOfColumns) JTextField(String text, int numOfColumns) JTextArea (javax.swing.JTextArea)  Παρόμοια με την JTextField, μόνο που χρησιμοποιείται για την εισαγωγή μεγαλύτερου κειμένου 1 import javax.swing.*; 2 public class SimpleGui extends JFrame{ 3public static void main(String[] args){ 4JFrame frame=new JFrame("A Simple GUI"); 5frame.setSize(250,130); 6frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 7frame.setVisible(true); 8frame.setLayout(null); 9JLabel label=new JLabel("Simple JLabel"); 10JTextField text=new JTextField(); 11JButton button=new JButton("OK"); 12label.setBounds(10,10,100,20); 13text.setBounds(100, 10, 100, 20); 14button.setBounds(100,50,60,20); 15frame.add(label); 16frame.add(text); 17frame.add(button); 18} 19}

32 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 32 Γραφικές Διεπαφές – Swing 6/10 Διάταξη Συστατικών  Διαχειριστές διάταξης συστατικών μέσα σε ένα υποδοχέα Διάταξη ροής FlowLayout (java.awt.FlowLayout)  Διατάσσει τα συστατικά από αριστερά προς τα δεξιά  Άμεση σχέση με το πώς εισάγονται τα συστατικά  Ο προγραμματιστής επιλέγει το είδος της στοίχισης που επιθυμεί Αριστερά (με χρήση μεταβλητής FlowLayout.Left) Δεξιά (με χρήση μεταβλητής FlowLayout.Right) Κέντρο (με χρήση μεταβλητής FlowLayout.Center) 1 import javax.swing.*; 2 import java.awt.FlowLayout; 3 public class FlowExample extends JFrame{ 4public static void main(String[] args){ 5JFrame frame=new JFrame("FlowLayout Example"); 6JButton b1=new JButton("First"); 7JButton b2=new JButton("Second"); 8JButton b3=new JButton("Third"); 9JButton b4=new JButton("Fourth"); 10frame.setBounds(300,300,270,100); 11frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 12FlowLayout flow=new FlowLayout(FlowLayout.LEFT); 13frame.setLayout(flow); 14frame.add(b1); 15frame.add(b2); 16frame.add(b3); 17frame.add(b4); 18frame.setVisible(true); 19} 20 }

33 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 33 Γραφικές Διεπαφές – Swing 7/10 Διάταξη Πλέγματος GridLayout java.awt.GridLayout  Διατάσσει τα στοιχεία σε ένα πλέγμα γραμμών και στηλών  Το πρώτο στοιχείο εισάγεται στη πρώτη γραμμή, πρώτη στήλη, το δεύτερο στη δεύτερη στήλη κ.ο.κ Διάταξη περιγράμματος BorderLayout java.awt.BorderLayout  Διαιρεί τον υποδοχέα σε πέντε διαφορετικούς τομείς: βόρειο, νότιο, ανατολικό, δυτικό και κεντρικό

34 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 34 Γραφικές Διεπαφές – Swing 8/10 Ταμπλό (Τομείς) – JPanel (javax.swing.JPanel)  Κάθε διεπαφή αποτελείται από τουλάχιστον ένα υποδοχέα  Ωστόσο όταν η διεπαφή αποτελείται από πολλά διαφορετικά συστατικά είναι βολικό να χρησιμοποιούμε τομείς  Οι τομείς είναι υποδοχείς στους οποίους τοποθετούνται τα συστατικά  Η κλάση JPanel είναι ένα τέτοιο είδος υποδοχέα  Για την δημιουργία ενός αντικειμένου τομέα χρειάζεται μία κλήση της κατασκευάστριας μεθόδου JPanel() Ακροατές Συμβάντων  Χρησιμοποιώντας ακροατές μπορούμε να καταλάβουμε πότε έχει συμβεί ένα γεγονός, π.χ. πότε πατήθηκε ένα κουμπί  Κάθε ακροατής χειρίζεται ένα συγκεκριμένο είδος συμβάντος  Ένα πρόγραμμα μπορεί να περιέχει όσους ακροατές θέλει 5 public class ActionExample extends JFrame implements ActionListener{ 6 JButton b1=new JButton("Button 1"); 7 JButton b2=new JButton("Button 2"); 9 public ActionExample(){ 10 super("Click a button"); 11 setBounds(300,300,270,80); 12 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 13FlowLayout flow=new FlowLayout( FlowLayout.CENTER ); 14setLayout(flow); 15b1.addActionListener(this); 16b2.addActionListener(this); 17add(b1); add(b2); 19setVisible(true); 20 } 22 public void actionPerformed(ActionEvent event){ 23Object buttonPressed=event.getSource(); 24if(buttonPressed==b1) 25 setTitle("Pressed Button 1"); 26else if(buttonPressed==b2) 27 setTitle("Pressed Button 2"); 28 } 30 public static void main(String[] args){ 31ActionExample example=new ActionExample(); 32 } 33}

35 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 35 Γραφικές Διεπαφές – Swing 9/10 JApplet Μικροεφαρμογές της Java  Μια μικροεφαρμογή είναι μία Java εφαρμογή η οποία εκτελείται μέσα σε ένα περιηγητή του ιστού  Περικλείεται ανάμεσα στα σε μια HTML σελίδα  Η διαφορά μεταξύ των εφαρμογών και των μικροεφαρμογών είναι στην εκτέλεση τους κάνοντας ελάχιστες τροποποιήσεις. init(): Χρησιμοποιείται για την αρχικοποίηση της μικροεφαρμογής και καλείται όταν φορτώνεται η μικροεφαρμογή, αντίστοιχη της main paint(Graphics g): Ορίζει το πώς η μικροεφαρμογή θα εμφανίζει κάτι στην οθόνη. Η εκτύπωση μπορεί να γίνει πολλές φορές κατά την διάρκεια της ζωής της μικροεφαρμογής, σε αντίθεση με την αρχικοποίηση όπου γίνεται μόνο κατά την εκκίνηση της μικροεφαρμογής start(): Μια εφαρμογή πρέπει να εκκινήσει αφού κατόπιν έχει αρχικοποιηθεί είτε αφού προηγουμένως έχει διακοπεί stop(): Διακόπτει την μικροεφαρμογή. Αυτό συμβαίνει όταν για παράδειγμα εγκαταλείπουμε μία σελίδα που περιέχει μία μικροεφαρμογή destroy(): επιτρέπει στη μικροεφαρμογή να κάνει ότι τροποποιήσεις σε αντικείμενα χρειάζεται και κατόπιν να ελευθερώσει την μνήμη που είχε καταλάβει

36 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 36 Γραφικές Διεπαφές – Swing 10/10 1 import java.awt.Graphics; 2 import javax.swing.JApplet; 3 public class VehicleApplet extends JApplet{ 4Vehicle v; 5public void init(){ //Υποσκελισμός μεθόδου init 6v=new Vehicle("BMW","HKE-1234"); //Δημιουργία αντικειμένου Vehicle 7} 8public void paint(Graphics g){ //Υποσκελισμός μεθόδου paint 9g.drawString(v.info(),25, 75); //εμφάνιση στοιχείων στη θέση 25, 75 10} 11} VehicleApplet.java myPage.html

37 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 37 Eclipse (1/4) Ολοκληρωμένο περιβάλλον για την συγγραφή, μεταγλώττιση και εκτέλεση Java προγραμμάτων Εφαρμογή ανοικτού λογισμικού, διανέμεται δωρεάν και είναι διαθέσιμο από τη διεύθυνση http://www.eclipse.orghttp://www.eclipse.org Επιφάνεια Εργασίας Κονσόλα πολλαπλών λειτουργιών Περιοχή προγραμμάτων και κλάσεων

38 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 38 Eclipse (2/4) Δημιουργία νέου έργου  File -> New -> Java Project Δημιουργία νέας κλάσης  File ->New -> Class

39 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 39 Eclipse (3/4) Προγραμματίζοντας  Εύκολη διόρθωση λαθών  Γρήγορη αυτόματη συμπλήρωση κώδικα

40 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 40 Eclipse (4/4) Εκτέλεση εφαρμογής  Ανοίγουμε το αρχείο το οποίο περιέχει την main μέθοδο και πατώντας το κουμπί (Run) εκτελούμε την εφαρμογή. Επίσης επιλέγοντας το αρχείο που περιέχει την main μέθοδο και κάνοντας δεξί κλικ πάνω του επιλέγουμε από το μενού που προκύπτει Run as  Java Application. Τα αποτελέσματα της εκτέλεσης εμφανίζονται στο παράθυρο πολλαπλών λειτουργιών που βρίσκεται στο κάτω μέρος της οθόνης Εισαγωγή Έργου  Δημιουργούμε μία νέα εργασία όπως προηγουμένως και επιλέγουμε την διαδρομή που βρίσκονται τα αρχεία του προγράμματος μας. Πηγαίνοντας στο File  New  Java Project επιλέγουμε “Create project from existing source” και από κάτω εισάγουμε την διαδρομή που βρίσκονται τα αρχεία της εργασίας. Δίνουμε ένα όνομα στην εργασία και πατάμε Finish Πληροφορίες  Help  Help Contents

41 Επιμόρφωση Εκπαιδευτικών Πληροφορικής | Ενότητα 6η (Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java) | Μέρος Α (Επικαιροποίηση Γνώσεων) 41 Αναφορές και σύνδεσμοι Java API http://java.sun.com/javase/6/docs/api/http://java.sun.com/javase/6/docs/api/ Ελληνικά βιβλία  JAVA with UML: Object oriented design and programming (in Greek) by E. Lervik and V Havdal, Klidarithmos Publications, 2005  Programming in Java (in Greek) (1st Edition) by I.Kavouras, Klidarithmos Publications, 2003 Programming in Java (in Greek) Αγγλικά βιβλία  Program Development in Java: Abstraction, Specification and Object Oriented Design by Barbara Liskov and John Guttag, Addison Wesley 2001Program Development in Java: Abstraction, Specification and Object Oriented Design  Java Collections: An Introduction to Abstract Data Types, Data Structures and Algorithms, David A. Watt,Deryck F. Brown and Dave Watt, John Wiley & Sons 2001 Java Collections: An Introduction to Abstract Data Types, Data Structures and Algorithms  Java 1.5 Program Design by James P. Cohoon and Jack W. Davidson, McGraw-Hill, ISBN 007235447x, 2004 Java 1.5 Program Design  JAVA How to Program (5th Edition) by Deitel & Deitel, Prentice Hall, 2003 JAVA How to Program (5th Edition) Ελληνικές πηγές στο διαδίκτυο  Διαλέξεις εισαγωγής στον αντικειμενοστρεφή προγραμματισμό χρησιμοποιώντας τη γλώσσα προγραμματισμού Java, Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης (http://www.csd.uoc.gr/~hy252/)http://www.csd.uoc.gr/~hy252/  Εισαγωγή στη Java, Κωνσταντίνος Μαργαρίτης http://people.debian.org/~markos/guides/Course-Java-Notes.pdfhttp://people.debian.org/~markos/guides/Course-Java-Notes.pdf  Τα βασικά της Java Κακαρόντζας Γεώργιος (http://www.cs.teilar.gr/gkakaron/java/java.pdf)http://www.cs.teilar.gr/gkakaron/java/java.pdf  Εισαγωγή στη γλώσσα Java, Σημειώσεις για το μάθημα Αντικειμενοστρεφής Σχεδιασμός και Προγραμματισμός, Πανεπιστημίο Πειραιώς, Τμήμα Τεχνολογικής Εκπαίδευσης (http://users.softlab.ece.ntua.gr/~bxb/courses/unipi2001_te/00-CourseNotes/031-OO&Java/TE031-2.pdf)http://users.softlab.ece.ntua.gr/~bxb/courses/unipi2001_te/00-CourseNotes/031-OO&Java/TE031-2.pdf  Σημειώσεις μαθήματος «Γλώσσες Προγραμματισμού», Πανεπιστήμιο Αθηνών, Τμήμα Μαθηματικών (http://www.math.uoa.gr/pps-epeaek2/Pliroforiki/112/gl_pr/Java-2005-SHMEIWSEIS.pdf)http://www.math.uoa.gr/pps-epeaek2/Pliroforiki/112/gl_pr/Java-2005-SHMEIWSEIS.pdf Αγγλικά βιβλία στο διαδίκτυο  Τhe Java language specification 3rd Ed. (http://java.sun.com/docs/books/jls/)http://java.sun.com/docs/books/jls/  Thinking in Java 3rd Ed. (http://www.mindview.net/Books/TIJ/)http://www.mindview.net/Books/TIJ/  Thinking in Patterns with Java (Revision 0.9) by Bruce Eckel, published electronically by MindView Inc., May 20, 2003 (http://www.mindview.net/Books/TIPatterns/)http://www.mindview.net/Books/TIPatterns/


Κατέβασμα ppt "[A6] – Προηγμένο Περιβάλλον Αντικειμενοστρεφούς Προγραμματισμού Java Επιμόρφωση Εκπαιδευτικών Πληροφορικής."

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


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