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

Σχετικά έγγραφα
3 Αλληλεπίδραση Αντικειμένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική ΙΙ Θεματική Ενότητα 5

{ int a = 5; { int b = 7; a = b + 3;

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

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

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

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

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

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

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

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

Αυτοματοποιημένη χαρτογραφία

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

Αυτοματοποιημένη χαρτογραφία

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Θεωρία Πιθανοτήτων & Στατιστική

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Πληροφορική ΙΙ Θεματική Ενότητα 6

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

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

Διαχείριση Χρόνου & Δίκτυα στη Διοίκηση Έργων. Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ

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

Αυτοματοποιημένη χαρτογραφία

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Θεωρία Πιθανοτήτων & Στατιστική

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

Πληροφορική. Ενότητα 1: Α. Οργάνωση μαθήματος. Β. Στοιχεία Προγραμματισμού -Προγραμματιστικές Δομές, Πρόγραμμα, Γλώσσες.

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

Ενότητα 1 Διάλεξη 2β

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

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

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

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

Δομές Δεδομένων Ενότητα 3

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Σχεδίαση με Ηλεκτρονικούς Υπόλογιστές

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

ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΚΑΛΑΘΟΣΦΑΙΡΙΣΗΣ ΙΙ

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Παράκτια Τεχνικά Έργα

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

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Υπολογιστικά & Διακριτά Μαθηματικά

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

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

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

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

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ιστορία της μετάφρασης

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

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

Transcript:

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αλληλεπίδραση Αντικειμένων

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τα παραδείγματα κώδικα που χρησιμοποιούνται σε κάποιες από τις ακόλουθες διαφάνειες μπορούν να βρεθούν στον παρακάτω σύνδεσμο: http://users.auth.gr/greg/oop.zip

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

Πολύπλοκο Λογισμικό Ρομποτικό ποδόσφαιρο. Άμυνα, πάσα, επίθεση, σουτ, κτλ.

Αντικειμενοστρεφές Λογισμικό Τα επί μέρους τμήματα είναι αντικείμενα. Η εσωτερική τους πολυπλοκότητα αφορά ιδιωτικά πεδία και μεθόδους. Αλληλεπίδραση των αντικειμένων για επίλυση του προβλήματος μέσω δημόσιων μεθόδων. Δεν είναι πάντα εύκολος ο καθορισμός τους. Λογισμικό διαχείρισης αεροδρομίου. Πύλη, Αεροπλάνο, Διάδρομος, Επιβάτης, κτλ. πύλη1, αεροπλάνο4, διάδρομος2, αποσκευή8, κτλ.

Ψηφιακό Ρολόι Κατασκευή ψηφιακού ρολογιού με 24ωρη απεικόνιση ώρας (από 00:00 έως 23:59). Αναγνωρίζετε επί μέρους τμήματα; 4 ψηφία (πολύ χαμηλό επίπεδο). 2 διψήφιοι αριθμοί για ώρες και λεπτά αντίστοιχα. Ξεκινάνε από 0, αυξάνουν κατά ένα, ο ένας πηγαίνει έως το 23 ενώ ο άλλος έως το 59, ξαναγυρίζουν στο 0. Αντικείμενα: 2 διψήφιοι αριθμοί και 1 ρολόι. Κλάσεις: Διψήφιος αριθμός, Ρολόι.

Οι Κλάσεις της Εφαρμογής Ρολογιού public class NumberDisplay { private int limit; private int value; Θυμηθείτε πως οι κλάσεις ορίζουν τύπους δεδομένων public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes;

Διάγραμμα Κλάσεων Απεικονίζει τις κλάσεις μιας εφαρμογής και τις μεταξύ τους σχέσεις. Παρουσιάζει τη στατική άποψη μιας εφαρμογής. ClockDisplay H κλάση ClockDisplay χρησιμοποιεί την κλάση NumberDisplay NumberDisplay

Κώδικας NumberDisplay (1/3) public NumberDisplay(int rolloverlimit) { limit = rolloverlimit; value = 0; public void increment() { value = (value + 1) % limit;

Κώδικας NumberDisplay (2/3) public void setvalue(int avalue) { if ((avalue >= 0) && (avalue < limit)) { value = avalue; else { System.out.println("Τιμή εκτός ορίων");

Λογικοί Τελεστές Τελεστές. &, && (AND),, (OR),! (NOT), ^ (XOR) Λεπτομέρειες. Τα ορίσματα τους πρέπει να είναι τύπου boolean. Το αποτέλεσμα τους είναι μια τιμή τύπου boolean. Οι τελεστές &&, αξιολογούν το δεύτερο σκέλος μόνο αν χρειαστεί (short-circuit). BooleanOperators.java

Προτεραιότητα Τελεστών Operators Precedence postfix expr++ expr-- unary ++expr --expr +expr -expr ~! multiplicative * / % additive + - shift << >> >>> relational < > <= >= instanceof equality ==!= bitwise AND & bitwise exclusive OR ^ bitwise inclusive OR logical AND && logical OR ternary? : assignment = += -= *= /= %= &= ^= = <<= >>= >>>=

Κώδικας NumberDisplay (3/3) public int getvalue() { return value; public String getdisplayvalue() { if (value < 10) { return "0" + value; else { return "" + value;

Κώδικας ClockDisplay (1/3) public ClockDisplay() { hours = new NumberDisplay(24); Δημιουργία αντικειμένων minutes = new NumberDisplay(60); public void settime(int hour, int minute) { hours.setvalue(hour); minutes.setvalue(minute); Εξωτερική κλήση μεθόδων

Κώδικας ClockDisplay (2/3) public void timetick() { minutes.increment(); if (minutes.getvalue() == 0) { hours.increment(); public String getdisplaytime() { return hours.getdisplayvalue() + ":" + minutes.getdisplayvalue();

Κώδικας ClockDisplayApp public class ClockDisplayApp public static void main(string[] args) { ClockDisplay c = new ClockDisplay(); c.settime(13,45); c.timetick(); String s = c.getdisplaytime(); System.out.println(s);

Διάγραμμα Αντικειμένων Απεικονίζει τα αντικείμενα και τις σχέσεις τους, μια χρονική στιγμή κατά την εκτέλεση μιας εφαρμογής. Παρουσιάζει τη δυναμική άποψη μιας εφαρμογής. :NumberDisplay mydisplay: ClockDisplay limit value 24 13 hours minutes :NumberDisplay limit 60 value 45

Υπερφόρτωση Υπερφόρτωση μεθόδων και κατασκευαστών. Ύπαρξη δύο ή παραπάνω μεθόδων ή κατασκ/των με το ίδιο όνομα, αλλά διαφορετική υπογραφή, δηλαδή αριθμό, τύπο ή/και σειρά παραμέτρων. Εξυπηρετεί την αρχή του πολυμορφισμού. Παραδείγματα. System.out.println(3); System.out.println("Καλημέρα!"); public int add(int x, int y) { return x+y; public double add(double x, double y) { return x+y;

Κώδικας ClockDisplay (3/3) public ClockDisplay(int hour, int minute) { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); settime(hour, minute); Εσωτερική κλήση μεθόδου public ClockDisplay(int hour, int minute) { this(); settime(hour, minute); Ρητή κλήση κατασκευαστή

Ρητή Κλήση Κατασκευαστή Ρητή κλήση κατασκευαστή. Κλήση ενός κατασκευαστή μέσα από έναν άλλο κατασκευαστή μέσω της λέξης κλειδί this. Προσοχή! Η ρητή κλήση κατασκευαστή πρέπει να είναι η πρώτη εντολή μέσα σε έναν κατασκευαστή. Απαγορεύονται οι αναδρομικές κλήσεις κατασκευαστών.

Υπερφόρτωση Ονόματος Υπερφόρτωση ονόματος. Μια τοπική μεταβλητή ή μια τυπική παράμετρος επιτρέπεται να έχουν το ίδιο όνομα με ένα πεδίο. Ο κανόνας του πλησιέστερου ορισμού. Όταν χρησιμοποιούμε το όνομα αυτό μέσα σε μια μέθοδο, τότε δεν αναφερόμαστε στο πεδίο, αλλά στα άλλα είδη μεταβλητών, γιατί ο ορισμός τους είναι πιο κοντά στο σημείο χρήσης του ονόματος. Για τοπικές μεταβλητές λέμε ότι κρύβουν το πεδίο. Πρόσβαση αποκτάμε με τη λέξη κλειδί this. this.name = name;

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τέλος Ενότητας Επεξεργασία: Εμμανουήλ Ρήγας Θεσσαλονίκη, Εαρινό Εξάμηνο 2013-2014