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

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

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

Transcript

1

2

3 Περιεχόμενα Πρόλογος Κεφάλαιο 1 Εισαγωγή Τι είναι η Java Η ιστορία της Java Εκδόσεις της Java Ξεκίνημα με την Java Το περιβάλλον της γλώσσας Δημιουργία μιας εφαρμογής Java Δημιουργία ενός Java applet Ερωτήσεις και Ασκήσεις Κεφάλαιο 2 Δεδομένα, μεταβλητές, υπολογισμοί Μεταβλητές και δεδομένα Ακέραιοι τύποι δεδομένων Αριθμοί κινητής υποδιαστολής Οι μοναδιαίοι τελεστές αύξησης και μείωσης Οι τελεστές των αριθμητικών πράξεων Περισσότερα για τις εκχωρήσεις Λογικές τιμές Τελεστές σύγκρισης Λογικοί τελεστές Τελεστές δυαδικών ψηφίων Χαρακτήρες

4 8 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Αλφαριθμητικά Αρχικές τιμές για τις μεταβλητές-μέλη Μετατροπή τύπου δεδομένων Μαθηματικές συναρτήσεις Συμπληρωματικές ασκήσεις Μετατροπή αλφαριθμητικών σε αριθμούς Εισαγωγή δεδομένων από το πληκτρολόγιο Εισαγωγή δεδομένων από το πληκτρολόγιο με τη χρήση της κλάσης Scanner Ερωτήσεις και Ασκήσεις Κεφάλαιο 3 Δομές διακλάδωσης επαναλήψεις μέθοδοι Αποφάσεις Η δομή if Ο όρος else Ένθετα if Οι τελεστές & και Ο τριαδικός τελεστής?: Η δομή πολλαπλής διακλάδωσης switch Εντολές επανάληψης βρόχοι Ο βρόχος for O βρόχος while O βρόχος do - while Ένθετοι βρόχοι Η εντολή continue Η χρήση του break σε ένα βρόχο Μέθοδοι Ερωτήσεις και Ασκήσεις Κεφάλαιο 4 Πίνακες και αλφαριθμητικά Πίνακες με μία διάσταση Η δήλωση ενός πίνακα Η καταχώριση του πίνακα Απόδοση αρχικών τιμών στον πίνακα Πίνακες πολλών διαστάσεων Ταξινόμηση...127

5 Περιεχόμενα 9 Αλφαριθμητικά Πράξεις με αλφαριθμητικά Υποαλφαριθμητικά Προσπέλαση μεμονωμένων χαρακτήρων ενός αλφαριθμητικού και εύρεση του μήκους του Αντικατάσταση χαρακτήρων σε ένα αλφαριθμητικό Εντοπισμός χαρακτήρων μέσα σε ένα αλφαριθμητικό Μετατροπή άλλων τύπων δεδομένων σε αλφαριθμητικά η μέθοδος valueof Μετατροπή αλφαριθμητικών σε άλλους τύπους δεδομένων Η κλάση StringBuffer Αντικατάσταση χαρακτήρων σε αντικείμενο της κλάσης StringBuffer Μετατροπή αντικειμένου StringBuffer σε αλφαριθμητικό Αντιστροφή αλφαριθμητικού η μέθοδος reverse() Ερωτήσεις και Ασκήσεις Κεφάλαιο 5 Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Πώς ορίζουμε μια κλάση Η μεταβλητή this Οι κατασκευαστές Πώς θα χρησιμοποιήσουμε μια κλάση που δημιουργήσαμε Πολλαπλοί κατασκευαστές Η αναφορά στα αντικείμενα Τι είναι τα πακέτα Τα τυπικά πακέτα της Java Πώς μπορούμε να "πακετάρουμε" τις δικές μας κλάσεις Αντικειμενοστρεφής προγραμματισμός Ενθυλάκωση οι προσδιοριστές public, private και protected Πολυμορφισμός Η κληρονομικότητα των κλάσεων Τελικές κλάσεις και μέθοδοι Μέθοδοι και κλάσεις αφηρημένου τύπου Οι διασυνδέσεις Ερωτήσεις και Ασκήσεις...184

6 10 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Κεφάλαιο 6 Δημιουργία του πρώτου applet Εισαγωγή Κατασκευή του πρώτου μας applet Πώς δουλεύει το applet HelloWorld.java και το αρχείο HelloWorld.html Μεταβίβαση παραμέτρων στο applet Περισσότερα για τα applet Οι μέθοδοι που χρησιμοποιούνται σε ένα applet Το πρόσθετο Java (Java plug in) και η ετικέτα <OBJECT> Ερωτήσεις και Ασκήσεις Κεφάλαιο 7 Γραφικά Εισαγωγή η βιβλιοθήκη AWT (Abstract Window Toolkit) Το σύστημα συντεταγμένων της Java Οι γραμματοσειρές Εμφάνιση κειμένου με διάφορες γραμματοσειρές Πληροφορίες για τις γραμματοσειρές Η ρύθμιση του χρώματος Αλλαγή του σχήματος του δρομέα Γραμμές Ορθογώνια Ελλείψεις, κύκλοι, και τόξα Πολύγωνα Αντιγραφή τμήματος της οθόνης Εφαρμογές Ερωτήσεις και Ασκήσεις Κεφάλαιο 8 Γραφικό περιβάλλον διασύνδεσης Μέρος Ι: Τα βασικά συστατικά Γραφικό περιβάλλον διασύνδεσης GUI Συστατικά και υποδοχείς στην Java Κουμπί διαταγής Ετικέτα Λίστες Πλαίσια ελέγχου και κουμπιά επιλογής Μενού επιλογής Πεδίο κειμένου και περιοχή κειμένου Ερωτήσεις και Ασκήσεις...259

7 Περιεχόμενα 11 Κεφάλαιο 9 Γεγονότα Γεγονότα το μοντέλο αποστολής γεγονότος Η κλάση ActionEvent Γεγονότα ρύθμισης οι ράβδοι κύλισης Η κλάση ItemEvent Διασυνδέσεις ακροατών για συμβάντα χαμηλού επιπέδου Γεγονότα του ποντικιού Γεγονότα του πληκτρολογίου Προσαρμοστές Ερωτήσεις και Ασκήσεις Κεφάλαιο 10 Διαχειριστές διάταξης Εισαγωγή Ο διαχειριστής FlowLayout Ο διαχειριστής BorderLayout Ο διαχειριστής GridLayout Ο διαχειριστής GridBagLayout Πάνελ Ο διαχειριστής CardLayout Ερωτήσεις και Ασκήσεις Κεφάλαιο 11 Γραφικό περιβάλλον διασύνδεσης Κεφάλαιο 11 Μέρος ΙI: Περισσότερα συστατικά του AWT Το συστατικό καμβάς Πλαίσια Μενού Πλαίσια διαλόγου Αναδυόμενα μενού Ερωτήσεις και Ασκήσεις Κεφάλαιο 12 Swing και Java2D Τι είναι το Swing Το μοντέλο του υποδοχέα ριζικού πλαισίου Πλαίσια το συστατικό JFrame Η κλάση JComponent Ετικέτες και κουμπιά διαταγών...351

