Περιεχόμενα. Πρόλογος 11

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

Download "Περιεχόμενα. Πρόλογος 11"

Transcript

1

2

3 Περιεχόμενα Πρόλογος 11 1 Εισαγωγή Πριν από την ανάγνωση αυτού του βιβλίου Μια θεώρηση του υπολογιστή Εφαρμογές και μικροεφαρμογές Java JavaScript και JSP Η δομή του παρόντος βιβλίου Ένα μικρό δείγμα προγράμματος Παραδείγματα με μικροεφαρμογές Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού 43 2 Μεταβλητές, τύποι δεδομένων, και παραστάσεις Παράδειγμα Δεδομένα και μεταβλητές Αλγόριθμοι, σφάλματα προγραμματισμού, και δεδομένα ελέγχου Εντολές, μπλοκ κώδικα, και ονόματα Μεταβλητές και σταθερές Τύποι δεδομένων Αναθέσεις και αριθμητικές παραστάσεις Μετατροπή τύπων Υπολογισμοί για τις εργασίες ανακαίνισης Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού 77 3 Χρήση έτοιμων κλάσεων Τα αντικείμενα ως μοντέλα της πραγματικότητας Χρήση έτοιμων κλάσεων Η κλάση Random Η κλάση String Οργάνωση κλάσεων σε πακέτα Μέθοδοι κλάσης και σταθερές κλάσης στη βιβλιοθήκη Java Ανάγνωση δεδομένων από το χρήστη Νέες έννοιες σε αυτό το κεφάλαιο 108

4 6 Περιεχόμενα 3.9 Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Κατασκευή των δικών σας κλάσεων Δημιουργία κλάσεων Προγραμματισμός κλάσης Τροποποιητές πρόσβασης ιδιωτικοί και δημόσιοι Περιεχόμενα μιας κλάσης Άλλη μια κλάση και μερικοί νέοι τελεστές Εισαγωγή στις μικροεφαρμογές Εισαγωγή στα γραφικά Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Η επιλογή ως δομή ελέγχου Μια απλή αριθμομηχανή Η επιλογή είναι μια δομή ελέγχου Μπλοκ κώδικα μέσα σε μεθόδους Η εντολή if Ένθετες if και εντολές πολλαπλής επιλογής Λογικές παραστάσεις Η εντολή πολλαπλής επιλογής switch Σύγκριση υπολογιζόμενων δεκαδικών αριθμών Ο τελεστής συνθήκης? Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Οι βρόχοι ως δομές ελέγχου Βρόχοι ελεγχόμενοι από μετρητές Βρόχος με γενική συνθήκη Ένα παράδειγμα με γραφικά Η εντολή for Ένθετες δομές ελέγχου Η εντολή do-while Επιλογή της σωστής εντολής βρόχου Έλεγχος των δεδομένων εισόδου Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Συνεργασία μεταξύ αντικειμένων Παραδείγματα συνεργασίας μεταξύ αντικειμένων Ένα πρόγραμμα οδηγούμενο από μενού Πολλές αναφορές στο ίδιο αντικείμενο Σύνοψη: Mεταβίβαση ορισμάτων Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού 245

5 Περιεχόμενα 7 8 Βιβλιοθήκες Java και χειρισμός εξαιρέσεων Η ηλεκτρονική τεκμηρίωση της διασύνδεσης ρογραμματισμού εφαρμογών (API) Δημιουργία των δικών σας βιβλιοθηκών Τοπική προσαρμογή Ήχοι και εικόνες Εισαγωγή στο χειρισμό των εξαιρέσεων Λεπτομέρειες για το χειρισμό των εξαιρέσεων Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Πίνακες στοιχειωδών τύπων δεδομένων Τι είναι ένας πίνακας; Αντιγραφή πινάκων Η κλάση Month για τα δεδομένα της βροχόπτωσης Ταξινόμηση Αναζήτηση Η κλάση java.util.arrays Διδιάστατοι πίνακες Περισσότερες από δύο διαστάσεις Πίνακες πολλών διαστάσεων και αντικειμενοστρεφής προγραμματισμός Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Πίνακες τύπων αναφοράς και λίστες πίνακα Ένας πίνακας τύπου αναφοράς Λίστες πίνακα Κλάσεις περιτύλιξης Integer, Double, κ.ο.κ Οι μέθοδοι equals() και tostring() Συσχετίσεις Ένα μεγαλύτερο παράδειγμα Οι διασυνδέσεις Comparable και Comparator Ταξινόμηση πινάκων και λιστών πίνακα Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Χρήση αρχείων και ρευμάτων δεδομένων Αρχεία και ρεύματα δεδομένων Ένα παράδειγμα αρχείου δεδομένων Ανάγνωση κειμένου από ένα αρχείο Εγγραφή κειμένου σε αρχείο Αρχεία δεδομένων: σύνοψη και περιγραφές κλάσεων Ανάγνωση αριθμών από ένα αρχείο δεδομένων Επικοινωνία με την κονσόλα Δυαδική μεταφορά δεδομένων Τυχαία προσπέλαση των περιεχομένων ενός αρχείου Σειριοποίηση Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης 390

6 8 Περιεχόμενα Προβλήματα προγραμματισμού Κληρονομικότητα και πολυμορφισμός Γενίκευση και ειδίκευση Κληρονομικότητα Η κλάση Material με τις υποκλάσεις της Χειρισμός των στιγμιοτύπων των υποκλάσεων ως συνόλου Η περίπτωση της ανακαίνισης με πολλές επιφάνειες και πολλά υλικά Και αν δεν υπήρχε ο πολυμορφισμός; Ο τροποποιητής πρόσβασης Protected Δύο επίπεδα κληρονομικότητας Κανόνες και σύνταξη Διασύνδεση Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Προγραμματισμός διασυνδέσεων γραφικών με το χρήστη και συμβάντα Στοιχεία GUI Το πάτημα ενός κουμπιού Εσωτερικές κλάσεις Διαχείριση της διάταξης Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Κείμενο, επιλογές, και παράθυρα Στοιχεία κειμένου και ακροατές εστίασης Παροχή στο χρήστη της δυνατότητας εκλογής μεταξύ πολλών επιλογών Επιλογές με πλαίσια ελέγχου Επιλογές με ραδιοπλήκτρα Επιλογές με λίστες Παράθυρα Δημιουργία παραθύρου Οι διαφορές μεταξύ εφαρμογών και μικροεφαρμογών Άλλοι τρόποι προγραμματισμού ακροατών Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Δημιουργία διασύνδεσης χρήστη Μενού Γραμμές εργαλείων Παράθυρα διαλόγου Ο διαχείριση διάταξης GridBagLayout Ο πίνακας στοιχείων GUI (η κλάση JTable) Η διασύνδεση χρήστη μέσω γραφικών για το έργο της ανακαίνισης Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού 569

