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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/04/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια

2 Static πεδία και μέθοδοι Τα περισσότερα δεδομένα και μέθοδοι λειτουργούν σε συγκεκριμένα αντικείμενα μιας κλάσης Υπάρχουν όμως περιπτώσεις όπου τα δεδομένα ή οι μέθοδοι αφορούν την ίδια την κλάση Το static εφαρμόζεται σε πεδία και μεθόδους Σημαίνει ότι το πεδίο / μέθοδος Είναι ορισμένο / ορισμένη για τη δήλωση της κλάσης Δεν είναι μοναδικό / μοναδική για κάθε στιγμιότυπο

3 Static πεδία και μέθοδοι Μόνο ένα στιγμιότυπο static μεταβλητής υπάρχει για ολόκληρη την κλάση Η τιμή της μεταβλητής είναι μοναδική για όλα τα στιγμιότυπα Η μεταβλητή υπάρχει ακόμη κι αν δεν υπάρχει κανένα αντικείμενο By default, οι static μεταβλητές αρχικοποιούνται σε 0 ή null Οι static μέθοδοι λειτουργούν μόνο σε static μεταβλητές ή καλούν άλλες static μεθόδους Δεν συνδέονται με ένα συγκεκριμένο στιγμιότυπο και επομένως δεν μπορούν να χρησιμοποιήσουν την αναφορά this Οι διάφορες μέθοδοι μπορούν να προσπελαύνουν static μεταβλητές

4 Static Πεδία

5 Static modifier Όλες οι static μέθοδοι/πεδία αναφέρονται με τον static modifier Η πρόσβαση στη static μέθοδο δεν γίνεται μέσω ενός αντικειμένου αλλά μέσω του ονόματος της ίδιας της κλάσης:

6 Παράδειγμα πεδίων static Μετρητής πλήθους αντικειμένων σε μία κλάση Παράδειγμα: αλλαγές στο πεδίο m_count καθώς φτιάχνουμε αντικείμενα Visitor:

7 Παράδειγμα static Θέλουμε να μετράμε πόσα cars έχουν κατασκευαστεί public class Car { int numcarsmade = 0; } Car() { } numcarsmade += 1; Οκ?

8 Παράδειγμα static πεδίου Μετράμε πόσα cars έχουν κατασκευαστεί public class Cars { static int numcarsmade = 0; Car() { numcarsmade += 1; } }

9 Παράδειγμα πεδίων static public class Car { static int numcarsmade = 0; } Car c1 = new Car(); Car c2 = new Car(); Τι τιμές έχουν τα: c1.numcarsmade? c2.numcarsmade? Car.numCarsMade?

10 Συλλογή static μεθόδων Αν δεν υπάρχουν static πεδία, οι static μέθοδοι μπορούν να χρησιμοποιούνται για να υλοποιήσουν μία γενική λειτουργικότητα Ενσωματώνουν ένα συγκεκριμένο αλγόριθμο Μπορούμε να γράψουμε μία κλάση που είναι συλλογή από static μεθόδους Μία τέτοια κλάση δεν χρησιμοποιείται για να ορίσει νέου τύπου αντικείμενα Είναι απλά μία βιβλιοθήκη για υπηρεσίες που σχετίζονται κατά κάποιο τρόπο

11 Παράδειγμα public class Counter { int mycount = 0; static int ourcount = 0; void increment() } mycount++; ourcount++;} public static void main(string[] args) { Counter counter1 = new Counter(); Counter counter2 = new Counter(); counter1.increment(); counter1.increment(); counter2.increment(); System.out.println( Counter 1: + counter1.mycount + + counter1.ourcount); System.out.println( Counter 2: + counter2.mycount + + counter2.ourcount); } } Πεδία Μέθοδος

12 Παράδειγμα Class Counter ourcount = 0 Object counter1 mycount = 0 Counter counter1 = new Counter();

13 Παράδειγμα Class Counter ourcount = 0 Object counter1 mycount = 0 Object counter2 mycount = 0 Counter counter1 = new Counter(); Counter counter2 = new Counter();

14 Παράδειγμα Class Counter ourcount = 0 1 Object counter1 mycount = 0 1 Object counter2 mycount = 0 Counter counter1 = new Counter(); Counter counter2 = new Counter(); Counter1.increment();

15 Παράδειγμα Class Counter ourcount = Object counter1 mycount = Object counter2 mycount = 0 Counter counter1 = new Counter(); Counter counter2 = new Counter(); Counter1.increment(); Counter1.increment();

16 Παράδειγμα Class Counter ourcount = Object counter1 mycount = Object counter2 mycount = 0 1 Counter counter1 = new Counter(); Counter counter2 = new Counter(); Counter1.increment(); Counter1.increment(); Counter2.increment();

17 java.lang.math Η κλάση java.lang.math παρέχει μαθηματικές συναρτήσεις όπως sqrt()

18 Παρατήρηση Η κλάση Math ανήκει στο πακέτο java.lang Γνωρίζουμε ότι το εν λόγω πακέτο εισάγεται από το μεταγλωττιστή σε κάθε πρόγραμμα Άρα δεν χρειάζεται να εισάγουμε (import) την κλάση Math για να χρησιμοποιήσουμε τις μεθόδους της

19 Math μεταβλητές κλάσης Σταθερές (Constants) Λέξη-κλειδί: final Δεν μπορούν να αλλάξουν μετά την αρχικοποίηση static πεδία (ή μεταβλητές κλάσης * ) Κατ αντιστοιχία με τις static μεθόδους Είναι πεδία όπου ένα αντίγραφο της μεταβλητής μοιράζεται μεταξύ όλων των αντικειμένων της κλάσης Για παράδειγμα, οι Math.PI και Math.E είναι final static πεδία της κλάσης Math * ΠΡΟΣΟΧΗ στη διαφορά μεταξύ μεταβλητής κλάσης και μεταβλητής στιγμιοτύπου

