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

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

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

Transcript

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

2 Εισαγωγή στις Κλάσεις και Αντικείμενα

3 Java's "Building Blocks" Στην Java η μονάδα προγραμματισμού είναι η κλάση από την οποία προκύπτουν στιγμιότυπα (δημιουργούνται) αντικειμένων Ένα πρόγραμμα αποτελείται από μία ή περισσότερες κλάσεις Μία κλάση περιέχει μία ή περισσότερες μεθόδους Μία μέθοδος περιλαμβάνει program statements (εντολές) Οι εντολές (statements) είναι: Δηλώσεις μεταβλητών: πρωταρχικοί τύποι δεδομένων και κλάσεις Λειτουργίες (Operations): αριθμητικές, λογικές Δομές ελέγχου: επιλογή, βρόχοι επαναλήψεων, κλπ. Μηνύματα αντικειμένων: π.χ. κλήσεις σε μεθόδους Μία εφαρμογή Java πάντοτε εκτελεί τη main method

4 Programs: Classes, Methods and Statements

5 Μελέτη του ορισμού μιας κλάσης Ο πηγαίος κώδικας των περισσότερων κλάσεων μπορεί να χωριστεί σε δύο τμήματα: στο εξωτερικό περιτύλιγμα της κλάσης, το οποίο απλά παρέχει ένα όνομα στην κλάση, και στο εσωτερικό τμήμα που υλοποιεί στην ουσία την κλάση, αφού σε αυτό ορίζονται τα πεδία, οι κατασκευαστές και οι μέθοδοι της κλάσης που καθορίζουν τα χαρακτηριστικά και την συμπεριφορά των αντικειμένων της κλάσης. Συγκεκριμένα: τα πεδία χρησιμοποιούνται για την αποθήκευση δεδομένων για κάθε αντικείμενο οι κατασκευαστές καθορίζουν την αρχική κατάσταση ενός αντικειμένου όταν αυτό δημιουργείται οι μέθοδοι υλοποιούν τη συμπεριφορά των αντικειμένων, αφού καθορίζουν τις λειτουργίες που μπορούν να εκτελέσουν. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 5

6 Κλάση ΤicketΜachine Προσομοίωση λειτουργίας μηχανήματος έκδοσης εισιτηρίων Η αρχική έκδοση της κλάσης αυτής προσομοιώνει τη λειτουργία ενός μηχανήματος έκδοσης εισιτηρίων με τις παρακάτω περιορισμένες δυνατότητες: 1. η τιμή των εισιτηρίων (price) που εκδίδει η μηχανή καθορίζεται εξαρχής και δεν μπορεί να αλλάξει μετά την έναρξη λειτουργίας της 2. η μηχανή υπολογίζει το σύνολο των χρημάτων (balance) που εισάγει ο χρήστης μέχρι να ζητήσει την εκτύπωση του εισιτηρίου και εμφανίζει το σύνολο εφόσον το ζητήσει ο χρήστης 3. θεωρούμε ότι ο χρήστης έχει εισάγει το σωστό αντίτιμο, αφού η μηχανή δεν ελέγχει αν τα χρήματα που έχει εισάγει στη μηχανή επαρκούν και δεν επιστρέφει ρέστα 4. η μηχανή υπολογίζει και εμφανίζει το σύνολο των χρημάτων (total) που έχουν συγκεντρωθεί από την έκδοση των εισιτηρίων. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 6

7 Βασική δομή κλάσης public class TicketMachine { } Το εσωτερικό τμήμα της κλάσης παραλείπεται public class ClassName { } Πεδία (Fields) Κατασκευαστές (Constructors) Μέθοδοι (Methods) Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling Εξωτερικό περιτύλιγμα κλάσης: κύριος σκοπός είναι να παρέχει ένα όνομα για την κλάση Τα περιεχόμενα μιας κλάσης: - Πεδία: αποθηκεύουν δεδομένα που θα χρησιμοποιηθούν από τα αντικείμενα - Κατασκευαστές: επιτρέπουν τη σωστή διαμόρφωση κάθε αντικειμένου όταν δημιουργείται για πρώτη φορά - Μέθοδοι: υλοποιούν τη συμπεριφορά των αντικειμένων

8 Source code Πηγαίος κώδικας Κάθε κλάση έχει το δικό της πηγαίο κώδικα (Java code) που συσχετίζεται με αυτήν και καθορίζει τις λεπτομέρειές της (fields-πεδία and methods-μεθόδους). Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

