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

Σχετικά έγγραφα
Πρακτικά Θέματα. Αντικειμενοστρεφής Προγραμματισμός 7/3/2016. Διαλέξεις. Διάρκεια μαθήματος. Παρουσιάσεις διαλέξεων επιπλέον χρήσιμο υλικό

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #1 η : Εισαγωγή: Λογισμικό, Γλώσσες Προγραμματισμού, Java

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

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

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

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

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

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

Περιεχόμενο του μαθήματος

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Α. Ερωτήσεις Ανάπτυξης

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

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

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

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

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

Αντικειμενοστρεφής προγραμματισμός Object Oriented Programming (OOP) Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

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

Διάλεξη 1: Αντικειμενοστρεφής Προγραμματισμός -Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

Περιγραφή Μαθήματος ΠΕΡΙΓΡΑΦΗ ΜΑΘΗΜΑΤΟΣ. Γεώργιος Παπαϊωάννου ( )

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 1: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (1ο Μέρος)

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ. Ι. Ψαρομήλιγκος Χ. Κυτάγιας

Προγραμματισμός Υπολογιστών με C++

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Μαλούτα Θεανώ Σελίδα 1

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

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

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

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

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

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

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

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

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

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

Κεφάλαιο 1 Προγραμματισμός Υπολογιστή. Εφαρμογές Πληροφορικής Κεφ. 7 Καραμαούνας Πολύκαρπος 1

Εισαγωγή στην επιστήμη των υπολογιστών

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Βασίλειος Κοντογιάννης ΠΕ19

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΕΠΠ Ερωτήσεις θεωρίας

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Ενότητα 2 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Κεφάλαιο 7. ΕΠΑΛ Σύμης Εφαρμογές πληροφορικής Ερωτήσεις επανάληψης

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

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

(Logic Gate Simulator)

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

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

Κεφάλαιο 1: Εισαγωγή. 1.1 Οι γλώσσες προγραμματισμού

Δημιουργία προγραμμάτων Java

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

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

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

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Υποδείγματα Ανάπτυξης

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

Τεχνολογία Λογισμικού

Σχεδιασµός βασισµένος σε συνιστώσες

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

Δημιουργία μιας εφαρμογής Java με το NetBeans

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

Transcript:

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

Πρακτικά Θέματα Διαλέξεις Δευτέρα 13:15-16:00, αίθουσα 103 Διάρκεια μαθήματος 13 εβδομάδες Παρουσιάσεις διαλέξεων/εργαστηρίων επιπλέον χρήσιμο υλικό Στο site του μαθήματος Εργαστήρια Ώρες γραφείου: Τρίτη 14:30-15:30, κτίριο Ανδρούτσου, γραφείο 204

Αξιολόγηση / Βαθμολόγηση επίδοσης Βαθμολογία Εξετάσεις 80% Εργαστήρια Ασκήσεις Εργασία 30% Βαθμός εξετάσεων >= 5 για να μετρήσει ο βαθμός της εργασίας

Στόχος Εισαγωγή στον αντικειμενοστρεφή προγραμματισμό (object oriented programming) χρησιμοποιώντας τη γλώσσα προγραμματισμού Java Ο σκοπός του είναι να διδάξει τις βασικές έννοιες και τεχνικές που συνιστούν το υπόδειγμα του αντικειμενοστρεφούς προγραμματισμού

Βιβλίο Βασικά Συγγράμματα H. M. Deitel, P. J. Deitel, Java Προγραμματισμός, Μ. Γκιούρδας David J. Barnes, Michael Kolling, Αντικειμενοστρεφής Προγραμματισμός σε Java, Εκδόσεις Κλειδάριθμος

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό

Γλώσσες προγραμματισμού (1/5) Το βασικό εργαλείο του προγραµµατιστή! Είναι ένα σύστηµα συµβολισµών µε το οποίο µπορεί να περιγράφει εργασίες που πρόκειται να εκτελεστούν από έναν υπολογιστή Η ποικιλία των εργασιών που είναι επιθυµητό να εκτελούνται από τους υπολογιστές δικαιολογεί την ύπαρξη πληθώρας γλωσσών προγραµµατισµού που διαφέρουν: στην πολυπλοκότητα στη µορφή στη θεµατική περιοχή όπου απευθύνονται στη φιλοσοφία προγραµµατισµού που υποστηρίζουν

Γλώσσες προγραμματισμού (2/5) Γλώσσα μηχανής (Machine language) Γλώσσα συμβολομετάφρασης (Assembly language) Γλώσσες υψηλού επιπέδου (High-level languages)

Γλώσσες προγραμματισμού (3/5) Γλώσσα μηχανής (Machine language) Η φυσική γλώσσα του υπολογιστή Ακολουθία από 0 και 1 (binary) Διαφορετικοί υπολογιστές αντιλαμβάνονται-κατανοούν διαφορετικές ακολουθίες Δυσνόητη για τον άνθρωπο : 01010001... Γλώσσα συμβολομετάφρασης (Assembly language) Μνημονικά (σύντομες περιγραφικές λέξεις) για τη γλώσσα μηχανής low level: κάθε εντολή θεωρείται ως ένα σημείο πρωταρχική (minimal) Επίσης δύσκολη στην κατανόηση από τον άνθρωπο: ADD.L d0,d2

