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

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

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

Transcript

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

2 Δημιουργία αντικειμένων μιας κλάσης Η σύνταξη για τη δημιουργία ενός νέου αντικειμένου είναι η εξής: new <όνομα-κλάσης> (λίστα-παραμέτρων) Η εντολή έχει ως αποτέλεσμα: τη δημιουργία ενός νέου αντικειμένου της κλάσης που καθορίζεται στην εντολή την εκτέλεση του κατασκευαστή της συγκεκριμένης κλάσης Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

3 Δημιουργία αντικειμένων μιας κλάσης Αν ο κατασκευαστής της κλάσης έχει παραμέτρους τότε στην εντολή new πρέπει να δοθούν οι πραγματικές παράμετροι. Για παράδειγμα, από τον ορισμό του κατασκευαστή της κλάσης Circle προκύπτει ότι αυτός δέχεται μια ακέραια τιμή ως παράμετρο: public Circle(int radius) τυπική παράμετρος Επομένως, στην εντολή new του κατασκευαστή της κλάσης Circle πρέπει να παρέχουμε μια πραγματική παράμετρο τύπου int: πραγματική παράμετρος new Circle(5); Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

4 Γιατί απαιτείται η δημιουργία αντικειμένων μιας κλάσης??? Για παράδειγμα για μια δοσμένη κλάση Cat με ιδιότητα age ΔΕΝ μπορούμε να πούμε: Cat.age = 5; ΑΛΛΑ πρέπει να πούμε: Cat Frisky = new Cat(); // δημιουργία αντικειμένου Cat στο οποίο αναφέρεται Frisky.age = 5; Γιατί??? // η μεταβλητή αναφοράς Frisky τύπου Cat Για να καταλάβουμε το γιατί ας δούμε τα παρακάτω:

5 Γιατί απαιτείται η δημιουργία αντικειμένων μιας κλάσης??? Αν σκεφτούμε τον τύπο των ακεραίων σαν μια κλάση, ΔΕΝ μπορούμε να πούμε: int = 5; ΑΛΛΑ λέμε: int x; x = 5; Πρώτα δηλώνουμε μια μεταβλητή τύπου int και μετά τη χειριζόμαστε Δηλαδή το ίδιο κάνουμε και για τους βασικούς (primitive) τύπους δεδομένων. Δηλώνουμε μεταβλητές του συγκεκριμένου τύπου (τόσες όσες απαιτεί το πρόβλημά μας). Αντίστοιχα, στις κλάσεις δημιουργούμε αντικείμενά τους (με τη χρήση του operator new) και αυτά χειριζόμαστε.

6 Σημείωση... Για να είμαστε ακόμα πιο ακριβείς στις κλάσεις γίνονται δυο ενέργειες: Δηλώνεται μια μεταβλητή (μεταβλητή αναφοράς ή τύπος αναφοράς (reference type)) που έχει ως τύπο τον τύπο της κλάσης και δημιουργείται (με τη χρήση του operator new) αντικείμενο της κλάσης που το «όνομά του» (μπορούμε να πούμε) είναι το όνομα της μεταβλητής που δηλώθηκε. Χρησιμοποιώντας το όνομα αυτής της μεταβλητής χειριζόμαστε το αντικείμενο. Οι δυο αυτές ενέργειες μπορούν να γίνουν με έναν από τους δύο παρακάτω ισοδύναμους τρόπους: Α) Cat Frisky; // μεταβλητή με όνομα Frisky τύπου Cat Frisky = new Cat(); // δημιουργία αντικειμένου τύπου Cat με «όνομα» Frisky Β) Cat Frisky = new Cat(); // δήλωση μεταβλητής Frisky τύπου Cat και // δημιουργία αντικειμένου στο οποίο αναφέρεται Δηλαδή δεν αρκεί όπως στους βασικούς τύπους δεδομένων μόνο η δήλωση, χρειάζεται επιπλέον και η δημιουργία!

7 Σημείωση... Το παρακάτω δεν θα λειτουργήσει Cat Frisky; Frisky.age = 3; Επίσης χωρίς τη δημιουργία αντικειμένων πώς θα χειριζόμασταν την περίπτωση προβλημάτων στα οποία απαιτούνται περισσότερα από ένα αντικείμενα της κλάσης Cat? Σε αντιστοιχία στους ακεραίους λέμε int x; int y; x=4; y=7;

8 Σύγκριση κατασκευαστή με άλλες μεθόδους Σύγκριση ως προς: Constructor Method Μέθοδος Την κλήση Έμμεσα (με τη χρήση του τελεστή new) Άμεσα Τον τύπο που επιστρέφει Κανέναν (ούτε void) πάντα (τουλάχιστον void) Το όνομα Ίδιο με το όνομα της κλάσης Επιλογή του χρήστη

9 Κλήσεις μεθόδων Εσωτερικές κλήσεις μεθόδων Οι μέθοδοι καλούν άλλες μεθόδους της ίδιας κλάσης ως τμήμα της υλοποίησής τους updatedisplay();... private void updatedisplay() Εσωτερική κλήση μεθόδου όνομαμεθόδου (λίστα παραμέτρων) Εξωτερικές κλήσεις μεθόδων Οι μέθοδοι καλούν μεθόδους άλλων αντικειμένων χρησιμοποιώντας την ονομαζόμενη σημειογραφία τελείας minutes.increment(); Εξωτερική κλήση μεθόδου αντικείμενο.όνομαμεθόδου (λίστα παραμέτρων)

10 Δήλωση κλάσης με μέθοδο και δημιουργία αντικειμένου κλάσης Η δήλωση κάθε κλάσης που ξεκινά με τη λέξη-κλειδί public πρέπει να αποθηκεύεται σε ένα αρχείο που έχει το ίδιο όνομα με το όνομα της κλάσης και καταλήγει με την επέκταση αρχείου.java 2005 Pearson Education, Inc. All rights reserved.

11 Στοιχεία ορισμού κλάσης

12 Contract και Implementation μιας κλάσης Contract κλάσης: σύνολο μεθόδων και των συσχετιζόμενων semantics Implementation κλάσης: υλοποίηση των μεθόδων της κλάσης