20 Math μεταβλητές κλάσης

21 Οι μέθοδοι της κλάσης Math Method Description Example abs( x ) ceil( x ) absolute value of x rounds x to the smallest integer not less than x abs( 23.7 ) is 23.7 abs( 0.0 ) is 0.0 abs( ) is 23.7 ceil( 9.2 ) is 10.0 ceil( -9.8 ) is -9.0 cos( x ) trigonometric cosine of x (x in radians) cos( 0.0 ) is 1.0 exp( x ) floor( x ) exponential method ex rounds x to the largest integer not greater than x log( x ) natural logarithm of x (base e) max( x, y ) larger value of x and y min( x, y ) smaller value of x and y pow( x, y ) x raised to the power y (i.e., xy) exp( 1.0 ) is exp( 2.0 ) is Floor( 9.2 ) is 9.0 floor( -9.8 ) is log( Math.E ) is 1.0 log( Math.E * Math.E ) is 2.0 max( 2.3, 12.7 ) is 12.7 max( -2.3, ) is -2.3 min( 2.3, 12.7 ) is 2.3 min( -2.3, ) is pow( 2.0, 7.0 ) is pow( 9.0, 0.5 ) is 3.0 sin( x ) trigonometric sine of x (x in radians) sin( 0.0 ) is 0.0 sqrt( x ) square root of x sqrt( ) is 30.0 tan( x ) trigonometric tangent of x (x in radians) tan( 0.0 ) is 0.0

22 ...Στατικές μέθοδοι, στατικά πεδία και η Math Η μέθοδος main Η main δηλώνεται ως static ούτως ώστε να μπορεί να κληθεί χωρίς να απαιτείται η δημιουργία αντικειμένου της κλάσης που θα περιείχε (αν υπήρχε) η main Κάθε κλάση μπορεί να περιέχει μία μέθοδο main, ωστόσο Η εικονική μηχανή της Java (JVM) καλεί τη main μέθοδο που ανήκει στην κλάση που καθορίζεται από το πρώτο όρισμα που δίνεται στην εντολή java στη γραμμή εντολών

23 Final modifier Μπορεί να χρησιμοποηθεί για κλάσεις, μεθόδους και πεδία/μεταβλητές με διαφορετική σημασία κάθε φορά final πεδίο/μεταβλητή αρχικοποιείται μόνο μία φορά (μεταβλητές) δεν είναι δυνατή η αλλαγή της τιμής της σύμβαση με κεφαλαία final κλάση δεν μπορεί να έχει κλάσεις που να προκύπτουν από αυτή final μέθοδος δεν μπορεί να γίνει overridden

24 Δήλωση και χρήση μεθόδων Μέθοδοι πολλών παραμέτρων Πολλαπλές παράμετροι μπορούν να δηλωθούν, κατά τα γνωστά, ως λίστα διαχωριζόμενη με κόμματα Τα ορίσματα σε μία μέθοδο πρέπει να συμβαδίζουν με τον αριθμό, τον τύπο και τη σειρά των παραμέτρων

25 1 // Fig. 6.3: MaximumFinder.java 2 // Programmer-declared method maximum. 3 import java.util.scanner; 4 5 public class MaximumFinder 6 { Δήλωση και χρήση μεθόδων 7 // obtain three floating-point values and locate the maximum value 8 public void determinemaximum() 9 { 10 // create Scanner for input from command window 11 Scanner input = new Scanner(System.in); // obtain user input 14 System.out.print( 15 "Enter three floating-point values separated by spaces: " ); 16 double number1 = input.nextdouble(); // read first double 17 double number2 = input.nextdouble(); // read second double 18 double number3 = input.nextdouble(); // read third double // determine the maximum value 21 double result = maximum(number1, number2, number3); // display maximum value 24 System.out.println( "Maximum is: " + result ); 25 } // end method determinemaximum 26 Προτρέπει το χρήστη να εισάγει και να διαβάσει 3 τιμές double Εμφάνιση μέγιστης (maximum) τιμής Κλήση μεθόδου maximum

26 27 // returns the maximum of its three double parameters 28 public double maximum(double x, double y, double z) 29 { 30 double maximumvalue = x; // assume x is the largest to start Δήλωση και χρήση μεθόδων // determine whether y is greater than maximumvalue 33 if (y > maximumvalue) 34 maximumvalue = y; // determine whether z is greater than maximumvalue 37 if (z > maximumvalue) 38 maximumvalue = z; return maximumvalue; 41 } // end method maximum 42 } // end class MaximumFinder Δήλωση μεθόδου maximum Σύγκριση y και maximumvalue Σύγκριση z και maximumvalue Επιστροφή μέγιστης (maximum) τιμής Η δήλωση παραμέτρων ίδιου τύπου με τη double x, y αντί της double x, double y αποτελεί συντακτικό σφάλμα! Απαιτείται ένας τύπος για κάθε παράμετρο στη λίστα των παραμέτρων

27 1 // Fig. 6.4: MaximumFinderTest.java 2 // Application to test class MaximumFinder. 3 4 public class MaximumFinderTest Δήλωση και χρήση Δημιουργία μεθόδων αντικειμένου MaximumFinder 5 { 6 // application starting point 7 public static void main( String args[] ) 8 { 9 MaximumFinder maximumfinder = new MaximumFinder(); 10 maximumfinder.determinemaximum(); 11 } // end main 12 } // end class MaximumFinderTest Enter three floating-point values separated by spaces: Maximum is: 9.35 Enter three floating-point values separated by spaces: Maximum is: Enter three floating-point values separated by spaces: Maximum is: Κλήση της μεθόδου determinemaximum