Γλώσσες προγραμματισμού (4/5) Με τη χρήση γλωσσών χαµηλού επιπέδου είναι πρακτικά αδύνατο να εξασφαλιστεί η απαιτούµενη ποιότητα του λογισµικού Οι γλώσσες προγραμματισμού χαµηλού επιπέδου χρησιµοποιούνται µόνο για την υλοποίηση τµηµάτων ενός συστήµατος λογισµικού που είναι εξαιρετικά απαιτητικό από πλευράς επιδόσεων ή που αφορά συγκεκριµένες συσκευές Παράδειγμα µέρη λειτουργικών συστηµάτων λογισµικό ειδικών απαιτήσεων, όπως αυτό που σχετίζεται µε συστήµατα πραγµατικού χρόνου (real time systems).

Γλώσσες προγραμματισμού (5/5) Γλώσσες υψηλού επιπέδου (High-level languages) FORTRAN, Pascal, BASIC, C, C++, Java, κτλ high level: κάθε εντολή συντίθεται από πολλές εντολές χαμηλού επιπέδου Πιο κοντά στην Αγγλική γλώσσα Ευκολότερη στην ανάγνωση και την κατανόηση: hypotenuse = Math.sqrt(opposite*opposite + adjacent*adjacent);

Είδη προγραμματισμού (1/3) Σειριακός Προγραμματισμός Δομημένος/Συναρτησιακός Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός (OOP Object Oriented Programming)

Είδη προγραμματισμού (2/3) Σειριακός Προγραμματισμός Ενδείξεις / Ταμπέλες (Labels) Ροή από επάνω προς τα κάτω Ανακατευθύνσεις (GOTOs, Jumps) Παραδείγματα: Απλή Basic, Assembly Δομημένος/Συναρτησιακός Προγραμματισμός Βιβλιοθήκη συναρτήσεων Συνάρτηση (Function) Διαδικασία (Procedure) Κλήση Συναρτήσεων Παράδειγμα: Γλώσσα C

Είδη προγραμματισμού (3/3) Αντικειμενοστρεφής Προγραμματισμός Βιβλιοθήκη κλάσεων Στη Java λέγεται και πακέτο Κλάση (Class) Αντικείμενο / Στιγμιότυπο (Object / Instance) Ιδιότητα (Attribute) Μέθοδος (Method) Κλήσεις σε αντικείμενα, μεθόδους αντικειμένων κτλ.

Δομημένος Προγραμματισμός 4 βασικές δομές Ακολουθία Επιλογή Επανάληψη Αναδρομή

Δομημένος Προγραμματισμός Divide and Conquer Αποσύνθεση μεγάλης κλίμακας προβλημάτων σε μικρότερα ανεξάρτητα Πρόγραμμα είναι μία συλλογή από διαδικασίες, όπου η καθεμία περιλαμβάνει μία ακολουθία εντολών

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

Παραδοσιακή αναπαράσταση

Αντικειμενοστρεφής αναπαράσταση

Αντικειμενοστρεφής προσέγγιση 3 βασικές έννοιες στην ΟΟ Τεχνολογία Αντικείμενα (Objects) Μηνύματα/Μέθοδοι (Messages/Methods) Κλάσεις (Classes) Μετάφραση στο δομημένο προγραμματισμό Μεταβλητές (variables) Κλήσεις συναρτήσεων (function calls) Τύποι δεδομένων (data types)

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

Εξέλιξη μεθόδων σχεδιασμού λογισμικού