9 Προσδιορισμός Πεδίων (Ιδιοτήτων) και Μεθόδων Κλάσεων Όταν καλούμαστε να προσδιορίσουμε πεδία (ιδιότητες) σε κλάσεις, θα πρέπει να θυμόμαστε ότι: Ιδιότητες είναι ότι περιγράφει την κατάσταση (state) κάθε αντικειμένου της κλάσης και θα πρέπει να μπορούν να παρασταθούν στο λογισμικό με μεταβλητές (variables) διαφόρων τύπων (ακέραιες, πραγματικές, λογικές (boolean) κλπ). ΔΕΝ συμπεριλαμβάνουμε στις ιδιότητες περιττές πληροφορίες, ούτε ιδιότητες που αποτελούν συνάρτηση άλλων. Για τον προσδιορισμό μεθόδων σε κλάσεις, θα πρέπει να θυμόμαστε ότι: Οι μέθοδοι είναι ενέργειες που μπορεί να εκτελέσουν τα αντικείμενα της κλάσης ή μπορούν να εκτελεστούν επί αυτών και στο Λογισμικό παριστάνονται με τμήματα κώδικα που υλοποιούν τις λειτουργίες που απαιτούνται για να γίνουν αυτές οι ενέργειες.

10 Πεδία public class TicketMachine { private int price; private int balance; private int total; // η τιμή των εισιτηρίων που εκδίδει η μηχανή /* το σύνολο των χρημάτων που έχει εισάγει ο χρήστης μέχρι στιγμής */ /* το σύνολο των χρημάτων που έχουν συγκεντρωθεί στη μηχανή */ } η δεσμευμένη λέξη private δηλώνει ότι κάθε ένα από τα παραπάνω πεδία θα είναι προσπελάσιμο μόνο από την κλάση (τον κατασκευαστή και τις μεθόδους) στην οποία δηλώνεται και τα τρία πεδία είναι τύπου int που σημαίνει ότι μπορούν να πάρουν ακέραιες τιμές για την κατανόηση του ρόλου του κάθε πεδίου χρησιμοποιούνται σχόλια (comments). Τα σχόλια που καταλαμβάνουν μία μόνο γραμμή ξεκινάνε με τους χαρακτήρες //, ενώ τα σχόλια που καταλαμβάνουν περισσότερες γραμμές ξεκινάνε με τους χαρακτήρες /* και τελειώνουν με τους */. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

11 Πεδία Τα πεδία αποθηκεύουν δεδομένα για ένα αντικείμενο Τα πεδία λέγονται και μεταβλητές στιγμιοτύπου, αφού μπορεί να αλλάζουν συνεχώς τιμή μέσω της εκτέλεσης των μεθόδων. Τα πεδία ορίζουν την κατάσταση ενός αντικειμένου public class TicketMachine { } private int price; private int balance; private int total; Τα υπόλοιπα παραλείπονται Visibility modifier Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling Type Variable name

12 Μέθοδοι Από τη στιγμή που θα ορίσουμε μια κλάση μπορούμε να δημιουργήσουμε όσα αντικείμενα στιγμιότυπα χρειαζόμαστε για την επίλυση ενός προβλήματος Τα αντικείμενα που θα δημιουργήσουμε προκειμένου να λύσουμε ένα πρόβλημα μπορούμε να τα χειριστούμε εκτελώντας συγκεκριμένες λειτουργίες που περιγράφονται στην κλάση που ανήκουν τα αντικείμενα Οι λειτουργίες αυτές ονομάζονται μέθοδοι (methods) και λέμε ότι μια μέθοδος καλείται ή ενεργοποιείται Όπως είναι φυσικό ένα αντικείμενο ανταποκρίνεται στην ενεργοποίηση μιας μεθόδου εκτελώντας τη λειτουργία που περιγράφει η μέθοδος. Μια μέθοδος μπορεί να χρησιμοποιηθεί προκειμένου να αλλάξουμε την κατάσταση ενός αντικειμένου ή να προσπελάσουμε κάποιες από τις πληροφορίες που περικλείει το αντικείμενο Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

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

14 Μέθοδοι Μέθοδοι που μόνο κάνουν κάτι void installdoubleglazing() Χωρίς να επιστρέφουν κάποια τιμή (void) και χωρίς να απαιτείται επιπλέον πληροφορία (παράμετρος) για την εκτέλεση της μεθόδου myhouse.installdoubleglazing(); Μέθοδοι οι οποίες επιστρέφουν ένα αποτέλεσμα int getnumberofrooms() Επιστρέφει έναν ακέραιο int rooms; Μέθοδοι που απαιτούν παραμέτρους int getroomwidth(int roomno) rooms = myhouse.getnumberofrooms() Επιστρέφει έναν ακέραιο αλλά και απαιτεί και ακέραια παράμετρο int roomonewidth; roomonewidth = myhouse.getroomwidth(1);

15 Μεταβίβαση δεδομένων μέσω παραμέτρων Διαχωρίζουμε τα ονόματα των παραμέτρων μέσα σε ένα κατασκευαστή ή μία μέθοδο από τις τιμές των παραμέτρων έξω από αυτές, αναφερόμενοι στα ονόματα ως τυπικές παράμετροι και στις τιμές ως πραγματικές παράμετροι Η ticketcost είναι μία τυπική παράμετρος, ενώ η τιμή που δίνει ο χρήστης, π.χ 50, είναι πραγματική παράμετρος Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

16 Μέθοδοι - Κατασκευαστές Ένα ιδιαίτερο είδος μεθόδου είναι η μέθοδος που χρησιμοποιούμε για τη δημιουργία ή αλλιώς την αρχικοποίηση (initialization) των αντικειμένων μιας κλάσης Η μέθοδος αυτή καθορίζει την αρχική κατάσταση του νέου αντικειμένου δίνοντας τις κατάλληλες αρχικές τιμές στα πεδία του. Μια τέτοια μέθοδος ονομάζεται κατασκευαστής (constructor) και είναι η μοναδική μέθοδος της κλάσης που έχει το ίδιο όνομα με αυτή. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

17 Κατασκευαστές Οι κατασκευαστές (constructors) μιας κλάσης αρχικοποιούν ένα αντικείμενο όταν δημιουργείται, έτσι ώστε να είναι σε κατάσταση να χρησιμοποιηθεί. Η αρχικοποίηση (initialization) στην ουσία αναφέρεται στην εκχώρηση των κατάλληλων τιμών στα πεδία ενός αντικειμένου και μπορεί να γίνει είτε με την ανάθεση σταθερών τιμών είτε με το πέρασμα τιμών που δίνονται από τον χρήστη κατά την εκτέλεση του προγράμματος. O κατασκευαστής (constructor) είναι η μοναδική μέθοδος της κλάσης που έχει το ίδιο όνομα με αυτή. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

18 Κατασκευαστές Όνομα κατασκευαστή == όνομα κλάσης Δεν έχει τύπο επιστροφής ΠΟΤΕ ΔΕΝ επιστρέφει τίποτα Συνήθως αρχικοποιεί πεδία Όλες οι κλάσεις χρειάζονται τουλάχιστον ένα κατασκευαστή Αν δεν ορίσουμε κάποιον, τότε default CLASSNAME () { }

19 Κατασκευαστές public TicketMachine(int ticketcost) { } price = ticketcost; balance = 0; total = 0; στα πεδία balance και total εκχωρείται η σταθερή τιμή 0, στο πεδίο price δεν μπορεί να εκχωρηθεί μια σταθερή τιμή, αφού η τιμή του εισιτηρίου δίνεται από τον χρήστη όταν δημιουργείται η μηχανή έκδοσης των εισιτηρίων και δεν είναι εκ των προτέρων γνωστή. Γι αυτό το λόγο λοιπόν χρησιμοποιείται η παράμετρος ticketcost που περνάει την τιμή του εισιτηρίου που δίνει ο χρήστης στον κατασκευαστή Παρατηρείστε ότι ο κατασκευαστής έχει το ίδιο όνομα με την κλάση! Οι κατασκευαστές αποτελούν τη μοναδική περίπτωση μεθόδων που έχουν το ίδιο όνομα με την κλάση στην οποία ορίζονται. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

20 Κατασκευαστές Σε μια κλάση είναι δυνατόν να υπάρχουν περισσότεροι του ενός κατασκευαστές. Για παράδειγμα, στην κλάση TicketMachine εκτός από τον κατασκευαστή που περιγράψαμε παραπάνω, στον οποίο η τιμή του εισιτηρίου δίνεται από τον χρήστη, μπορούμε να ορίσουμε και ένα δεύτερο κατασκευαστή που θα δημιουργεί μηχανές έκδοσης εισιτηρίων με προκαθορισμένη τιμή εισιτηρίου (που θα εκχωρείται στο σώμα του κατασκευαστή στο πεδίο price). Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

21 Κατασκευαστές Οι κατασκευαστές μιας κλάσης αρχικοποιούν ένα αντικείμενο Έχουν το ίδιο όνομα με την κλάση στην οποία ορίζονται Αποθηκεύουν αρχικές τιμές στα πεδία Συχνά δέχονται τιμές παραμέτρου εξωτερικά για την αποθήκευση τιμών στα πεδία -> price public class TicketMachine { } Τα πεδία παραλείπονται public TicketMachine(int ticketcost) { } price = ticketcost; balance = 0; total = 0; Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

22 Η κατάσταση ενός αντικειμένου Πεδία Το σύνολο των τιμών όλων των χαρακτηριστικών ενός αντικειμένου (όπως για παράδειγμα για τον κύκλο η διάμετρος, οι συντεταγμένες του κ.τ.λ.) καθορίζουν την κατάσταση (state) του αντικειμένου Για την αναπαράσταση της κατάστασης ενός αντικειμένου αποθηκεύονται οι τιμές των χαρακτηριστικών του σε μεταβλητές, οι οποίες ονομάζονται πεδία (fields) Η αλλαγή της κατάστασης ενός αντικειμένου (ή αλλιώς η αλλαγή των τιμών ενός ή περισσότερων πεδίων) ή η προσπέλαση κάποιων από τις πληροφορίες που περικλείει το αντικείμενο πραγματοποιείται ενεργοποιώντας τις κατάλληλες μεθόδους Παρατήρηση Όλα τα αντικείμενα/στιγμιότυπα μιας συγκεκριμένης κλάσης έχουν τον ίδιο αριθμό, τύπο και ονόματα πεδίων και φυσικά και τις ίδιες μεθόδους. Ωστόσο, οι τιμές των πεδίων και συνεπώς η κατάσταση των στιγμιοτύπων μιας κλάσης μπορεί να διαφέρει Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

23 Αντικείμενο Τα αντικείμενα της ίδιας κλάσης έχουν όλα τα ίδια πεδία Ο αριθμός, ο τύπος και τα ονόματα των πεδίων είναι ίδια, ενώ η πραγματική τιμή ενός συγκεκριμένου πεδίου σε κάθε αντικείμενο μπορεί να είναι διαφορετική Τα αντικείμενα διαφορετικής κλάσης μπορεί να έχουν διαφορετικά πεδία Ο αριθμός, ο τύπος και τα ονόματα των πεδίων ορίζονται στην κλάση και όχι σε ένα αντικείμενο! Κλάση TicketMachine: ορίζει ότι κάθε αντικείμενοκύκλος θα έχει τρία πεδία με ονόματα price (τύπου int), balance (τύπου int), total (τύπου int)

24 Αλληλεπίδραση αντικειμένων Σε ένα πρόγραμμα σε Java υπάρχουν πολλά αντικείμενα Είναι δυνατόν τα αντικείμενα αυτά να μην δημιουργούνται πάντα από το χρήστη με ξεχωριστές εντολές, δηλαδή, δημιουργείται το 1ο αντικείμενο (ή ένας αριθμός αντικειμένων) και όλα τα υπόλοιπα αντικείμενα δημιουργούνται άμεσα ή έμμεσα από το αντικείμενο αυτό Ένα αντικείμενο λοιπόν μπορεί να δημιουργεί άλλα αντικείμενα, με τα οποία επικοινωνεί καλώντας τις μεθόδους τους Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

25 Κλήση μεθόδων Για να καλέσουμε μία μέθοδο: Γράφουμε το όνομα του αντικειμένου, στη συνέχεια τελεία, και στη συνέχεια το όνομα της μεθόδου Circle1.makeVisible(); Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

26 Μέθοδοι με παραμέτρους Κάποιες μέθοδοι απαιτούν την παροχή επιπλέον πληροφοριών για την εκτέλεση της λειτουργίας που αντιπροσωπεύουν Για την παροχή των επιπλέον πληροφοριών χρησιμοποιούμε παραμέτρους (parameters). Κάθε παράμετρος μιας μεθόδου έχει ένα συγκεκριμένο τύπο δεδομένων (data type) που καθορίζει τι είδους τιμές μπορεί να πάρει η παράμετρος και ένα όνομα (name) που φανερώνει τι αντιπροσωπεύει η πληροφορία/τιμή που έχει η συγκεκριμένη παράμετρος Οι παράμετροι μιας μεθόδου δηλώνονται στην επικεφαλίδα της, η οποία περιλαμβάνει όλες τις απαραίτητες πληροφορίες για την ενεργοποίησή της και ονομάζεται υπογραφή (signature) της μεθόδου Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

27 Τύποι δεδομένων Ο τύπος μιας παραμέτρου καθορίζει τα είδη των δεδομένων που μπορούν να μεταβιβαστούν σε μία παράμετρο int: ακέραιος αριθμός String: αναμένεται τμήμα κειμένου. Τα αλφαριθμητικά περικλείονται πάντα μέσα σε διπλά εισαγωγικά boolean: Truth value (true or false) double: Real number (3.14, 1.0, -2.1)

28 Πηγαίος κώδικας Σε κάθε κλάση αντιστοιχεί και ο αντίστοιχος πηγαίος κώδικας. Ο πηγαίος κώδικας μιας κλάσης καθορίζει τη δομή και τη συμπεριφορά, δηλαδή τα πεδία και τις μεθόδους, των αντικειμένων της κλάσης. Η γενική μορφή μιας κλάσης είναι η εξής: public class <όνομα_κλάσης> { πεδία (fields) κατασκευαστές (constructors) } μέθοδοι (methods) Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 28

29 Εμφάνιση του πηγαίου κώδικα μιας κλάσης public class Circle { private int diameter; private int xposition; private int yposition; Τα πεδία της κλάσης Circle private String color; private boolean isvisible; /** * Δημιουργία ενός νέου κύκλου στην προκαθορισμένη θέση και * με το προκαθορισμένο χρώμα. */ public Circle() { } diameter = 30; xposition = 20; yposition = 60; color = "blue"; isvisible = false; Κατασκευαστής για την αρχικοποίηση του νέου κύκλου Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 29

30 Εμφάνιση του πηγαίου κώδικα μιας κλάσης /** * Εμφάνιση του κύκλου, αν δεν είναι ήδη ορατός. */ public void makevisible() { } isvisible = true; draw(); Από την υπογραφή της μεθόδου makevisible() προκύπτει ότι η μέθοδος: 1) δεν έχει καμία παράμετρο 2) δεν επιστρέφει καμία τιμή... } /** * Αλλαγή χρώματος. Τα αποδεκτά χρώματα είναι "red", "yellow", "blue", * "green", "magenta" και "black". */ public void changecolor(string newcolor) { } color = newcolor; draw(); Μέθοδος για την αλλαγή του χρώματος του κύκλου. Παράμετρος με όνομα newcolor, τύπου String για το «πέρασμα» του νέου χρώματος στη μέθοδο Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 30