7 Περιεχόμενα 9 16 Νήματα Νήματα σε διεργασίες Κατανομή του χρόνου μεταξύ των νημάτων Παραδείγματα νημάτων σε χρήση Καταστάσεις νημάτων Επικοινωνία μεταξύ νημάτων Κλείστρα και συγχρονισμός Περισσότερος έλεγχος: wait(), notify(), και notifyall() Έρευνα στα νήματα με τον αποσφαλματωτή JDB Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Δομές δεδομένων και αλγόριθμοι Γράφοι Λίστες Η λύση: Collection, List, και LinkedList Ουρές και στοίβες Αναδρομή Δένδρα Δένδρα στην API Πίνακες κατακερματισμού Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Περισσότερα για τις μικροεφαρμογές Τι κάνουν οι μικροεφαρμογές στον Ιστό Ασφάλεια Προγραμματισμός μικροεφαρμογής Ασφάλεια στην πράξη Επικοινωνία μεταξύ μικροεφαρμογής και φυλλομετρητή Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Κατανεμημένα συστήματα με προγραμματισμό υποδοχών και RMI Υποδοχές Αντικείμενα που συνεργάζονται μέσω δικτύου Πώς διαδραματίζεται η επικοινωνία μεταξύ των αντικειμένων; RMI και μικροεφαρμογές Διάγραμμα ανάπτυξης Ένα κατανεμημένο σύστημα με επανάκληση Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Προγραμματισμός με βάσεις δεδομένων Προγράμματα οδήγησης βάσεων δεδομένων Εγκατάσταση επαφής με μια βάση δεδομένων 707

8 10 Περιεχόμενα 20.3 Ένα μεγαλύτερο παράδειγμα Μια εφαρμογή βάσης δεδομένων Αρχιτεκτονική τριών στρώσεων Συναλλαγές και μεταγλωττισμένες εντολές SQL Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού Προγραμματισμός για τον Ιστό με σελίδες JavaServer Διάφοροι τρόποι προγραμματισμού για τον Ιστό Εγκατάσταση λογισμικού Μικροϋπηρεσίες Σελίδες JavaServer (JSP) Τι αποτελεί τον κώδικα της JSP; Εισαγωγή δεδομένων από το χρήστη Επικύρωση από την πλευρά του πελάτη με JavaScript Βάσεις δεδομένων Αποθήκευση πληροφοριών κατάστασης Νέες έννοιες σε αυτό το κεφάλαιο Προβλήματα ανακεφαλαίωσης Προβλήματα προγραμματισμού 792 Παραρτήματα A Χρήση του Java SDK και του WinEdit 794 Α.1 SDK 795 Α.2 Εκτέλεση μικροεφαρμογών 799 Α.3 WinEdit 800 B Δεσμευμένες λέξεις 802 Γ Συστήματα αρίθμησης 803 Δ Το σύνολο χαρακτήρων Unicode 806 E HTML και μικροεφαρμογές 808 Ε.1 HTML 808 Ε.2 Συμπερίληψη μικροεφαρμογών 810 Στ Εξαιρέσεις στο πρότυπο του κώδικα 813 Z Αναφορές 815 Ευρετήριο 817

9 7 Συνεργασία μεταξύ αντικειμένων Τι θα μάθετε σε αυτό το κεφάλαιο Αφού διαβάσετε αυτό το κεφάλαιο, θα πρέπει να κατανοείτε: Τι περιλαμβάνεται στην έννοια της συνεργασίας μεταξύ αντικειμένων Τις ομοιότητες και τις διαφορές κατά τη μεταβίβαση ορισμάτων ενός πρωταρχικού (στοιχειώδους) τύπου δεδομένων και ενός τύπου αναφοράς Αφού διαβάσετε αυτό το κεφάλαιο, θα πρέπει να μπορείτε: Να προγραμματίζετε τη συνεργασία μεταξύ αντικειμένων Να σχεδιάζετε το διάγραμμα ακολουθίας που παρουσιάζει τη συνεργασία μεταξύ των αντικειμένων Για να ολοκληρωθούν οι διάφορες εργασίες, συχνά πρέπει να συνεργαστούν πολλά αντικείμενα. Μερικά παραδείγματα από την καθημερινότητα: Ο καθηγητής στέλνει στο φοιτητή το μήνυμα "Ολοκλήρωσε αυτή την εργασία". Για να ολοκληρώσει την εργασία, ο φοιτητής ζητάει βοήθεια από άλλους φοιτητές και ερευνά στο Διαδίκτυο ή σε βιβλία. Η Elisabeth ανοίγει το CD player. Για να "παίξει" μουσική, το μηχάνημα πρέπει να συνεργαστεί με το CD. Στα προγράμματα καταφέρνουμε ένα αντικείμενο να συνεργαστεί με ένα άλλο αντικείμενο στέλνοντάς του μηνύματα. Ο σχετικός προγραμματισμός γίνεται με την κλήση μεθόδων για λογαριασμό του αντικειμένου προς το οποίο πρόκειται να στείλουμε το μήνυμα. Συνεπώς, ένα αντικείμενο μπορεί να συνεργαστεί με κάποιο άλλο αντικείμενο εφόσον μπορεί να του