8 12 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Ετικέτες η κλάση JLabel Κουμπιά η κλάση JButton Συστατικά κειμένου Πεδίο και περιοχή κειμένου οι κλάσεις JTextField και JTextArea Ο χειρισμός των γεγονότων στο Swing Επικοινωνία με το χρήστη η κλάση JOptionPane Ο επιλογέας χρωμάτων το συστατικό JColorChooser Πλαίσια η κλάση JPanel Πλαίσια ελέγχου και ραδιοπλήκτρα οι κλάσεις JCheckBox και JRadioButton Πτυσσόμενα πλαίσια και λίστες οι κλάσεις JComboBox και JList Επιλογή αρχείων η κλάση JFileChooser Ράβδος ολίσθησης με λαβή η κλάση JSlider Η χρήση μενού στα πλαίσια οι κλάσεις JMenu, JMenuBar και JMenuItem Δημιουργία περιγραμμάτων στα πλαίσια Τα applet του Swing η κλάση JApplet Ο διαχειριστής διάταξης BoxLayout Εμφάνιση και αίσθηση Γραφικά με το πακέτο Java 2D Εκτυπώσεις στην Java Ερωτήσεις και Ασκήσεις Κεφάλαιο 13 Εξαιρέσεις και ισχυρισμοί Τι είναι οι εξαιρέσεις Τύποι εξαιρέσεων Χειρισμός εξαιρέσεων Δημιουργία των δικών μας εξαιρέσεων Το τμήμα finally Ισχυρισμοί (assertions) Ερωτήσεις και Ασκήσεις Κεφάλαιο 14 Νήματα Τι είναι τα νήματα Το νήμα "δαίμων" Δημιουργία νήματος με την κλάση Thread Δημιουργία νήματος με την εφαρμογή της διασύνδεσης Runnable...458

9 Περιεχόμενα 13 Συγχρονισμός Προτεραιότητες Νήματα και κινούμενες εικόνες Ερωτήσεις και Ασκήσεις Κεφάλαιο 15 Εικόνες, ήχος, κίνηση Οι τύποι των εικόνων Η θέση της εικόνας οι μέθοδοι getdocumentbase(), getcodebase() Η φόρτωση της εικόνας Η εμφάνιση της εικόνας Το μέγεθος της εικόνας Χάρτες γραφικών Ήχοι Το Java Media Player Δημιουργία κίνησης με τη χρήση εικόνων Γραφικά με την τεχνική της διπλής προσωρινής αποθήκευσης και τη χρήση της κλάσης MediaTracker Ερωτήσεις και Ασκήσεις Κεφάλαιο 16 Τεχνικές εισόδου/εξόδου Το ρεύμα δεδομένων Τα αντικείμενα αρχείων Ρεύματα εξόδου Η κλάση FileOutputStream Η κλάση FilterOutputStream Τα ρεύματα εισόδου Οι υποκλάσεις της InputStream Η υποκλάση FilterInputStream Ρεύματα με αποθήκευση Πλαίσια διαλόγου αρχείων Το νέο I/O API η κλάση FileChannel Ερωτήσεις και Ασκήσεις Κεφάλαιο 17 Επικοινωνίες και δίκτυα Δίκτυα Το πρωτόκολλο TCP/IP Οι διευθύνσεις στο δίκτυο...536

10 14 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Η κλάση InetAddress Προσδιορισμός των αρχείων στο δίκτυο η κλάση URL Υποδοχές Υποδοχές αυτοδύναμων πακέτων Ερωτήσεις και ασκήσεις Κεφάλαιο 18 Δομές δεδομένων το πακέτο java.util.* Οι κλάσεις-περιτυλίγματα Οι συλλογές (Collection) Γενικοί τύποι (Generics) Επαναλήπτες (Iterator) Η κλάση ArrayList Η κλάση Vector και η διασύνδεση Iterator Λίστες Η δομή στοίβας η κλάση Stack Η δομή ουράς Απεικόνιση (Map) Δένδρα Κανονικές εκφράσεις Ερωτήσεις και Ασκήσεις Κεφάλαιο 19 Το εργαλείο Javadoc διεθνοποίηση Εισαγωγή Σχόλια doc Ετικέτες javadoc Η διεθνοποίηση της Java Τοποθεσία Δέσμες πόρων Ερωτήσεις και Ασκήσεις Κεφάλαιο 20 Η Java και οι βάσεις δεδομένων Εισαγωγή Βάσεις δεδομένων σχεσιακές βάσεις δεδομένων Η γλώσσα SQL (Structured Query Language) Το JDBC API Οι κυριότερες κλάσεις και διασυνδέσεις του JDBC...622

11 Περιεχόμενα 15 Οι διασυνδέσεις ResultSet και ResultSetMetaData Η διασύνδεση Statement και η εκτέλεση εντολών SQL Εργασία με το ΣΔΒΔ Derby Ερωτήσεις και Ασκήσεις Κεφάλαιο 21 Επίκληση απομακρυσμένων μεθόδων servlets Τι είναι η Επίκληση Απομακρυσμένων Μεθόδων (RMI) Η αρχιτεκτονική του RMI Εισαγωγή στα servlet Ερωτήσεις και Ασκήσεις Κεφάλαιο 22 JavaΒeans Επισκόπηση της τεχνολογίας JavaBeans Ο κόκκος Το BDK (Beans Development Kit) Η δημιουργία ενός κόκκου Περισσότερα για τα αρχεία JAR και για το βοηθητικό πρόγραμμα jar Γεγονότα και ακροατές Απλές ιδιότητες ενός κόκκου Συνδεδεμένες ιδιότητες Περιοριστικές ιδιότητες Η σειριοποίηση των αντικειμένων Ρεύματα σειριοποίησης Προσαρμοσμένη σειριοποίηση Αντανάκλαση Ενδοσκόπηση Ερωτήσεις και Ασκήσεις Κεφάλαιο 23 Ολοκληρωμένα περιβάλλοντα ανάπτυξης εφαρμογών Το περιβάλλον NetBeans Εργασία με την Β.Δ. Derby μέσα από το NetBeans Το πρόγραμμα JCreator Το περιβάλλον Eclipse Ο JBuilder BlueJ Microsoft Visual J++, J#, C#...745