Πλεονεκτήματα αντικειμενοστρεφούς προσέγγισης Πρέπει να προσπαθούμε να κάνουμε το λογισμικό αξιόπιστο και συντηρήσιμο Επαναληπτική ανάπτυξη προγραμμάτων Δεν χρειάζεται να καταλάβουμε τα πάντα από την αρχή Αποφεύγουμε κώδικα spaghetti Δεν χρειάζεται κάθε φορά να ξεκινάμε από την αρχή Καθώς αυξάνεται η πολυπλοκότητα, το κόστος ανάπτυξης αυξάνεται εκθετικά OOP (Object Oriented Programming επιταχύνει το χρόνο ανάπτυξης

Αντικείμενα Όταν γράφουμε ένα πρόγραμμα σε μια αντικειμενοστρεφή γλώσσα προγραμματισμού, στην ουσία δημιουργούμε ένα μοντέλο ενός συστήματος του κόσμου. Τα τμήματα από τα οποία αποτελείται το μοντέλο αυτό είναι τα αντικείμενα (objects) που εμφανίζονται στην περιοχή του προβλήματος. Τα αντικείμενα αυτά πρέπει να αναπαρασταθούν στο μοντέλο του συστήματος που δημιουργούμε με το πρόγραμμα που αναπτύσσουμε. Ο κόσμος γύρω μας αποτελείται από αντικείμενα. Κάθε αντικείμενο μπορεί να εκτελέσει κάποιες συγκεκριμένες ενέργειες και κάθε ενέργεια μπορεί να επηρεάσει κάποια από τα άλλα αντικείμενα του κόσμου.

Κλάσεις Τα αντικείμενα μπορούν να κατηγοριοποιηθούν σε κλάσεις (classes), με κάθε κλάση να περιγράφει με ένα αφηρημένο τρόπο όλα τα αντικείμενα ενός συγκεκριμένου είδους. Ένα αντικείμενο, στην ουσία, περικλείει κάποια δεδομένα (πεδία) και ένα σύνολο λειτουργιών (μεθόδους) για την επεξεργασία τους. Συνήθως, αναφερόμαστε σε ένα συγκεκριμένο αντικείμενο ως στιγμιότυπο (instance), προκειμένου να δώσουμε έμφαση στο γεγονός ότι το αντικείμενο αυτό ανήκει σε μια συγκεκριμένη κλάση. Από τη στιγμή που θα ορίσουμε μια κλάση μπορούμε να δημιουργήσουμε όσα αντικείμενα στιγμιότυπα χρειαζόμαστε για την επίλυση ενός προβλήματος.

Αντικείμενα και Κλάσεις Αντικείμενα Αναπαριστούν πράγματα από τον πραγματικό κόσμο ή από κάποιο χώρο προβλήματος (π.χ: το κόκκινο αυτοκίνητο στο parking ) Κλάσεις Αναπαριστούν όλα τα αντικείμενα ενός είδους (π.χ: αυτοκίνητο ) Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling

Ορισμοί Κλάση Πρότυπο, καλούπι (template) που περιλαμβάνει τον ορισμό, τη δήλωση δεδομένων και τις πράξεις που γίνονται σε αυτά, ορίζει τις κοινές μεταβλητές και μεθόδους όλων των ομοειδών αντικειμένων (με ίδια δομή και συμπεριφορά) και χρησιμοποιείται για τη δημιουργία πολλών αντικειμένων με παρόμοια χαρακτηριστικά (ιδιότητες και μεθόδους) Αντικείμενο Συγκεκριμένη εμφάνιση, στιγμιότυπο με συγκεκριμένες τιμές κοινών μεταβλητών. Κάθε αντικείμενο είναι μοναδικό, αλλά ταυτόχρονα ανήκει και σε μια κλάση (ομοειδών) αντικειμένων. Λέμε ότι το αντικείμενο είναι στιγμιότυπο της εν λόγω κλάσης.

Παράδειγμα Κλάση: Περιγράφει μια οικογένεια οντοτήτων με ίδια χαρακτηριστικά και συμπεριφορά (δηλ. μια αφηρημένη οντότητα) Π.χ. σκύλος, τοστιέρα Στιγμιότυπο: Περιγράφει μια συγκεκριμένη οντότητα, που παράγεται από μια αντίστοιχη κλάση, στην οποία λέμε ότι ανήκει Π.χ. Πλούτο, η_τοστιέρα_μου

Στατικότητα Κλάσης Δυναμικότητα Στιγμιοτύπων Κλάσης Κλάση: αφηρημένη έννοια (π.χ. οι τηλεοράσεις γενικώς) Aντικείμενο: χειροπιαστή (απτή) οντότητα (η δική σου συγκεκριμένη συσκευή τηλεόρασης) Μια κλάση ορίζει τι είναι ένα αντικείμενο, αλλά δεν είναι αυτό καθ εαυτό ένα αντικείμενο. Π.χ. αν μιλάμε για την οντότητα γάτα, η κλάση είναι ο ορισμός της γάτας, αλλά δεν ταϊζουμε τον ορισμό της γάτας, αλλά μια συγκεκριμένη γάτα που έχουμε στο σαλόνι μας, ή που έχουν οι φίλοι μας, ή που συναντάμε κάπου κ.λ.π. Όταν γράφουμε ένα πρόγραμμα σε αντικειμενοστρεφή γλώσσα προγραμματισμού, δεν ορίζουμε στο πρόγραμμα μεμονωμένα αντικείμενα, αλλά κλάσεις αντικειμένων. Τα αντικείμενα δημιουργούνται από το πρόγραμμά μας κατά το χρόνο της εκτέλεσής του.

Στατικότητα Κλάσης Δυναμικότητα Στιγμιοτύπων Κλάσης Η κλάση είναι στατική περιγραφή συνόλου αντικειμένων ΕΝΩ κάθε αντικείμενο είναι μια δυναμική, πραγματική οντότητα Από κάθε κλάση μπορούν να δημιουργηθούν πολλά αντικείμενα - ανάλογα με τις ανάγκες του προβλήματος) κατά τη διάρκεια εκτέλεσης του προγράμματος (στιγμιότυπα instances) της κλάσης Κάθε κλάση δηλώνεται μόνο μια φορά σε ένα πρόγραμμα Η δήλωση της κλάσης δεν δεσμεύει χώρο στη μνήμη, αλλά το κάθε αντικείμενο που θα δημιουργηθεί στο χρόνο εκτέλεσης καταλαμβάνει χώρο στη μνήμη για κάθε ιδιότητα Η κλάση είναι μια compile-time οντότητα, το αντικείμενο αποτελεί run-time οντότητα