13 Η κλάση GradeBook Η λέξη-κλειδί public είναι ένα τροποποιητικό πρόσβασης (access modifier) Οι δηλώσεις κλάσης περιλαμβάνουν : Το τροποποιητικό πρόσβασης Τη λέξη-κλειδί class Ζεύγος αριστερής και δεξιάς αγκύλων Δηλώσεις μεθόδων Η λέξη-κλειδί public υποδεικνύει ότι η μέθοδος είναι διαθέσιμη στο κοινό Μπορεί να κληθεί εκτός του σώματος δήλωσης της κλάσης, από μεθόδους άλλων κλάσεων Η λέξη-κλειδί void υποδεικνύει τη μη ύπαρξη τύπου επιστροφής Το τροποποιητικό πρόσβασης, ο τύπος επιστροφής, το όνομα της μεθόδου και οι παρενθέσεις αποτελούν την επικεφαλίδα της μεθόδου 2005 Pearson Education, Inc. All rights reserved.

14 ΠΡΟΣΟΧΗ Η δήλωση περισσοτέρων της μίας public κλάσης στο ίδιο αρχείο είναι σφάλμα μετάφρασης!!! 2005 Pearson Education, Inc. All rights reserved.

15 1 // Fig. 3.1: GradeBook.java 2 // Class declaration with one method. 3 4 public Η κλάση class GradeBook GradeBook 5 { 6 // display a welcome message to the GradeBook user 7 public void displaymessage() 8 { 9 System.out.println( "Welcome to the Grade Book!" ); 10 } // end method displaymessage } // end class GradeBook Δήλωση κλάσης με μία μέθοδο 2005 Pearson Education, Inc. All rights reserved.

16 Η κλάση GradeBookTest Η Java είναι επεκτάσιμη Οι προγραμματιστές μπορούν να δημιουργήσουν καινούριες κλάσεις Έκφραση δημιουργίας στιγμιοτύπου κλάσης (αντικειμένου) Λέξη-κλειδί new Έπειτα το όνομα της κλάσης προς δημιουργία και παρενθέσεις Κλήση μιας μεθόδου Όνομα αντικειμένου, έπειτα ο διαχωριστής τελεία (.) Ακολουθεί το όνομα της μεθόδου και παρενθέσεις Η κλάση GradeBookTest χρησιμοποιείται για να δείξει την κλάση GradeBook 2005 Pearson Education, Inc. All rights reserved.

17 1 // Fig. 3.2: GradeBookTest.java 2 // Create a GradeBook object and call its displaymessage method. 3 Η κλάση 4 public class GradeBookTest 5 { 6 // main method begins program execution 7 public static void main( String args[] ) 8 { 9 // create a GradeBook object and assign it to mygradebook 10 GradeBook mygradebook = new GradeBook(); // call mygradebook's displaymessage method 13 mygradebook.displaymessage(); 14 } // end main } // end class GradeBookTest Welcome to the Grade Book! Αυτές οι δύο εντολές δημιουργούν ένα αντικείμενο και ενεργοποιούν μία μέθοδο Δημιουργίας αντικειμένου της GradeBook Κλήση μεθόδου displaymessage χρησιμοποιώντας το αντικείμενο GradeBook 2005 Pearson Education, Inc. All rights reserved.

18 Μετάφραση πολλαπλών κλάσεων Τοποθετούμε στη σειρά κάθε αρχείο.java ξεχωριστά, διαχωρίζοντάς τα με κενό (space) ή Δηλ. javac GradeBook.java GradeBookTest.java Για να μεταγλωττίζουμε όλα τα αρχεία.java στο φάκελο που βρισκόμαστε Εκτελούμε javac *.java 2005 Pearson Education, Inc. All rights reserved.

19 Δήλωση μιας μεθόδου με μία παράμετρο Τροποποίηση του προηγούμενου προγράμματος Η μέθοδος displaymessage παίρνει ένα όρισμα Χρήση μεθόδων της Scanner Η nextline διαβάζει τη επόμενη γραμμή από την είσοδο Η next διαβάζει τη επόμενη λέξη από την είσοδο 2005 Pearson Education, Inc. All rights reserved.

20 1 // Fig. 3.4: GradeBook.java 2 // Class declaration with a method that has a parameter. 3 4 public class GradeBook 5 { 6 // display a welcome message to the GradeBook user 7 public void displaymessage(string coursename) 8 { 9 System.out.printf("Welcome to the grade book for\n%s!\n", 10 coursename); 11 } // end method displaymessage } // end class GradeBook Κλήση της printf μεθόδου με το όρισμα coursename 2005 Pearson Education, Inc. All rights reserved.

21 1 // Fig. 3.5: GradeBookTest.java 2 // Create GradeBook object and pass a String to 3 // its displaymessage method. 4 import java.util.scanner; // program uses Scanner 5 6 public class GradeBookTest Κλήση μεθόδων 7 { 8 // main method begins program execution 9 public static void main( String args[] ) 10 { 11 // create Scanner to obtain input from command window 12 Scanner input = new Scanner( System.in ); // create a GradeBook object and assign it to mygradebook 15 GradeBook mygradebook = new GradeBook(); // prompt for and input course name 18 System.out.println( "Please enter the course name:" ); 19 String nameofcourse = input.nextline(); // read a line of text 20 System.out.println(); // outputs a blank line // call mygradebook's displaymessage method 23 // and pass nameofcourse as an argument 24 mygradebook.displaymessage(nameofcourse); 25 } // end main } // end class GradeBookTest Κλήση μεθόδου nextline για διάβασμα μιας γραμμής από την είσοδο Κλήση displaymessage με ένα όρισμα 2005 Pearson Education, Inc. All rights reserved.

22 Please enter the course name: CS101 Introduction to Java Programming Welcome to the grade book for CS101 Introduction to Java Programming! 2005 Pearson Education, Inc. All rights reserved.

23 ΠΡΟΣΟΧΗ Σφάλμα μεταγλώττισης όταν κατά την κλήση μεθόδων 1. ο αριθμός ορισμάτων στην κλήση μιας μεθόδου δεν συνάδει με τον αριθμό παραμέτρων στη δήλωση της μεθόδου 2. οι τύποι των ορισμάτων στην κλήση μια μεθόδου δεν συνάδουν με τους τύπους των αντίστοιχων παραμέτρων στη δήλωση της μεθόδου 2005 Pearson Education, Inc. All rights reserved.