12 16 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Κεφάλαιο 24 Java και XML Εισαγωγή στην XML Τα τρία XML API Εργασία με το StAX Ερωτήσεις και Ασκήσεις Παράρτημα Ευρετήριο

13 Κεφάλαιο 5: Κλάσεις και αντικείμενα 169 // εκτύπωση του εμβαδού κάθε κύκλου System.out.println (" Area of troxos="+troxos.area()); System.out.println (" Area of roda="+roda.area()); Μετά την εκτέλεση του προγράμματος εμφανίζονται τα ακόλουθα αποτελέσματα: Αντικειμενοστρεφής προγραμματισμός Η Java είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού. Σε αυτό το είδος προγραμματισμού (Object Oriented Programming, OOP) μπορούμε να θεωρήσουμε τα στοιχεία του προγράμματος ως αντικείμενα. Σύμφωνα με αυτή τη θεώρηση μια κλάση παρουσιάζει μια συγκεκριμένη εικόνα της "προς τα έξω". Αυτή η εικόνα εμφανίζει τις λειτουργίες (μεθόδους) που επιτελεί η κλάση, καθώς και τα δεδομένα που χρησιμοποιεί. Οτιδήποτε άλλο συμβαίνει μέσα στην κλάση, όπως π.χ. οι λεπτομερείς ενέργειες που γίνονται μέσα στις μεθόδους, παραμένει κρυφό. Η όλη ιδέα μοιάζει με την ιδέα του αυτοκινήτου: Για να οδηγήσει κάποιος ένα αυτοκίνητο, δεν χρειάζεται να ξέρει τη δομή και τη λειτουργία του κινητήρα ή το τι συμβαίνει μέσα στο κιβώτιο ταχυτήτων. Κάνει μερικές λειτουργικές ενέργειες, τις οποίες του παρέχουν τα εξαρτήματα του αυτοκινήτου (τιμόνι, γκάζι, φρένο, ταχύτητες κ.λπ.) και δεν χρειάζεται να ξέρει πώς λειτουργούν τα εξαρτήματα αυτά. Τη βασική ιδέα του αντικειμενοστρεφούς προγραμματισμού υλοποιούν τρεις αρχές: Η ενθυλάκωση (encapsulation), η κληρονομικότητα (inheritance) και ο πολυμορφισμός (polymorphism).

14 170 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Ενθυλάκωση οι προσδιοριστές public, private και protected Η ενθυλάκωση παρουσιάζει την εξωτερική όψη ενός αντικειμένου και αποκρύπτει την πολύπλοκη λογική που υπάρχει μέσα του. Αυτό επιτρέπει στον προγραμματιστή να τροποποιεί ή να βελτιώνει τους αλγόριθμους οι οποίοι υπάρχουν σε μία κλάση, χωρίς να ανησυχεί μήπως προκαλέσει απρόβλεπτα αποτελέσματα. Με άλλα λόγια, τη στιγμή που σε μια κλάση τα δεδομένα και οι χρησιμοποιούμενες μέθοδοι δεν αλλάζουν, κάθε αλλαγή στον τρόπο υλοποίησής τους παραμένει διαφανής για το χρήστη. Τα δεδομένα και οι μέθοδοι μιας κλάσης μπορεί να δηλωθούν ως public, ως private, ως protected, ή χωρίς κανέναν από τους προηγούμενους τρεις προσδιοριστές προσπέλασης (access modifiers). Οι μεταβλητές, οι μέθοδοι, και οι κλάσεις που δηλώνονται ως public, μπορούν να προσπελαστούν από οποιαδήποτε άλλη κλάση, όπου κι αν βρίσκεται αυτή. Όσες μεταβλητές και μέθοδοι χαρακτηρίζονται ως private, μπορούν να προσπελαστούν και να χρησιμοποιηθούν μόνο από το ίδιο το αντικείμενο. Δεν μπορούν να προσπελαστούν από πουθενά έξω από αυτό. Τέλος, οι μεταβλητές και οι μέθοδοι που έχουν δηλωθεί ως protected σε μια κλάση μπορούν να προσπελαστούν από όλες τις κλάσεις που βρίσκονται στο ίδιο πακέτο ή από τις υποκλάσεις (subclasses) αυτής της κλάσης για τις οποίες θα μιλήσουμε στη συνέχεια. Εάν δεν χρησιμοποιηθεί κανένας από τους παραπάνω προσδιοριστές για μια μεταβλητή, μέθοδο, ή κλάση, τότε αυτή μπορεί να χρησιμοποιηθεί μόνο από τις κλάσεις που βρίσκονται στο ίδιο πακέτο. Παράδειγμα Στο παρακάτω σχήμα δηλώνονται οι ακέραιοι x, y, z, n ως public, private, protected, και χωρίς προσδιοριστή αντίστοιχα, και φαίνεται η δυνατότητα προσπέλασής τους από αλλού. Στο επάνω μέρος του σχήματος οι κλάσεις βρίσκονται στο ίδιο πακέτο, ενώ στο κάτω σε διαφορετικά πακέτα.

15 Κεφάλαιο 5: Κλάσεις και αντικείμενα 171 Στον πίνακα που ακολουθεί φαίνεται η δυνατότητα προσπέλασης για τους τύπους των προσδιοριστών: Δυνατότητα προσπέλασης public protected Χωρίς προσδιοριστή private Από την ίδια κλάση Ναι Ναι Ναι Ναι Από τις κλάσεις του ίδιου πακέτου Ναι Ναι Ναι Όχι Από οποιαδήποτε κλάση εκτός του πακέτου στο οποίο ανήκει η κλάση Από μια υποκλάση του ίδιου πακέτου Από μια υποκλάση έξω από το πακέτο στο οποίο ανήκει η κλάση Ναι Όχι Όχι Όχι Ναι Ναι Ναι Όχι Ναι Ναι Όχι Όχι Πολυμορφισμός Ένα άλλο χαρακτηριστικό του αντικειμενοστρεφούς προγραμματισμού είναι ο πολυμορφισμός. Πολυμορφισμό έχουμε στην περίπτωση που η ίδια μέθοδος ή ο ίδιος τελεστής χρησιμοποιείται με διαφορετικούς τύπους δεδομένων. Για να πάρουμε μια ιδέα για την έννοια του πολυμορφισμού, ας εξετάσουμε ένα ανάλογο παράδειγμα από την καθημερινή ζωή. Έστω ότι βρισκόμαστε σε ένα σχολείο.