Στατικότητα Κλάσης Δυναμικότητα Στιγμιοτύπων Κλάσης Περιγραφή, Ορισμός, ΣΥΝΤΑΓΗ, ΚΑΛΟΥΠΙ ένα συγκεκριμένο αντικείμενο Κλάση Μία Δεν καταλαμβάνει χώρο στη μνήμη! Χειροπιαστές Οντότητες Αντικείμενα Πολλά Καταλαμβάνουν χώρο στη μνήμη

Ποια είναι κλάσεις και ποια αντικείμενα? Η ποδοσφαιρική ομάδα του Ολυμπιακού Ο παίκτης κ. Τάδε της ποδοσφαιρικής ομάδας του Παναθηναϊκού Έντομο Ελικόπτερο Ο υπάλληλος κ. Γεωργίου του ΟΤΕ Άνδρας Το αεροπλάνο που θα πραγματοποιήσει τη σημερινή πτήση των 10.20 της Aegean για Ρώμη Εργαζόμενος Θαλάσσιο όχημα Το Πανεπιστήμιο Πειραιώς

Εντοπίστε ζεύγη με σχέση κλάσης αντικειμένου Ηλεκτρονική συσκευή Τηλεοπτική συσκευή Τηλεοπτική συσκευή Η τηλεόραση μάρκας τάδε, μεγέθους τάδε που έχω στο δωμάτιο μου Θηλαστικό Σκύλος Σκύλος Ο σκύλος του φίλου μου του Πέτρου που τον λένε Αζόρ Ορθογώνιο σχήμα Το ορθογώνιο με πάνω αριστερή κορυφή το σημείο (5,5) και κάτω δεξιά κορυφή το σημείο (10,3) Σχήμα Κυκλικό Σχήμα

Ορισμοί Ιδιότητα (attribute) Είναι μια μεταβλητή. Μπορεί να είναι: Αντικειμένου Μόνο του συγκεκριμένου αντικειμένου Κλάσης Όλων των αντικειμένων που περιλαμβάνει μια κλάση Κατ επέκταση και όλων των αντικειμένων των υποκλάσεων που περιλαμβάνει η κλάση Το σύνολο των ιδιοτήτων ενός αντικειμένου καθορίζουν την κατάστασή του (state)

Ορισμοί Μέθοδος (method) ή λειτουργία Διαδικασία ή συνάρτηση που καθορίζει τη συμπεριφορά ενός αντικειμένου ή κλάσης / τρόπος με τον οποίο λειτουργεί/συμπεριφέρεται το αντικείμενο Π.χ. ο σκύλος γαβγίζει, τρώει, κοιμάται Το σύνολο των μεθόδων ενός αντικειμένου καθορίζουν τη συμπεριφορά του (behavior)

Βασικές έννοιες αντικειμενοστρεφούς προσέγγισης Αντικείμενο (object) / Κλάση (class) Ιδιότητες (properties) Μέθοδοι (methods)

Βασικές έννοιες αντικειμενοστρεφούς προσέγγισης Η οργάνωση των κλάσεων χρησιμοποιείται για να γίνει το μοντέλο του φυσικού κόσμου. Σε αυτό, μεταξύ των άλλων βοηθούν και οι έννοιες: Ιεραρχίες (hierarchies) Κληρονομικότητα (inheritance) Οι ορισμοί των κλάσεων και οι ιεραρχίες τους προορίζονται για να αναπαραστήσουν ένα πρόβλημα ή τη λύση του.

Δομή αντικειμένου Στατικό μέρος (private) Δεδομένα (Μεταβλητές) Δυναμικό μέρος (public) Διαδικασίες (Μέθοδοι)

Αντικείμενο - παράδειγμα Σύστημα που ελέγχει ένα φράγμα σε ποταμό Φράγμα: αντικείμενο το οποίο διαθέτει Ιδιότητες / Καταστάσεις, πχ: πλήρως_ανοιχτό (όπου το νερό του ποταμού ρέει ανεμπόδιστα μέσω του φράγματος) πλήρως_κλειστό (όπου δεν επιτρέπεται σε νερό του ποταμού να περάσει διαμέσου του φράγματος) Μέθοδοι / Συμπεριφορές, πχ: προειδοποιεί: όταν το φράγμα πρόκειται να αλλάξει κατάσταση από την κλειστή ανοιχτή, μπορεί να στέλνει μια προειδοποίηση στους ανθρώπους που βρίσκονται για αναψυχή στις εκβολές του ποταμού, για να τους ειδοποιήσει ότι το επίπεδο του νερού του ποταμού πρόκειται να ανέβει.

Παραδείγματα κλάσεων... Κλάση Φυτό Ιδιότητες: ύψος, ηλικία, χρώμα φύλλων, ανθοφόρο Μέθοδοι: φυτεύεται, αναπτύσσεται, δημιουργεί χλωροφύλλη, μαραίνεται Αντικείμενα της κλάσης: κάθε ένα συγκεκριμένο φυτό από τα φυτά της βεράντας μας, κάθε συγκεκριμένο φυτό στα παρτέρια μιας συγκεκριμένης πλατείας ή ενός συγκεκριμένου κήπου κ.λ.π.

