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

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

Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:

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


Παρουσίαση με θέμα: "Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:"— Μεταγράφημα παρουσίασης:

1 Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014: Κώστας Στάμος)

2 Δομημένος Προγραμματισμός Ο θεμ έ λιος λ ί θος του δομημ έ νου προγραμματισμο ύ ε ί ναι ο τεμαχισμ ό ς μεγ ά λων προγραμμ ά των σε επιμ έ ρους κομμ ά τια (λογισμικ έ ς μον ά δες), ό που το καθ έ να έ χει συγκεκριμ έ νη αποστολ ή, αλλ ά συνδ έ εται και επικοινωνε ί με τα ά λλα για να δημιουργ ή σουν έ να ολοκληρωμ έ νο πρ ό γραμμα.

3 Μειονεκτ ή ματα Δομημ έ νου Προγραμματισμο ύ Η πολυπλοκ ό τητα Η τοπικ ό τητα των μεταβλητ ώ ν Αυξημ έ νη πιθαν ό τητα λ ά θους Αυξημ έ νη πολυπλοκ ό τητα και στη διαχε ί ριση των δεδομ έ νων Η δημιουργ ί α ν έ ων τ ύ πων δεδομ έ νων ε ί ναι δ ύ σκολη.

4 Αντικειμενοστραφ ή ς Προγραμματισμ ό ς Στον Αντικειμενοστραφ ή προγραμματισμ ό, δ ί νεται έ μφαση στη δημιουργ ί α μον ά δων λογισμικού οι οπο ί ες θα περιλαμβ ά νουν τα δεδομ έ να αλλ ά και τις εντολ έ ς που τα διαχειρ ί ζονται.

5 Αρχές Αντικειμενοστραφούς Προγραμματισμού Ο ΑΠ αφορά μια φιλοσοφία προγραμματισμού που αφορά αντικείμενα Ένα αντικείμενο αφορά μια οντότητα του πραγματικού κόσμου που προσδιορίζεται διακριτά Πχ., ένας συγκεκριμένος φοιτητής, γραφείο, πλήκτρο, κύκλος ή ακόμα και ένα δάνειο μπορούν να θεωρηθούν αντικείμενα. Ένα αντικείμενο έχει μοναδική ταυτότητα, κατάσταση και συμπεριφορές: - Η κατάσταση(state) ενός αντικειμένου αποτελειται από ένα σύνολο ιδιοτήτων(properties) με τις τρέχουσες τιμές τους. - Η συμπεριφορά ενός αντικειμένου ορίζεται από ένα σύνολο μεθόδων

6 ΑΝΤΙΚΕΙΜΕΝΑ Όνομα κλάσης: Circle Ιδιότητες: radius is _______ Μέθοδοι: Το πρότυπο μιάς κλάσης 1 ο Αντικείμενο τύπου Circle Ιδιότητες: radius is 10.5 Μέθοδοι: 2 ο Αντικείμενο τύπου Circle Ιδιότητες: radius is 15.3 Μέθοδοι: 1 ο Αντικείμενο τύπου Circle Ιδιότητες: radius is 3.0 Μέθοδοι: Ένα αντικείμενο έχει κατάσταση(state) και συμπεριφορά (behavior). Η κατάσταση(ιδιότητες) καθορίζει το αντικείμενο και η συμπεριφορά(methods) το τί κάνει το αντικείμενο.

7 ΚΛΑΣΕΙΣ (CLASSES) Οι Κλάσεις είναι αφηρημένες δομές που ορίζουν αντικείμενα του ιδίου τύπου. Είναι ένα αρχέτυπο για αντικείμενα του ιδίου τύπου. Μία κλάση της java χρησιμοποιεί μεταβλητές για να ορίσει τις ιδίοτητες και μεθόδους για την συμπεριφορά. Οι κλάσεις περιέχουν ειδικούς τύπους μεθόδων που λέγονται κατασκευαστές, που χρησιμοποιούνται για να κατασκευάζουν αντικείμενα (στιγμιότυπα) μιας κλάσης.

