Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


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

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

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

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

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

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

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

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

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

9 Εισαγωγή στο ΟΟΡ και 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.

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

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

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

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

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

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

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

17 Εισαγωγή στο ΟΟΡ και 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

18 Εισαγωγή στο ΟΟΡ και 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

19 Εισαγωγή στο ΟΟΡ και 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.

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

21 Εισαγωγή στο ΟΟΡ και 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 ________

22 Εισαγωγή στο ΟΟΡ και 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 ());

23 Εισαγωγή στο ΟΟΡ και 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

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

25 Εισαγωγή στο ΟΟΡ και 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).

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


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google