16 172 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Κάθε μαθητής γνωρίζει τη σημασία που έχει το κουδούνι. Όταν αυτό κτυπά, κάποιοι μαθητές φεύγουν από το σχολείο γιατί σχόλασαν, άλλοι πηγαίνουν στην αίθουσά τους για το επόμενο μάθημα, και άλλοι αφήνουν την αίθουσα των μαθημάτων και πηγαίνουν στο σχολικό εργαστήριο γιατί πρόκειται να παρακολουθήσουν ένα πείραμα. Συμπέρασμα: στο χτύπημα του κουδουνιού ανταποκρίνονται όλοι οι μαθητές, αλλά ο τρόπος με τον οποίον ανταποκρίνεται ο καθένας είναι διαφορετικός. Ένα άλλο παράδειγμα πολυμορφισμού είναι ο τελεστής της πρόσθεσης (+). Μπορεί να χρησιμοποιηθεί τόσο για την πρόσθεση δύο αριθμών όσο και για τη συνένωση δύο αλφαριθμητικών. Ο πολυμορφισμός μπορεί να χρησιμοποιηθεί και στις κλάσεις που δημιουργεί ο χρήστης. Ήδη στο κεφάλαιο αυτό, χρησιμοποιήθηκαν δύο τύποι κατασκευαστών της κλάσης Circle, εκ των οποίων ο ένας είχε τρία ορίσματα και ο άλλος ένα. class Circle static double Pi=3.14; static int count=0; double radius; double x; double y; Circle (double r1, double x1, double y1) radius=r1; x = x1; y = y1; ++count; Circle (double r2) x=0.0; y=0.0; radius=r2; ++count; Η κατάσταση στην οποία μπορούμε να έχουμε περισσότερους από έναν κατασκευαστές με το ίδιο όνομα, αλλά τον καθένα με τα δικά του ιδιαίτερα ορίσματα, ονομάζεται υπερφόρτωση κατασκευαστή (constructor overloading). Το όνομα του κάθε κατασκευαστή σε συνδυασμό με τον αριθμό, τον τύπο, και τη σειρά των ορισμάτων του αποτελούν την υπογραφή του (signature).

17 Κεφάλαιο 5: Κλάσεις και αντικείμενα 173 Το φαινόμενο της υπερφόρτωσης ισχύει και στις μεθόδους (method overloading). Μπορούμε δηλαδή να δημιουργήσουμε μεθόδους με το ίδιο όνομα, αλλά με διαφορετικό ορισμό και άλλα ορίσματα, άρα με διαφορετική υπογραφή. Η Java έχει τη δυνατότητα να τις ξεχωρίζει και κάθε φορά να εκτελεί τη μέθοδο που πρέπει από τον α- ριθμό και τον τύπο των ορισμάτων τους. Η κληρονομικότητα των κλάσεων Η κληρονομικότητα είναι μια από τις βασικές ιδέες του αντικειμενοστρεφούς προγραμματισμού. Με την κληρονομικότητα επιτυγχάνεται η επαναχρησιμοποίηση κώδικα ο οποίος έχει ήδη γραφεί και είναι ένα από τα σημαντικά πλεονεκτήματα των γλωσσών ΟΟP σε σχέση με τις συμβατικές γλώσσες. Σύμφωνα με την ιδέα αυτή, ένα αντικείμενο μπορεί να κληρονομεί τα δεδομένα και τις μεθόδους ενός άλλου αντικειμένου. Μπορεί επίσης να τους επιφέρει τροποποιήσεις. Στην Java, όλες οι κλάσεις (οι διαθέσιμες, καθώς και αυτές που γράφουμε), ακολουθούν μια ιεραρχία. Κάθε κλάση έχει μια υπερκλάση (superclass), η οποία βρίσκεται ιεραρχικά πάνω από αυτή. Μπορεί επίσης να έχει μία ή περισσότερες υποκλάσεις (subclasses), οι οποίες βρίσκονται σε κατώτερο επίπεδο ιεραρχίας, όπως φαίνεται στο πιο κάτω σχήμα: Η Class 1 είναι υπερκλάση της Class 2. H Class 2 είναι υποκλάση της Class 1 και υπερκλάση των Class 3, Class 4, Class 5 και Class 6. Οι κλάσεις Class 3, Class 4, Class 5 και Class 6 είναι υποκλάσεις της Class 2. Οι υποκλάσεις κληρονομούν αυτόματα όλες τις μεταβλητές και τις μεθόδους από τις υπερκλάσεις τους. Στην κορυφή όλων των κλάσεων της Java βρίσκεται η κλάση Object. Όλες οι κλάσεις κληρονομούν από αυτή την υπερκλάση. Έτσι, όταν ορίζουμε μια κλάση για την οποία δεν υπάρχει ορισμός υπερκλάσης, η Java θεωρεί αυτόματα ότι η οριζόμενη κλάση είναι υποκλάση της Object.

18 174 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Για να καταλάβουμε την κληρονομικότητα, ας πάρουμε ένα θεωρητικό αλλά διδακτικό παράδειγμα, το παράδειγμα του αυτοκινήτου: Για να φτιάξουμε μια κλάση που περιγράφει το αυτοκίνητο, θα πρέπει να φροντίσουμε να συμπεριληφθούν μερικές χαρακτηριστικές ιδιότητες, όπως η εταιρεία κατασκευής του, το μοντέλο του, η τιμή του, η μέγιστη ταχύτητα που μπορεί να αναπτύξει, ο αριθμός των θυρών του, οι τροχοί του κ.λπ. Η κλάση αυτή μπορεί να οριστεί στην Java ως εξής: Class Car String manufacturer; String model; int maximumspeed; int price; int numdoors; int numwheels=4; Έστω τώρα ότι θέλουμε να φτιάξουμε μια αντίστοιχη κλάση για μοτοσικλέτες. Η κλάση αυτή θα περιέχει ανάλογα χαρακτηριστικά με την κλάση του αυτοκινήτου, εκτός από τις θύρες και τον αριθμό των τροχών. Θα μπορούσαμε λοιπόν να γράψουμε: class motorcycle String manufacturer; String model; int maximumspeed; int price; int numwheels=2; Αφού λοιπόν οι δύο κλάσεις έχουν τόσα πολλά παρόμοια χαρακτηριστικά, θα ήταν καλύτερα να κάνουμε κάτι διαφορετικό: να φτιάξουμε μια κλάση την οποία να ονομάσουμε "όχημα με ρόδες και μηχανή (motorvehicle)". Η κλάση motorvehicle θα ο- ριστεί έτσι ώστε να περιέχει όλα τα κοινά χαρακτηριστικά αυτοκινήτων και μοτοσικλετών. Έπειτα θα ορίσουμε δύο υποκλάσεις, την "Car" και τη "motorcycle", κάθε μία από τις οποίες θα έχει τα γενικά χαρακτηριστικά της υπερκλάσης "motorvehicle". Με βάση αυτά που είπαμε, η κλάση motorvehicle θα οριστεί ως εξής: class motorvehicle String manufacturer; String model;