28 ...Δήλωση και χρήση μεθόδων Επαναχρησιμοποίηση της μεθόδου Math.max Η έκφραση Math.max(x, Math.max( y, z )) προσδιορίζει πρώτα το μέγιστο μεταξύ των y και z, και έπειτα προσδιορίζει το μέγιστο μεταξύ του x και αυτής της τιμής

29 ...Δήλωση και χρήση μεθόδων Τρεις τρόποι κλήσης μιας μεθόδου Χρήση του ονόματος της μεθόδου και μόνο, για κλήση μιας άλλης μεθόδου της ίδιας κλάσης, π.χ. maximum(number1, number2, number3); Χρήση μιας μεταβλητής που περιέχει αναφορά σε αντικείμενο, ακολουθούμενη από τελεία (.) και το όνομα της μεθόδου, για κλήση μιας μεθόδου του αντικειμένου αναφοράς, π.χ. maximumfinder.determinemaximum(); που καλεί μία μέθοδο της κλάσης MaximumFinder από τη μέθοδο main της MaximumFinderTest Χρήση του ονόματος της κλάσης και της τελείας (.), για κλήση μιας static μεθόδου μιας κλάσης, π.χ. Math.sqrt(900.0)

30 Προσοχή Οι static μέθοδοι δεν μπορούν να καλέσουν μηstatic μεθόδους της ίδιας κλάσης απευθείας ΟΜΩΣ το αντίθετο μπορεί να συμβεί Οι μη- static μέθοδοι μπορούν να καλέσουν static μεθόδους της ίδιας κλάσης απευθείας

31 Συνηθισμένα σφάλματα 1. Η δήλωση μιας μεθόδου εκτός του σώματος δήλωσης μιας κλάσης ή εντός του σώματος μιας άλλης μεθόδου είναι συντακτικό σφάλμα 2. Η παράλειψη του τύπου επιστροφής στη δήλωση μιας μεθόδου είναι συντακτικό σφάλμα (syntax error) 3. Η τοποθέτηση ερωτηματικού μετά από τη δεξιά παρένθεση που περικλείει τη λίστα παραμέτρων στη δήλωση μιας μεθόδου είναι συντακτικό σφάλμα (syntax error) 4. Η εκ νέου δήλωση της παραμέτρου μιας μεθόδου ως τοπικής μεταβλητής στο σώμα της μεθόδου είναι σφάλμα μεταγλώττισης (compilation error) 5. Η παράλειψη επιστροφής μιας τιμής από μέθοδο που επιστρέφει κάτι είναι σφάλμα μεταγλώττισης (compilation error) 6. Επιστροφή τύπου άλλου από αυτόν που έχει δηλωθεί είναι επίσης σφάλμα μεταγλώττισης (compilation error). 7. Η επιστροφή μιας τιμής από μέθοδο, της οποίας ο τύπος επιστροφής έχει δηλωθεί ως void είναι σφάλμα μεταγλώττισης (compilation error)

32 Προβιβασμός ορισμάτων και αλλαγή τύπου Προβιβασμός ορισμάτων Η μετατροπή των τιμών ορισμάτων στον τύπο που περιμένει η μέθοδος να πάρει στην αντίστοιχη παράμετρό της Π.χ. Math.sqrt(4). Η Java θα μετατρέψει τον ακέραιο 4 σε double 4.0 πριν τον διοχετεύσει στη sqrt Κανόνες προβιβασμού Ποιες μετατροπές επιτρέπονται δηλ. ποιες μετατροπές μπορούν να εκτελεστούν χωρίς απώλειες δεδομένων Οι τιμές σε μια έκφραση προβιβάζονται στον υψηλότατο τύπο στη έκφραση (ένα προσωρινό αντίγραφο της τιμής δημιουργείται)

33 ...Προβιβασμός ορισμάτων και αλλαγή τύπου Τύπος double float long int char short byte boolean Έγκυροι Προβιβασμοί None double float or double long, float or double int, long, float or double int, long, float or double (but not char) short, int, long, float or double (but not char) None (boolean values are not considered to be numbers in Java)

34 Συνηθισμένο σφάλμα Η μετατροπή μιας τιμής πρωταρχικού τύπου σε ενός άλλου πρωταρχικού τύπου, μπορεί να αλλάξει την τιμή αν ο νέος τύπος δεν αποτελεί έγκυρο προβιβασμό. Π.χ., η μετατροπή μιας τιμής κινητής υποδιαστολής σε κάποιον ακέραιο τύπο μπορεί να προκαλέσει σφάλματα περικοπής (απώλεια του κλασματικού μέρους) στο αποτέλεσμα

35 Ανάλυση υπόθεσης: Παραγωγή τυχαίων αριθμών Παραγωγή τυχαίων αριθμών Η static μέθοδος random της κλάσης Math Επιστρέφει τιμές double στην περιοχή 0.0 <= x < 1.0 Η κλάση Random του πακέτου java.util Μπορεί να παράγει τυχαίες τιμές boolean, byte, float, double, int, long και Gaussian Διασπείρεται (seeded) με την τρέχουσα ώρα της ημέρας για να παράγει διαφορετικές ακολουθίες αριθμών κάθε φορά που εκτελείται το πρόγραμμα Ενα νέο αντικείμενο γεννήτριας τυχαίων αριθμών μπορεί να δημιουργηθεί ως εξής: Random randomnumbers = new Random(); Το αντικείμενο γεννήτριας τυχαίων αριθμών χρησιμοποιείται στη συνέχεια για να παράγει τυχαίες τιμές, π.χ. int: int randomvalue = randomnumbers.nextint();

