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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικά Στοιχεία της Java

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

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

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

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

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

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

Βασικά Στοιχεία της Java

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

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

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

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

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Tοπικές μεταβλητές To αντικείμενο this Accessor, Mutator μέθοδοι

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

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Λογιστικές Εφαρμογές Εργαστήριο

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

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

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Transcript:

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

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

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

Ευχαριστίες Στην ανάπτυξη του υλικού βοήθησαν οι φοιτητές Λάζαρος Τουμανίδης, Λίλιαν Γούσιου και ο βοηθός εργαστηρίου Κόγιας Δημήτριος. 4

Βιβλιογραφία Harvey Deitel,Paul Deitel, «Java Προγραμματισμός, 8η έκδοση», Γκιούρδας, 2010. Γιώργος Λιακέας, «Εισαγωγή στη Java», Κλειδάριθμος, 2009. Χρήστος Κυτάγιας, Κώστας Δ. Κυτάγιας, Γιώργος Πρεζεράκος, Δημήτρης Κυτάγιας, «Αντικειμενοστραφής Προγραμματισμός με Java», Σύγχρονη Εκδοτική, 2013. Wanda Dann, Stephen Cooper, and Randy Pausch, «Learning to program with Alice» 3rd edition, Pearson Education, 2012. Michael Kölling, «Introduction to Programming with Greenfoot». «Object-Oriented Programming in Java with Games and Simulations», Pearson Education, August 2009. Οι σημειώσεις είναι βασισμένες και σε υλικό του καθηγητή του ΤΕΙ Πειραιά Γ. Πρεζεράκου. 5

Περιεχόμενα 5.1 Καθοριστικά Πρόσβασης 5.2 Παραδείγματα Μεθόδων 5.3 Αντικειμενοστραφής Προγραμματισμός 5.3.1 Καθορίζοντας μια Κλάση 5.3.2 Εμβέλεια της Κλάσης 5.3.3 Βασικοί Τύποι vs Αναφορές 5.3.4 Στατικός Τύπος (Static) και Μέθοδοι 6

Προσδοκώμενα Αποτελέσματα Στην ενότητα αυτή θα μάθετε για: Τα καθοριστικά πρόσβασης ενοτήτων, ιδιοτήτων και μεθόδων (public, private), Την έννοια του Αντικειμενοστραφούς Προγραμματισμού με τη σύνταξη μιας Κλάσης ενός Αντικειμένου, Για Δημιουργούς Κλάσεων και Για Αναφορές Αντικειμένων. 7

5.1 Καθοριστικά Πρόσβασης 8

Καθοριστικά πρόσβασης H Java ορίζει καθοριστικά πρόσβασης για: Κλάσεις Ιδιότητες Μεθόδους Τα καθοριστικά πρόσβασης αποτελούν σημαντικό τμήμα στη σχεδίαση μιας εφαρμογής Καθορίζουν την πρόσβαση που έχει η μια κλάση στην άλλη 9

Καθοριστικά πρόσβασης - public Κλάση Προσβάσιμη από οποιαδήποτε κλάση Πρέπει να βρίσκεται σε αρχείο της μορφής <class name>.java Ιδιότητα Προσβάσιμη από οποιαδήποτε κλάση Μέθοδος Προσβάσιμη από οποιαδήποτε κλάση 10

Καθοριστικά πρόσβασης - private Κλάση Δεν γίνεται να είναι private (γιατί;) Ιδιότητα Προσβάσιμη μόνο από την κλάση της Μέθοδος Προσβάσιμη μόνο από την κλάση της 11

Καθοριστικά πρόσβασης - final Κλάση Δεν μπορεί να κληρονομηθεί Ιδιότητα Δε μπορεί να αλλάξει (σταθερά) Μέθοδος Δεν μπορεί να υπερκαλυφθεί 12

Καθοριστικά πρόσβασης - protected Ιδιότητα Προσβάσιμη μόνο από μέλη της ίδιας κλάσης και μέλη των υποκλάσεων της Μέθοδος Προσβάσιμη μόνο από μέλη της ίδιας κλάσης και μέλη των υποκλάσεων της 13

