Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) OOP Concepts and Object-Oriented Design.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Advertisements

Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Δαμιανός Χατζηαντωνίου Οικονομικό Πανεπιστήμιο Αθηνών
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
24/11/2003Message Passing Interface (MPI)1 Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 10: Graphical User Interfaces Εβδομάδα 10: Εισαγωγή στα Γραφικά Περιβάλλοντα.
Αντικειμενοστρεφής Προγραμματισμός, Αντώνιος Συμβώνης, Πανεπιστήμιο Ιωαννίνων, Slide 1 Week 13: Review Εβδομάδα 13: Ανασκόπηση.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Page  1 Ο.Παλιάτσου Γαλλική Επανάσταση 1 ο Γυμνάσιο Φιλιππιάδας.
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
Γραφικά Ενδιάμεσα Χρήστη στην Java
1 Θεματική Ενότητα Γραφήματα & Επίπεδα Γραφήματα.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Methods, Constructors and Field.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Graphical User Interfaces (GUI) SWING.
Δημιουργικό Marketing συνθέσεις...με χρωματιστούς όγκους παιδικές.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός)
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Classes, Objects, και Events.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Syntax and Style.
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Αγγελική Γεωργιάδου- Αναστασία Πεκτέσογλου Δράμα 2006
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Software Engineering for Web Applications
Κλάσεις και αντικείμενα
Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming)
Wrapper Classes, Abstract Classes and Interfaces
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον προγραμματισμό
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διδάσκων: Κων/νος Κώτης
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Swing II Εβδομάδα Νο. 6.
Προχωρημένος Προγραμματισμός
JAVA – Basic OOP Principles
Wrapper Classes, Abstract Classes and Interfaces
Υπο-τύποι και πολυμορφισμός
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Κληρονομικότητα [inheritance]
Μεταγράφημα παρουσίασης:

Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) OOP Concepts and Object-Oriented Design

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-2 Στόχοι: l Εισαγωγή στις βασικές αρχές OOP : –Κληρονομικότητα (inheritance) –Αφαιρετικότητα (abstraction) –encapsulation –Πολυμορφισμός (polymorphism) l Εκτίμηση της πολυπλοκότητας του object- oriented design.

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-3 Γιατί το OOP αξιώνει «φήμη» l Εφαρμόζεται καλύτερα σε team development περιβάλλοντα l Διευκολύνει τη δημιουργία και τη χρήση software components l Ευκολότερο GUI programming l Ευκολότερο program maintenance

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-4 OOP σε Nutshell: l Ένα πρόγραμμα μοντελοποιεί objects που αλληλεπιδρούν. l Objects δημιουργούν άλλα objects και “στέλουν μηνύματα” το ένα στο άλλο. l Κάθε object ανήκει σε μια class; Η class καθορίζει τις ιδιότητες των objects της. Ο data type του object είναι η class στην οποία ανήκει. l Οι προγραμματιστές γράφουν classes (και επαναχρησιμοποιούν υπάρχουσες classes).

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-5 Οι βασικές έννοιες του OOP: l Inheritance l Abstraction l Encapsulation l Polymorphism l Event-driven computations

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-6 Inheritance l μια class μπορεί να επεκτείνει μιαν άλλη class, κληρονομεί όλα τα μέλη της που είναι δεδομένα και τις μεθόδους και είναι public ή protected και μπορεί να ξαναορίσει μερικά και/ή να προσθέσει δικά της. l μια class μπορεί να υλοποιήσει implement ένα interface, υλοποιώντας όλες τις methods του. l Η κληρονομικότητα (Inheritance) υλοποιεί την σχέση “είναι” ανάμεσα σε objects.

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-7 subclass or derived class superclass or base class extends Inheritance (συνέχ.) subinterfacesuperinterface extends classinterface implements

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-8 Inheritance (συνέχ.) l Στην Java, μια subclass μπορεί να κάνει extend ΜΟΝΟ ΜΙΑ superclass. l Στην Java, ένα subinterface μπορεί να κάνει extend ΈΝΑ superinterface l Στην Java, μια class μπορεί να κάνει implement πολλά interfaces — αυτό καθορίζει την μορφή για πολλαπλή κληρονομικότητα multiple inheritance στην Java.

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-9 Inheritance (συνέχ.) l μια abstract class μπορεί να έχει code για μερικές από τις μεθόδους της; άλλες methods ορίζονται abstract και μένουν χωρίς code. l ένα interface απλά παραθέτει methods αλλά δεν έχει κανένα code. l μια concrete class μπορεί να κάνει extend μιαν abstract class και/ή να κάνει implement ένα ή περισσότερα interfaces, παρέχοντας code για όλες τις methods.

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-10 Inheritance (συνέχ.) l Inheritance παίζει ένα διπλό ρόλο: –μια subclass επαναχρησιμοποιεί το code από τη0 superclass. –μια subclass (ή μια class που κάνει implement ένα interface) inherits τα data type της superclass (ή του interface) που είναι public ή protected σαν να είναι δικά της secondary type.

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-11 Inheritance (συνέχ.) l Inheritance οδηγεί σε μια ιεραρχία (hierarchy) από classes και/ή interfaces σε ένα application: Game GameFor2 BoardGame ChessBackgammon Solitaire

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-12 Inheritance (συνέχ.) l Παράδειγμα από το Swing: JComponent JTextComponent JTextField JTextArea JEditorPane JPasswordField JTextPane

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-13 Inheritance (συνέχ.) l ένα object μιας class στον πάτο της ιεραρχίας κληρονομεί ΟΛΕΣ τις methods από όλες τις classes πάνω από αυτή (και βρίσκονται στο μονοπάτι προς τη ρίζα). l Επίσης κληρονομεί τα data types από όλες τις classes πάνω από αυτή (και βρίσκονται στο μονοπάτι προς τη ρίζα).. l Inheritance χρησιμοποιείται επίσης για να επεκτείνει ιεραρχίες από library classes, επαναχρησιμοποιώντας τον library code και κληρονομώντας τα library data types.

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-14 Inheritance (συνέχ.) l Η Inheritance υλοποιεί την σχέση «είναι» (“is a”). l Μην το συνεχίσετε με το embedding (ένα object έχει σαν πεδίο ένα άλλο object), το οποίο αναπαριστά την σχέση «έχει» “has a” : Α sailboat is a boat A sailboat has a sail

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-15 Quiz l True or False? Η Inheritance είναι χρήσιμη για τα ακόλουθα:  Team development ________  Reusable software ________  GUI programming ________  Easier program maintenance ________

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-16 Abstraction l Abstraction σημαίνει αγνόησε άσχετα χαρακτηριστικά, ιδιότητες, ή συναρτήσεις και δώσε έμφαση στα σχετικά... l... Σχετικά με το δεδομένο project (με την σκέψη σε μελλοντική χρήση σε παρόμοια projects). “Relevant” to what?

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-17 Abstraction (συνέχ.) l Παραδείγματα από javax.swing: public abstract class AbstractButton Fields: protected ButtonModel model etc. Methods: void addActionListener (ActionListener l); String getActionCommand(); String getText() etc. Apply to any button: “regular” button, a checkbox, a toggle button, etc. The data model that determines the button’s state

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-18 Abstraction (συνέχ.) java.lang.Object | +--java.awt.Component | +--java.awt.Container | +--javax.swing.JComponent | +--javax.swing.AbstractButton Extends features of other abstract and concrete classes

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-19 Encapsulation l Encapsulation σημαίνει ότι όλα τα data members (fields) μιας class ορίζονται private. Μερικές methods μπορεί να είναι επίσης private. l Μια class μπορεί να αλληλεπιδράσει με άλλες classes (που καλούνται clients αυτής της class) μόνο μέσω των class’s constructors και public methods. l Constructors και public methods μιας class υπηρετούν (serve) σαν το interface με τους clients της class.

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-20 Encapsulation (συνέχ.) l Κάνει σίγουρο ότι δομικές αλλαγές (structural changes) παραμένουν τοπικές local: –Συχνά, η δομή μιας class (όπως ορίζεται από τα fields της) αλλάζει πιο συχνά από τους constructors και της methods της class. –Encapsulation κάνει σίγουρο ότι όταν τα fields αλλάζουν, δεν χρειάζονται αλλαγές σε άλλες classes (ή αρχή της τοπικότητας “locality” ή της απόκρυψης πληροφοριών).

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-21 Quiz l True or False? Abstraction and encapsulation are helpful for the following:  Team development ________  Reusable software ________  GUI programming ________  Easier program maintenance ________

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-22 Polymorphism l Συχνά θέλουμε να αναφερθούμε σε ένα object με τον αρχικό του τύπο, πιο συγκεκριμένο, data type. l Αυτό είναι χρήσιμο όταν καλούμε methods ορισμένες για object αυτού του τύπου: ComputerPlayer player1 = new ComputerPlayer(); HumanPlayer player2 = new HumanPlayer("Nancy", 8);... if ( player2.getAge () < 10 ) player1.setStrategy (new Level1Strategy ());

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-23 Polymorphism (συνέχ.) l Όμως μερικές φορές θέλουμε να αναφερθούμε στο object μέσω του inherited, πιο γενικού τύπου : Player players[ ] = new Player[2]; players[0] = new ComputerPlayer(); players[1] = new HumanPlayer("Nancy”, 8); game.addPlayer(players[0]); game.addPlayer(players[1]); Both ComputerPlayer and HumanPlayer implement Player

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-24 Polymorphism (συνέχ.) l Γιατί μεταμφιέζουμε (disguise) ένα object σαν ένα generic type? –Για να κάνουμε mix διάφορους σχετιζόμενους types στην ίδια συλλογή –Για να το περάσουμε αυτό σε μια method που περιμένει σαν παράμετρο ένα πιο γενικό τύπο (generic type) –Για να ορίσουμε ένα πιο generic field (ειδικά σε μιαν abstract class) που θα αρχικοποιηθεί και θα καθοριστεί ακριβώς (“specialized”) στη συνέχεια.

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-25 Polymorphism (συνέχ.) l Polymorphism κάνει σίγουρο ότι η κατάλληλη method καλείτε για ένα object ενός specific type όταν το object μεταμφιέζεται σε generic type: while ( game.notDone() ) { players[k].makeMove(); k = (k + 1) % numPlayers; } The appropriate makeMove method is called for all players (e.g., for a HumanPlayer and a ComputerPlayer).

Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-26 Polymorphism (συνέχ.) l Καλά νέα: polymorphism υποστηρίζεται από την Java — το μόνο που έχετε να κάνετε είναι να το χρησιμοποιείτε σωστά. l Polymorphism υλοποιείται χρησιμοποιώντας μια τεχνική που καλείται dynamic method binding: το ποια ακριβώς method καλείται καθορίζεται στο run time.