36 1 // Fig. 6.7: RandomIntegers.java Τυχαίοι ακέραιοι από // Shifted and scaled random integers. 3 import java.util.random; // program uses class Random 4 5 public class RandomIntegers Εισαγωγή κλάσης Random από το Ανάλυση υπόθεσης: Παραγωγή τυχαίων αριθμών 6 { πακέτο java.util 7 public static void main(string args[]) 8 { 9 Random randomnumbers = new Random(); // random number generator 10 int face; // stores each random integer generated // loop 20 times 13 for (int counter = 1; counter <= 20; counter++) 14 { 15 // pick random integer from 1 to 6 16 face = 1 + randomnumbers.nextint(6); System.out.printf("%d ", face); // display generated value // if counter is divisible by 5, start a new line of output 21 if (counter % 5 == 0) 22 System.out.println(); 23 } // end for 24 } // end main 25 } // end class RandomIntegers Παραγωγή μιας τυχαίας ρίψης ζαριού οι τιμές που επιστρέφονται είναι ψευδοτυχαίοι αριθμοί στην περιοχή 0-5 ( ) Η randomnumbers.nextint(n); Επιστρέφει μία τυχαία τιμή από το 0 ως, αλλά OXI συμπεριλαμβανομένης, της τιμής του ορίσματος Δημιουργία αντικειμένου Random

37 Δύο διαφορετικά σετ αποτελεσμάτων που περιέχουν ακεραίους από 1-6

38 1 // Fig. 6.8: RollDie.java 2 // Roll a six-sided die 6000 times. 3 import java.util.random; 4 Εισαγωγή κλάσης Random από το πακέτο java.util Ανάλυση υπόθεσης: Παραγωγή τυχαίων αριθμών 5 public class RollDie 6 { 7 public static void main( String args[] ) 8 { 9 Random randomnumbers = new Random(); // random number generator int frequency1 = 0; // maintains count of 1s rolled 12 int frequency2 = 0; // count of 2s rolled 13 int frequency3 = 0; // count of 3s rolled 14 int frequency4 = 0; // count of 4s rolled 15 int frequency5 = 0; // count of 5s rolled 16 int frequency6 = 0; // count of 6s rolled 17 Δημιουργία αντικειμένου Random Δήλωση μετρητών συχνότητας Για να δείξουμε ότι οι τυχαίοι αριθμοί που δημιουργούνται εμφανίζονται περίπου με ίδιες πιθανότητες, προσομοιώνουμε το ρίξιμο του ζαριού 6000 φορές. Κάθε ακέραιος από το 1 ως ο 6 πρέπει να εμφανίζεται κατά προσέγγιση 1000 φορές

39 19 20 // summarize results of 6000 rolls of a die 21 for ( int roll = 1; roll <= 6000; roll++ ) 22 { Ανάλυση υπόθεσης: Παραγωγή τυχαίων αριθμών 23 face = 1 + randomnumbers.nextint(6); // number from 1 to // determine roll value 1-6 and increment appropriate counter 26 switch (face) 27 { 28 case 1: 29 ++frequency1; // increment the 1s counter 30 break; 31 case 2: 32 ++frequency2; // increment the 2s counter 33 break; 34 case 3: 35 ++frequency3; // increment the 3s counter 36 break; 37 case 4: 38 ++frequency4; // increment the 4s counter 39 break; 40 case 5: 41 ++frequency5; // increment the 5s counter 42 break; 43 case 6: 44 ++frequency6; // increment the 6s counter 45 break; // optional at end of switch 46 } // end switch 47 } // end for 48 Επανάληψη 6000 φορές Παραγωγή τυχαίας ρίψης ζαριού switch με βάση τη ρίψη ζαριού

40 49 System.out.println( "Face\tFrequency" ); // output headers 50 System.out.printf( "1\t%d\n2\t%d\n3\t%d\n4\t%d\n5\t%d\n6\t%d\n", 51 frequency1, frequency2, frequency3, frequency4, 52 frequency5, frequency6 ); 53 } // end main 54 } // end class RollDie Εμφάνιση των συχνοτήτων ρίψης ζαριού Face Frequency Face Frequency

41 Γενικευμένη κλιμάκωση και μετατόπιση τυχαίων αριθμών Για να παράγουμε έναν τυχαίο αριθμό σε μία συγκεκριμένη περιοχή Χρησιμοποιούμε την έκφραση shiftingvalue + differencebetweenvalues * randomnumbers.nextint( scalingfactor ) όπου : shiftingvalue είναι ο πρώτος αριθμός στην επιθυμητή περιοχή τιμών differencebetweenvalues αναπαριστά τη διαφορά μεταξύ διαδοχικών τιμών στην ακολουθία scalingfactor καθορίζει το πόσοι αριθμοί βρίσκονται στην εν λόγω περιοχή τιμών Παράδειγμα: Χρήση της έκφρασης number = 2 + 3*randomNumbers.nextInt(5); για την παραγωγή τυχαίου αριθμού από την ακολουθία 2,5,8,11,14

42 Επαναχρησιμοποίηση λογισμικού Ταχεία ανάπτυξη εφαρμογών (Rapid application development RAD) Επιταχύνει την ανάπτυξη δυναμικού, υψηλής ποιότητας λογισμικού Java s API Παρέχει ένα πλαίσιο εργασίας στο οποίο Java developers μπορούν να δουλέψουν για να πετύχουν πραγματική επαναληπτική χρήση και ταχεία ανάπτυξη εφαρμογών

43 Πακέτα Κάθε κλάση ανήκει σε ένα πακέτο Κλάσεις στο ίδιο πακέτο συνήθως εξυπηρετούν παρόμοιο σκοπό Τα πακέτα είναι όπως τα directories (folders) Κλάσεις από άλλα πακέτα πρέπει να γίνουν imported

44 Πακέτα Ορισμός πακέτων package path.to.package.foo; class Foo {... } Χρήση πακέτων import path.to.package.foo.foo; import path.to.package.foo.*;