19 Κεφάλαιο 5: Κλάσεις και αντικείμενα 175 int maximumspeed; int price; int numwheels; Για να δηλώσουμε ότι οι κλάσεις "Car" και "motorcycle" είναι υποκλάσεις, χρησιμοποιούμε τη λέξη extends. class Car extends motorvehicle int numwheels=4; int numdoors; και class motorcycle extends motorvehicle int numwheels=2; Οι κλάσεις "Car" και "motorcycle", εκτός από τις ιδιότητες που ορίζονται στο εσωτερικό τους, κληρονομούν (άρα μπορούν να χρησιμοποιήσουν) και τις ιδιότητες manufacturer, model, maxspeed, και price από την υπερκλάση motorvehicle. Η κληρονομικότητα μπορεί να εκτείνεται και σε περισσότερα από ένα επίπεδα (multilevel inheritance). Μπορεί λ.χ. να ορίσουμε τα αγροτικά αυτοκίνητα ως υποκλάση της κλάσης Car, η οποία να έχει ως χαρακτηριστικό την "καρότσα" (carrier) και βέβαια τις δύο θύρες. class wain extends Car int carrier; int numdoors=2; Πρέπει να σημειώσουμε ότι η έννοια της κληρονομικότητας πολλών επιπέδων είναι κάτι διαφορετικό από την έννοια της πολλαπλής κληρονομικότητας (multiple inheritance) που υπάρχει σε άλλες γλώσσες (όπως η C) και αναφέρεται στη δυνατότητα μιας κλάσης να κληρονομεί από διαφορετικές και μη σχετιζόμενες υπερκλάσεις. Στην κληρονομικότητα εμφανίζεται το φαινόμενο της "παράκαμψης μεθόδου" (method overriding) 2 : Συμβαίνει αρκετές φορές σε μια υποκλάση να ορίζεται ξανά 2 Η παράκαμψη μεθόδου στα ελληνικά αποδίδεται πολλές φορές και ως ακύρωση μεθόδου.

20 176 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA μια μέθοδος, η οποία είχε οριστεί και σε μια κλάση ανώτερου επιπέδου επειδή ο αρχικός ορισμός της δεν κάνει ακριβώς αυτό που θέλουμε. Η μέθοδος στην υποκλάση έχει την ίδια υπογραφή με αυτήν της υπερκλάσης (όνομα, αριθμό, και τύπο ορισμάτων). Κατά κάποιον τρόπο δηλαδή, η νέα μέθοδος "καταργεί" τη δράση της αρχικής. Παράδειγμα Δημιουργούμε την κλάση "σημείο" (Point.java) ως εξής: public class Point protected double x; protected double y; //ο πρώτος κατασκευαστής public Point(double xcor, double ycor) x=xcor; y=ycor; // ο δεύτερος κατασκευαστής public Point () x=0.0; y=0.0; // ο τρίτος κατασκευαστής public Point(Point point) x=point.x; y=point.y; //μέθοδος για να πάρουμε τη συνιστώσα x public double getx() return x;

21 Κεφάλαιο 5: Κλάσεις και αντικείμενα 177 //μέθοδος για να πάρουμε τη συνιστώσα y public double gety() return y; /*μέθοδος για να μετατρέψουμε τις συντεταγμένες του σημείου σε αλφαριθμητικό */ public String tostring() return "(" + x+", " + y + ")"; Αποθηκεύουμε το πρόγραμμα (Point.java) και το μεταγλωττίζουμε (javac Point.java). Στη συνέχεια δημιουργούμε μία κλάση, την κλάση Cycle.java (προσοχή, όχι τη Circle.java που δημιουργήσαμε σε προηγούμενα παραδείγματα) ως υποκλάση της Point.java. Η κλάση Cycle.java καλεί την υπερκλάση Point.java για να δημιουργήσει ένα σημείο ως το κέντρο ενός κύκλου, και στη συνέχεια "γράφει" την ακτίνα του. public class Cycle extends Point protected double radius; static double Pi=3.14; //πρώτος κατασκευαστής public Cycle( double x1, double y1, double r1) super (x1, y1); radius= (r1>=0?r1:0.0); //δεύτερος κατασκευαστής public Cycle () radius=0.0;

22 178 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA public double area() return Pi*radius*radius; public String tostring() return "x= "+x+","+" y= "+ y+","+" r="+radius; Η δεσμευμένη λέξη super χρησιμεύει για την κλήση μελών της υπερκλάσης μιας κλάσης. Όταν χρησιμοποιείται με τη μορφή super(), καλεί τον κατασκευαστή της υπερκλάσης. Όταν χρησιμοποιείται με τη μορφή super.f(), καλεί τη συνάρτηση f(), η οποία έχει οριστεί στην υπερκλάση. Στον προηγούμενο κώδικα, με την εντολή super (x1, y1) καλέσαμε τον κατασκευαστή Point της υπερκλάσης της Cycle και "περάσαμε" σ αυτόν τα ορίσματα x1 και y1 για να δώσουμε αρχικές τιμές στις μεταβλητές του x και y. Δημιουργούμε τώρα μία ακόμη κλάση, την κλάση ColorCycle.java, στην οποία προσθέτουμε μια ιδιότητα, το "χρώμα". public class ColorCycle extends Cycle protected String color; public ColorCycle (double x2, double y2, double r2, String c) super (x2, y2, r2); color=c; public String getcolor() return color; public String tostring() return "x= "+x+","+" y= "+ y+","+" r="+radius+","+ "color="+color; Αποθηκεύουμε και μεταγλωττίζουμε το πρόγραμμα ColorCycle.java.