24 2005 Pearson Education, Inc. All rights reserved. Παρατηρήσεις To java.lang εισάγεται δυναμικά σε κάθε πρόγραμμα Το «προεπιλεγμένο πακέτο» (Default package) Οι κλάσεις που μεταγλωττίζονται στον ίδιο φάκελο στο δίσκο (π.χ. GradeBook και GradeBookTest) ανήκουν σε ένα λεγόμενο προεπιλεγμένο πακέτο Οι κλάσεις του ίδιου πακέτου εισάγονται εν δυνάμει στον πηγαίο κώδικα όλων των άλλων αρχείων στο φάκελο Επομένως, μια δήλωση import δεν απαιτείται όταν μια κλάση σε ένα πακέτο χρησιμοποιεί μια άλλη στο ίδιο το πακέτο αυτό (όπως π.χ. η GradeBook χρησιμοποιεί τη GradeBookTest) Τα πακέτα είναι αχρείαστα εφόσον χρησιμοποιούνται τα πλήρως προσδιορισμένα ονόματα (fully-qualified names) των κλάσεων Δηλ. Αν γράφαμε java.util.scanner δεν χρειαζόταν η δήλωση import και η γραμμή 12 παραπάνω θα γινόταν java.util.scanner input = new java.util.scanner( System.in );

25 Μεταβλητές στιγμιότυπου/πεδία, Μέθοδοι set και get Οι μεταβλητές που δηλώνονται στο σώμα μιας μεθόδου Ονομάζονται τοπικές μεταβλητές Χρησιμοποιούνται μόνο εντός αυτής της μεθόδου Οι μεταβλητές που δηλώνονται στη δήλωση μιας κλάσης Λέγονται πεδία ή μεταβλητές στιγμιοτύπου Κάθε αντικείμενο της κλάσης έχει διαφορετικό στιγμιότυπο της μεταβλητής 2005 Pearson Education, Inc. All rights reserved.

26 1 // Fig. 3.7: GradeBook.java 2 // GradeBook class that contains a coursename instance variable 3 // and methods to set and get its value. 4 Μεταβλητές στιγμιότυπου, Πεδίο/Μεταβλητή στιγμιοτύπου 5 public class GradeBook coursename 6 { 7 private String coursename; // course name for this GradeBook 8 Μέθοδοι set και get 9 // method to set the course name 10 public void setcoursename( String name ) 11 { 12 coursename = name; // store the course name 13 } // end method setcoursename // method to retrieve the course name 16 public String getcoursename() 17 { 18 return coursename; 19 } // end method getcoursename // display a welcome message to the GradeBook user 22 public void displaymessage() 23 { 24 // this statement calls getcoursename to get the 25 // name of the course this GradeBook represents 26 System.out.printf( "Welcome to the grade book for\n%s!\n", 27 getcoursename() ); Κλήση μεθόδου get 28 } // end method displaymessage } // end class GradeBook Μέθοδος set για την coursename Μέθοδος get για την coursename 2005 Pearson Education, Inc. All rights reserved.

27 Πρόσβαση public και private Λέξη-κλειδί private Χρησιμοποιείται για τις περισσότερες μεταβλητές στιγμιοτύπου/πεδία Οι μεταβλητές και οι μέθοδοι private είναι προσβάσιμες μόνο σε μεθόδους της κλάσης στην οποία δηλώνονται Θυμηθείτε τον όρο Απόκρυψη Πληροφορίας ή Δεδομένων 2005 Pearson Education, Inc. All rights reserved.

28 Public vs. Private Αναπαράσταση δεδομένων Αν η αναπαράσταση δεδομένων είναι public: - Ο κώδικας μπορεί να δημιουργήσει μη κατάλληλες τιμές - Υπάρχων κώδικας μπορεί να μην είναι έγκυρος λόγω αλλαγής αναπαράστασης - Απώλεια απόκρυψης πληροφορίας (Loss of encapsulation) Αν η αναπαράσταση δεδομένων είναι private: + Ο κώδικας ΔΕΝ μπορεί να δημιουργήσει μη κατάλληλες τιμές + Υπάρχων κώδικας ΔΕΝ μπορεί να μην είναι έγκυρος λόγω αλλαγής αναπαράστασης + Ενίσχυση απόκρυψης πληροφορίας (Boosting encapsulation)

29 Παρατηρήσεις Βάζετε πάντα πριν από κάθε δήλωση πεδίου (ιδιότητας) και μεθόδου ένα τροποποιητικό πρόσβασης Ο γενικός κανόνας λέει ότι οι μεταβλητές στιγμιοτύπου/πεδία δηλώνονται ως private και οι οι μέθοδοι δηλώνονται ως public Ωστόσο, όπως θα δούμε, είναι απαραίτητο να δηλώνουμε συγκεκριμένες μεθόδους ως private, αν πρόκειται να προσπελαστούν μόνο από άλλες μεθόδους της ίδιας κλάσης 2005 Pearson Education, Inc. All rights reserved.

30 Παρατηρήσεις Μπορούμε να δηλώσουμε τα πεδία (ιδιότητες) μιας κλάσης οπουδήποτε εντός της κλάσης (όχι βέβαια εντός μιας δήλωσης μεθόδου), αλλά Προτιμούμε να γράφουμε τα πεδία (ιδιότητες) μια κλάσης πρώτα Τοποθετούμε μια κενή γραμμή μεταξύ των δηλώσεων των μεθόδων για καλύτερη αναγνωσιμότητα 2005 Pearson Education, Inc. All rights reserved.

31 2005 Pearson Education, Inc. All rights reserved.... Μέθοδοι set και get Οι μεταβλητές στιγμιοτύπου/πεδία private Δεν μπορούν να προσπελαστούν απευθείας από τους πελάτες του αντικειμένου Πελάτης (client) είναι κάθε κλάση που καλεί τις μεθόδους του αντικειμένου Στο παράδειγμά μας η GradeBookTest είναι πελάτης που δημιουργεί και διαχειρίζεται ένα αντικείμενο GradeBook Χρήση μεθόδων set για τροποποίηση της τιμής των private μεταβλητών στιγμιοτύπου/πεδίων Χρήση μεθόδων get για να πάρουν τις τιμές των private μεταβλητών στιγμιοτύπου/πεδίων Τα ονόματα αυτών των μεθόδων για λήψη/εκχώρηση τιμών δεν είναι απαραίτητο να αρχίζουν με get ή set, αντιστοίχως, ωστόσο η τακτική αυτή ΣΥΝΙΣΤΑΤΑΙ ΘΕΡΜΑ στη JAVA!!!