45 Παράδειγμα package parenttools; public class BabyFood {... } package parenttools; public class Baby {... }

46 Παράδειγμα package adult; import parenttools.babyfood; import parenttools.baby; } public class Parent { public static void main (String[] args)} Baby baby = new Baby(); baby.feed(new BabyFood()); }

47 Βιβλιοθήκες Η Java περιλαμβάνει πολλές έτοιμες κλάσεις που ομαδοποιούνται σε υποκαταλόγους κατά κατηγορίες που ονομάζονται πακέτα (packages) Αυτό το σύνολο πακέτων αναφέρεται και ως βιβλιοθήκη κλάσεων της Java ή Java API (Application Programming Interface) Το πλήρες όνομα μιας κλάσης αποτελείται από τα ονόματα των πακέτων στα οποία ανήκει διαχωρισμένα με τελείες Π.χ. Javax.swing.JApplet

48 Τα πακέτα του Java API Η συμπερίληψη της δήλωσης import java.util.scanner; επιτρέπει στον προγραμματιστή να χρησιμοποιεί τη Scanner αντί για τη java.util.scanner Τεκμηρίωση του Java API και σύνοψη των πακέτων στο JDK Η online τεκμηρίωση για το Java API παρέχει εύχρηστη αναζήτηση και πολλές λεπτομέρειες για κάθε κλάση Καθώς μαθαίνετε μία κλάση, θα πρέπει να αποκτήσετε τη συνήθεια να εντοπίζετε την κλάση στην online τεκμηρίωση για πρόσθετες πληροφορίες

49

50 java.util.scanner

51 Συμβουλή Μην προσπαθείτε να ανακαλύψετε και πάλι τον τροχό!! Όταν είναι εφικτό, επαναχρησιμοποιείστε τις κλάσεις και μεθόδους του Java API Μείωση του χρόνου ανάπτυξης του προγράμματος και αποφυγή εισαγωγής προγραμματιστικών σφαλμάτων Όλες οι κλάσεις «βλέπουν» κλάσεις του ιδίου πακέτου (δεν χρειάζεται import) Όλες οι κλάσεις «βλέπουν» κλάσεις του πακέτου java.lang Παράδειγμα: java.lang.string; java.lang.system

52 Βιβλιοθήκες Εν γένει για να χρησιμοποιήσουμε στοιχεία μιας βιβλιοθήκης πρέπει να δηλώσουμε στην αρχή του προγράμματος το όνομα της κλάσης που τα περιέχει Αυτό γίνεται με την εντολή import και ακολουθεί το πλήρες όνομα της κλάσης Εναλλακτικά, μπορούμε να καλούμε μία μέθοδο μιας κλάσης μέσα στον κώδικα χρησιμοποιώντας το πλήρες όνομά της, οπότε δεν χρειάζονται εντολές import Αν θέλουμε να χρησιμοποιήσουμε πολλές βιβλιοθήκες, για να μην εισάγουμε κάθε κλάση ξεχωριστά, χρησιμοποιούμε τον ειδικό χαρακτήρα (wildcard) * Για παράδειγμα, η εντολή import javax.swing.* επιτρέπει τη χρήση όλων των κλάσεων που ανήκουν στο πακέτο Swing

53 Βιβλιοθήκες Οι βασικές βιβλιοθήκες είναι πάντοτε φορτωμένες και τα στοιχεία τους, π.χ. οι μέθοδοί τους είναι άμεσα διαθέσιμες Το πακέτο java.lang εισάγεται αυτόματα σε όλα τα προγράμματα Για αυτό π.χ μπορούνε να καλέσουμε τη μέθοδο System.out.println() χωρίς κάποια εντολή import Σε περίπτωση μη κανονικού τερματισμού, το σωστό είναι να χρησιμοποιείται ο μηχανισμός εξαιρέσεων (exceptions) Τυπικά επιστρέφεται -1, αλλά μπορούμε να χρησιμοποιήσουμε και άλλες τιμές που θα υποδηλώνουν τον τύπο του σφάλματος που προέκυψε

54 ...Τα πακέτα του Java API Package java.applet java.awt java.awt.event java.io java.lang Description The Java Applet Package contains a class and several interfaces required to create Java applets programs that execute in Web browsers. (Applets are discussed in Chapter 20, Introduction to Java Applets; interfaces are discussed in Chapter 10, Object_-Oriented Programming: Polymorphism.) The Java Abstract Window Toolkit Package contains the classes and interfaces required to create and manipulate GUIs in Java 1.0 and 1.1. In current versions of Java, the Swing GUI components of the javax.swing packages are often used instead. (Some elements of the java.awt package are discussed in Chapter 11, GUI Components: Part 1, Chapter 12, Graphics and Java2D, and Chapter 22, GUI Components: Part 2.) The Java Abstract Window Toolkit Event Package contains classes and interfaces that enable event handling for GUI components in both the java.awt and javax.swing packages. (You will learn more about this package in Chapter 11, GUI Components: Part 1 and Chapter 22, GUI Components: Part 2.) The Java Input/Output Package contains classes and interfaces that enable programs to input and output data. (You will learn more about this package in Chapter 14, Files and Streams.) The Java Language Package contains classes and interfaces (discussed throughout this text) that are required by many Java programs. This package is imported by the compiler into all programs, so the programmer does not need to do so.