31 Μέθοδοι που επιστρέφουν τιμές Μέθοδοι με παραμέτρους αντικείμενα Στα προηγούμενα παραδείγματα παρουσιάσαμε μεθόδους χωρίς παραμέτρους ή με παραμέτρους τύπου int και String, οι οποίες δεν επέστρεφαν καμία τιμή. Ωστόσο, υπάρχουν και μέθοδοι που έχουν ως παραμέτρους ένα ή περισσότερα αντικείμενα, καθώς επίσης και μέθοδοι που η εκτέλεσή τους έχει ως αποτέλεσμα την επιστροφή κάποιας τιμής ο τύπος της οποίας δηλώνεται στην επικεφαλίδα/υπογραφή της Όλες αυτές οι πληροφορίες παρέχονται από την υπογραφή της μεθόδου, όπως θα δούμε στη συνέχεια Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας

32 Μέθοδοι που επιστρέφουν τιμές Μέθοδοι με παραμέτρους αντικείμενα public class Student { private String name; private String id; private int credits; // το πλήρες όνομα του σπουδαστή // ο κωδικός του σπουδαστή // η βαθμολογία του σπουδαστή } /** * Δημιουργία σπουδαστή με όνομα και κωδικό που δίνει ο χρήστης. */ public Student(String fullname, String studentid) { } /** name = fullname; id = studentid; credits = 0; * Επιστροφή του ονόματος του σπουδαστή. */ public String getname() { Η μέθοδος επιστρέφει μια τιμή τύπου String, δηλαδή ένα αλφαριθμητικό. Αν μια μέθοδος δεν επιστρέφει καμία τιμή return name; χρησιμοποιείται το void. } Η τιμή που επιστρέφεται από τη μέθοδο καθορίζεται με την εντολή return. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 32

33 Μέθοδοι που επιστρέφουν τιμές Μέθοδοι με παραμέτρους αντικείμενα public class LabClass { private String instructor; private String room; private String timeandday; private List students; private int capacity; } /** * Προσθήκη φοιτητή στο εργαστήριο */ public void enrolstudent(student newstudent) { } if(students.size() == capacity) { } else { } System.out.println("The class is full, you cannot enrol."); students.add(newstudent); Η παράμετρος της μεθόδου είναι ένα αντικείμενο - σπουδαστής. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 33

34 Άρα... Τα αντικείμενα έχουν μεθόδους που χρησιμοποιούμε για να επικοινωνήσουμε με αυτά Μπορούμε να χρησιμοποιήσουμε μία μέθοδο για να κάνουμε μία αλλαγή σε ένα αντικείμενο ή να πάρουμε πληροφορίες από αυτό Οι μέθοδοι μπορούν να έχουν παραμέτρους, και οι παράμετροι έχουν τύπους Οι μέθοδοι έχουν τύπους επιστροφής που καθορίζουν τον τύπο των δεδομένων που επιστρέφονται Αν ο τύπος είναι void τότε δεν επιστρέφουν τίποτα Τα αντικείμενα αποθηκεύουν τα δεδομένα σε πεδία (που έχουν τύπους) -> Κατάσταση αντικειμένου

35 ... Τα αντικείμενα δημιουργούνται από ορισμούς κλάσεων που έχουν γραφτεί σε συγκεκριμένη γλώσσα προγραμματισμού, π.χ Java Για να μάθουμε να αναπτύσσουμε προγράμματα σε Java, πρέπει να μάθουμε πώς να γράφουμε ορισμούς κλάσεων, συμπεριλαμβανομένων πεδίων και μεθόδων, και πώς να συνδυάζουμε αυτές τις κλάσεις σωστά

36 Εμβέλεια μεταβλητής Η εμβέλεια μιας μεταβλητής καθορίζει το τμήμα του πηγαίου κώδικα από όπου μπορεί να προσπελαστεί η μεταβλητή Μία τυπική παράμετρος είναι διαθέσιμη σε ένα αντικείμενο μόνο μέσα στο σώμα του κατασκευαστή ή της μεθόδου που τη δηλώνει Λέμε ότι η εμβέλεια μιας παραμέτρου περιορίζεται στο σώμα του κατασκευαστή ή της μεθόδου όπου δηλώνεται Αντίθετα, η εμβέλεια ενός πεδίου επεκτείνεται σε όλο τον ορισμό της κλάσης μπορεί να προσπελαστεί από οποιοδήποτε αντικείμενο μέσα στην ίδια κλάση Γενικότερα, η εμβέλεια (scope) μιας μεταβλητής καθορίζει το τμήμα του πηγαίου κώδικα από το οποίο η μεταβλητή είναι προσπελάσιμη.

37 Πώς γράφουμε τη refundbalance? Επιστρόφή χρημάτων public int refundbalance() { } int amounttorefund; amounttorefund = balance; balance = 0; return amounttorefund; Τι είδους μεταβλητή είναι η amounttorefund? Πεδίο? ΟΧΙ τα πεδία ορίζονται έξω από τις μεθόδους Παράμετρος? ΟΧΙ οι παράμετροι ορίζονται στην επικεφαλίδα της μεθόδου

38 Πώς γράφουμε τη refundbalance? Η amounttorefund είναι τοπική μεταβλητή Μεταβλητές που δηλώνονται και χρησιμοποιούνται μέσα σε μία μέθοδο Δημιουργούνται όταν καλείται η μέθοδος και καταστρέφονται όταν η μέθοδος ολοκληρώνεται Η εμβέλεια και η διάρκεια ζωής τους περιορίζονται σε εκείνες της μεθόδου Συνηθισμένο η αρχικοποίηση να γίνεται κατά τη δήλωση int amounttorefund = balance; Οι δηλώσεις τοπικών μεταβλητών ποτέ δεν περιέχουν τη λέξη private ή public ΠΡΟΣΟΧΗ: Μία τοπική μεταβλητή που έχει το ίδιο όνομα με ένα πεδίο δεν επιτρέπει την προσπέλαση του πεδίου μέσα στη μέθοδο

39 Γιατί τοπική μεταβλητή? Tι θα γινόταν με τα παρακάτω? public int refundbalance() { balance = 0; return balance; } public int refundbalance() { } return balance; balance = 0; Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

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

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

42 Πεδία, παράμετροι και τοπικές μεταβλητές Οι τυπικές παράμετροι ορίζονται στην επικεφαλίδα ενός κατασκευαστή ή μιας μεθόδου λαμβάνουν τις τιμές απέξω, παίρνοντας αρχικές τιμές από τις τιμές των πραγματικών παραμέτρων που αποτελούν τμήμα της κλήσης η εμβέλειά τους περιορίζεται στον κατασκευαστή ή τη μέθοδο που τους ορίζει Οι τοπικές μεταβλητές ορίζονται μέσα στο σώμα ενός κατασκευαστή ή μιας μεθόδου αρχικοποιούνται και χρησιμοποιούνται μόνο μέσα στο σώμα του κατασκευαστή ή της μεθόδου που ορίζονται πρέπει να αρχικοποιούνται πριν χρησιμοποιηθούν σε μία παράσταση δεν τους δίνεται προκαθορισμένη τιμή η εμβέλειά τους περιορίζεται στο μπλοκ ορισμού τους

43 Ανάθεση Η μικρής διάρκειας ζωής τιμή μιας παραμέτρου αποθηκεύεται σε ένα πεδίο με την εντολή ανάθεσης: variable = expression (παράσταση); price = ticketcost; Ο τύπος της παράστασης πρέπει να συμφωνεί με τον τύπο της μεταβλητής στην οποία ανατίθεται Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

44 Μέθοδοι public <τύπος-επιστρ/νης-τιμής ή void> <όνομα-μεθόδου> ( λίστα-παραμέτρων ) { δηλώσεις } εντολές Σε όποια κατηγορία και να ανήκει μία μέθοδος αποτελείται από δύο τμήματα: την επικεφαλίδα (header) ή αλλιώς την υπογραφή (signature) της μεθόδου στην οποία παρέχονται οι εξής πληροφορίες: το όνομα της μεθόδου, αν επιστρέφει ή όχι κάποια τιμή και ποιες είναι οι παράμετροί της (εφόσον υπάρχουν). public int getprice() είναι μέθοδος και όχι πεδίο γιατί ακολουθείται από ζεύγος παρενθέσεων. Στο τέλος της υπογραφής δεν υπάρχει ; H getprice Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 44

45 Μέθοδοι Αν η μέθοδος δεν επιστρέφει καμία τιμή αυτό δηλώνεται με τη λέξη void ενώ αν επιστρέφει δηλώνεται ο τύπος της (π.χ. int, boolean) πριν το όνομα της μεθόδου. Το όνομα και ο τύπος των παραμέτρων δηλώνεται μετά το όνομα της μεθόδου μέσα σε παρενθέσεις. Οι παρενθέσεις ( ) είναι απαραίτητες ακόμα και αν η μέθοδος δεν έχει καμία παράμετρο. το σώμα (body) της μεθόδου που περιλαμβάνει δηλώσεις και εντολές και καθορίζει τι συμβαίνει σε ένα αντικείμενο όταν καλείται η μέθοδος. Το σώμα της μεθόδου περικλείεται σε αγκύλες { }. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 45

46 Μέθοδοι Οι μέθοδοι υλοποιούν τις λειτουργίες που μπορούν να εκτελέσουν τα αντικείμενα μιας κλάσης, ή αλλιώς περιγράφουν τον τρόπο με τον οποίο ένα αντικείμενο εκτελεί μια λειτουργία. Οι μέθοδοι μπορούν να χωριστούν σε δύο κατηγορίες: Μεθόδους πρόσβασης (accessors): πρόκειται για μεθόδους που προσπελάζουν τα πεδία ενός αντικειμένου και επιστρέφουν ή εμφανίζουν πληροφορίες για την κατάστασή του Μεθόδους μετάλλαξης (mutators): πρόκειται για μεθόδους που αλλάζουν την κατάσταση ενός αντικειμένου, αλλάζουν δηλαδή τις τιμές ενός ή περισσότερων πεδίων. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 46

47 Μέθοδοι πρόσβασης (Accessors) Οι μέθοδοι αυτής της κατηγορίας επιστρέφουν κάποια τιμή αφού ολοκληρωθεί η εκτέλεσή τους - στο σημείο από όπου έγινε η κλήση τους. Αυτό επιτυγχάνεται συνήθως με την εντολή return. Βέβαια, αυτό δεν είναι κανόνας, αφού και μια μέθοδος που απλά τυπώνει πληροφορίες για την κατάσταση ενός αντικειμένου χαρακτηρίζεται ως μέθοδος πρόσβασης. Ξυνόγαλος Στέλιος, Αντικειμενοστραφής Σχεδίαση & Προγραμματισμός, Τμήμα Διοίκησης Τεχνολογίας 47

48 Μέθοδοι πρόσβασης Visibility modifier Method name Return type public int getprice() { return price; } Parameter list (empty) Return statement: επιστρέφει τιμή που συμφωνεί με τον επιστρεφόμενο τύπο στην υπογραφή της μεθόδου Start and end of method body (block) Όταν μία μέθοδος περιλαμβάνει εντολή επιστροφής τιμής, αυτή είναι πάντα η τελευταία εντολή αυτής της μεθόδου Ακόμα δηλαδή και στην περίπτωση που μετά από μια εντολή return υπάρχουν και άλλες εντολές, αυτές δεν πρόκειται ποτέ να εκτελεστούν. Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

49 Μέθοδοι πρόσβασης Υπάρχουν τουλάχιστον δύο σημαντικές διαφορές ανάμεσα στις υπογραφές του κατασκευαστή TicketMachine και της μεθόδου getprice: public TicketMachine(int ticketcost) public int getprice() Η μέθοδος έχει έναν επιστρεφόμενο τύπο (return type), ενώ ο κατασκευαστής δεν έχει επιστρεφόμενο τύπο. Ο επιστρεφόμενος τύπος γράφεται ακριβώς πριν το όνομα της μεθόδου Ο κατασκευαστής έχει μία τυπική παράμετρο, ticketcost, ενώ η μέθοδος καμία μόνο ένα ζεύγος κενών παρενθέσεων Ένας κατασκευαστής δεν μπορεί να έχει επιστρεφόμενο τύπο. Αντίθετα, τόσο οι κατασκευαστές όσο και οι μέθοδοι μπορούν να έχουν οποιοδήποτε αριθμό τυπικών παραμέτρων ή και καμία

50 Μέθοδοι μετάλλαξης Οι μέθοδοι μετάλλαξης αλλάζουν την κατάσταση ενός αντικειμένου! Έχουν παρόμοια δομή με επικεφαλίδα και σώμα Η αλλαγή της κατάστασης πετυχαίνεται με την αλλαγή της τιμής ενός ή περισσοτέρων πεδίων Τυπικά περιέχει εντολές ανάθεσης Τυπικά λαμβάνει παραμέτρους Μια άμεση συνέπεια αυτού του γεγονότος έγκειται στο γεγονός ότι ένα αντικείμενο μπορεί να παρουσιάσει διαφορετική συμπεριφορά πριν και μετά την εκτέλεση μιας μεθόδου. Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

51 Μέθοδοι μετάλλαξης Visibility modifier Method name Return type Parameter public void insertmoney(int amount) { } balance = balance + amount; Field being mutated Assignment statement: επιστρέφει τιμή που συμφωνεί με τον επιστρεφόμενο τύπο στην υπογραφή της μεθόδου Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

52 Βρείτε τα λάθη... public class CokeMachine { private price; public CokeMachine() { price = 300 } public int getprice { return Price; } Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

53 Βρείτε τα λάθη... public class CokeMachine { private int price; public CokeMachine() { price = 300; } public int getprice() { return Price; } } Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

54 Βρείτε τα λάθη... public void getage() { return age; }

55 Βρείτε τα λάθη... public void int getage() { return age; }

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

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

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

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

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

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

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

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

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

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

66 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.

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

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

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

70 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.

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

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

73 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.

74 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.

75 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.

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

77 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 );

78 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.

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

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

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

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

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

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

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

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

87 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.

88 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.

89 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.

90 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.

91 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.

92 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 Οι πρωταρχικοί

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις, Αντικείμενα και η Σύνταξη της Java Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα τοποθετούνται

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

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

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

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

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

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

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

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

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

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

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

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

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

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

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

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

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

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

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

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

Pascal. 15 Νοεμβρίου 2011

Pascal. 15 Νοεμβρίου 2011 Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη

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

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

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

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