32 Σημειώσεις για τις μεθόδους Set και Get Μέθοδοι Set Γνωστές και ως μέθοδοι-διαφοροποιητές (mutator methods) Αναθέτουν τιμές στις μεταβλητές στιγμιοτύπου Θα έπρεπε να επικυρώνουν νέες τιμές για τις μεταβλητές στιγμιοτύπου Π.χ. Μπορούν να επιστρέφουν μια τιμή για να υποδείξουν μη έγκυρα δεδομένα Μέθοδοι Get Γνωστές και ως μέθοδοι-πρόσβασης (accessor methods) ή μέθοδοι ερωτημάτων (query methods) Αποκτούν τις τιμές των μεταβλητών στιγμιοτύπου Μπορούν να ελέγχουν τη μορφή των δεδομένων που επιστρέφονται 2005 Pearson Education, Inc. All rights reserved.

33 Παρατήρηση (σχετική με τεχνολογία λογισμικού) Όταν είναι αναγκαίο, παρέχετε public μεθόδους για για την αλλαγή και ανάκτηση των τιμών των private μεταβλητών στιγμιοτύπου. Αυτή η αρχιτεκτονική βοηθά στην απόκρυψη της υλοποίησης της κλάσης από τους πελάτες της, κι αυτό βελτιώνει τη δυνατότητα τροποποίησης του προγράμματος Οι σχεδιαστές κλάσεων δεν χρειάζεται να παρέχουν μεθόδους set και get για κάθε private πεδίο. Αυτές οι δυνατότητες θα έπρεπε να παρέχονται μόνο όταν έχει νόημα 2005 Pearson Education, Inc. All rights reserved.

34 Παρατήρηση (σχετική με τεχνολογία λογισμικού) Οι μέθοδοι που τροποποιούν τις τιμές των private μεταβλητών θα πρέπει να επαληθεύουν ότι οι προοριζόμενες ως νέες τιμές είναι κατάλληλες. Αν δεν είναι, οι μέθοδοι set θα πρέπει να θέτουν τις private μεταβλητές σε μια κατάλληλη, σταθερή κατάσταση με έγκυρα δεδομένα, εντός προκαθορισμένων περιοχών 2005 Pearson Education, Inc. All rights reserved.

35 1 // Fig. 3.8: GradeBookTest.java 2 // Create and manipulate a GradeBook object. 3 import java.util.scanner; // program uses Scanner 4 5 public class GradeBookTest 6 { 7 // main method begins program execution 8 public static void main( String args[] ) 9 { 10 // create Scanner to obtain input from command window 11 Scanner input = new Scanner( System.in ); // create a GradeBook object and assign it to mygradebook 14 GradeBook mygradebook = new GradeBook(); // display initial value of coursename 17 System.out.printf( "Initial course name is: %s\n\n", 18 mygradebook.getcoursename() ); 19 Κλήση της μεθόδου get για την coursename 2005 Pearson Education, Inc. All rights reserved.

36 20 // prompt for and read course name 21 System.out.println( "Please enter the course name:" ); 22 String thename = input.nextline(); // read a line of text 23 mygradebook.setcoursename( thename ); // set the course name 24 System.out.println(); // outputs a blank line // display welcome message after specifying course name 27 mygradebook.displaymessage(); 28 } // end main } // end class GradeBookTest Κλήση της μεθόδου set για την coursename Κλήση της displaymessage Initial course name is: null Please enter the course name: CS101 Introduction to Java Programming Welcome to the grade book for CS101 Introduction to Java Programming! 2005 Pearson Education, Inc. All rights reserved.

37 1 // Fig. 6.11: Scope.java 2 // Scope class demonstrates field and local variable scopes. 3 4 public class Scope 5 { 6 // field that is accessible to all methods of this class 7 private int x = 1; 8 9 // method begin creates and initializes local variable x 10 // and calls methods uselocalvariable and usefield 11 public void begin() 12 { 13 int x = 5; // method's local variable x shadows field x System.out.printf( "local x in method begin is %d\n", x ); 16 Εμβέλεια δηλώσεων!!!! 17 uselocalvariable(); // uselocalvariable has local x 18 usefield(); // usefield uses class Scope's field x 19 uselocalvariable(); // uselocalvariable reinitializes local x 20 usefield(); // class Scope's field x retains its value Pearson Education, Inc. All rights reserved.

38 22 System.out.printf( "\nlocal x in method begin is %d\n", x ); 23 } // end method begin // create and initialize local variable x during each call 26 public void uselocalvariable() 27 { 28 int x = 25; // initialized each time uselocalvariable is called System.out.printf( 31 "\nlocal x on entering method uselocalvariable is %d\n", x ); 32 ++x; // modifies this method's local variable x 33 System.out.printf( 34 "local x before exiting method uselocalvariable is %d\n", x ); 35 } // end method uselocalvariable // modify class Scope's field x during each call 38 public void usefield() 39 { 40 System.out.printf( 41 "\nfield x on entering method usefield is %d\n", x ); 42 x *= 10; // modifies class Scope's field x 43 System.out.printf( 44 "field x before exiting method usefield is %d\n", x ); 45 } // end method usefield 46 } // end class Scope 2005 Pearson Education, Inc. All rights reserved.

39 1 // Fig. 6.12: ScopeTest.java 2 // Application to test class Scope. 3 4 public class ScopeTest 5 { 6 // application starting point 7 public static void main( String args[] ) 8 { 9 Scope testscope = new Scope(); 10 testscope.begin(); 11 } // end main 12 } // end class ScopeTest 2005 Pearson Education, Inc. All rights reserved.