55 ...Τα πακέτα του Java API Package Description java.net java.text java.util javax.swing The Java Networking Package contains classes and interfaces that enable programs to communicate via computer networks like the Internet. (You will learn more about this in Chapter 24, Networking.) The Java Text Package contains classes and interfaces that enable programs to manipulate numbers, dates, characters and strings. The package provides internationalization capabilities that enable a program to be customized to a specific locale (e.g., a program may display strings in different languages, based on the user s country). The Java Utilities Package contains utility classes and interfaces that enable such actions as date and time manipulations, random-number processing (class Random), the storing and processing of large amounts of data and the breaking of strings into smaller pieces called tokens (class StringTokenizer). (You will learn more about the features of this package in Chapter 19, Collections.) The Java Swing GUI Components Package contains classes and interfaces for Java s Swing GUI components that provide support for portable GUIs. (You will learn more about this package in Chapter 11, GUI Components: Part 1 and Chapter 22, GUI Components: Part 2.) javax.swing.event The Java Swing Event Package contains classes and interfaces that enable event handling (e.g., responding to button clicks) for GUI components in package javax.swing. (You will learn more about this package in Chapter 11, GUI Components: Part 1 and Chapter 22, GUI Components: Part 2.)

56 Βιβλιοθήκες Όταν φτιάχνουμε προγράμματα που αποτελούνται από πολλές κλάσεις, τις εντάσσουμε στο ίδιο πακέτο βάζοντας ως πρώτη εντολή του αρχείου την package όνομαπακέτου Μέσα στο αρχείο ακολουθούν οι δηλώσεις των πακέτων/κλάσεων που χρησιμοποιούνται από την κλάση με τις εντολές Import και έπειτα ξεκινά η ίδια η κλάση ή περισσότερες κλάσεις

57 Βιβλιοθήκες [ package όνομαπακέτου; ] [ import όνομαβιβλιοθήκης; ]* [ class ΌνομαΚλάσης { } ] + σώμακλάσης Οι τετράγωνες παρενθέσεις [] υποδηλώνουν προαιρετική παρουσία Ο αστερίσκος * υποδηλώνει ότι μπορεί να υπάρχουν καμία, μία ή περισσότερες import και Ο σταυρός + ότι πρέπει να υπάρχει τουλάχιστον μία κλάση

58 Παρατηρήσεις Προκειμένου να επιτευχθεί η επαναχρησιμοποίηση κάθε μέθοδος θα πρέπει να περιορίζεται στην εκτέλεση μιας μοναδικής και σαφώς ορισμένης λειτουργίας Το όνομα της μεθόδου θα πρέπει να είναι αντιπροσωπευτικό της λειτουργίας της Τέτοιες μέθοδοι καθιστούν τα προγράμματα εύκολα στη συγγραφή, απασφαλμάτωση, συντήρηση αλλά και τροποποίησή τους Μία μικρή μέθοδος που εκπληρώνει μια ενέργεια είναι ευκολότερο να ελεγχθεί και απασφαλματωθεί από ότι μια μεγαλύτερη μέθοδος που κάνει πολλά πράγματα Αν δεν μπορείτε να επιλέξετε ένα λιτό και περιεκτικό όνομα που να περιγράφει τις ενέργειες μιας μεθόδου, η μέθοδός σας ενδέχεται να κάνει πολλά και διαφορετικά (ασυσχέτιστα) πράγματα Συνίσταται ο τεμαχισμός της μεθόδου αυτής σε περισσότερες δηλώσεις μικρότερων μεθόδων

59 Ανάλυση υπόθεσης Κλάσης Time: Δημιουργία Πακέτων (Packages) Κλάσεις από προϋπάρχουσες βιβλιοθήκες (π.χ. Java API) μπορούν να εισαχθούν σε πρόγραμμα Java Κάθε κλάση στο Java API ανήκει σε ένα πακέτο που περιέχει μία ομάδα σχετικών κλάσεων Τα πακέτα βοηθούν τους προγραμματιστές να χειρίζονται την πολυπλοκότητα των συσταικών εφαρμογών Βοηθούν επίσης την επαναληπτική χρήση λογισμικού επιτρέποντας στα προγράμματα να εισάγουν κλάσεις από άλλα πακέτα

60 Ανάλυση υπόθεσης Κλάσης Time: Δημιουργία Πακέτων (Packages) Για να δηλώσουμε μια επαναχρησιμοποιήσιμη κλάση Δηλώνουμε μια public class (αν δεν είναι public, τότε χρησιμοποιείται μόνο από κλάσεις του πακέτου) Προσθέτουμε μια δήλωση package στο αρχείο πηγαίου κώδικα Πρέπει να είναι η πρώτη εκτελέσιμη εντολή στο αρχείο Σύμβαση: Το όνομα του package θα πρέπει να αποτελείται από Internet domain name σε αντίστροφη σειρά ακολουθούμενο από άλλα ονόματα για το πακέτο Παράδειγμα: com.deitel.jhtp6.ch08 Μόνο δηλώσεις package, import και σχόλια μπoρούν να εμφανίζονται εκτός αγκίστρων δήλωσης κλάσης! Internet domain = deitel.com

61 1 // Fig. 8.18: Time1.java 2 // Time1 class declaration maintains the time in 24-hour format. 3 package com.deitel.jhtp6.ch08; Ανάλυση υπόθεσης Κλάσης Time: Δημιουργία Πακέτων δήλωση package (Packages) 4 5 public class Time1 6 { 7 private int hour; // private int minute; // private int second; // Η κλάση Time1 είναι μια public κλάση, άρα μπορεί να χρησιμοποιηθεί από «εισαγωγείς» αυτού του πακέτου 11 // set a new time value using universal time; perform 12 // validity checks on the data; set invalid values to zero 13 public void settime( int h, int m, int s ) 14 { 15 hour = ((h>=0 && h<24)? h : 0 ); // validate hour 16 minute = ((m>=0 && m<60)? m : 0 ); // validate minute 17 second = ((s>=0 && s<60)? s : 0 ); // validate second 18 } // end method settime 19