8 Πλεονεκτήματα Αντικειμενοστραφούς Προγραμματισμού Απλότητα: τα αντικείμενα μοντελοποιούν οντότητες πραγματικού κόσμου, έτσι η πολυπλοκότητα μειώνεται και δομή των προγραμμάτων αρκετά ξεκάθαρη. Τμηματοποίηση: κάθε αντικείμενο σχηματίζει μια ξεχωριστή οντότητα της οποίας οι εσωτερικές λεπτομέρειες και λειτουργίες διαχωρίζονται από τα υπόλοιπα τμήματα του συστήματος Εύκολη Τροποποίηση : Είναι εύκολο να κάνουμε αλλαγές στον κώδικα μιάς κλάσης χωρίς συνέπειες στα υπόλοιπα μέρη του συστήματος αφού η μόνη διασύνδεση του υπόλοιπου συστήματος με τις κλάσεις είνια μόνο μέσω των μεθόδων. Συντηρισιμότητα : Η αυτονομία των κλάσεων διευκολύνει τον εντοπισμό και διόρθωση των λαθών. Επαναχρησιμοποίηση: Η αυτονομία των κλάσεων διευκολύνει την επαναχρησιμοποιησή τους σε διαφορετικά συστήματα.

9 Παράδειγμα class Circle{ /*Η ακτίνα(radius) του κύκλου.Ιδιότητα της κλασης κύκλος. Προσδιορίζει μοναδικά κάθε στιγμιότυπο (αντικείμενο) τύπυ κύκλου*/ float radius; static float p=3.14 /* Κατασκευαστής της κλάσης Circle.Δημιουργεί ένα αντικείμενο της κλάσης Circle*/ public Circle(float r){//class constructor radius=r; } /*Μέθοδος area.Επιστρέφει το εμβαδόν του κύκλου*/ public float area(){//class method return p*radius*radius; }

10 Κατασκευαστές Οι κατασκευαστές έχουν απαραιτήτως ακριβώς το ίδιο όνομα με την κλάση. Κάθε κλάση μπορεί να έχει πολλούς κατασκευαστές. Σε αντίθεσή με όλες τις υπόλοιπες μεθόδους μιας κλάσης, οι κατασκευαστές δεν έχουν έναν τύπο επιστροφής (return type), ούτε καν void. Υπονοείται ωστόσο ότι το τύπος επιστροφής συμπίπτει με την κλάση στην οποία βρίσκεται ο κατασκευαστής Οι κατασκευαστές καλούνται με χρήση του τελεστή new για να δημιουργηθεί ένα νέο αντικείμενο. Πρακτικά, οι κατασκευαστές παίζουν το ρόλο αρχικοποίησης ‐ των ιδιοτήτων ‐ των αντικειμένων.

11 Προκαθορισμένος (default) κατασκευαστής Μια κλάση μπορεί να δηλωθεί χωρίς κατασκευαστές.Σε αυτή την περίπτωση, ένας no ‐ arg κατασκευαστήςμε κενό σώμα (δηλ. χωρίς να εκτελεί κάποια εντολή) δηλώνεται έμμεσα στην κλάση. Αυτός ο κατασκευαστής λέγεται default constructor, και παρέχεται μόνο στην περίπτωση που δεν δηλωθούν άλλοι κατασκευαστές στην κλάση.

12 Παράδειγμα class TestCircle{ public static void main(String[] args){ Circle c1=new Circle(3.5); Circle c2=new Circle(4.5); System.out.println(c1.radious); System.out.println(c2.area()); }

13 Παράδειγμα(Συνέχεια) Circle c1: Ορισμός του τύπου ενός αντικειμένου -ορίζεται το αντικέμείμενο c1 τύπου Circle new Circle(3.5): Δημιουργία αντικειμένου τύπου Circle με ακτίνα 3.5 c1.radius :Προσπέλαση των δεδομένων (ιδιοτήτων ) ενός αντικειμένου c2.area() :Κλήση μεθόδων ενός αντικειμένου

14 Διαφορές μεταξύ πρωτογενών τύπων δεδομένων και τύπων αντικειμένων Πρωτογενής τύπος int i= Τύπος αντικειμένου Circle c 1 αναφορά Δημιουργήθηκε με new Circle() c: Circle radius=1

15 Διαφορές πρωτογενών τύπων και τύπων αντικειμένων Πρωτογενείς Τύποι int i=5; int j=2; i=j; Πρίν:Μετά: i j Τύποι Αντικειμένων Circle c1=new Circle(3.5) Circle c2=new Circle(4) C1=c2; Πρίν: Μετά: c1 c2 c1: Circle radius=3.5 c2: Circle radius=4 c1 c2 c1: Circle radius=3.5 c2: Circle radius=4

16 Συλλογή σκουπιδιών (Garbage Collection) Στο προηγούμενο παράδειγμα, μετά τη δήλωση c1 = c2, το c1 «δείχνει» στο ίδιο αντικείμενο στο οποίο αναφέρεται (δείχνει) και το c2. Το αντικείμενο που προηγούμενα αναφέρονταν από το c1, δεν αναφέρεται πλέον. Αυτό το αντικείμενο ονομάζεται σκουπίδι (garbage). Τα σκουπίδια συλλέγονται (δηλαδή η μνήμη καθαρίζεται) αυτόματα στη Java. Σε αντίθεση π.χ. με τη C++ όπου μια περιοχή της μνήμης πρέπει ρητά να καθαριστεί από κάποια γραμμή κώδικα Η αυτόματη συλλογή σκουπιδιών είναι από τα πολύ μεγάλα πλεονεκτήματα της Java

17 Μεταβλητές και μέθοδοι στιγμιοτύπων Οι μεταβλητές στιγμιοτύπων (instance variables) ανήκουν ‐ και μπορούν να έχουν διαφορετική τιμή σε κάθε στιγμιότυπο ενός αντικειμένου. Οι μέθοδοι στιγμιοτύπων (instance methods)μπορούν να καλούνται από ένα στιγμιότυπο μιας κλάσης.

18 Στατικές μεταβλητές, σταθερές και μέθοδοι Οι στατικές μεταβλητές (static variables) μοιράζονται μεταξύ όλων των στιγμιοτύπων μιας κλάσης. Οι στατικές μέθοδοι (static methods) δεν συσχετίζονται με ένα συγκεκριμένο αντικείμενο. Οι στατικές σταθερές (static constants) είναι μεταβλητές με τελική τιμή (δηλαδή δεν μπορεί να μεταβληθεί η τιμή της) που μοιράζονται μεταξύ όλων των στιγμιοτύπων μιας κλάσης

19 Παράδειγμα: static vs instance class TestCircle{ public static void main(String[] args){ Circle c1=new Circle(3.5); Circle c2=new Circle(4.5); System.out.println(“c1.p=“+c1.p); System.out.println(“c2.p=“+c2.p); c1.p=3,1415; System.out.println(“c1.p=“+c1.p); System.out.println(“c2.p=“+c2.p); }} ΕΞΟΔΟΣ: c1.p=3.14 c2.p=3.14 c1.p= c2.p=3.1415

20 Άσκηση Να δημιουργηθεί κλάση με το όνομα Point που να αναπαριστά ένα σημείο(x,y) με τα εξής χαρακτηριστικά: 1.Δύο μεταβλητές τύπου double x,y. 2.Έναν κατασκευαστή που να αρχικοποιεί τις παραπάνω μεταβλητές και να δημιουργεί ένα στιγμιότυπο της κλάσης Point. 3.Να υλοποιήσετε την μέθοδο toString() η οποία να επιστρέφει την αλφαριθμητική αναπαράσταση του Point στην μορφή (x,y). Να δημιουργηθεί κλάση με το όνομα Rectangular που να αναπαριστά ένα παραλληλόγραμμο με τα εξής χαρακτηριστικά: 1.Μία μεταβλητή τύπου Point, leftDownCorner, μία μεταβλητή height τύπου double και μια μεταβλητή width τύπου double που αναπαριστούν το ύψος και το πλάτος του παραλληλογράμμου αντίστοιχα.Θεωρούμε ότι οι πλευρές του παραλληλογράμμου είναι πάντα παράλληλες στους άξονες x,y. 2.Έναν κατασκευαστή που να αρχικοποιεί τις παραπάνω μεταβλητές και να δημιουργεί ένα στιγμιότυπο της κλάσης Rectangular. 3.Mία μέθοδο contains που να εξετάζει εάν ένα συγκεκριμένο Point βρίσκεται μέσα στα όρια του παραλληλογράμμου. Να γραφεί πρόγραμμα (TestPoint.java) που να δημιουργεί ένα παραλληλόγραμμο με τα εξής δεδομένα Point(3,4),height 4,width 5.Στην συνέχεια εξετάζει εάν ένα ανεξάρτητο σημείο Point περιέχεται στα όρια του παραλληλογράμμου. Οι συντεταγμένες του συγκεκριμένου σημείου να δίνονται σαν ορίσματα εισόδου. Να τυπώνεται επεξηγηματικό μήνυμα.


Κατέβασμα ppt "Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:"

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


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