40 1 // Fig. 6.12: ScopeTest.java 2 // Application to test class Scope. 3 4 public class ScopeTest 5 { 6 // application starting point 7 public static void main( String args[] ) 8 { 9 Scope testscope = new Scope(); 10 testscope.begin(); 11 } // end main 12 } // end class ScopeTest local x in method begin is 5 local x on entering method uselocalvariable is 25 local x before exiting method uselocalvariable is 26 field x on entering method usefield is 1 field x before exiting method usefield is 10 local x on entering method uselocalvariable is 25 local x before exiting method uselocalvariable is 26 field x on entering method usefield is 10 field x before exiting method usefield is 100 local x in method begin is Pearson Education, Inc. All rights reserved.

41 Τύποι της Java Primitives vs References Οι πρωταρχικοί (primitive) τύποι είναι οι βασικοί τύποι της java int, long, double, boolean, char, short, byte, float Οι πραγματικές τους τιμές αποθηκεύονται στη μεταβλητή Οι τύποι αναφοράς είναι τα αντικείμενα (objects) Εξ ορισμού τιμή null Χρησιμοποιούνται για την επίκληση των μεθόδων ενός αντικειμένου 2005 Pearson Education, Inc. All rights reserved.

42 Πώς η java αποθηκεύει πρωταρχικούς τύπους? Οι μεταβλητές είναι σαν κούπες σταθερού μεγέθους Οι πρωταρχικοί τύποι είναι αρκετά μικροί για να χωράνε σε μία κούπα

43 Πώς η java αποθηκεύει αντικείμενα? Τα αντικείμενα είναι πολύ μεγάλα για να χωρέσουν σε μία μεταβλητή/κούπα Αποθηκεύονται αλλού Η μεταβλητή αποθηκεύει έναν αριθμό που εντοπίζει το αντικείμενο

44 Πώς η java αποθηκεύει αντικείμενα? Τα αντικείμενα είναι πολύ μεγάλα για να χωρέσουν σε μία μεταβλητή/κούπα Αποθηκεύονται αλλού Η μεταβλητή αποθηκεύει έναν αριθμό που εντοπίζει το αντικείμενο

45 Αναφορές Η τοποθεσία του αντικειμένου ονομάζεται αναφορά (reference) == συγκρίνει αναφορές Baby shiloh1 = new Baby( shiloh ); Baby shiloh2 = new Baby( shiloh ); Είναι shiloh1 == shiloh2?

46 Αναφορές Η τοποθεσία του αντικειμένου ονομάζεται αναφορά (reference) == συγκρίνει αναφορές Baby shiloh1 = new Baby( shiloh ); Baby shiloh2 = new Baby( shiloh ); Είναι shiloh1 == shiloh2?

47 Αναφορές Baby shiloh1 = new Baby( shiloh ); Baby shiloh2 = new Baby( shiloh );

48 Αναφορές Baby mybaby = new Baby( davy, true); mybaby.name = david ;

49 Αναφορές Baby mybaby = new Baby( dave, true); mybaby.name = david ;

50 Αναφορές Χρησιμοποιώντας = ενημερώνεται η αναφορά baby1 = baby2;

51 Αναφορές Χρησιμοποιώντας = ενημερώνεται η αναφορά baby1 = baby2;

52 Αρχικοποίηση αντικειμένων με Κατασκευαστές Κατασκευαστές (Constructors) Αρχικοποιούν το αντικείμενο μιας κλάσης Η Java απαιτεί έναν constructor για κάθε κλάση Αν δεν παρέχεται κάποιος, η Java θα παράξει έναν προεπιλεγμένο (default) constructor χωρίς ορίσματα Καλείται όταν η λέξη-κλειδί new ακολουθείται από το όνομα της κλάσης και τις παρενθέσεις 2005 Pearson Education, Inc. All rights reserved.

53 1 // Fig. 3.10: GradeBook.java 2 // GradeBook class with a constructor to initialize the course name. 3 4 public class GradeBook 5 { 6 private String coursename; // course name for this GradeBook 7 8 // constructor initializes coursename with String supplied as argument 9 public GradeBook( String name ) 10 { 11 coursename = name; // initializes coursename 12 } // end constructor // method to set the course name 15 public void setcoursename( String name ) 16 { 17 coursename = name; // store the course name 18 } // end method setcoursename // method to retrieve the course name 21 public String getcoursename() 22 { 23 return coursename; 24 } // end method getcoursename Ο Constructor εδώ αρχικοποιεί τη μεταβλητή coursename 2005 Pearson Education, Inc. All rights reserved.

54 25 26 // display a welcome message to the GradeBook user 27 public void displaymessage() 28 { 29 // this statement calls getcoursename to get the 30 // name of the course this GradeBook represents 31 System.out.printf( "Welcome to the grade book for\n%s!\n", 32 getcoursename() ); 33 } // end method displaymessage } // end class GradeBook 2005 Pearson Education, Inc. All rights reserved.

55 1 // Fig. 3.11: GradeBookTest.java 2 // GradeBook constructor used to specify the course name at the 3 // time each GradeBook object is created. 4 5 public class GradeBookTest 6 { 7 // main method begins program execution Κλήση constructor για 8 public static void main( String args[] ) δημιουργία ενός πρώτου 9 { αντικειμένου grade book 10 // create GradeBook object 11 GradeBook gradebook1 = new GradeBook( 12 "CS101 Introduction to Java Programming" ); 13 GradeBook gradebook2 = new GradeBook( Δημιουργία δεύτερου 14 "CS102 Data Structures in Java" ); αντικειμένου grade book // display initial value of coursename for each GradeBook 17 System.out.printf( "gradebook1 course name is: %s\n", 18 gradebook1.getcoursename() ); 19 System.out.printf( "gradebook2 course name is: %s\n", 20 gradebook2.getcoursename() ); 21 } // end main } // end class GradeBookTest 2005 Pearson Education, Inc. All rights reserved.

56 gradebook1 course name is: CS101 Introduction to Java Programming gradebook2 course name is: CS102 Data Structures in Java 2005 Pearson Education, Inc. All rights reserved.