23 Κεφάλαιο 5: Κλάσεις και αντικείμενα 179 Για να τα δοκιμάσουμε όλα αυτά, φτιάχνουμε το πρόγραμμα showinheritance.java. public class showinheritance public static void main (String[] args) Point p1; Cycle c1; ColorCycle colorc1; p1 = new Point (50.5,70.5); c1= new Cycle (40.0, 50.0, 70.5); colorc1 = new ColorCycle (30.0, 40.0, 20.0, "Red"); //Οι συντεταγμένες του σημείου σε μορφή string System.out.println("The point:"+p1.tostring()); /*Οι συντεταγμένες του κύκλου c1 και η ακτίνα του παράκαμψη της μεθόδου tostring() */ System.out.println("The cycle:"+c1.tostring()); //το εμβαδόν του κύκλου με τη χρήση της μεθόδου area() System.out.println("The cycle area:"+c1.area()); //παράκαμψη μεθόδου tostring() -- τα στοιχεία του colorc1 System.out.println("The colorcycle:"+colorc1.tostring()); /*εμβαδόν του colorc1 -- χρηση της μεθόδου area() από την υπερκλάση */ System.out.println("The colorcycle.area="+colorc1.area()); /*εμφάνιση του "χρωματος" του κύκλου με τη μεθοδο getcolor*/ System.out.println ("The colorcycle' color= "+colorc1.getcolor()); Η εκτέλεση του προγράμματος δίνει το αποτέλεσμα που φαίνεται στην επόμενη εικόνα. Στο αποτέλεσμα: The colorcycle:x= 30.0, y= 40.0, r=20.0,color=red, παρατηρούμε ότι η μέθοδος tostring(), η οποία ορίζεται στην κλάση ColorCycle, παρακάμπτει τη μέθοδο tostring, που ορίζεται στην κλάση Cycle καθώς και στην κλάση Point.

24 180 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Τελικές κλάσεις και μέθοδοι Σε περιπτώσεις κατά τις οποίες θέλουμε μια κλάση να μην δημιουργεί υποκλάσεις, δηλώνουμε την κλάση αυτή ως τελική (final). Μια κλάση που έχει δηλωθεί ως τελική δεν μπορεί να είναι υπερκλάση. Εάν π.χ. δηλώσουμε public final class MyClass αυτή η δήλωση κάνει το μεταγλωττιστή να μην επιτρέπει τη δημιουργία υποκλάσεων της κλάσης MyClass. Μπορούμε επίσης να δηλώσουμε και μια μέθοδο ως τελική. Αυτό γίνεται για να μην είναι δυνατό η μέθοδος αυτή να ακυρωθεί. public final double area() Η δήλωση final μπορεί να χαρακτηρίσει και μια μεταβλητή καθιστώντας την με αυτόν τον τρόπο σταθερά. Αν δηλαδή δηλώσουμε public final double Pi=3.14; οποιαδήποτε προσπάθεια να τροποποιηθεί η τιμή της Pi θα δημιουργήσει ένα σφάλμα χρόνου μεταγλώττισης (compile time error). Μέθοδοι και κλάσεις αφηρημένου τύπου Στην Java υπάρχει η δυνατότητα να δηλώσουμε μια κλάση ή μια μέθοδο ως αφηρημένη (abstract). Μια μέθοδος αφηρημένου τύπου σε μια κλάση απλώς ορίζεται χωρίς να υλοποιείται. Το κυρίως μέρος της μεθόδου αυτής υλοποιείται σε μια υποκλάση

25 Κεφάλαιο 5: Κλάσεις και αντικείμενα 181 της αρχικής κλάσης (ως αρχική εννοούμε την κλάση στην οποία η μέθοδος ορίσθηκε ως αφηρημένη). Η δήλωση της μεθόδου τελειώνει με ένα ";", όπως παρακάτω: public abstract getname(); (getname() είναι το όνομα που διαλέξαμε για τη μέθοδο). Για να δηλωθεί μια κλάση ως αφηρημένη, χρησιμοποιείται και πάλι η λέξη abstract. Ακολούθως, ορίζουμε μια αφηρημένη κλάση, την κλάση myclass, η οποία περιέχει μια αφηρημένη μέθοδο, τη μέθοδο getname(). public abstract class myclass private String astring; public void show() System.out.println("This is a" + astring); public abstract getname(); Οι διασυνδέσεις Η έννοια της διασύνδεσης (interface) είναι κατά κάποιον τρόπο η απάντηση της Java στην αρχή της πολλαπλής κληρονομικότητας, την οποία συναντάμε σε γλώσσες όπως η C. Μια διασύνδεση παρουσιάζει πολλές ομοιότητες με μια συνηθισμένη κλάση, με τη σημαντική διαφορά ότι καμία από τις μεθόδους που ορίζονται μέσα στη διασύνδεση δεν υλοποιείται. Αντί για αυτό, κάθε τέτοια μέθοδος πρέπει να υλοποιείται μέσα σε μια άλλη κλάση η οποία καλεί τη διασύνδεση. Η κλήση γίνεται με τη λέξη implements μαζί με το όνομα της διασύνδεσης. Η διασύνδεση είναι επίσης μια κατάλληλη περιοχή για να δηλώνουμε σταθερές. Συνοψίζοντας, μπορούμε να πούμε ότι η διασύνδεση είναι ο χώρος όπου μπορούμε να τοποθετήσουμε μια συλλογή από σταθερές καθώς και αφηρημένες μεθόδους, τις οποίες μπορούμε να χρησιμοποιήσουμε σε μια άλλη κλάση, γράφοντας εκεί τον κώδικα για κάθε μέθοδο. Για να ορίσουμε μια διασύνδεση, εργαζόμαστε όπως και στις κλάσεις, αλλά αντί για τη λέξη class χρησιμοποιούμε τη λέξη interface. Στο παράδειγμα που ακολουθεί, δημιουργούμε τη διασύνδεση LengthConversion για τη μετατροπή μονάδων μήκους, στην οποία ορίζουμε κάποιες σταθερές και μεθόδους χωρίς να βάλουμε κώδικα σ' αυτές.

26 182 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA public interface LengthConversion double INCH_TO_CM=2.54; double FT_TO_CM=30.5; double YD_TO_M=0.914; double inchtocm(double inches); double fttocm(double feet); double ydtom (double meters); Κατόπιν φτιάχνουμε την κλάση LengthMethods η οποία καλεί τη διασύνδεση LengthConversion χρησιμοποιώντας τη λέξη implements και δημιουργεί κώδικα για τις μεθόδους της. public class LengthMethods implements LengthConversion public double inchtocm(double inches) return inches*inch_to_cm; public double fttocm(double feet) return feet*ft_to_cm; public double ydtom (double yards) return yards*yd_to_m; Τέλος, με την κλάση showlengthconversion, κάνουμε μια συγκεκριμένη μετατροπή μήκους χρησιμοποιώντας τις μεθόδους της κλάσης LengthMethods. class showlengthconversion public static void main(string[] args) double vinch=10.0; double vcm=0.0; LengthMethods tl=new LengthMethods(); vcm=tl.inchtocm(vinch); System.out.println (vinch+" inches = "+ vcm+" cm");