Παράδειγμα public class bank_balance { public String owner; private int balance; public class bank_balance { public String owner; public int balance; public bank_balance( String name, int dollars ) { owner = name; if (dollars >= 0) balance = dollars; else dollars =0; public bank_balance( String name, int dollars ) { owner = name; if (dollars >= 0) balance = dollars; else dollars =0; public int getbalance() { return balance; public void setbalance(int dollars) { if (dollars >= 0) balance = dollars; else dollars = 0; 14

5.2 Παραδείγματα Μεθόδων 15

Παράδειγμα public static int getminindex ( int[] values ) { int minvalue = Integer.MAX_VALUE; int minindex = -1; for( int i=0; i<values.length; i++) if ( values[i] < minvalue ) { minvalue = values[i]; minindex = i; return minindex; Πρόγραμμα εύρεσης θέσης i στον πίνακα με το μικρότερο στοιχείο. 16

Παράδειγμα public static int getsecondminindex ( int[] values ) { int secondidx = -1; int minidx= getminindex ( values ) ; for( int i=0 ; i<values.length ; i++ ) { if ( i == minidx ) continue; if ( secondidx == -1 values[i] < values[secondidx] ) secondidx = i ; return secondidx ; Τί συμβαίνει αν values = {0? values = {0, 0? values = {0,1? 17

Περίπτωση 1 Πίνακας Θέσεων (Index) vs Πίνακας Τιμών (Value) int[] values = {99, 100,101; System.out.println(values[0] ); // 99 Τιμές Θέσεις 18

Περίπτωση 2 Αγκύλες { μετά από if/else, for/while for (int i= 0; i< 5; i++) System.out.println( Hi ); System.out.println( Bye ); Τι εκτυπώνει; 19

Περίπτωση 3 Αρχικοποίηση Μεταβλητών: Εύρεση Ελάχιστου Όρου int getminvalue(int[] vals) { int min = 0; for (int i = 0; i < vals.length; i++) { if (vals[i] < min) { min = vals[i] Τι συμβαίνει αν vals = {1,2,3; Θέτουμε min = Integer.MAX_VALUE ή vals[0] Θα υπάρξει πρόβλημα;;; 20

Περίπτωση 4 Αρχικοποίηση Μεταβλητών: Εύρεση Δεύτερου Ελάχιστου Όρου secondminindex int minidx = getmin(vals) int secondidx = 0; for (int i = 0; i < vals.length; i++) { if (i == minidx) continue; if (vals[i] < vals[secondidx]) secondidx = i; Τι συμβαίνει αν vals={0, 1, 2 ; Δείτε τις λύσεις 21

Περίπτωση 5 Ορισμός μιας μεθόδου μέσα σε άλλη μέθοδο. public static void main(string[] arguments) { public static void foobar () { 22

Μέθοδοι Εντοπισμού Σφαλμάτων 1 Χρησιμοποιείστε System.out.println μέσα στον κώδικά σας για να δείτε τι κάνει. for ( int i=0; i< vals.length; i++) { if ( vals[i] < minval) { System.out.println( cur min: + minval); System.out.println( new min: + vals[i]); minval = vals[i]; 23

Μέθοδοι Εντοπισμού Σφαλμάτων 2 Μορφοποιούμε τον κώδικα μας με χρήση του Ctrl-Shift-f! for (int i = 0; i < vals.length; i++) { if (vals[i] < vals[minidx]) { minidx=i; return minidx; Υπάρχει σφάλμα;; Διαβάζεται δύσκολα για να είμαστε σίγουροι. 24

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

Αντικειμενοστραφής Προγραμματισμός Αντιπροσωπεύει τον πραγματικό κόσμο Μωρό 26

Αντικειμενοστραφής Προγραμματισμός Αντιπροσωπεύει τον πραγματικό κόσμο Μωρό Όνομα Φύλο Βάρος Decibels Δόντια 27

Αντικειμενοστραφής Προγραμματισμός Ομαδοποίηση αντικειμένων: Βασικοί τύποι μεταβλητών (int, double, char, etc..) Αντικείμενα (Strings, etc.. ) Όνομα: Φύλο: Βάρος: Decibels: Δόντια: Μωρό String onoma boolean einaiagori double varos double decibels int numdontia 28

Γιατί Χρησιμοποιούμε Κλάσεις; Γιατί όχι μόνο βασικούς τύπους μεταβλητών; // όνομα πρώτου αντικειμένου (Alex) String onomaalex; double varosalex; // όνομα δεύτερου αντικειμένου (David) String onomadavid; double varosdavid; 29

Γιατί Χρησιμοποιούμε Κλάσεις; Γιατί να μην χρησιμοποιούμε μόνο βασικούς τύπους μεταβλητών; // όνομα πρώτου αντικειμένου (Alex) String onomaalex; double varosalex; // όνομα δεύτερου αντικειμένου (David) String onomadavid; double varosdavid; // όνομα τρίτου αντικειμένου (David) String onomadavid2; double varosdavid2; 500 Μωρά; ΠΟΛΥ ΔΥΣΧΡΗΣΤΟ! David2? Άβολο!!! 30

Γιατί Χρησιμοποιούμε Κλάσεις; Όνομα Βάρος Φύλο Μωρό1 31

Γιατί Χρησιμοποιούμε Κλάσεις; Όνομα Βάρος Φύλο Μωρό1 Όνομα Βάρος Φύλο Μωρό2 Όνομα Βάρος Φύλο Μωρό3 Όνομα Βάρος Φύλο Μωρό4 496 ακόμα Μωρά 32

Γιατί Χρησιμοποιούμε Κλάσεις; Όνομα Βάρος Φύλο Μωρό1 Όνομα Βάρος Φύλο Μωρό2 Όνομα Βάρος Φύλο Μωρό3 Όνομα Βάρος Φύλο Μωρό4 496 ακόμα μωρά Βρεφοκομείο 33

Γιατί Χρησιμοποιούμε Κλάσεις; Νοσοκόμα1 Νοσ/μα2 Νοσ/μα3 Νοσ/μα4 Περισσότερες νοσοκόμες Μωρό1 Μωρό2 Μωρό3 Μωρό4 496 ακόμα μωρά Βρεφοκομείο 34

Γιατί Χρησιμοποιούμε Κλάσεις; Νοσοκόμα1 Μωρό1 [ ] [ ] Βρεφοκομείο 35

Γιατί Χρησιμοποιούμε Κλάσεις; Νοσοκόμα1 [ ] Μωρό1 [ ] Εντατική Μονάδα Θεραπείας Βρεφοκομείο Νοσοκομείο 36

5.3.1 Καθορίζοντας μια κλάση 37

Κλάση public class Baby{ String name; boolean isaboy; double weight; double decibels; int numberofteeth = 0; Ορισμός Κλάσης void newtooth() { numberofteeth += 1; System.out.println( Mama + my teeths hurt! ) ; 38

Κλάση Baby mybaby = new Baby(); Στιγμιότυπο Κλάσης 39

Ας ορίσουμε την κλάση Baby public class Baby { 40

Ας ορίσουμε την κλάση Baby public class Baby { 41

Σημείωση Τα ονόματα μιας κλάσης χρησιμοποιούν κεφαλαία γράμματα για κάθε καινούργια λέξη μέσα στο όνομα. 1 Κλάση πρέπει να γραφτεί σε 1 Αρχείο το οποίο θα έχει το ίδιο όνομα με την κλάση. Η κλάση μπορεί να τρέξει αν περιέχει μία μέθοδο main. 42

Πεδία Κλάσης Baby public class Baby { TYPE var_name; TYPE var_name = some_value; 43

Πεδία Κλάσης Baby public class Baby { String name; double weight= 5.0; boolean isaboy; int numberofteeth = 0; 44

Υπάρχουν Αδέλφια?? public class Baby { String onoma; double varos = 5.0; boolean einaiagori; int numpoops = 0; Baby [ ] brother; 45

Δημιουργία Στιγμιότυπου της Κλάσης Baby Baby ourbaby = new Baby(); Αλλά το όνομα; Το φύλο; 46

Δημιουργοί (Constructors) public class CLASSNAME { CLASSNAME ( ) { CLASSNAME ( [ ARGUMENTS ] ) { CLASSNAME obj1 = new CLASSNAME ( ) ; CLASSNAME obj2 = new CLASSNAME ( [ ARGUMENTS ] ); 47

Δημιουργοί (Constructors) Όνομα δημιουργού == όνομα της κλάσης. Καμία επιστρέψιμη τιμή ποτέ δεν επιστρέφουν τίποτα. Αρχικοποιούν (συνήθως) τα πεδία της κλάσης. Όλες οι κλάσεις χρειάζονται τουλάχιστον έναν δημιουργό. - Αν δεν γράψετε έναν, χρησιμοποιείται το προκαθορισμένο: CLASSNAME ( ) { 48

Κλάση Baby - Δημιουργοί public class Baby { string name; boolean isaboy; Baby ( String myname, boolean agori) { onoma = myname ; einaiagori = agori; 49

Κλάση Baby - Μέθοδοι public class Baby { String name = Slim Shady ;... void sayhi ( ) { System.out.println( Hi, my name is + name); 50

Κλάση Baby - Μέθοδοι public class Baby { String weight = 5.0; void eat ( double foodweight ) { if ( foodweight >= 0 && foodweight < weight ) { weight = weight + foodweight ; 51

Κλάση Baby public class Baby { String name; double weight= 5.0 ; boolean isaboy ; int numberofteeth = 0; Baby[ ] brother ; void sayhi() { void food(double foodweight) { 52

5.3.2 Εμβέλεια Κλάσης 53

Ανασκόπηση της Εμβέλειας public static ScopeReview { void scopemethod ( int var1 ) { String var2 ; if ( var1 >0 ) { var2 = above 0 ; else { var2 = less than or equal to 0 ; System.out.println ( var2 ) ; 54

Ανασκόπηση της Εμβέλειας public static ScopeReview { private int var3 ; void scopemethod ( int var1 ) { var3 = var1 ; String var2 ; if ( var1 >0 ) { var2 = above 0 ; else { var2 = less than or equal to 0 ; System.out.println ( var2 ) ; 55

Ανασκόπηση της Εμβέλειας public static ScopeReview { private int var3 ; void scopemethod ( int var1 ) { var3 = var1 ; String var2 ; if ( var1 >0 ) { var2 = above 0 ; else { var2 = less than or equal to 0 ; System.out.println ( var2 ) ; 56

Εμβέλεια Ακριβώς όπως οι μέθοδοι έτσι και οι μεταβλητές είναι προσβάσιμες μέσα στις αγκύλες { που ορίζονται. - Από τα προηγούμενα μαθήματα: εμβέλεια μεθόδου void method ( int arg1 ) { int arg2 = arg1 + 1 ; -Σε αυτό το μάθημα: εμβέλεια κλάσης class Examplevariable { int membervariable; void setvariable ( int newval ) { membervariable += newval ; 57

Η Λέξη-Κλειδί this Διευκρινίζει την εμβέλεια Σημαίνει το αντικείμενο μου Χρήση: class Example { int membervariable ; void setvariable ( int newval ) { this.membervariable += newval ; 58

Μόνο οι Μεταβλητές servings της Μεθόδου έχουν Ανανεωμένες Τιμές public class Baby { int servings ; void feed ( int servings ) { servings = servings + servings ; void dontia( ) { System.out.println ( All better! ) ; servings = 0 ; 59

Μόνο οι Μεταβλητές servings της Μεθόδου έχουν Ανανεωμένες Τιμές public class Baby { int servings ; void feed ( int servings ) { this.servings = this.servings + servings ; void teeth( ) { System.out.println ( All better! ) ; servings = 0 ; 60

Κλάσεις και Αντικείμενα // Ορισμός κλάσης public class Baby { // Αντικείμενα κλάσης Baby shiloh = new Baby ( Shiloh Jolie-Pitt, true ) ; Baby knox = new Baby ( Knox Jolie-Pitt, true ) ; 61

Πρόσβαση σε Πεδία Αντικειμένων των Κλάσεων Αποκτούμε πρόσβαση στο πεδίο ενός αντικειμένου ως εξής: Object.FIELDNAME Baby shiloh = new Baby ( Shiloh Jolie-Pitt, true ); System.out.println ( shiloh.name ) ; System.out.println ( shiloh.numdontia ) ; 62

Καλούμενη Μέθοδος Object. METHODNAME ( [ ARGUMENTS ] ) Baby shiloh = new Baby ( Shiloh Jolie-Pitt, true ); shiloh.sayhi ( ) ; // Hi, my name is Shiloh.eat (1) ; 63

5.3.3 Βασικοί Τύποι vs Αναφορές 64

Βασικοί Τύποι vs Αναφορές Οι βασικοί τύποι της Java είναι, όπως έχουμε πει: - int, long, double, boolean, char, short, byte, float. - Οι πραγματικές τιμές είναι αποθηκευμένες στις μεταβλητές. Οι τύποι αναφοράς είναι πίνακες και αντικείμενα String, int [ ], Baby, 65

Πως η Java Αποθηκεύει τους Βασικούς Τύπους; Οι μεταβλητές είναι σαν φλιτζάνια σταθερού μεγέθους. Οι βασικοί τύποι είναι αρκετά μικροί ώστε να χωράνε στο φλιτζάνι. 66

Πως η Java Αποθηκεύει Αντικείμενα Τα αντικείμενα είναι υπερβολικά μεγάλα για να χωρέσουν σε μία μεταβλητή. Αποθηκεύονται κάπου αλλού στη μνήμη. Οι μεταβλητές αποθηκεύουν έναν αριθμό που προσδιορίζει τη θέση του αντικειμένου. 67

Πως η Java Αποθηκεύει Αντικείμενα Τα αντικείμενα είναι υπερβολικά μεγάλα για να χωρέσουν σε μία μεταβλητή Αποθηκεύονται κάπου αλλού. Οι μεταβλητές αποθηκεύουν έναν αριθμό που προσδιορίζει τη θέση του αντικειμένου. 68

Αναφορές Η τοποθεσία του αντικειμένου ονομάζεται αναφορά. Το διπλό ίσον ( == ) συγκρίνει τις αναφορές Baby shiloh1 = new Baby ( shiloh ) ; Baby shiloh2 = new Baby ( shiloh ) ; Ερώτηση: Ισχύει shiloh1 == shiloh2 ; ΟΧΙ! 69

Αναφορές Baby shiloh1 = new Baby ( shiloh ) ; Baby shiloh2 = new Baby ( shiloh ) ; 70

Αναφορές Baby mybaby = new Baby( davy, true); mybaby.name = david ; 71

Αναφορές Baby mybaby = new Baby( davy, true); mybaby.name = david ; 72

Αναφορές Χρησιμοποιείστε ίσον ( = ) για την ενημέρωση των αναφορών baby1 = baby2 73

Αναφορές Χρησιμοποιείστε ίσον ( = ) για την ενημέρωση των αναφορών baby1 = baby2 74

Αναφορές Χρησιμοποιήστε [ ] ή ακολουθεί την αναφορά στο αντικείμενο. ίσως τροποποιεί το αντικείμενο, αλλά ποτέ την αναφορά. Φανταστείτε ότι: ακολουθείτε οδηγίες για να βρείτε ένα σπίτι. μετακινείτε ένα έπιπλο τριγύρω. Είναι ανάλογο με το να: ακολουθείτε την αναφορά σε ένα αντικείμενο. αλλάζετε τα πεδία σε ένα αντικείμενο. 75

Μέθοδοι και Αναφορές void dosomething ( int x, int[ ] ys, Baby b ) { x = 99 ; ys [0] = 99 ; b.name = 99 ;... int i = 0 ; int [ ] j = {0 ; Baby k = new Baby ( 50, true ) ; dosomething (i, j, k) ; i=? j=? k=? 76

5.3.4 Στατικός Τύπος (Static) και Μέθοδοι 77

Στατικός Τύπος (Static) Αναφέρεται σε πεδία και σε μεθόδους. Στοχεύει στο πεδίο ή τη μέθοδο: - είναι προσδιορισμένο για τη δήλωση της κλάσης, - δεν είναι κατάλληλο για κάθε περιστατικό. 78

Στατικός Τύπος (Static) public class Baby { static int numbabiesmade = 0 ; Baby.numBabiesMade = 100 ; Baby b1 = new Baby ( ) ; Baby b2 = new Baby ( ) ; Baby.numBabiesMade = 2; Τι είναι: b1.numbabiesmade? b2.numbabiesmade? 79

Static - Παράδειγμα Μετρήστε τον αριθμό των μωρών που γεννηθήκανε. public class Baby { int numbabiesmade = 0 ; Baby ( ) { numbabiesmade += 1 ; 80

Static - Πεδίο Μετρήστε τον αριθμό των μωρών που γεννηθήκανε. public class Baby { Static int numbabiesmade = 0 ; Baby ( ) { numbabiesmade += 1 ; 81

Static - Μέθοδος public class Baby { static void cry ( Baby thebaby ) { System.out.println ( thebaby.name + is crying ) ; public class Baby { void cry ( ) { System.out.println (name + is crying ) ; Ή 82

Static - Σημειώσεις Μη-στατικές μέθοδοι μπορούν να αναφερθούν σε στατικές μεθόδους, αλλά όχι το αντίστροφο. - Γιατί; public class Baby { String name = DMX ; static void whoami ( ) { System.out.println(name) ; 83

Main Γιατί είναι η μέθοδος main τύπου static? public static void main(string[] arguments) { 84

Σε αυτή την ενότητα μιλήσαμε για: 5.1 Καθοριστικά Πρόσβασης 5.2 Παραδείγματα Μεθόδων 5.3 Αντικειμενοστραφής Προγραμματισμός 5.3.1 Καθορίζοντας μια Κλάση 5.3.2 Εμβέλεια της Κλάσης 5.3.3 Βασικοί Τύποι vs Αναφορές 5.3.4 Στατικός Τύπος (Static) και Μέθοδοι 86

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