57 Αποφυγή λαθών Εκτός και αν είναι αποδεκτή η προεπιλεγμένη αρχικοποίηση των μεταβλητών στιγμιοτύπου/πεδίων της κλάσης σας, καλύτερα Φτιάξτε έναν constructor για να εξασφαλίσετε ότι οι μεταβλητές στιγμιοτύπου της κλάσης σας αρχικοποιούνται με τον κατάλληλο τρόπο με τιμές οι οποίες έχουν νόημα όταν δημιουργείται ένα νέο αντικείμενο της κλάσης σας 2005 Pearson Education, Inc. All rights reserved.

58 Αριθμοί κινητής υποδιαστολής και ο τύπος double Αριθμοί κινητής υποδιαστολής (floating-point numbers) float Απλής-ακρίβειας 7 σημαντικά ψηφία double Αποθηκεύει αριθμούς με μεγαλύτερο μέτρο και ακρίβεια από ό,τι έχουν οι float Διπλής -ακρίβειας 15 σημαντικά ψηφία 2005 Pearson Education, Inc. All rights reserved.

59 1 // Fig. 3.13: Account.java 2 // Account class with a constructor to 3 // initialize instance variable balance. 4 5 public class Account 6 { Η μεταβλητή balance είναι double 7 private double balance; // instance variable that stores the balance 8 9 // constructor 10 public Account( double initialbalance ) 11 { 12 // validate that initialbalance is greater than 0.0; 13 // if it is not, balance is initialized to the default value if ( initialbalance > 0.0 ) 15 balance = initialbalance; 16 } // end Account constructor // credit (add) an amount to the account 19 public void credit( double amount ) 20 { 21 balance = balance + amount; // add amount to balance 22 } // end method credit // return the account balance 25 public double getbalance() 26 { 27 return balance; // gives the value of balance to the calling method 28 } // end method getbalance } // end class Account 2005 Pearson Education, Inc. All rights reserved.

60 Η κλάση AccountTest που χρησιμοποιεί την κλάση Account Ο προσδιοριστής μορφής %f Χρησιμοποιείται για να εξάγει αριθμούς κινητής υποδιαστολής (floating-point numbers) Τοποθετούμε μια υποδιαστολή και έναν αριθμό μεταξύ του συμβόλου % και του f για να υποδείξουμε την ακρίβεια 2005 Pearson Education, Inc. All rights reserved.

61 1 // Fig. 3.14: AccountTest.java 2 // Create and manipulate an Account object. 3 import java.util.scanner; 4 5 public class AccountTest 6 { 7 // main method begins execution of Java application 8 public static void main( String args[] ) 9 { 10 Account account1 = new Account( ); //create Account object 11 Account account2 = new Account( ); //create Account object // display initial balance of each object 14 System.out.printf( "account1 balance: $%.2f\n", 15 account1.getbalance() ); 16 System.out.printf( "account2 balance: $%.2f\n\n", 17 account2.getbalance() ); Pearson Education, Inc. All rights reserved.

62 19 // create Scanner to obtain input from command window 20 Scanner input = new Scanner( System.in ); 21 double depositamount; // deposit amount read from user System.out.print("Enter deposit amount for account1:" ); // prompt 24 depositamount = input.nextdouble(); // obtain user input 25 System.out.printf("\nadding %.2f to account1 balance\n\n" 26, depositamount); 27 account1.credit(depositamount); // add to account1 balance // display balances 30 System.out.printf( "account1 balance: $%.2f\n", 31 account1.getbalance() ); 32 System.out.printf( "account2 balance: $%.2f\n\n", 33 account2.getbalance() ); 34 Εισάγουμε μια τιμή double Εισάγουμε μια τιμή double 35 System.out.print("Enter deposit amount for account2: "); // prompt 36 depositamount = input.nextdouble(); // obtain user input 37 System.out.printf( "\nadding %.2f to account2 balance\n\n", 38 depositamount ); 39 account2.credit( depositamount ); // add to account2 balance Pearson Education, Inc. All rights reserved.

63 41 // display balances 42 System.out.printf( "account1 balance: $%.2f\n", 43 account1.getbalance() ); 44 System.out.printf( "account2 balance: $%.2f\n", 45 account2.getbalance() ); 46 } // end main } // end class AccountTest Εξάγεται μια τιμή double account1 balance: $50.00 account2 balance: $0.00 Enter deposit amount for account1: adding to account1 balance account1 balance: $75.53 account2 balance: $0.00 Enter deposit amount for account2: adding to account2 balance account1 balance: $75.53 account2 balance: $ Pearson Education, Inc. All rights reserved.

64 Περισσότερα για constructors!