27 Κεφάλαιο 5: Κλάσεις και αντικείμενα 183 Σε μια κλάση που υλοποιεί τις μεθόδους μιας διασύνδεσης μπορούμε να παραλείψουμε μία ή περισσότερες από τις μεθόδους αυτές, αλλά τότε πρέπει να δηλώσουμε την κλάση ως αφηρημένη. public abstract class LengthClasses implements LengthConversion public double inchtocm(double inches) return inches*inch_to_cm; // δεν συμπεριλάβαμε τις άλλες μεθόδους του interface

28 184 ΕΙΣΑΓΩΓΗ ΣΤΗΝ JAVA Ερωτήσεις και Ασκήσεις 1. Ποια είναι τα πλεονεκτήματα του αντικειμενοστρεφούς προγραμματισμού; 2. Μπορείτε να αναφέρετε μερικές διαφορές ανάμεσα στο δομημένο προγραμματισμό (structured programming) και στον αντικειμενοστρεφή προγραμματισμό (object oriented programming); 3. Τι είναι η κλάση στην Java και σε τι διαφέρει από το αντικείμενο; 4. Με ποια (τρία) μέρη δημιουργούμε μια απλή άδεια κλάση; 5. Με ποιον από τους παρακάτω τρόπους δημιουργούμε ένα αντικείμενο της κλάσης Papadopoulos; α. Papadopoulos pap = new Papadopoulos; β. Papadopoulos pap = (new) * Papadopoulos; γ. Papadopoulos pap = new Papadopoulos (); δ. Papadopoulos pap = new (Papadopoulos); 6. Με ποιον τρόπο μπορούμε να χρησιμοποιήσουμε μέσα από ένα αρχείο κώδικα μια κλάση η οποία έχει οριστεί σε ένα διαφορετικό αρχείο; 7. Τι είναι η υποκλάση (subclass) και τι η υπερκλάση (superclass); Με ποιον τρόπο δημιουργούμε μια υποκλάση; 8. Πώς γίνεται η παράκαμψη μιας μεθόδου, η οποία κληρονομείται από μια υπερκλάση; 9. Για να επιστραφεί μια τιμή ως αποτέλεσμα της δράσης μιας μεθόδου, χρησιμοποιείται η λέξη: α) break β) this γ) return δ) pass 10. Οι κατασκευαστές μιας κλάσης ονομάζονται: α) Main β) Constructor γ) Object δ) με το όνομα της κλάσης 11. Τι διαφορά έχει ο κατασκευαστής από τη μέθοδο; 12. Ποια είναι η διαφορά μεταξύ μιας μεταβλητής η οποία έχει δηλωθεί ως public από μία η οποία έχει δηλωθεί ως private; 13. Σε τι χρησιμεύει η δεσμευμένη λέξη super και σε τι η μέθοδος super(); 14. Πόσους κατασκευαστές μπορεί να έχει μία κλάση; 15. Δημιουργήστε μια κλάση με το όνομα MyDataclass. Προσθέστε στην κλάση ένα πεδίο String με το όνομα data1 ως private.

29 Κεφάλαιο 5: Κλάσεις και αντικείμενα 185 Προσθέστε στην κλάση έναν κατασκευαστή, ο οποίος να παίρνει ως μοναδικό όρισμα μια τιμή για την αρχικοποίηση του πεδίου data1. Μέσα στον κατασκευαστή προσθέστε μία public μέθοδο με όνομα PutData(), η οποία να θέτει τιμή στο data1. Μέσα στον κατασκευαστή προσθέστε μία public μέθοδο με όνομα TakeData(), η οποία να λαμβάνει την τιμή του data1. Αφού τελειώσετε, μεταγλωττίστε τον κώδικα που φτιάξατε. 16. Δημιουργήστε μια υποκλάση της MyDataclass με όνομα MyDataclass1. Μέσα σε αυτή: Προσθέστε ένα πεδίο private τύπου int με όνομα data2. Προσθέστε μια public μέθοδο με όνομα CreateString(). Η μέθοδος αυτή θα επιστρέφει ένα δεδομένο τύπου String που θα συντίθεται από τις τιμές των πεδίων data1 και data2. Προσθέστε μια public μέθοδο PutData2(), η οποία να θέτει τιμή στη μεταβλητή data2. Προσθέστε μια public μέθοδο TakeData2(), η οποία να παίρνει την τιμή της data2. Προσθέστε έναν κατασκευαστή με ορίσματα για τις αρχικές τιμές των data1 και data Φτιάξτε μια κλάση, έστω την testmydataclass1, με την οποία να δοκιμάσετε τη λειτουργία της MyDataclass1.

30

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

Περιεχόµενα. Πρόλογος...15 Περιεχόµενα Πρόλογος...15 Κεφάλαιο 1: Εισαγωγή...17 Τι είναι η Java... 17 Η ιστορία της Java... 21 Εκδόσεις της Java... 23 Ξεκίνηµα µε την Java... 24 Το περιβάλλον της γλώσσας... 28 ηµιουργία µιας εφαρµογής

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

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

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

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

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

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

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

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

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

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7 Περιεχόμενα 1 Εισαγωγικές Έννοιες...12 1.1 Το Αντικείμενο στην καθημερινότητα...12 1.2 Το Αντικείμενο στον Προγραμματισμό...12 1.3 Επικοινωνία αντικειμένων...13 1.4 Κλάση (class) αντικειμένων...14 1.4.1

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

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

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

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi 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 υποστηρίζει

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

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

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

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

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

Περιεχόμενα. Περιεχόμενα. Πρόλογος...17 Περιεχόμενα Περιεχόμενα Περιεχόμενα κεφαλαίου Πρόλογος...17 Κεφάλαιο 1 Εισαγωγή... 19 Τι είναι η Java...19 Η ιστορία της Java...23 Εκδόσεις της Java...25 Ξεκίνημα με την Java...27 Το περιβάλλον της γλώσσας...33

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

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

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

Μέρος ΙΙ Εφαρμογές γραφικών με το πακέτο swing - 5. Περιεχόμενα

Μέρος ΙΙ Εφαρμογές γραφικών με το πακέτο swing - 5. Περιεχόμενα Μέρος ΙΙ Εφαρμογές γραφικών με το πακέτο swing - 5 Περιεχόμενα 1 Βασικές Έννοιες σε Εφαρμογές με Γραφικά... 12 1.1 Οι συνιστώσες τηs Java... 12 1.2 Tα πακέτα για συνιστώσες.... 12 1.3 Η κλάσεις στο πακέτο

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

(Διαφάνειες Νίκου Βιδάκη)

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

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

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ημιουργία Γραφικού Περιβάλλοντος