62 20 // convert to String in universal-time format (HH:MM:SS) 21 public String touniversalstring() 22 { 23 return String.format("%02d:%02d:%02d,hour,minute,second); Ανάλυση υπόθεσης Κλάσης Time: Δημιουργία Πακέτων (Packages) 24 } // end method touniversalstring // convert to String in standard-time format (H:MM:SS AM or PM) 27 public String tostring() 28 { 29 return String.format( "%d:%02d:%02d %s", 30 ( ( hour == 0 hour == 12 )? 12 : hour % 12 ), 31 minute, second, ( hour < 12? "AM" : "PM" ) ); 32 } // end method tostring 33 } // end class Time1

63 Ανάλυση υπόθεσης Κλάσης Time: Δημιουργία Πακέτων (Packages) Μεταγλωττίζουμε την κλάση ούτως ώστε να τοποθετηθεί στην κατάλληλη δομή καταλόγου πακέτου Παράδειγμα: το πακέτο μας θα πρέπει να μπει στον κατάλογο αρχείων com deitel jhtp6 ch08 javac με όρισμα (command-line option) d Η εντολή javac δημιουργεί κατάλληλους καταλόγους αρχείων βασισμένη στη δήλωση του πακέτου στην κλάση Μια περίοδος (.) μετά από το d αναφέρεται στον τρέχοντα κατάλογο αρχείων javac d. Time1.java για να καθορίσουμε ότι ο πρώτος κατάλογος στο όνομα πακέτου μας πρέπει να τοποθετηθεί στον τρέχοντα κατάλογο

64 Ανάλυση υπόθεσης Κλάσης Time: Δημιουργία Πακέτων (Packages) Εισάγουμε την επαναχρησιμοποιήσιμη κλάση σε ένα πρόγραμμα Απλού-τύπου δήλωση εισαγωγής Εισάγει μια απλή κλάση Παράδειγμα: import java.util.random; Κατ αίτηση δήλωση εισαγωγής Εισάγει όλες τις κλάσεις σε ένα πακέτο Παράδειγμα: import java.util.*;

65 1 // Fig. 8.19: Time1PackageTest.java 2 // Time1 object used in an application. 3 import com.deitel.jhtp6.ch08.time1; // import class Time1 4 5 public class Time1PackageTest 6 { 7 public static void main( String args[] ) 8 { 9 // create and initialize a Time1 object Απλού-τύπου δήλωση εισαγωγής Αναφερόμαστε στην κλάση Time1 απλά με το όνομά της 10 Time1 time = new Time1(); // calls Time1 constructor // output string representations of the time 13 System.out.print( "The initial universal time is: " ); 14 System.out.println( time.touniversalstring() ); 15 System.out.print( "The initial standard time is: " ); 16 System.out.println( time.tostring() ); 17 System.out.println(); // output a blank line 18

66 19 // change time and output updated time 20 time.settime( 13, 27, 6 ); 21 System.out.print("Universal time after settime is: "); 22 System.out.println( time.touniversalstring() ); Ανάλυση υπόθεσης Κλάσης Time: Δημιουργία Πακέτων (Packages) 24 System.out.println( time.tostring() ); 23 System.out.print("Standard time after settime is: ); 25 System.out.println(); // output a blank line // set time with invalid values; output updated time 28 time.settime( 99, 99, 99 ); 29 System.out.println("After attempting invalid settings:"); 30 System.out.print( "Universal time: " ); 31 System.out.println( time.touniversalstring() ); 32 System.out.print( "Standard time: " ); 33 System.out.println( time.tostring() ); 34 } // end main 35 } // end class Time1PackageTest The initial universal time is: 00:00:00 The initial standard time is: 12:00:00 AM Universal time after settime is: 13:27:06 Standard time after settime is: 1:27:06 PM After attempting invalid settings: Universal time: 00:00:00 Standard time: 12:00:00 AM

67 Πρόσβαση Πακέτου Πρόσβαση πακέτου Μέθοδοι και μεταβλητές που δηλώνονται χωρίς τροποποιητικό πρόσβασης (public, protected, private) θεωρούνται ότι έχουν πρόσβαση πακέτων Κάτι τέτοιο δεν έχει νόημα σε προγράμματα που αποτελούνται από μία κλάση Αντιθέτως, αφορά προγράμματα που περιέχουν πολλές κλάσεις από το ίδιο πακέτο Τα μέλη με πρόσβαση πακέτου μπορούν να προσπελαστούν απευθείας μέσω των κατάλληλων αναφορών σε αντικείμενα άλλων κλάσεων που ανήκουν στο ίδιο πακέτο

68 1 // Fig. 8.20: PackageDataTest.java 2 // Package-access members of a class are accessible by other classes 3 // in the same package. 4...Πρόσβαση Πακέτου 5 public class PackageDataTest 6 { 7 public static void main( String args[] ) 8 { 9 PackageData packagedata = new PackageData(); // output String representation of packagedata 12 System.out.printf( "After instantiation:\n%s\n",packagedata); // change package access data in packagedata object 15 packagedata.number = 77; 16 packagedata.string = "Goodbye"; // output String representation of packagedata Απευθείας προσπέλαση στα μέλη με πρόσβαση πακέτου 19 System.out.printf("\nAfter changing values:\n%s\n,packagedata); 20 } // end main 21 } // end class PackageDataTest 22

69 23 // class with package access instance variables 24 class PackageData 25 { 26 int number; // package-access instance variable 27 String string; // package-access instance variable...πρόσβαση Πακέτου // constructor 30 public PackageData() 31 { 32 number = 0; 33 string = "Hello"; 34 } // end PackageData constructor // return PackageData object String representation 37 public String tostring() 38 { 39 return String.format("number: %d; string: %s", number,string); 40 } // end method tostring 41 } // end class PackageData After instantiation: number: 0; string: Hello After changing values: number: 77; string: Goodbye Μεταβλητές στιγμιοτύπου με πρόσβαση πακέτου