Παραδείγματα κλάσεων... Κλάση Μοτοσικλέτα Ιδιότητες: στοιχεία πινακίδων, μάρκα, μοντέλο, έτος κυκλοφορίας, τρέχουσα ταχύτητα, μέγιστη ταχύτητα, κυβισμός, τιμή Μέθοδοι: ξεκινά, κινείται, επιταχύνει, επιβραδύνει, φρενάρει, στρίβει, σταματά Αντικείμενα της κλάσης: η συγκεκριμένη μοτοσικλέτα που είναι παρκαρισμένη στο πάρκινγκ, μια Honda 250 με αριθμό κυκλοφορίας ΑΑΑ 1234, η μοτοσικλέτα του συμφοιτητή μου κ.λ.π

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

Προσδιορισμός Μεθόδων Κλάσεων Όταν καλούμαστε να προσδιορίσουμε μεθόδους σε κλάσεις, θα πρέπει να θυμόμαστε ότι: Οι μέθοδοι είναι ενέργειες που μπορεί να εκτελέσουν τα αντικείμενα της κλάσης ή μπορούν να εκτελεστούν επί αυτών και στο λογισμικό παριστάνονται με τμήματα κώδικα που υλοποιούν τις λειτουργίες που απαιτούνται για να γίνουν αυτές οι ενέργειες.

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

Ποιες είναι ιδιότητες και ποιες είναι μέθοδοι των κλάσεων? Κύκλος: συντεταγμένες κέντρου, ακτίνα, διάμετρος, υπολογισμός εμβαδού, υπολογισμός μήκους περιφέρειας Ηθοποιός: απαγγελία διαλόγων, ύψος, παίξιμο ρόλου, βάρος, χρώμα ματιών, χρώμα μαλλιών, ηλικία, φύλο, είδος υποκριτικής (δραματικός, κωμικός κλπ.) Χορευτής: ύψος, είδος χορών που χορεύει, βάρος, χρώμα ματιών, χρώμα μαλλιών, ηλικία, φύλο, κάνει πιρουέτες

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

Βασικές έννοιες αντικειμενοστρεφούς προσέγγισης Συνοψίζοντας Ένα αντικείμενο είναι δομή προγράμματος που έχει δεδομένα και ονομάζονται ιδιότητες που σχετίζονται με αυτό, και μπορεί να εκτελεί συγκεκριμένες ενέργειες που είναι γνωστές ως συμπεριφορές. Μία κλάση ορίζει τον τύπο ή το είδος του αντικειμένου. Αποτελεί ένα προσχέδιο για τον ορισμό αντικειμένων. Όλα τα αντικείμενα της ίδιας κλάσης έχουν τα ίδια είδη δεδομένων και τις ίδιες συμπεριφορές. Όταν ένα πρόγραμμα τρέχει, όλα τα αντικείμενα μπορούν να ενεργούν αυτόνομα ή να αλληλεπιδρούν με άλλα αντικείμενα, για την επίτευξη του σκοπού του προγράμματος. Οι ενέργειες που επιτελούνται από τα αντικείμενα ορίζονται από τις μεθόδους τους.

Αναπαράσταση κλάσεων - παράδειγμα Μάθημα Κωδικός μαθήματος Είδος Τίτλος Διδάσκων Προσθήκη Μαθήματος () Διαγραφή Μαθήματος () Μεταβολή στοιχείων Μαθήματος () Ανάθεση Μαθήματος ()

Αναπαράσταση κλάσεων - παράδειγμα Καθηγητής Αρ. Ταυτότητας Όνομα Επώνυμο Διεύθυνση Τηλέφωνο Προσθήκη Καθηγητή () Διαγραφή Καθηγητή () Μεταβολή στοιχείων Καθηγητή ()

Αντικείμενα / Στιγμιότυπα - παράδειγμα Κάθε αντικείμενο είναι ένα στιγμιότυπο (instance) μιας κλάσης! ΔΗΛΑΔΗ κάθε στιγμιότυπο διαθέτει τις δικές του τιμές χαρακτηριστικών ΑΛΛΑ μοιράζεται τα ονόματα των χαρακτηριστικών και τις συμπεριφορές με τα υπόλοιπα στιγμιότυπα της κλάσης

Στιγμιότυπα κλάσεων (αντικείμενα) Μάθημα 01 Κωδικός μαθήματος: ΨΣ-502 Είδος: Κορμού Τίτλος: Αντικειμενοστρεφής Προγραμματισμός Διδάσκων: Β987654 Προσθήκη Μαθήματος () Διαγραφή Μαθήματος () Μεταβολή στοιχείων Μαθήματος () Ανάθεση Μαθήματος ()