65 Παραδείγματα μεθόδων κατασκευαστών & η κλήση τους Δίνεται η κλάση: public class Circle { private double x,y,r; // center s coordinates and radius // no constructors declared for the class // methods public double area() { // circle s area calculation } public double circumference() {// circle s circumference calculation } public String tostring() { return ( Circle with center + x +, + y + and radius + r); } // other methods }

66 1. Δημιουργία αντικειμένων της κλάσης με τον default constructor που καλεί η Java αυτόματα όταν κανένας constructor δεν δηλώνεται στην κλάση. Ο by default constructor είναι ένας constructor χωρίς παραμέτρους και η κλήση του έχει σαν αποτέλεσμα να αρχικοποιηθούν τα πεδία / μεταβλητές στιγμιοτύπου (instance variables) στις by default τιμές ανάλογα με τον τύπο τους (π.χ. για ακεραίους στην τιμή 0, για πραγματικούς στην τιμή 0.0 κοκ). class usecircle { public static void main(string [] args[]) { Circle c1 = new Circle(); // δημιουργία αντικειμένου εφόσον δεν // υπάρχει constructor δηλωμένος // στην κλάση, η Java καλεί τον default // constructor System.out.println(c1.toString()); } } Έξοδος του προγράμματος: Circle with center 0.0,0.0 and radius 0.0

67 2. Δημιουργία αντικειμένων της κλάσης με τον default constructor και αρχικοποίηση των τιμών των πεδίων / instance variables στη δήλωσή τους public class Circle { private double x = 5; private double y = 3; private double r = 7; } class UseCircle { public static void main(string args[]) { Circle c1 = new Circle(); System.out.println(c1.toString());}} Έξοδος του προγράμματος: Circle with center 5.0,3.0 and radius 7.0

68 3. Δημιουργία αντικειμένων της κλάσης με τη χρήση constructor με παραμέτρους, ο οποίος δεν υπάρχει στη δήλωση της κλάσης class UseCircle { public static void main(string args[]) { } } Circle c1 = new Circle(1.0,1.0,5.0); // κλήση constructor με 3 // double παραμέτρους System.out.println(c1.toString()); Compile error: cannot resolve symbol Constructor Circle(double, double, double) Circle c1 = new Circle(1.0,1.0,5.0); ^

69 4. Προστίθεται στην κλάση constructor με παραμέτρους για όλες τις instance variables public class Circle { private double x,y,r; // center s coordinates and radius // constructor with parameters for all instance variables public Circle (double x1, double y1, double r1) { x = x1; y = y1; r = r1;} }

70 4. Προστίθεται στην κλάση constructor με παραμέτρους για όλες τις instance variables public class Circle { private double x,y,r; // center s coordinates and radius // constructor with parameters for all instance variables public Circle (double x, double y, double r) { this.x = x ; this.y = y ; this.r = r ;} } Σημείωση: Με τη λέξη this γίνεται αναφορά στο τρέχον αντικείμενο, δηλ. στο αντικείμενο για το οποίο έχει κληθεί η μέθοδος που περιέχει τη λέξη this. Με την έκφραση this.x εννοούμε την ιδιότητα x του αντικειμένου που δημιουργείται από τον κατασκευαστή. Στην συγκεκριμένη περίπτωση είναι αναγκαία η χρήση του this, για να διαχωριστεί η ιδιότητα x από την παράμετρο x του κατασκευαστή, εφόσον χρησιμοποιήθηκε σαν όνομα παραμέτρου ίδιο όνομα με την ιδιότητα. Αν αυτό δεν συνέβαινε η χρήση του this δεν θα ήταν απαραίτητη, αλλά ούτε και λάθος. Έχουμε 3 πεδία και 3 παραμέτρους! Είναι ανεξάρτητες μεταβλητές παρόλο που μοιράζονται τα ίδια ονόματα. Χρησιμοποιούμε το this για να αναφερθούμε στο πεδίο. Αναθέτουμε την τιμή της παραμέτρου στο πεδίο με το ίδιο όνομα. Χωρίς το this θα αναφερόμασταν στο πιο κοντά στην εντολή ορισμένο (παράμετρος)

71 Η λέξη-κλειδί this Το νέο χαρακτηριστικό της Java που χρησιμοποιείται στο παραπάνω τμήμα κώδικα είναι η λέξη-κλειδί this: this.x = x; Η παραπάνω εντολή αναθέτει την τιμή που υπάρχει δεξιά του τελεστή ανάθεσης (x) στη μεταβλητή που βρίσκεται αριστερά (this.x). Στην εντολή αυτή βλέπουμε ότι χρησιμοποιείται το ίδιο όνομα (x) για δύο διαφορετικές οντότητες, κατάσταση γνωστή ως υπερφόρτωση ονομάτων (name overloading). Συγκεκριμένα, μελετώντας το παραπάνω τμήμα κώδικα διαπιστώνουμε ότι η κλάση περιλαμβάνει τα πεδία x, y και r και ο κατασκευαστής έχει τρεις παραμέτρους με τα ίδια ακριβώς ονόματα. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

72 Η λέξη-κλειδί this Τίθεται λοιπόν το ερώτημα πόσες μεταβλητές υπάρχουν όταν εκτελείται ο κατασκευαστής. Παρόλο που τα 3 πεδία και οι 3 παράμετροι του κατασκευαστή της κλάσης έχουν το ίδιο όνομα, όταν εκτελείται ο κατασκευαστής υπάρχουν 6 μεταβλητές. Το γεγονός δηλαδή ότι ένα πεδίο και μια παράμετρος έχουν το ίδιο όνομα δεν δημιουργεί πρόβλημα στη Java. Το ερώτημα που τίθεται όμως είναι πως θα αναφερθούμε στο πεδίο και την παράμετρο που έχουν το ίδιο όνομα, ή με άλλα λόγια αν χρησιμοποιήσουμε το όνομα μεταβλητής x στον κατασκευαστή ποια μεταβλητή θα χρησιμοποιηθεί η παράμετρος ή το πεδίο; Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

73 Η λέξη-κλειδί this Η Java καθορίζει ότι πάντα χρησιμοποιείται ο ορισμός του πιο «κοντινού» μπλοκ εντολών. Στη συγκεκριμένη περίπτωση, εφόσον η παράμετρος x ορίζεται στον κατασκευαστή και το πεδίο x στην κλάση, η χρήση του ονόματος μεταβλητής x αναφέρεται στην παράμετρο (που ο ορισμός της είναι πιο «κοντά» στην εντολή που χρησιμοποιεί αυτό το όνομα μεταβλητής). Αυτό που χρειαζόμαστε είναι ένας μηχανισμός που θα μας επιτρέψει να προσπελάσουμε το πεδίο x μέσα στον κατασκευαστή. Τη δυνατότητα αυτή μας παρέχει η λέξη-κλειδί this που αναφέρεται στο τρέχον αντικείμενο. Δηλαδή, με την εντολή this.x = x; γίνεται ανάθεση της τιμής της παραμέτρου x στο πεδίο x του τρέχοντος αντικειμένου. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

74 Δημιουργία αντικειμένων της κλάσης με χρήση αυτού του constructor: class UseCircle { public static void main(string args[]) { Circle c1 = new Circle(1.0,1.0,5.0); System.out.println(c1.toString());}} Έξοδος του προγράμματος: Circle with center 1.0,1.0 and radius 5.0 Δημιουργία αντικειμένων της κλάσης με χρήση του default constructor: class UseCircle { public static void main(string args[]) { Circle c1 = new Circle(); System.out.println(c1.toString()); } } Compile error: cannot resolve symbol Constructor Circle() Circle c1 = new Circle(); ^ Αφού έχει δηλωθεί constructor στην κλάση, δεν γίνεται κλήση του default constructor. Μπορεί να κληθεί μόνο ο δηλωμένος constructor, διαφορετικά προκύπτει λάθος μεταγλώττισης!

75 Προεπιλεγμένοι (Default) Κατασκευαστές και Κατασκευαστές χωρίς ορίσματα Κάθε κλάση πρέπει να έχει τουλάχιστον έναν κατασκευαστή Αν δεν δηλωθούν κατασκευαστές, ο compiler θα δημιουργήσει ένα προεπιλεγμένο κατασκευαστή Δεν παίρνει ορίσματα και αρχικοποιεί μεταβλητές στιγμιοτύπου στις αρχικές τους τιμές που προσδιορίζονται στη δήλωσή τους ή στις προεπιλεγμένες τιμές τους Οι προεπιλεγμένες τιμές είναι μηδενικές για πρωταρχικούς (primitive) αριθμητικούς τύπους, false για boolean τιμές και null για αναφορές (references) Αν δηλωθούν κατασκευαστές, η προεπιλεγμένη αρχικοποίηση αντικειμένων της κλάσης θα λάβει χώρα από έναν κατασκευαστή χωρίς ορίσματα (αν έχει δηλωθεί κάποιος) 2005 Pearson Education, Inc. All rights reserved.

76 Συνηθισμένο σφάλμα προγραμματισμού Αν μια κλάση έχει κατασκευαστές, μα κανείς από τους public κατασκευαστές δεν είναι κατασκευαστής χωρίς ορίσματα (no-argument), και ένα πρόγραμμα προσπαθεί να καλέσει έναν no-argument κατασκευαστή για να αρχικοποιήσει ένα αντικείμενο της κλάσης, συμβαίνει compilation error Ένας κατασκευαστής μπορεί να κληθεί χωρίς ορίσματα μόνο όταν η κλάση δεν έχει κάποιον κατασκευαστή (οπότε και καλείται ο προεπιλεγμένος κατασκευαστής) ή όταν η κλάση έχει έναν public κατασκευαστή χωρίς ορίσματα 2005 Pearson Education, Inc. All rights reserved.

77 5. Προστίθεται στην κλάση 2ος constructor με παράμετρο μόνο για την ακτίνα r και αρχικοποίηση των συντεταγμένων του κέντρου στις τιμές 0.0 public class Circle { private double x,y,r; // center s coordinates and radius // constructor with parameter only for radius public Circle (double r) { this.x = 0.0; this.y = 0.0 ; this.r = r ; } }

78 Δημιουργία αντικειμένων της κλάσης με χρήση και των δύο constructors που έχουν δηλωθεί: class UseCircle { public static void main(string args[]) { Circle c1 = new Circle(1.0,1.0,5.0); // κλήση constructor με 3 // παραμέτρους Circle c2 = new Circle(5.0); // κλήση constructor με 1 // παράμετρο System.out.println(c1.toString()); System.out.println(c2.toString());}} Έξοδος του προγράμματος: Circle with center 1.0,1.0 and radius 5.0 Circle with center 0.0,0.0 and radius 5.0

79 6. Δημιουργία αντικειμένων της κλάσης με χρήση ενός constructor με παραμέτρους, ο οποίος δεν έχει δηλωθεί: class UseCircle { public static void main(string args[]) { Circle c1 = new Circle(1.0,1.0); // κλήση constructor με 2 // double παραμέτρους System.out.println(c1.toString()); }} Compile error: cannot resolve symbol Constructor Circle(double, double) Circle c1 = new Circle(1.0,1.0); ^

80 Υπερφόρτωση πολλοί κατασκευαστές Μια κλάση μπορεί να περιλαμβάνει περισσότερους από ένα κατασκευαστές, ή γενικότερα περισσότερες από μία μεθόδους με το ίδιο όνομα, αρκεί κάθε μία από αυτές να έχει διαφορετική λίστα παραμέτρων. Η δυνατότητα αυτή είναι γνωστή ως υπερφόρτωση (overloading). Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

81 Πηγές/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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

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

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

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

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

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

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 3/3/217 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια prentz@unipi.gr ΚΑΤΑΝΟΜΗ Σ ΓΙΑ ΒΑΣΙΚΟΥΣ ΤΥΠΟΥΣ ΔΕΔΟΜΕΝΩΝ (PRIMITIVE

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 12/3/2018 Αναπλ. Καθ. Δρ. Ανδριάνα Πρέντζα Δρ. Βασιλική Κούφη Παράδειγμα 2 Ο Ψευδοκώδικας του προηγούμενου προβλήματος

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

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 5: Κλάσεις και Αντικείμενα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Κλάσεις και Αντικείμενα - Κατασκευή, Πρόσβαση Αντικειμένων - Διαχείριση Μνήμης, Garbage

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 5: Κατασκευαστές (Constructors)

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 5: Κατασκευαστές (Constructors) ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 5: Κατασκευαστές (Constructors) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 5 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων,

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πίνακες στη Java. Αντικειμενοστρεφής Προγραμματισμός 4/4/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη 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.

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

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

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

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

7. Δομές Ελέγχου (Control Statements)

7. Δομές Ελέγχου (Control Statements) 7. Δομές Ελέγχου (Control Statements) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Αλγόριθμοι, δομές ελέγχου και ψευδοκώδικας Δομές ελέγχου στη

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 13/03/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr if statement if (CONDITION) { } STATEMENTS Συνθήκη

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

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

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

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

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

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

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

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

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

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

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

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

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

Το πρόγραμμα 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 υποστηρίζει

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

Αριθμητικοί υπολογισμοί χρησιμοποιούνται σε όλα σχεδόν τα προγράμματα

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

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

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

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

Τύποι δεδομένων, τελεστές, μεταβλητές

Τύποι δεδομένων, τελεστές, μεταβλητές Τύποι δεδομένων, τελεστές, μεταβλητές Βασικά στοιχεία της γλώσσας Η Java χαρακτηρίζεται από ένα αρκετά καλά οργανωμένο σύνολο εντολών κι ένα μέρος της επιτυχίας της οφείλεται στα διάφορα APIs (βιβλιοθήκες)

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

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

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

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

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

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

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

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

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

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

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

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 20: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου 1 Διάλεξη 20: Αναδρομή (Recursion) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Η έννοια της αναδρομής - Μη-αναδρομικός / Αναδρομικός Ορισμός Συναρτήσεων - Παραδείγματα Ανάδρομης - Αφαίρεση

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι Ορισμός κλάσης και αντικειμένων Μία κλάση Κ ορίζεται από

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη 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

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