10 220 7 Συνεργασία μεταξύ αντικειμένων στέλνει μηνύματα. Παράδειγμα: Μπορούμε να στείλουμε στο αντικείμενο mycdplayer το μήνυμα "Παίξε αυτό το CD!" με τον εξής τρόπο: mycdplayer.play("four Seasons"); Με τη σειρά του, το αντικείμενο mycdplayer μπορεί τώρα να συνεργαστεί με τις (ή να στείλει μηνύματα στις) δικές του μεταβλητές στιγμιοτύπου (τα εξαρτήματα από τα οποία αποτελείται ένα CD Player) και το αντικείμενο "FourSeasons" που έχει παραλάβει μέσω της λίστας παραμέτρων. Σε αυτό το κεφάλαιο θα δουλέψουμε και πάλι στο παράδειγμα της ανακαίνισης. Θα προγραμματίσουμε μερικές από τις κλάσεις του και θα δημιουργήσουμε ένα απλό πρόγραμμαπελάτη με μενού, το οποίο θα μπορεί να χρησιμοποιηθεί για να βρεθούν τα απαιτούμενα υ- λικά και το κόστος για την ταπετσαρία, το βάψιμο, και τα πατώματα. Η συνεργασία μεταξύ αντικειμένων μάς αναγκάζει να έχουμε αναφορές προς το ίδιο α- ντικείμενο από διάφορα σημεία του προγράμματος. Θα εξετάσουμε τις συνέπειες αυτής της αναγκαιότητας. 7.1 Παραδείγματα συνεργασίας μεταξύ αντικειμένων Θα εργαστούμε με το έργο της ανακαίνισης και θα δημιουργήσουμε ένα απλό πρόγραμμαπελάτη, το οποίο θα μπορεί να χρησιμοποιηθεί για τον υπολογισμό των απαιτούμενων υλικών και του κόστους. Θα διαπιστώσουμε πώς πρέπει να συνεργαστούν τα αντικείμενα των υλικών με τα αντικείμενα των επιφανειών για να λύσουν αυτό το πρόβλημα. Στην παρούσα περίπτωση, στιγμιότυπα των κλάσεων Flooring (παρκέ), Paint (βάψιμο), και Wallpaper (ταπετσαρία) θα πρέπει να συνεργαστούν με ένα στιγμιότυπο της κλάσης Surface. Στην Ενότητα 2.9 καταλήξαμε ήδη στους περισσότερους μαθηματικούς τύπους. Το διάγραμμα κλάσεων παρουσιάζεται στην Εικόνα 4.1. Η Λίστα προγράμματος 7.1 παρουσιάζει τις κλάσεις Flooring και Wallpaper. Προγραμματίσαμε την κλάση Surface στο Κεφάλαιο 4. Η κλάση Paint αποτελεί τη λύση σε ένα από τα προβλήματα αυτής της ενότητας. Λίστα προγράμματος 7.1 /* * Flooring.java E.L * */ class Flooring { private static final double limit = 0.02; // όριο για ένα πλάτος ακόμη private String name; // για λόγους προσδιορισμού private double price; // τιμή ανά μέτρο private double widthofflooring; // πλάτος δαπέδου σε μέτρα public Flooring(String initname, double initprice, double initwidth) { name = initname;

11 7.1 Παραδείγματα συνεργασίας μεταξύ αντικειμένων 221 price = initprice; widthofflooring = initwidth; public String getname() { return name; public double getpriceperm() { return price; public double getwidth() { return widthofflooring; /* * Εδώ θα υπολογίσουμε την απαραίτητη ποσότητα για την κάλυψη μιας επιφάνειας. * Το παρκέ τοποθετείται πάντα εγκάρσια ως προς το μήκος της επιφάνειας. * Αν θέλετε να βρείτε την ποσότητα στην άλλη διάσταση, πρέπει να εναλλάξετε * το μήκος και το πλάτος στα ορίσματα της επιφάνειας (Surface). */ public double getnoofmeters(surface asurface) { double lengthsurface = asurface.getlength(); double widthsurface = asurface.getwidth(); int noofwidths = (int)(lengthsurface / widthofflooring); double rest = lengthsurface % widthofflooring; if (rest >= limit) noofwidths++; return noofwidths * widthsurface; public double gettotalprice(surface asurface) { return getnoofmeters(asurface) * price; /* * Wallpaper.java E.L */ class Wallpaper { private static final double limit = 0.02; // όριο για ένα πλάτος ακόμη private String name; // για λόγους προσδιορισμού private double price; // τιμή ανά ρολό private double lengthperroll; // μήκος ανά ρολό σε μέτρα private double widthperroll; // πλάτος ανά ρολό σε μέτρα

12 222 7 Συνεργασία μεταξύ αντικειμένων public Wallpaper(String initname, double initprice, double initlengthperroll, double initwidthperroll) { name = initname; price = initprice; lengthperroll = initlengthperroll; widthperroll = initwidthperroll; public String getname() { return name; public double getpriceperroll() { return price; public double getlengthperroll() { return lengthperroll; public double getwidthperroll() { return widthperroll; /* * Η μέθοδος αυτή υπολογίζει τον αριθμό των ρολών που απαιτούνται * για την κάλυψη μιας επιφάνειας. */ public int getnoofrolls(surface asurface) { double lengthsurface = asurface.getlength(); double heightsurface = asurface.getwidth(); /* υπολογισμός του αριθμού των υψών */ int noofheights = (int) (lengthsurface / widthperroll); double remnant = lengthsurface % widthperroll; if (remnant >= limit) noofheights++; /* υπολογισμός του αριθμού των ρολών */ int noofrolls; int noofheightsperroll = (int) (lengthperroll / heightsurface); if (noofheightsperroll > 0) { noofrolls = noofheights / noofheightsperroll; remnant = noofheights % noofheightsperroll; if (remnant >= limit) noofrolls++; else { // το ρολό είναι κοντύτερο από ένα ύψος (σπάνιο!) double totalnoofmeters = noofheights * heightsurface; noofrolls = (int) (totalnoofmeters / lengthperroll); if (totalnoofmeters % lengthperroll >= limit) noofrolls++;

13 7.1 Παραδείγματα συνεργασίας μεταξύ αντικειμένων 223 return noofrolls; public double gettotalprice(surface asurface) { return getnoofrolls(asurface) * price; Δημιουργούμε ένα μικρό πρόγραμμα-πελάτη: class FlooringClient { public static void main(string[] args) { Surface thesurface = new Surface("Margaret's Floor", 5, 6); Flooring theflooring = new Flooring("Fitted carpet", 24.50, 5); double noofmeters = theflooring.getnoofmeters(thesurface); double price = theflooring.gettotalprice(thesurface); System.out.println("You need " + noofmeters + " meters, price $" + price); Εδώ δημιουργούμε ένα αντικείμενο Surface και ένα αντικείμενο Flooring και στέλνουμε δύο μηνύματα στο αντικείμενο Flooring. Πρώτα του ζητούμε να βρει πόσα μέτρα χρειάζονται και, μετά, ποιο θα είναι το κόστος τους. Η έξοδος από το πρόγραμμα θα μοιάζει ως εξής: You need 6.0 meters, price $147.0 Παράδειγμα 1: η μέθοδος getnoofmeters() Ας εξετάσουμε πιο προσεκτικά τη μέθοδο getnoofmeters(). Το αντικείμενο που ονομάζεται theflooring θα εκτιμήσει πόσα μέτρα απαιτούνται για την κάλυψη μιας συγκεκριμένης επιφάνειας. Για να βρει αυτό το ζητούμενο, τα δύο αντικείμενα πρέπει να συνεργαστούν. Επομένως, μαζί με το μήνυμα getnoofmeters() στέλνουμε και μια αναφορά προς την επιφάνεια που πρόκειται να στρωθεί. Οι αναφορές ως ορίσματα Στέλνουμε ένα μήνυμα σε κάποιο αντικείμενο Α με την κλήση μιας μεθόδου. Για να μπορέσει το αντικείμενο Α να συνεργαστεί με το αντικείμενο Β προκειμένου να ολοκληρώσουν μια εργασία, συχνά πρέπει να υπάρχει ως όρισμα της μεθόδου μια αναφορά στο αντικείμενο Β. Με αυτόν τον τρόπο, το αντικείμενο Α θα μπορεί να στέλνει μηνύματα στο αντικείμενο Β. Στο παράδειγμα, το Α είναι ίσο με το theflooring και το Β είναι ίσο με το thesurface.

14 224 7 Συνεργασία μεταξύ αντικειμένων Επικεφαλίδα της μεθόδου: public double getnoofmeters(surface asurface) Κλήση: double noofmeters = theflooring.getnoofmeters(thesurface); Μελετήστε στο πρόγραμμα τον κώδικα της μεθόδου getnoofmeters(). Για να πάρει το μήκος και το πλάτος, στέλνει μηνύματα στο αντικείμενο Surface: double lengthsurface = asurface.getlength(); double heightsurface = asurface.getwidth(); Ένα διάγραμμα ακολουθίας (sequence diagram) παρουσιάζει τον τρόπο που στέλνονται τα μηνύματα από αντικείμενο σε αντικείμενο (Εικόνα 7.1). 1 Το κείμενο με πλάγια γραφή επεξηγεί τη χρήση των συμβόλων στο διάγραμμα και δεν αποτελεί στοιχείο της UML. Εδώ παρακολουθούμε τα αντικείμενα σε συνάρτηση με το χρόνο (στον κατακόρυφο άξονα). Μπορούμε να διαπιστώσουμε από την εικόνα της εξής ανταλλαγή μηνυμάτων: 1. Ο πελάτης δημιουργεί ένα αντικείμενο με όνομα theflooring. 2. Ο πελάτης δημιουργεί ένα αντικείμενο με όνομα thesurface. 3. Ο πελάτης στέλνει στο αντικείμενο theflooring το μήνυμα getnoofmeter(). Μαζί στέλνει και το thesurface ως όρισμα. 4. Το theflooring στέλνει στο thesurface το μήνυμα getlength(). 5. Το thesurface επιστρέφει μια απόκριση στο theflooring. 6. Το theflooring στέλνει στο thesurace το μήνυμα getwidth(). 7. Το thesurface επιστρέφει μια απόκριση στο theflooring. 8. Το theflooring επιστρέφει μια απόκριση στον πελάτη. Οι διακεκομμένες κατακόρυφες γραμμές υποδηλώνουν τη διάρκεια ζωής των αντικειμένων. Τα στενά κατακόρυφα ορθογώνια που επικαλύπτουν μερικώς τις γραμμές ζωής υποδηλώνουν τις περιόδους ζωής κατά τις οποίες ένα αντικείμενο είναι ενεργό. Ένα διάγραμμα ακολουθίας χρησιμοποιείται συνήθως για να δείξει πώς συνεργάζονται τα αντικείμενα για να εκτελέσουν κάποιο συγκεκριμένο έργο. Το αντικείμενο με το όνομα theflooring μπορεί να είναι ενεργό και σε άλλες περιόδους της ζωής του, όταν υπάρχουν άλλες εργασίες που πρέπει να εκτελέσει. τέτοιες περίοδοι, πάντως, δεν απεικονίζονται στο διάγραμμα της Εικόνας Η UML διαθέτει, επίσης, και τα ονομαζόμενα διαγράμματα συνεργασίας (collaboration diagrams). Τα διαγράμματα ακολουθίας και τα διαγράμματα συνεργασίας παρουσιάζουν παρόμοιες πληροφορίες, αλλά τις α- πεικονίζουν με διαφορετικό τρόπο. Για το βιβλίο αυτό, θεωρήσαμε καταλληλότερα τα διαγράμματα ακολουθίας.

15 7.1 Παραδείγματα συνεργασίας μεταξύ αντικειμένων 225 Εικόνα 7.1 Διάγραμμα ακολουθίας (UML) Παρατηρήστε τη διαφορά μεταξύ διαγράμματος δραστηριότητας (Κεφάλαιο 5) και διαγράμματος ακολουθίας. Και οι δύο τύποι διαγραμμάτων παρουσιάζουν πράγματα που συμβαίνουν σε συνάρτηση με το χρόνο. Τα διαγράμματα δραστηριότητας δείχνουν τι συμβαίνει σε ένα αντικείμενο σε επίπεδο λεπτομερειών 2 στο διάστημα της ζωής του που απεικονίζεται με το στενό κατακόρυφο ορθογώνιο στο διάγραμμα ακολουθίας. Για παράδειγμα, το διάγραμμα δραστηριότητας για τη μέθοδο getnoofmeters() στην κλάση Flooring παρουσιάζει τι γίνεται με το αντικείμενο που ονομάζεται theflooring όσο είναι ενεργό (δηλαδή, μέσα στο κατακόρυφο ορθογώνιο στο κέντρο της Εικόνας 7.1). Παράδειγμα 2: η μέθοδος gettotalprice() Από το προηγούμενο πρόγραμμα-πελάτη παίρνουμε την επόμενη εντολή: double price = theflooring.gettotalprice(thesurface); Η μέθοδος gettotalprice() θα έχει την εξής μορφή: 2 Τα διαγράμματα δραστηριότητας, από την άλλη, χρησιμοποιούνται συχνά για να δείξουν τη ροή του ελέγχου σε ανώτερο επίπεδο.

16 226 7 Συνεργασία μεταξύ αντικειμένων public double gettotalprice(surface asurface) { return getnoofmeters(asurface) * price; Θα βρούμε πόσο κοστίζει να καλύψουμε την επιφάνεια με το υπόψη παρκέ. Για το σκοπό αυτόν, πρέπει πρώτα να διαπιστώσουμε πόσα μέτρα χρειάζονται και μετά να τα πολλαπλασιάσουμε με την τιμή. Βέβαια, η κλάση Flooring διαθέτει ήδη μια μέθοδο που βρίσκει τον αριθμό των μέτρων. γι' αυτό, θα χρησιμοποιήσουμε τη μέθοδο αυτή. Το αντικείμενο στέλνει το μήνυμα getnoofmeters() στον εαυτό του. Παράδειγμα 3: συνεργασία δύο αντικειμένων της ίδιας κλάσης Ένα αντικείμενο μπορεί να συνεργαστεί με ένα άλλο αντικείμενο της ίδιας κλάσης προκειμένου να ολοκληρώσουν κάποια εργασία. Ας επεκτείνουμε την κλάση Surface με μια μέθοδο που συγκρίνει το εμβαδόν της επιφάνειας αυτής με το εμβαδόν μιας άλλης. Στις μεθόδους σύγκρισης συνηθίζεται να επιστρέφουν την τιμή 0 αν τα αντικείμενα είναι ίδια, μια αρνητική τιμή αν είναι μικρότερο το πρώτο αντικείμενο, και μια θετική τιμή αν το πρώτο αντικείμενο είναι μεγαλύτερο. Μπορούμε να χρησιμοποιήσουμε τη μέθοδο compareareas() με τον επόμενο τρόπο: Surface surface1 = new Surface("A", 5, 4); Surface surface2 = new Surface("B", 4, 4); int result = surface1.compareareas(surface2); if (result < 0) System.out.println(surface1.getName() + " is the smaller one."); else if (result > 0) System.out.println(surface2.getName() + " is the smaller one."); else System.out.println("The surfaces have the same area."); Βλέπουμε ότι στέλνουμε ένα μήνυμα προς το αντικείμενο surface1. Το όρισμα για τη μέθοδο σύγκρισης είναι το surface2. Πώς θα πρέπει να προγραμματίσουμε αυτή τη μέθοδο; Είναι φανερό ότι, για να πάρουμε μια απάντηση, το surface1 πρέπει να συνεργαστεί με το surface2. Πρώτα πρέπει να υπολογίσει το δικό του εμβαδόν, μετά να υπολογίσει το εμβαδόν του surface2, και μετά να τα συγκρίνει (Εικόνα 7.2). Παρατηρήστε με ποιο τρόπο σχεδιάζουμε ένα αντικείμενο που στέλνει ένα μήνυμα στον εαυτό του. Ο κώδικας του προγράμματος θα μοιάζει με τον εξής: public int compareareas(surface theothersurface) { final double precision = ; double area1 = getarea(); double area2 = theothersurface.getarea(); if (Math.abs(area2 - area1) < precision) return 0; else if (area1 < area2) return -1; else return 1;

17 7.1 Παραδείγματα συνεργασίας μεταξύ αντικειμένων 227 Καθώς συγκρίνουμε αποτελέσματα υπολογισμών με δεκαδικούς αριθμούς, α πρέπει να θυμόμαστε ότι οι υπολογισμοί αυτοί δεν είναι απολύτως ακριβείς. Γι' αυτό, ορίζουμε ότι οι ε- πιφάνειες έχουν ίσο εμβαδόν εφόσον η διαφορά τους είναι μικρότερη από τη σταθερά precision ("ακρίβεια"). Εικόνα 7.2 Ένα στιγμιότυπο της κλάσης Surface στέλνει ένα μήνυμα στον εαυτό του και σε ένα άλλο στιγμιότυπο της ίδιας κλάσης, ώστε να ολοκληρώσει μια εργασία (UML). Παρατηρήστε ότι, όταν καλούμε τη μέθοδο, η παράμετρος theothersurface ("η άλλη επιφάνεια") τίθεται ίση με το όρισμα surface2. Όταν αναφερόμαστε στο αντικείμενο theothersurface μέσα στη μέθοδο, εννοούμε το αντικείμενο πελάτη που ονομάζεται surface2. Οι μεταβλητές στιγμιοτύπου length και width είναι ιδιωτικές. Η πρόσβαση σε ιδιωτικά μέλη περιορίζεται μέσα στην κλάση και όχι μέσα στο ίδιο το αντικείμενο όπου βρισκόμαστε. Με άλλα λόγια, αντί να καλέσουμε τη μέθοδο getarea(), μπορούμε να υπολογίσουμε το εμβαδόν τού theothersurface μέσα στη μέθοδο compareareas() με τον εξής τρόπο: double area2 = theothersurface.length * theothersurface.width; Κάθε στιγμιότυπο μιας κλάσης έχει πρόσβαση στα ιδιωτικά μέλη των άλλων στιγμιοτύπων της ίδιας κλάσης.

18 228 7 Συνεργασία μεταξύ αντικειμένων Προβλήματα 1. Η Λίστα προγράμματος 7.1 παρουσιάζει την υλοποίηση της κλάσης Wallpaper. Υποθέστε ότι εκτελούνται οι εξής γραμμές του κώδικα: Surface thesurface = new Surface("Margaret's wall", 5, 2.5); Wallpaper thewallpaper = new Wallpaper("Brocade wallpaper", 8.50, 12, 0.6); int noofrolls = thewallpaper.getnoofrolls(thesurface); (α) Σχεδιάστε ένα διάγραμμα ακολουθίας που να δείχνει τι γίνεται εδώ. (β) Σχεδιάστε ένα διάγραμμα δραστηριότητας που να δείχνει τι συμβαίνει όταν το αντικείμενο με το όνομα thewallpaper εκτελεί τη δραστηριότητα getnoofrolls(). 2. Προγραμματίστε την κλάση Paint σύμφωνα με τις προδιαγραφές του διαγράμματος κλάσης στην Εικόνα 4.1. Στρογγυλοποιήστε την ποσότητα του απαραίτητου χρώματος στο επόμενο μισό λίτρο. 3. Έστω η κλάση Person: class Person { private String name; private int yearofbirth; public Person(String initname, int inityearofbirth) { name = initname; yearofbirth = inityearofbirth; public String getname() { return name; public int getyearofbirth() { return yearofbirth; Σε ένα πρόγραμμα-πελάτη δημιουργούνται δύο στιγμιότυπα αυτής της κλάσης: Person p1 = new Person("Peter", 1980); Person p2 = new Person("Jane", 1984); Θα συνθέσετε μια σειρά από μεθόδους στιγμιοτύπου στην κλάση Person. Για κάθε μέθοδο, πρέπει να δώσετε ένα παράδειγμα χρήσης της, με αποστολή μηνυμάτων στο p1 στο πρόγραμμα-πελάτη. Δημιουργήστε μεθόδους που: (α) θα διαπιστώνουν αν το πρόσωπο έχει ίδια ηλικία με κάποιο άλλο πρόσωπο και ο τύπος που θα επιστρέφουν θα είναι boolean

19 7.2 Ένα πρόγραμμα οδηγούμενο από μενού 229 (β) θα συγκρίνουν την ηλικία ενός προσώπου με την ηλικία ενός άλλου και ο τύπος που θα επιστρέφουν θα είναι int (για μικρότερη από, ίση με, μεγαλύτερη από) (γ) θα διαπιστώνουν αν ένα πρόσωπο είναι περισσότερο από x έτη πιο ηλικιωμένο από κάποιο άλλο πρόσωπο και ο τύπος που θα επιστρέφουν θα είναι boolean. 7.2 Ένα πρόγραμμα οδηγούμενο από μενού Θα γράψουμε τώρα ένα πρόγραμμα, το οποίο θα χρησιμοποιούμε για να πάρουμε μια εκτίμηση των απαιτούμενων υλικών και του κόστους για την ανακαίνιση μιας επιφάνειας (τοίχου ή πατώματος). Το πρόγραμμα θα εκτελείται σε βρόχο και θα δίνει τη δυνατότητα να γίνουν πολλοί υπολογισμοί διαδοχικά. Δείτε το διάγραμμα δραστηριότητας στην Εικόνα 7.3, που παρουσιάζει τις δραστηριότητες του πελάτη. Ο πελάτης αρχίζει με την εκτύπωση μερικών γραμμών με οδηγίες χρήσης, ώστε να παίρνει ο χρήστης μια ιδέα για το τι μπορεί να κάνει το πρόγραμμα και για το τι θα πρέπει να κάνει αυτός ως χρήστης. Εικόνα 7.3 Η δραστηριότητα σε ένα αντικείμενο πελάτη το οποίο υπολογίζει τα απαιτούμενα υλικά για μια ανακαίνιση (UML). Θα δημιουργήσουμε το μενού χρησιμοποιώντας τη μέθοδο showoptiondialog() της κλάσης JOptionPane (Εικόνα 7.4). Βέβαια, για να δημιουργήσουμε το πρόγραμμα θα χρειαστούμε τις κλάσεις Surface, Flooring, Paint, και Wallpaper. Εξετάσαμε τις κλάσεις αυτές σε προηγούμενες ενότητες αυτού του κεφαλαίου.

20 230 7 Συνεργασία μεταξύ αντικειμένων Εικόνα 7.4 Ο χρήστης μπορεί να επιλέξει το υλικό ανακαίνισης. Η επικοινωνία με το χρήστη είναι πιο πολύπλοκη από όσο στα προγράμματα που καλύψαμε μέχρι εδώ. Χρειαζόμαστε ένα αντικείμενο που θα έχει την αρμοδιότητα εκτέλεσης των εργασιών του διαγράμματος δραστηριότητας. Ας ονομάσουμε ProjectChap7 την κλάση στην οποία θα ανήκει αυτό το αντικείμενο. Παρατηρήστε αυτή την κλάση στα αριστερά της Εικόνα 7.5. Με αυτό το διάγραμμα κλάσης θα εισαγάγουμε και μερικά νέα στοιχεία συμβολισμού: Εικόνα 7.5 Κλάσεις αρμόδιες για την επικοινωνία με το χρήστη (UML). Μέχρι τώρα, το πλήθος των τιμών που μπορούσε να έχει η ιδιότητα κάποιου συγκεκριμένου αντικειμένου ήταν 1. Ο αριθμός των εναλλακτικών επιλογών σε ένα μενού, όμως, είναι συνήθως περισσότερες από μία. Για να το υποδείξουμε αυτό χρησιμοποιούμε τη συντομογραφία [1..*] ή, γενικότερα, [m.. n]. Ο πρώτος αριθμός δείχνει το κάτω όριο μιας σειράς τιμών. ο δεύτερος αριθμός δείχνει το άνω όριο. Αστερίσκος αντί για αριθμό (όπως στην Εικόνα 7.5) δηλώνει ότι δεν υπάρχει άνω όριο για το πλήθος των τιμών. Στη συγκεκριμένη περίπτωση εκτιμήσαμε ότι είναι σωστό να συμπεριλάβουμε λίστες παραμέτρων για τις λειτουργίες. Η έκταση στην οποία θα το κάνουμε αυτό εξαρτάται από το πόσο μακριά θα φτάσουμε κατά τη διαδικασία ανάπτυξης. Ο τύπος δεδομένων και το όνομα των παραμέτρων υποδεικνύονται για τις παραμέτρους με τον ίδιο τρόπο που ισχύει για τις ιδιότητες. Εδώ υποδείξαμε τον επιστρεφόμενο τύπο για λειτουργίες που επιστρέφουν τιμές. Η λειτουργία doachoice() επιστρέφει έναν ακέραιο. Το διατυπώνουμε αυτό χρησιμοποιώντας μετά από τη λειτουργία μια άνω και κάτω τελεία και τον τύπο δεδομένων. Για να εκτελεστεί μια λειτουργία που συνδέεται με μια επιλογή μενού, πρέπει να εισαχθούν δεδομένα σχετικά με επιφάνειες και υλικά. Θα πρέπει να δημιουργηθούν νέα αντικεί-

21 7.2 Ένα πρόγραμμα οδηγούμενο από μενού 231 μενα και να εκτελεστούν νέοι υπολογισμοί. Θα δούμε, για παράδειγμα, τι πρέπει να συμβαίνει όταν το πρόγραμμα εκτελεστεί με σκοπό την εκτίμηση της απαραίτητης ποσότητας χρώματος: 1. Είσοδος δεδομένων σχετικών με την επιφάνεια που θα χρωματιστεί (όνομα, μήκος, πλάτος). 2. Δημιουργία ενός στιγμιοτύπου της κλάσης Surface. 3. Είσοδος δεδομένων σχετικών με το χρώμα που θα χρησιμοποιηθεί (όνομα, τιμή, αριθμός επαναλήψεων "χέρια", αριθμός τετραγωνικών μέτρων ανά λίτρο). 4. Δημιουργία ενός στιγμιοτύπου της κλάσης Paint. 5. Ερώτηση του αντικειμένου χρώματος πόσο χρώμα χρειάζεται για την κάλυψη της δεδομένης επιφάνειας και πόσο θα κοστίσει. 6. Εξαγωγή των απαντήσεων. Όλα αυτά μπορούμε είτε να τα τοποθετήσουμε στην κλάση ProjectChap7, είτε να συνθέσουμε μια νέα κλάση που θα είναι αρμόδια για το τμήμα αυτών των εργασιών που μπορεί να είναι χρήσιμο για άλλες καταστάσεις. Επιλέξαμε να έχουμε ξεχωριστά τα σημεία 1 και 2, και ξεχωριστά τα σημεία 3 και 4. Συνθέτουμε μια νέα κλάση με μεθόδους για την είσοδο πληροφοριών και τη δημιουργία στιγμιοτύπων (συγκεκριμενοποίηση instantiation) αντικειμένων. Δείτε την κλάση ReaderRenovationCase στα δεξιά της Εικόνας 7.5. Κάνουμε διάκριση μεταξύ εργασιών που συνδέονται άμεσα με το συγκεκριμένο πρόγραμμα-πελάτη που γράφουμε τώρα (την κλάση ProjectChap7) και εργασιών γενικότερης φύσης (την κλάση ReaderRenovationCase). Ορίζουμε ένα στιγμιότυπο της κλάσης ReaderRenovationClass ως ιδιότητα ενός στιγμιοτύπου της κλάσης ProjectChap7. Έτσι επιτρέπουμε τη συνεργασία μεταξύ αυτών των αντικειμένων. Το πρόγραμμα-πελάτη βρίσκεται στο ίδιο αρχείο με την κλάση ProjectChap7 (δείτε τη Λίστα προγράμματος 7.2). Παρατηρήστε ότι έχουμε ονομάσει τους ακέραιους που αντιπροσωπεύουν τις επιλογές μενού. Αυτό κάνει πιο ευανάγνωστο τον κώδικα του προγράμματος και έχει, επιπλέον, ένα σημαντικό πλεονέκτημα: μια από αυτές τις σταθερές (η exit) χρησιμοποιείται στη main() για τον τερματισμό του βρόχου. Έτσι μπορούμε να προσθέσουμε διάφορες επιλογές μενού στην κλάση ProjectChap7 και ταυτόχρονα να διατηρούμε την επιλογή exit στο τέλος του μενού. Ακόμη και αν η exit αλλάξει τιμή και γίνει, π.χ., 4, αυτό δεν σημαίνει απολύτως τίποτε για τη main(). Η τιμή μιας σταθεράς αλλάζει σε ένα μόνο σημείο. Η κλάση ProjectChap7 περιέχει τρεις μεθόδους: Τη μέθοδο showinstructions(), που παρουσιάζει σε ένα πλαίσιο μηνύματος οδηγίες για το χρήστη. Κάθε πρόγραμμα με εύλογες διαστάσεις πρέπει να περιλαμβάνει και ορισμένες οδηγίες για το χρήστη.

22

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

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

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

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

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

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

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

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

Διαγράμματα Κλάσεων στη Σχεδίαση

Διαγράμματα Κλάσεων στη Σχεδίαση Διαγράμματα Κλάσεων στη Σχεδίαση περιεχόμενα παρουσίασης Αφηρημένες κλάσεις Ιδιότητες Λειτουργίες Απλοί τύποι Συσχετίσεις Εξάρτηση Διεπαφές αφηρημένες κλάσεις Οι αφηρημένες κλάσεις δεν μπορούν να δημιουργήσουν

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας Διαγράμματα Αλληλεπίδρασης Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας 1 Διαγράμματα αλληλεπίδρασης Απεικονίζουν την αλληλεπίδραση των αντικειμένων μέσω μηνυμάτων Η ανάθεση αρμοδιοτήτων περιλαμβάνει

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

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

Γενικά (για τις γραπτές εξετάσεις) Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #12 η : Επανάληψη Γαβαλάς Δαμιανός dgavalas@aegean.gr Γενικά (για τις γραπτές εξετάσεις) Δεν υπάρχει αυστηρά ορισμένη «ύλη εξετάσεων» (καθώς δεν έχετε

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

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

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

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

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

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

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

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

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

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

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

Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

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

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων Διαγράμματα UML στην Ανάλυση Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων περιεχόμενα παρουσίασης Διαγράμματα επικοινωνίας Διαγράμματα ακολουθίας Διαγράμματα

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

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος Θέμα 1 Δίνονται τα παρακάτω τμήματα αλγορίθμου Α. βαλίτσα Αληθής εισιτήριο Αληθής ταξίδι βαλίτσα και εισιτήριο Τι τιμή θα έχει η λογική μεταβλητή

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές τύπων, δημιουργία τυχαίων αριθμών, λήψη εισόδου από χρήστη Λογικά λάθη public class ShowLogicErrors

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

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

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

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

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

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

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

Περιεχόμενα. Πρόλογος 15

Περιεχόμενα. Πρόλογος 15 Περιεχόμενα Πρόλογος 15 1 Δημιουργία προγραμμάτων Java 25 Ορισμός βασικής ορολογίας προγραμματισμού 26 Σύγκριση διαδικαστικού και αντικειμενοστρεφούς προγραμματισμού 29 Διαδικαστικός προγραμματισμός 29

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές τύπων, δημιουργία τυχαίων αριθμών, λήψη εισόδου από χρήστη Γαβαλάς Δαμιανός dgavalas@aegean.gr Λογικά

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

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

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

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

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

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

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Εισαγωγή Η τακτοποίηση των δεδομένων με ιδιαίτερη σειρά είναι πολύ σημαντική λειτουργία που ονομάζεται

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

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου Προγραμματισμός 2 Σημειώσεις εργαστηρίου 02-Java, Τύποι Δεδομένων ως Αντικείμενα Νεβράντζας Βάιος-Γερμανός Λάρισα, Μάρτιος 2013 02-iProgramminginJava, Τυ ποι δεδομε νων ως Αντικει μενα, σελίδα 1 Περίληψη

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

Περιεχόμενα. Πρόλογος 15

Περιεχόμενα. Πρόλογος 15 Περιεχόμενα Πρόλογος 15 1 Δημιουργία προγραμμάτων Java 25 Εκμάθηση ορολογίας προγραμματισμού 26 Σύγκριση των εννοιών του διαδικαστικού και του αντικειμενοστραφούς 29 Διαδικαστικός προγραμματισμός 29 Αντικειμενοστραφής

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13 Περιεχόμενα Πρόλογος... 13 ΜΕΡΟΣ ΠΡΩΤΟ Κεφ. 1 Περί προγραμματισμού και γλωσσών προγραμματισμού Προγράμματα και Λειτουργικά Συστήματα... 17 Γλώσσες προγραμματισμού και εργαλεία ανάπτυξης προγραμμάτων...

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3 ο ΕΞΑΜΗΝΟ Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 6 ο Εργαστήριο - ΕΠΙΜΕΛΕΙΑ ΜΑΘΗΜΑΤΟΣ: Πρέντζα Ανδριάννα ΕΠΙΜΕΛΕΙΑ ΕΡΓΑΣΤΗΡΙΟΥ: Στουγιάννου

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

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

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

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

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

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

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

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

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

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

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

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

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

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

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

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

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

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος 4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος Μεταβλητές Συστήματος Η Processing χρησιμοποιεί κάποιες μεταβλητές συστήματος, όπως τις ονομάζουμε, για να μπορούμε να παίρνουμε πληροφορίες από το

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.

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

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

Mεταβλητές (variables) και Σταθερές (constants) Mεταβλητές (variables) και Σταθερές (constants) Οι μεταβλητές είναι οι θέσεις μνήμης στις οποίες ένα πρόγραμμα τοποθετεί τα δεδομένα του κατά τη διάρκεια της λειτουργίας του. θα μάθουμε: πως δηλώνουμε

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Α2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών Α3. Ο αλγόριθμος

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

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

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

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

Διάγραμμα Κλάσεων. Class Diagram

Διάγραμμα Κλάσεων. Class Diagram Διάγραμμα Κλάσεων Class Diagram Γενικά Ορίζει τις κλάσεις αντικειμένων σε ένα σύστημα, τις μεθόδους και τις συναρτήσεις τους, και τις συσχετίσεις μεταξύ των κλάσεων. Περιγράφουν την δομή και συμπεριφορά

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #2 2 Γενικά Στο Εργαστήριο αυτό θα αναλύσουμε τη χρήση της βασικής εντολής ελέγχου ροής

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

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

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

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

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

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

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

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

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro Για να μπορέσουμε να εισάγουμε δεδομένα από το πληκτρολόγιο αλλά και για να εξάγουμε εμφανίσουμε αποτελέσματα στην οθόνη του υπολογιστή χρησιμοποιούμε τις εντολές Εισόδου και Εξόδου αντίστοιχα. Σύνταξη

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 Εκτέλεση μεθόδου του αντικειμένου μιας κλάσης: 1) Δημιουργία αντικειμένου (στιγμιότυπου) της κλάσης: = new ( ); 2) Κλήση μεθόδου της κλάσης (στην

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

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

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

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

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης: Αντικειμενοστρεφής Προγραμματισμός Τμήμα Εφαρμοσμένης Πληροφορικής Δημιουργία Κλάσεων/Αντικειμένων/Συσχετίσεων/Συνδέσεων Δημιουργία κλάσεων και αντικειμένων Θεωρούμε ένα υποθετικό σύστημα που αναφέρεται

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

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

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

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

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!! Πανεπιστήμιο Κύπρου Πολυτεχνική Σχολή Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2018 Ακαδημαϊκό Έτος 2018-19, Χειμερινό Εξάμηνο Τελική Εξέταση

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές

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

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

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

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου Σκοπός και περίγραμμα της Ενότητας 4 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη

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

Περιεχόμενα. Περιεχόμενα

Περιεχόμενα. Περιεχόμενα Περιεχόμενα xv Περιεχόμενα 1 Αρχές της Java... 1 1.1 Προκαταρκτικά: Κλάσεις, Τύποι και Αντικείμενα... 2 1.1.1 Βασικοί Τύποι... 5 1.1.2 Αντικείμενα... 7 1.1.3 Τύποι Enum... 14 1.2 Μέθοδοι... 15 1.3 Εκφράσεις...

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

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP) Γιάννης Σαμωνάκης 1 Περιεχόμενα Τι είναι η PHP Που μπορεί να χρησιμοποιηθεί

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

Πίνακας περιεχομένων. Κεφάλαιο 1 Λειτουργίες βάσης δεδομένων Κεφάλαιο 2 Συγκεντρωτικοί πίνακες Πρόλογος... 11

Πίνακας περιεχομένων. Κεφάλαιο 1 Λειτουργίες βάσης δεδομένων Κεφάλαιο 2 Συγκεντρωτικοί πίνακες Πρόλογος... 11 Πίνακας περιεχομένων Πρόλογος... 11 Κεφάλαιο 1 Λειτουργίες βάσης δεδομένων...13 1.1 Εισαγωγή... 13 1.2 Δημιουργία βάσης δεδομένων... 14 1.3 Ταξινόμηση βάσης δεδομένων... 16 1.4 Μερικά αθροίσματα... 20

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής

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

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13) Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1 Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

B. Ενσωμάτωση Ιθαγενών Μεθόδων B. Ενσωμάτωση Ιθαγενών Μεθόδων Στο τέλος αυτού του κεφαλαίου θα μπορείτε: Να δημιουργείτε κώδικα Java που θα φορτώνει βιβλιοθήκες και θα καλεί ιθαγενείς μεθόδους (native methods). Να χρησιμοποιείτε τη

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

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Ανάλυση Πληροφοριακών Συστημάτων. Εαρινό Εξάμηνο Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Ανάλυση Πληροφοριακών Συστημάτων Εαρινό Εξάμηνο 2018-2019 Lec08 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Διαγράμματα Κλάσεων Τα βασικά στοιχεία Διαλέξεις παρουσιάσεις Το υλικό του μαθήματος στηρίζεται

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

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

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

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

Αναδρομή Ανάλυση Αλγορίθμων

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

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

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

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

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