Στιγμιότυπα κλάσεων (αντικείμενα) Καθηγητής 01 Αρ. Ταυτότητας: Β987654 Όνομα: Νικόλαος Επώνυμο: Νικολάου Διεύθυνση: Χ. Τρικούπη και Φάωνος Τηλέφωνο: 2251036600 Προσθήκη Καθηγητή () Διαγραφή Καθηγητή () Μεταβολή στοιχείων Καθηγητή ()

Βασικές αρχές σχεδιασμού ΟΟΡ Ενθυλάκωση (encapsulation) Πολυμορφισμός (polymorphism) Κληρονομικότητα (inheritance)

Ενθυλάκωση Διαμερισματοποίηση (compartmentalisation) / ομαδοποίηση δομής και συμπεριφοράς έτσι ώστε οι λεπτομέρειες της υλοποίησης ενός αντικειμένου να είναι κρυμμένες

Ενθυλάκωση Οι ιδιότητες αποκρύπτονται από τη συμπεριφορά του αντικειμένου Δεν χρειάζεται να ξέρεις πώς λειτουργεί η μηχανή για να οδηγήσεις ένα αυτοκίνητο Μεγάλο μέρος της λειτουργικότητας είναι αόρατο Γυρίζεις ένα διακόπτη το ραδιόφωνο αρχίζει Πατάς ένα πετάλι το αυτοκίνητο επιταχύνει Η ενθυλάκωση είναι η τεχνική που πακετάρει τις πληροφορίες με τέτοιο τρόπο ώστε να αποκρύπτει αυτές που πρέπει να είναι κρυμμένες (βρίσκονται μέσα στην «κάψουλα» θύλακα) και να καθιστά ορατές αυτές που πρέπει να είναι ορατές.

Πολυμορφισμός «Πολλές μορφές» Είναι η ιδιότητα που επιτρέπει να σταλεί το ίδιο μήνυμα σε διαφορετικά αντικείμενα και το κάθε αντικείμενο να εκτελέσει μια λειτουργία που αντιστοιχεί στην κλάση που ανήκει (δυνατότητα χρήσης κοινών ονομάτων για διαφορετικές μεθόδους) Η εντολή accelerate είναι η ίδια ανεξαρτήτως για τα διαφορετικά αντικείμενα airplane, car, bus, κτλ Η κλάση των πολυγώνων. Για κάθε πολύγωνο υπολογίζεται το εμβαδό, αλλά ο υπολογισμός του εμβαδού ενός τριγώνου είναι διαφορετικός από τον υπολογισμό του εμβαδού ενός ορθογωνίου Η εντολή «παίξε το αγαπημένο σου άθλημα» σημαίνει διαφορετικά πράγματα για διαφορετικούς ανθρώπους. Για κάποιον σημαίνει μπάσκετ, για κάποιον άλλο ποδόσφαιρο.

Διαδικαστικός προγραμματισμός vs πολυμορφισμού

Κληρονομικότητα Φανταστείτε ένα πρόβλημα που έχει ως αντικείμενα πελάτες, υπαλλήλους κτλ Τόσο οι πελάτες όσο και οι υπάλληλοι είναι άνθρωποι Θα πρέπει να φτιάξω δύο κλάσεις. Κάποια από τα χαρακτηριστικά / λειτουργίες αυτών είναι κοινά. π.χ. ύψος, βάρος κλπ. Θα έχω πολλές φορές τον ίδιο κώδικα!!! Για να το αποφύγω και να έχω καλύτερη επαναχρησιμοποίηση δεδομένων και λειτουργιών. Ορίζω μια κλάση (γονέας), ονόματι άνθρωπος Αυτή θα συγκεντρώνει τα κοινά χαρακτηριστικά/λειτουργίες Από την κλάση αυτή θα κληρονομούν οι κλάσεις πελάτης και υπάλληλος (κλάσεις παιδιά)

Κληρονομικότητα Η δυνατότητα δημιουργίας νέων κλάσεων παίρνοντας ως βάση μία άλλη ήδη υπάρχουσα Η νέα κλάση θα έχει τα χαρακτηριστικά της παλιάς ενώ θα μπορεί να τα τροποποιήσει, να τα επεκτείνει και να προσθέσει καινούρια για να καλύψει συγκεκριμένες ανάγκες Δύο όψεις: Η κλάση-παιδί είναι εξειδίκευση (specialization) της κλάσης-γονέας Η κλάση-γονέας είναι γενίκευση (generalization) της κλάσης-παιδί

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

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

Κληρονομικότητα Vehicle Automobile Motorcycle Bus Sedan Sports Car School Bus Luxury Bus Τι ιδιότητες κληρονομεί κάθε όχημα από τον τύπο οχήματος που βρίσκεται πιο πάνω στο διάγραμμα?

Κληρονομικότητα - Παράδειγμα Εύκολη προσθήκη νέας κατηγορίας, π.χ. Διοικητικός υπάλληλος, γραμματεία