70 Πηγές/Acknowledgements H. M. Deitel, P. J. Deitel, Java Προγραμματισμός, 6η έκδοση, Μ. Γκιούρδας, 2006 D. Barnes, M. Kolling, Αντικειμενοστρεφής Προγραμματισμός σε Java, Κλειδάριθμος, 2008 Βασίλης Χριστοφίδης, Αντικειμενοστρεφής Προγραμματισμός, Πανεπιστήμιο Κρήτης Κ. Τσαγκάρης, Εισαγωγή στις εφαρμογές της Java, Πανεπιστήμιο Πειραιώς Jones, Evan, Adam Marcus, and Eugene Wu Introduction to Programming in Java,January IAP (Massachusetts Institute of Technology: MIT OpenCourseWare), (Accessed 10 Mar, 2013). License: Creative Commons BY-NC-SA

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 03/04/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Static πεδία και μέθοδοι Τα περισσότερα δεδομένα

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 3/4/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Γιατί έλεγχος πρόσβασης? Προστασία ιδιωτικής πληροφορίας

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 24/4/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Υπερφόρτωση μεθόδων Υπερφόρτωση μεθόδων Πολλαπλές

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 23/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Υπερφόρτωση μεθόδων Υπερφόρτωση μεθόδων Πολλαπλές

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 16/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Συλλογή απορριμμάτων Συλλογή απορριμμάτων (Garbage

Διαβάστε περισσότερα

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 18/4/216 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Χειρισμός Εξαιρέσεων Εξαίρεση (Exception) ένδειξη

Διαβάστε περισσότερα

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

Διαβάστε περισσότερα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 14/5/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr INTERFACES Μελέτη περίπτωσης: δημιουργία και χρήση

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

Διαβάστε περισσότερα

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07 Συνέχεια για το for: ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07 Nested for-loops (for μέσα σε for): π.χ. int k; for (int i=0; i

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

Διαβάστε περισσότερα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 8 ο Α. Ύλη εργαστηρίου 8.1 Αντικειμενοστραφής προγραμματισμός 8.2 Κλάσεις

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

Διαβάστε περισσότερα

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

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού

5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού 5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού Χειμερινό εξάμηνο 2013 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Αντικειμενοστραφής προγραμματισμός Τάξεις (classes)

Διαβάστε περισσότερα

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εισαγωγή στον Προγ/μό Η/Υ

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Συναρτήσεις - Μεταβλητές ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Συναρτήσεις / Μεταβλητές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 29/5/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Περίληψη επιτρεπτών εκχωρήσεων μεταξύ μεταβλητών

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις

Διαβάστε περισσότερα

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)

Διαβάστε περισσότερα

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

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

4. Εισαγωγή στη Java ΠΠΜ 401 - Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 4. Εισαγωγή στη Java Χειμερινό εξάμηνο 2014 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Εισαγωγή στη γλώσσα προγραμματισμού

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους Σύνοψη των βασικών λειτουργιών

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 6/3/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Βασικό λεξιλόγιο Μία ενότητα κώδικα, ένα πρόγραμμα

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/3/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Δημιουργία αντικειμένων μιας κλάσης Η σύνταξη

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1 HelloWorld Παύλος Εφραιμίδης Java Το πρόγραμμα HelloWorld 1 Το πρόγραμμα HelloWorld.java Σχόλια στη Java /** * The HelloWorld class */ class HelloWorld { public static void main(string[] args) { System.out.println("Hello

Διαβάστε περισσότερα

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

Διαβάστε περισσότερα

API: Applications Programming Interface

API: Applications Programming Interface ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι Μαθήματα από το lab Boolean μεταβλητές: Συνήθως τα ονόματα που δίνουμε στις boolean μεταβλητές περιγράφουν

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java

Διαβάστε περισσότερα

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 8 Πακέτα (Packages) Access

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

Διαβάστε περισσότερα

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Κλάσεις Τροποποιητές, ιασυνδέσεις, Πακέτα Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων Υπάρχουν 4τροποποιητές: default, public, private, protected. Default: εν προηγείται τροποποιητής του ονόµατος

Διαβάστε περισσότερα

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Εκµάθηση αντικειµενοστραφή προγρ/σµού Η εκµάθηση µίας γλώσσας προγραµµατισµού µπορεί να χωρισθεί σε δύο µέρη Εβδοµάδα 6: Η βιβλιοθήκη κλάσεων της Java Εκµάθηση της γλώσσας Σύνταξη, εντολές επιλογής, βρόγχοι,

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors, equals, tostring Αντικείμενα ως παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors, equals, tostring Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, tostring Αντικείμενα ως παράμετροι Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 27/3/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Κλάσεις και Αντικείμενα Εισαγωγή Στατικότητα Κλάσης

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private,

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Βρόγχοι Το if-then Statement Στην Java το if-then statement έχει το εξής συντακτικό Η παρένθεση είναι απαραίτητη if (condition) if-code block

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε

Διαβάστε περισσότερα

Wrapper Classes, Abstract Classes and Interfaces

Wrapper Classes, Abstract Classes and Interfaces Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους

Διαβάστε περισσότερα

Υπολογισμός - Εντολές Ελέγχου

Υπολογισμός - Εντολές Ελέγχου Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Ελέγχου ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 26/2/2008 Τμήμα θεωρίας: Κάθε Τρίτη, 11πμ-2μμ, ΑΜΦ22. Διδάσκων: Ντίνος Φερεντίνος email: kpf3@cornell.edu Μάθημα: Θεωρία + προαιρετικό εργαστήριο (5-6 2ωρα εργαστήρια το εξάμηνο,

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Μαθήματα από τα εργαστήρια ΕΡΓΑΣΤΗΡΙΟ 1 Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο

Διαβάστε περισσότερα

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 2: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

Διαβάστε περισσότερα