Περιεχόμενα. Πρόλογος... 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 ηµιουργία µιας εφαρµογής

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 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 θεματικές ενότητες είναι είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές

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

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

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

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

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

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

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

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

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

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

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

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

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

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1 Κληρονομικότητα Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Κληρονομικότητα 1 Ιεραρχίες Κλάσεων Στην Java (και γενικότερα στον αντικειμενοστραφή προγραμματισμό) μπορεί από μία να κλάση να δημιουργηθεί

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12 Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

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

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

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

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

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

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

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

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

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

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

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

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

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

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα κληρονοµικότητα Παύλος Εφραιµίδης 1 ιεραρχίες κλάσεων Στην (και γενικότερα στον αντικειµενοστρεφή προγραµµατισµό) µπορεί από µία κλάση να δηµιουργηθεί µια νέα κλάση απόγονος που κληρονοµεί όλα τα χαρακτηριστικά

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #17 Week 10: Graphical User Interfaces Έννοιες του προγραμματισμού ΓΠΕ [GUI] Διάλεξη #17: Εισαγωγή στα Γραφικά Περιβάλλοντα Επικοινωνίας [Graphical User Interfaces] Συστατικά [components] Διάταξη [layout]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

02 Αντικειμενοστρεφής Προγραμματισμός 02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object

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

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

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

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

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισµός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης µεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of)είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako:

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

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

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

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13 Περιεχόμενα Πρόλογος... 5 Κεφάλαιο 1. Βασικά Στοιχεία της Java.... 13 Τύποι Δεδομένων, Μεταβλητές και Πίνακες... 13 Τελεστές και Δομές Επιλογής Επανάληψης... 16 Κλάσεις και Μέθοδοι... 21 Πακέτα και Διασυνδέσεις...

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

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 Τμήμα θεωρίας με Α.Μ. σε 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #18 Week 12: GUIs with Swing Προγραμματισμός ΓΠΕ: ανασκόπηση Εισαγόμενα πακέτα Java Διαλεξη #18: Γραφικά Περιβάλλοντα Επικοινωνίας Java με Swing «Στήσιμο»του αυτόνομου παράθυρου [frame] Συστατικά [components]

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

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

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

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

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

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

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

Certified Java Programmer (CJP)

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

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

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

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

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

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

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

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

Week 10: Graphical User Interfaces

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods

Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods (Object Oriented Programming) Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 Σχεδίαση-Ανάπτυξη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD

Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Πακέτα (Packages) Φωλιασμένες ή Εσωτερικές Κλάσεις (Inner Classes) PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Πακέτα (Packages) Φωλιασμένες

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

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13 Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις

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

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

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

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

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD (Object Oriented Programming) Διασυνδέσεις / Διεπαφές PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος Διεπαφές/Διασυνδέσεις (Interfaces) 2 Διεπαφές/Διασυνδέσεις (Interfaces)

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

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

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

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

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

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

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

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις. Μέσω της κληρονομικότητας μπορούμε να δημιουργήσουμε µια νέα τάξη (θυγατρική)

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΑ. 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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