Ιστορία της Java Βασίστηκε στη γλώσσα C και C++ (SUN MICROSYSTEMS) Το αρχικό της όνομα ήταν Oak (βελανιδιά). Αναπτύχθηκε από τον James Gosling το 1991 για «έξυπνες» ηλεκτρονικές συσκευές Επειδή δεν αναπτύχθηκε η αγορά, το project κινδύνευσε να ακυρωθεί Με την έκρηξη του Internet το 1993,το project σώθηκε Η Java χρησιμοποιήθηκε για τη δημιουργία σελίδων με δυναμικό περιεχόμενο Η Java ανακοινώθηκε επίσημα το 1995

Java editions 1996 - JavaTM 1.0 1997 - JavaTM 1.1 1998 - JavaTM 1.2 - aka Java 2 Platform 2000 - JavaTM 2 Rel.1.3Stand.Ed.(J2SE) 2002 - JavaTM 2 Rel. 1.4 J2SE 2004 - JavaTM 2 Rel. 1.5 - aka J2SE 5.0 2006 - Java SE 6 2011 - Java SE 7 2014 - Java SE 8 2017 Java SE 9 2018 March 20 Java SE 10 2018 September 11 Java SE 11

Η Java και ο Παγκόσμιος Ιστός Ένα μέρος της επιτυχίας της Java οφείλεται στο γεγονός ότι είναι η πρώτη γλώσσα που σχεδιάστηκε για να εκμεταλλευτεί τη δύναμη του Παγκόσμιου Ιστού, ο οποίος είχε αναδειχθεί λίγο πριν την κυκλοφορία της Java το 1995 Πέρα από τα πιο παραδοσιακά προγράμματα εφαρμογών, η Java καθιστά δυνατή τη συγγραφή μικρών αλληλεπιδραστικών προγραμμάτων, που λέγονται μικροεφαρμογές (applets), τα οποία εκτελούνται κάτω από τον έλεγχο ενός browser

Βασικά Χαρακτηριστικά της Java Γλώσσα προγραμματισμού της εταιρίας SUN που αγοράστηκε από την Oracle Ανεξάρτητη πλατφόρμας λειτουργικού συστήματος και hardware, βάσει της τεχνολογίας Java Virtual Machine (JVM) Γλώσσα Αντικειμενοστρεφούς Προγραμματισμού (Object-Oriented) Διατίθεται δωρεάν το περιβάλλον εκτέλεσής της (runtime environment) και το περιβάλλον ανάπτυξης (development kit)

Βασικά Χαρακτηριστικά της Java Η Java σχεδιάστηκε με στόχο να είναι: Αντικειμενοστρεφής Κατανεμημένη Απλή Πολυνηματική (multi-threaded) Ασφαλής Ανεξάρτητη υπολογιστικής πλατφόρμας WORA (Write Once, Run Anywhere) Κατάλληλη για εφαρμογές στο Internet στον πελάτη (applets) και στον εξυπηρετητή (servlets)

Ανεξαρτησία.. Τι εννοούμε λέγοντας: «Η Java είναι ανεξάρτητη πλατφόρμας συστήματος»

Βασικά Χαρακτηριστικά της Java Παρέχει τυποποιημένες βιβλιοθήκες κλάσεων (Java class libraries) μέσω των οποίων υποστηρίζονται Γραφικά και γραφικές διεπαφές (GUI) Πολυμέσα Επικοινωνία πάνω σε δίκτυα Επαναχρησιμοποιούμενες συνιστώσες (components) Σύνδεση με βάσεις δεδομένων...

Java Class Libraries Προγράμματα Java Αποτελούνται από τμήματα που ονομάζονται classes Οι classes περιέχουν μεθόδους που επιτελούν κάποιον υπολογισμό Class libraries Γνωστές και σαν Java API (Applications Programming Interface) Πλούσια συλλογή από ήδη ορισμένες κλάσεις, έτοιμες για χρήση Δύο μέρη στην εκμάθηση της Java: Εκμάθηση της ίδιας της γλώσσας ώστε να μπορεί ο χρήστης να φτιάξει τις δικές του κλάσεις Εκμάθηση της χρήσης των ήδη υπαρχόντων class libraries

Η συμβατική διαδικασία προγραμματισμού Ένας compiler μεταφράζει πηγαίο κώδικα σε συγκεκριμένη γλώσσα κατάλληλη για συγκεκριμένο τύπο ΚΜΕ Ο linker συνδέει διάφορα προγράμματα αντικειμένου τα οποία έχουν αναπτυχθεί ανεξάρτητα

Παραδοσιακός τρόπος μεταγλώττισης προγραμμάτων Source code compiler Object code Linker Executable program Loader Running program Edit & Debug Libraries & other precompiled components

Java compilation & interpretation Source code Java compiler Java bytecodes Java interpreter or JVM Running program Edit & Debug Libraries

Στάδια κατά τη διεργασία προγραμματισμού Η Java χρησιμοποιεί μια υβριδική στρατηγική: Τα προγράμματα μεταγλωττίζονται σε μια ενδιάμεση γλώσσα που παίζει το ρόλο Γλώσσας Μηχανής για την Java Virtual Machine (JVM) Η Java μετά ερμηνεύει αυτά τα προγράμματα προσομοιώνοντας την JVM Το JRE (Java Running Environment) αποτελείται από τη JVM και τις τυποποιημένες βιβλιοθήκες κλάσεων

