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

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

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

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

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

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

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

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

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

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

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

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

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

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

10. Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming - OOP)

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

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

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

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

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

17TimeThis.h function returns reference pointer to same object { return *this; }

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008

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

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

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

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

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

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

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

Λογισµικό (Software SW) Γλώσσες

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

Διδάσκων: Παναγιώτης Ανδρέου

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

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

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

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

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

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

Πίνακες στη Java. Αντικειμενοστρεφής Προγραμματισμός 4/4/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

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

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

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

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

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

Βασικά της γλώσσας JAVA

5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

8. Μέθοδοι (Methods)

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

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

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

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

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

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

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Copy Constructor Deep and Shallow Copies

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

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

ΕΡΓΑΣΙΑ 4. Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων. Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

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

Transcript:

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

Γιατί έλεγχος πρόσβασης? Προστασία ιδιωτικής πληροφορίας Διευκρίνιση πώς να χρησιμοποιήσουν οι άλλοι την κλάση Κρατάμε την υλοποίηση ξεχωριστά από την επικοινωνία

Παράδειγμα public class Time1{ private int hour; // 0 23 private int minute; // 0-59 private int second; // 0 59 } public void settime(int h, int m, int s) public String touniversalstring() public String tostring() public class Time1Test{ }

1 // Fig. 8.1: Time1.java 2 // Time1 class declaration maintains the time in 24-hour format. 3 4 public class Time1 5 { 6 private int hour; // 0 23 7 private int minute; // 0-59 8 private int second; // 0-59 9 10 // set a new time value using universal time; ensure that 11 // the data remains consistent by setting invalid values to zero Δήλωση public 12 public void settime( int h, int m, int s ) μεθόδου settime 13 { 14 hour = ( ( h >= 0 && h < 24 )? h : 0 ); // validate hour 15 minute = ( ( m >= 0 && m < 60 )? m : 0 ); // validate minute 16 second = ( ( s >= 0 && s < 60 )? s : 0 ); // validate second 17 } // end method settime 18 private μεταβλητές στιγμιοτύπου/πεδία Επικύρωση τιμών παραμέτρων πριν ανατεθούν στις μεταβλητές στιγμιοτύπου. Η έκφραση συνθηκών ελέγχει κάθε όρισμα για να καθορίσει αν η τιμή βρίσκεται σε καθορισμένη περιοχή. Οποιεσδήποτε τιμές εκτός περιοχής τίθενται σε μηδέν ως προεπιλογή, έτσι ώστε ένα αντικείμενο Time1 να έχει πάντα έγκυρα δεδομένα

19 // convert to String in universal-time format (HH:MM:SS) 20 public String touniversalstring() 21 { 22 return String.format( "%02d:%02d:%02d", hour, minute, second ); 23 } // end method touniversalstring 24 25 // convert to String in standard-time format (H:MM:SS AM or PM) 26 public String tostring() 27 { 28 return String.format( "%d:%02d:%02d %s", 29 ( ( hour == 0 hour == 12 )? 12 : hour % 12 ), 30 minute, second, ( hour < 12? "AM" : "PM" ) ); 31 } // end method tostring 32 } // end class Time1 Η μέθοδος format της String Όμοια με την printf με τη διαφορά ότι επιστρέφει ένα μορφοποιημένο string αντί να το εμφανίζει σε ένα παράθυρο εντολών Ο τελεστής συνθηκών (?:) καθορίζει την τιμή της hour στην ακολουθία χαρακτήρων αν η hour είναι 0 ή 12 (AM ή PM) η hour εμφανίζεται ως 12, διαφορετικά η ώρα εμφανίζεται ως μία τιμή μεταξύ 1-11 Ο τελεστής συνθηκών (?:) καθορίζει αν θα επιστραφεί AM ή PM

1 // Fig. 8.2: Time1Test.java 2 // Time1 object used in an application. 3 4 public class Time1Test 5 { 6 public static void main( String args[] ) 7 { 8 // create and initialize a Time1 object Δημιουργία ενός αντικειμένου Time1 9 Time1 time = new Time1(); // invokes Time1 constructor 10 11 // output string representations of the time 12 System.out.print( "The initial universal time is: " ); 13 System.out.println( time.touniversalstring() ); 14 System.out.print( "The initial standard time is: " ); 15 System.out.println( time.tostring() ); 16 System.out.println(); // output a blank line 17 Κλήση της μεθόδου tostring Κλήση της μεθόδου touniversalstring

18 // change time and output updated time 19 time.settime( 13, 27, 6 ); Κλήση της μεθόδου 20 System.out.print( "Universal time after settime is: " ); settime 21 System.out.println( time.touniversalstring() ); 22 System.out.print( "Standard time after settime is: " ); 23 System.out.println( time.tostring() ); 24 System.out.println(); // output a blank line 25 26 // set time with invalid values; output updated time 27 time.settime( 99, 99, 99 ); 28 System.out.println( "After attempting invalid settings:" ); 29 System.out.print( "Universal time: " ); 30 System.out.println( time.touniversalstring() ); 31 System.out.print( "Standard time: " ); 32 System.out.println( time.tostring() ); 33 } // end main 34 } // end class Time1Test Κλήση της μεθόδου settime με μη έγκυρες τιμές The initial universal time is: 00:00:00 The initial standard time is: 12:00:00 AM Universal time after settime is: 13:27:06 Standard time after settime is: 1:27:06 PM After attempting invalid settings: Universal time: 00:00:00 Standard time: 12:00:00 AM

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

Έλεγχος πρόσβασης Το public interface μιας κλάσης Οι public μέθοδοι παρουσιάζουν στους πελάτες της κλάσης μια άποψη των υπηρεσιών που η κλάση παρέχει Οι λεπτομέρειες υλοποίησης μιας κλάσης Οι private μεταβλητές και οι private μέθοδοι δεν είναι προσβάσιμες από τους πελάτες της κλάσης

Συνηθισμένο σφάλμα προγραμματισμού Η προσπάθεια μιας μεθόδου, μη μέλους μιας κλάσης, να προσπελάσει ένα private μέλος της κλάσης αυτής είναι compilation error

1 // Fig. 8.3: MemberAccessTest.java 2 // Private members of class Time1 are not accessible. 3 public class MemberAccessTest 4 { 5 public static void main( String args[] ) 6 { 7 Time1 time = new Time1(); // create and initialize Time1 object 8 9 time.hour = 7; in Time1 // error: hour has private access 10 time.minute = 15; // error: minute has private access in Time1 11 time.second = 30; // error: second has private access in Time1 12 } // end main 13 } // end class MemberAccessTest MemberAccessTest.java:9: hour has private access in Time1 time.hour = 7; ^ // error: hour has private access in Time1 MemberAccessTest.java:10: minute has private access in Time1 time.minute = 15; // error: minute has private access in Time1 ^ MemberAccessTest.java:11: second has private access in Time1 time.second = 30; // error: second has private access in Time1 3 errors ^ Προσπάθεια προσπέλασης private μεταβλητών στιγμιοτύπου

Πηγές/Acknowledgements http://java.sun.com/j2se H. M. Deitel, P. J. Deitel, Java Προγραμματισμός, 6η έκδοση, Μ. Γκιούρδας, 2006 D. Barnes, M. Kolling, Αντικειμενοστρεφής Προγραμματισμός σε Java, Κλειδάριθμος, 2008 Βασίλης Χριστοφίδης, Αντικειμενοστρεφής Προγραμματισμός, Πανεπιστήμιο Κρήτης Κ. Τσαγκάρης, Εισαγωγή στις εφαρμογές της Java, Πανεπιστήμιο Πειραιώς Jones, Evan, Adam Marcus, and Eugene Wu. 6.092 Introduction to Programming in Java,January IAP 2010. (Massachusetts Institute of Technology: MIT OpenCourseWare), http://ocw.mit.edu (Accessed 10 Mar, 2013). License: Creative Commons BY-NC-SA