ημιουργία Γραφικού Περιβάλλοντος Γραφικό Περιβάλλον Χρήστη. Πλαίσια και παράθυρα. Κουμπιά. Ετικέτες και πεδία κειμένου. Πλαίσια ελέγχου. Σύνθετα πλαίσια. Περιοχές κειμένου. Πάνελς. Διαχειριστές Διάταξης. Απόκριση σε δεδομένα που εισάγει

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

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

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

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding

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

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

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

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

Certified Java Programmer (CJP)

Certified Java Programmer (CJP) Certified Java Programmer (CJP) Εξεταστέα Ύλη (Syllabus) Πνευµατικά ικαιώµατα Το παρόν είναι πνευµατική ιδιοκτησία της ACTA Α.Ε. και προστατεύεται από την Ελληνική και Ευρωπαϊκή νοµοθεσία που αφορά τα

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

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

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

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

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

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

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

Week 10: Graphical User Interfaces

Week 10: Graphical User Interfaces Week 10: Graphical User Interfaces Έννοιες του προγραµµατισµού ΓΠΕ [GUI] Εβδοµάδα 10: Εισαγωγή στα Γραφικά Περιβάλλοντα Επικοινωνίας [Graphical User Interfaces] Συστατικά [components] ιάταξη [layout] [event-driven

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) Βρείτε τα λάθη Στο πρόγραμμα στην επόμενη διαφάνεια υπάρχουν διάφορα λάθη Ποια είναι? public abstract

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1 Στόχοι Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός) Αντώνιος Συμβώνης www.math.ntua.gr/~symvonis Καλή γνώση βασικών αρχών προγραμματισμού Καλή γνώση βασικών αρχών αντικειμενοστρεφή

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

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

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

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

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

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video ιάγραµµα κλάσεων [Class diagram] Εβδοµάδα 2: Υπο-τύποι και πολυµορφισµός [sub-typing and polymorphism] Database Music Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη

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

Σύνθεση και Κληρονομικότητα

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

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

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

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

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

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

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

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

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

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

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

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

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

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

Περιεχόμενα. Πρόλογος 11 Περιεχόμενα Πρόλογος 11 1 Εισαγωγή 19 1.1 Πριν από την ανάγνωση αυτού του βιβλίου 20 1.2 Μια θεώρηση του υπολογιστή 22 1.3 Εφαρμογές και μικροεφαρμογές Java 24 1.4 JavaScript και JSP 26 1.5 Η δομή του

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

ΚΕΦΑΛΑΙΑ. 2.5.1 attributes 2.5.2 parameters

ΚΕΦΑΛΑΙΑ. 2.5.1 attributes 2.5.2 parameters Vellum Object Oriented Programming - Java Certificate Πιστοποιητικό ανάπτυξης εφαρµογών αντικειµενοστραφούς προγραµµατισµού µε την γλώσσα Java Vellum Global Educational Services Σελίδα 1 από 1 Vellum Object

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 9: Κληρονομικότητα (Inheritance)

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

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

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

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

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

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

Προγραμματισμός Διαδικτύου

Προγραμματισμός Διαδικτύου 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Τμήμα Μηχανικών Πληροφορικής

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 5 : ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΙΣ CLASSES

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 5 : ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΙΣ CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 5 : ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΙΣ CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός-1/2 Η αντικειμενοστραφής πλευρά της Java φαίνεται με την χρήση των αντικειμένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING Swing Τα GUIs (Graphical User Interfaces) είναι τα συνηθισμένα interfaces που χρησιμοποιούν παράθυρα, κουμπιά, menus,

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται

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

Βιοϊατρική τεχνολογία

Βιοϊατρική τεχνολογία Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Βιοϊατρική τεχνολογία Ενότητα 5: Οξύμετρο (OxyPro Project) Αν. καθηγητής Αγγελίδης Παντελής e-mail: paggelidis@uowm.gr ΕΕΔΙΠ Μπέλλου Σοφία e-mail: sbellou@uowm.gr

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

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

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

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Κληρονομικότητα (Inheritance) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κληρονομικότητα και Επαναχρησιμοποίηση - Υποκλάσεις/Υπερκλάσεις - Απόκρυψη ονομάτων - Το super, protected

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

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εκφώνηση: Δημιουργείστε εφαρμογή σε Java Swing με χρήση του IDE NetBeans όπου θα παρουσιάζεται ποιο κουμπί πατήθηκε. Η εφαρμογή θα μοιάζει ως εξής: Πρώτο Βήμα: Αρχική

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

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

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

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

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Χαρίδημος Κονδυλάκης Εισαγωγή ΟΡΓΑΝΩΣΗ ΜΑΘΗΜΑΤΟΣ Πληροφορίες Διδάσκοντα Διδάσκοντας: Χαρίδημος Κονδυλάκης Email: Kondylak@ics.forth.gr Εβδομαδιαίες Ώρες Διδασκαλίας: 2 ώρες

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

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

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

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

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

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

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

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

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

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7 Περιεχόμενα 1 Εισαγωγικές Έννοιες...12 1.1 Το Αντικείμενο στην καθημερινότητα...12 1.2 Το Αντικείμενο στον Προγραμματισμό...12 1.3 Επικοινωνία αντικειμένων...13 1.4 Κλάση (class) αντικειμένων...14 1.4.1

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

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

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

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

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες

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

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

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

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

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

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

Περιεχόμενα. Περιεχόμενα Περιεχόμενα 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 Εκφράσεις...

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

ΑΣΚΗΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΣΚΗΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΑΣΚΗΣΕΙΣ ΕΡΓΑΣΤΗΡΙΟΥ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΑΣΚΗΣΗ 1 Δημιουργήστε μια κλάση με όνομα Metro που θα παριστάνει τη μονάδα μέτρησης μήκους. 1 μέτρο έχει υποδιαιρέσεις : 1m =10dm =100cm =1000mm.

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

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

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

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα

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

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

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

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

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

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

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

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016 Πανεπιστήμιο Κύπρου Πολυτεχνική Σχολή Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, 2016 Ακαδημαϊκό Έτος 2016-17, Χειμερινό Εξάμηνο 1 η Ενδιάμεση

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

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Αντικειμενοστρεφής Προγραμματισμός Η/Υ Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος Το κείμενο αυτό γράφεται με σκοπό να βοηθήσει τους φοιτητές του μαθήματος

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

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

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

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

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

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

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

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

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

Αρχικοποίηση Αντικειµένων & Κλάσεων στη Java Object Instantiation & Class Initialisation Κώστας Σαΐδης saiko@di.uoa.gr http://daemon.di.uoa.gr/daemon/issue4 Μάρτιος 2004 Η Αρχή είναι το ήµισυ του Παντός

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

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας

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

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

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

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

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

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

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

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

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

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