Η διεργασία μεταγλώττισης πηγαίο αρχείο #include <stdio.h> main() { printf("hello\n"); } μεταγλωττι στής Αντικειμενικό αρχείο 0100100101011001000 1000010100011101011 0110100111010101100 άλλα αντικειμενικά αρχεία και βιβλιοθήκες 1001011010110001011 0100100101001011011 0101101011010100101 πρόγραμμα σύνδεσης Εκτελέσιμο αρχείο 0100100101011001000 1000010100011101011 0110100111010101100 1001011010110001011 0100100101001011011 0101101011010100101

Ο (δι)ερμηνευτής Java πηγαίο αρχείο αρχείο class αρχειοθήκη JAR import acm.program.*; public class Hello public void run() { println("hello"); } } μεταγλωττι στής CA FE BA BE 00 03 00 00 16 07 00 1A 07 00 00 04 00 07 0C 00 13 01 00 16 2B 4C 6A 61 πρόγραμμα σύνδεσης CA FE BA BE 00 03 00 00 16 07 00 1A 07 00 00 04 00 07 0C 00 13 01 00 16 2B 4C 6A 61 47 72 61 70 68 69 63 2D 00 1F 08 00 0F 07 14 0A 00 02 00 08 0A 00 18 0C 00 17 00 1C άλλα αρχεία class 47 72 61 70 68 69 63 2D 00 1F 08 00 0F 07 14 0A 00 02 00 08 0A 00 18 0C 00 17 00 1C JVM hello Hello

Πώς δουλεύει η Java Ο Java compiler μεταφράζει Java source code σε μία ειδική αναπαράσταση που λέγεται bytecode Ο Java bytecode δεν είναι η γλώσσα μηχανής για οποιοδήποτε παραδοσιακό CPU Ένα άλλο εργαλείο λογισμικού, ο interpreter μεταφράζει το bytecode σε γλώσσα μηχανής και το εκτελεί Το JVM είναι ένα software layer που παρέχει μετάφραση μεταξύ Java byte codes και του λειτουργικού συστήματος

Η διαδικασία ανάπτυξης Java

Java εφαρμογές και applets Υπάρχουν δύο τύποι εφαρμογών Java Java applications Τρέχουν stand alone Java applets Τρέχουν σε browser Ενσωματωμένα σε HTML αρχείο Έχουν μεγαλύτερους περιορισμούς ασφαλείας

Λογισμικά για ανάπτυξη εφαρμογών σε Java http://www.oracle.com/technetwork/java/javase/downloa ds/index.html Τρέχουσες εκδόσεις της γλώσσας, εκπαιδευτικό υλικό Για να αναπτύξετε προγράμματα χρειάζεται το Java Development Kit (JDK) διαθέτει εργαλεία για τη μεταγλώττιση και εκτέλεση ενός προγράμματος Java Για να εκτελέσετε προγράμματα χρειάζεται το Java Runtime Environment (JRE) διαθέτει εργαλεία μόνο για την εκτέλεση ενός προγράμματος Java Υπάρχουν εκδόσεις του περιβάλλοντος Java για Windows, Linux, Solaris, MacOS κά

Λογισμικά για ανάπτυξη εφαρμογών σε Java Java 2 Platform Standard Edition: ότι χρειάζεστε για την μεταγλώττιση και εκτέλεση εφαρμογών Java http://www.oracle.com/technetwork/java/javase/overview/index.html Eclipse: περιβάλλον ανάπτυξης για μεταφορά κώδικα σε οποιαδήποτε γλώσσα http://www.eclipse.org/ NetBeans: ενοποιημένο περιβάλλον ανάπτυξης, ένα από τα ευρύτερα χρησιμοποιούμενα, ελεύθερης διανομής εργαλεία ανάπτυξης Java http://www.netbeans.org/

IDE Integrated Development Environment Ενοποιημένο περιβάλλον ανάπτυξης: software application που παρέχει εργαλεία στους computer programmers για software development. Ένα IDE συνήθως αποτελείται από: Source code editor Compiler και/ή interpreter Build automation εργαλεία Debugger Μερικές φορές, σύστημα ελέγχου εκδόσεων και διάφορα εργαλεία, τα οποία είναι ολοκληρωμένα για την απλοποίηση της κατασκευής ενός GUI. Πολλά σύγχρονα IDEs έχουν επίσης επιπλέον εργαλεία για αντικειμενοστρεφή ανάπτυξη λογισμικού

Πηγές/Acknowledgements http://www.oracle.com/technetwork/java/index.html H. M. Deitel, P. J. Deitel, Java Προγραμματισμός, Μ. Γκιούρδας D. Barnes, M. Kolling, Αντικειμενοστρεφής Προγραμματισμός σε Java, Κλειδάριθμος Βασίλης Χριστοφίδης, Αντικειμενοστρεφής Προγραμματισμός, Πανεπιστήμιο Κρήτης Κ. Τσαγκάρης, Εισαγωγή στις εφαρμογές της Java, Πανεπιστήμιο Πειραιώς