Αντικείμενα, Κλάσεις και Μέθοδοι

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Από τη C στη C++ Hy240b project 2014 Phase 1.
Advertisements

Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Τύποι δεδομένων και τελεστές,
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ. Ε
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
ΜΑΘ 3122 (106) Γλώσσα προγραμματισμού
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 6: Java Collections Εβδομάδα 6: Συλλογές δεδομένων στην Java.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
© GfK 2012 | Title of presentation | DD. Month
-17 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Σεπτέμβριος 2013 Δείκτης > +20 Δείκτης 0 a +20 Δείκτης 0 a -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός)
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
Ενότητα Α.4. Δομημένος Προγραμματισμός
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Java Syntax and Style.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
Applets Εκμεταλλεύονται τo γραφικό υπόβαθρο που παρέχουν οι browsers, έχοντας έτσι τη δυνατότητα προβολής γραφικών και τη δυνατότητα υλοποίησης ενός γραφικού.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
Wrapper Classes, Abstract Classes and Interfaces
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Μεταγράφημα παρουσίασης:

Αντικείμενα, Κλάσεις και Μέθοδοι Εβδομάδα 2: Αντικείμενα, Κλάσεις και Μέθοδοι

Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις

Ανασκόπηση: Αντικείμενα Τα αντικείμενα (στιγμιότυπα) δημιουργούνται από τις κλάσεις Τα αντικείμενα έχουν μεθόδους οι οποίες μπορεί να κληθούν (εκτελεστούν) Τα αντικείμενα έχουν μια «κατάσταση» (state); Περιέχουν δεδομένα Τα αντικείμενα μπορεί να δημιουργήσουν νέα αντικείμενα

Ανασκόπηση: Μέθοδοι Ένα αντικείμενο μπορεί να καλέσει μια μέθοδο ενός αλλού αντικειμένου Οι μέθοδοι «έχουν επιπτώσεις»: είτε αλλάζουν την κατάσταση του αντικείμενου ή επιστρέφουν πληροφορίες Οι μέθοδοι μπορεί να έχουν παραμέτρους Οι παράμετροι έχουν τύπους

Ανασκόπηση: Κλάσεις Οι κλάσεις καθορίζουν την μορφή των αντικειμένων: προσδιορίζουν τις μεθόδους και τα πεδία δεδομένων Οι κλάσεις ορίζονται από πηγαίο κώδικα Java «Προγραμματισμός» είναι ο σχεδιασμός του πηγαίου κώδικα των κλάσεων

Η ανατομία μίας κλάσης class όνομα-κλάσης [class-name] { πεδία (δεδομένα στιγμιότυπου) [fields (instance data)] κατασκευαστές [constructor(s)] μέθοδοι [methods] }

Μια κλάση class Timer { private int hours; private int minutes; private int seconds; /** * Construct a timer object initialised to 0:00:00 */ public Timer() { hours = 0; minutes = 0; seconds = 0; } * Return the current time of this timer. public String getTime() return hours + “:” + minutes + “:” + seconds;

Το όνομα της κλάσης class Timer { ... } Σύμβαση: τα ονόματα των κλάσεων αρχίζουν από κεφαλαίο γράμμα Το όνομα της κλάσης είναι ένας προσδιοριστής [identifier] Ενας προσδιοριστής Java: περιέχει μόνο γράμματα, ψηφία, και τους χαρακτήρες ‘$’ και ‘_’ [underscore] δεν αρχίζει από ψηφίο

Προσδιοριστές έγκυροι: number x98 howMany NUMBER_OF_POINTS $yes$ λανθασμένοι: number of points 99x birth.year ARRAY-SIZE

Πεδία private int hours; private int minutes; private int seconds; Ένας προσδιοριστής Δήλωση πεδίων: μετατροπέας-προσπέλασης τύπος όνομα; “private” Ο τύπος της τιμής που μπορεί να λάβει το πεδίο Σύμβαση: τα ονόματα πεδίων αρχίζουν με πεζό γράμμα

Πεδία: ένα παράδειγμα Αντικείμενο της κλάσης timer: hours minutes seconds

Μέθοδοι /** /** Σχόλιο που αναφέρεται στη χρήση/λειτουργία της μεθόδου * Returns the current time of this timer. */ public String getTime() { return hours + “:” + minutes + “:” + seconds; } Μέθοδοι Σχόλιο που αναφέρεται στη χρήση/λειτουργία της μεθόδου /** * σχόλιο σχετικό με τη μέθοδο */ μετατροπέας-προσπέλασης τύπος-αποτελέσματος όνομα (παράμετροι) { σώμα [body] } Ο τύπος της τιμής που επιστρέφει η μέθοδος “public” για τις περισσότερες μεθόδους προσδιοριστής Υλοποίηση της μεθόδου Σύμβαση: τα ονόματα των μεθόδων αρχίζουν με πεζό γράμμα

Μέθοδοι : ένα παράδειγμα Αντικείμενο της κλάσης timer: getTime() “getTime()” “12:45:07”

Επίδειξη: ανάπτυξη μια κλάσης write class car. show: - fields - methods: constructor set/get accelerate (car has speed) - comments

Κατασκευαστές (Constructors) class Timer { ... /** * Construct a timer object * initialised to 0:00:00 */ public Timer() { hours = 0; minutes = 0; seconds = 0; } ... Ο κατασκευαστής είναι μια ειδική μέθοδος που εκτελείται όταν δημιουργείται ένα αντικείμενο. Το όνομα της μεθόδου-κατασκευαστή είναι το ίδιο με το όνομα της κλάσης. Ένας κατασκευαστής δεν έχει τύπο-αποτελέσματος. Σκοπός του κατασκευαστή είναι η αρχικοποίηση του αντικειμένου σε μια έγκυρη κατάσταση.

Ονόματα πεδίων Τα ονόματα των πεδίων πρέπει να «έχουν νόημα» καλά: yearOfBirth numberOfSeats totalTime άσχημα: yb s number

Μέθοδοι Υπογραφή [signature] σώμα public String getTime() { return hours + “:” + minutes + “:” + seconds; } σώμα

Ο τύπος-αποτελέσματος της μεθόδου Επιστρέφει κείμενο public String getName() { ... } Επιστρέφει έναν αριθμό public int size() { ... } Δεν επιστρέφει τίποτε public void print() { ... } Το “void” είναι ένας ειδικός τύπος που υποδηλώνει ότι τίποτε δεν επιστρέφεται.

Παράμετροι public int add(int value) { ... } public void changeNames(String firstName, String lastName) { ... } Η λίστα των παραμέτρων αποτελείται από ορισμούς παραμέτρων που χωρίζονται μεταξύ τους με κόμμα «,». Κάθε ορισμός παραμέτρου προσδιορίζει τον τύπο και το όνομα της παραμέτρου.

Το σώμα της μεθόδου public int add(int value) { εντολή 1; εντολή 2; εντολή 3; εντολή 4; ... } Το σώμα της μεθόδου αποτελείται από μια ακολουθία εντολών. Κάθε εντολή τερματίζεται με ένα ερωτηματικό «;».

Εντολές (statements) Οι εντολές εκτελούνται σειριακά όταν κληθεί η μέθοδος. Τα είδη εντολών περιλαμβάνουν: - καταχώρηση [assignment] - εντολή επιστροφής αποτελεσμάτων (return) - κλήση μεθόδων

Καταχώρηση Μια καταχώρηση καταχωρεί μια τιμή σε μια μεταβλητή. Παραδείγματα: numberOfSeats = 4; name = “Homer”; year = newYear; int size; size = 55; size = 42; size 55 size 42 size

Η εντολή “return” public String getName() { ... return name; } Ο τύπος της επιστρεφόμενης τιμής πρέπει να είναι ίδιος με τον τύπο-αποτελέσματος που δηλώθηκε στην υπογραφή της μεθόδου. public int calculateInterest() { ... return interest; }

Τελεστές (Operators) int timeInSeconds; int timeInMinutes; timeInSeconds = timeInMinutes * 60; Στο δεξιό μέρος μίας καταχώρησης μπορούμε να χρησιμοποιήσουμε εκφράσεις [expressions]. Οι εκφράσεις μπορεί να είναι υπολογισμοί που κάνουν χρήση των τελεστών της Java. String firstName; String lastName; String fullName; ... fullName = firstName + " " + lastName; result = (size + 1) * 55 / width;

Κατηγορίες μεθόδων κατασκευαστής [constructor] μέθοδος προσπέλασης [accessor / selector (get)] μέθοδος μετάλλαξης [mutator (set)] Κάθε μέθοδος πρέπει να ανήκει σε μια (και μόνο μια) κατηγορία.

Κατασκευαστές (Constructors) Ένας κατασκευαστής δημιουργεί και αρχικοποιεί το αντικείμενο.

Μέθοδοι προσπέλασης (Accessors) Αναφέρονται και ως “selector”, “get method”. Μέσω μιας μεθόδου προσπέλασης ανακτάται μέρος των δεδομένων ενός αντικειμένου. Μια μέθοδος προσπέλασης δεν αλλάζει το αντικείμενο.

Μέθοδοι μετάλλαξης (Mutators) Αναφέρονται και ως "set method”. Μια μέθοδος μετάλλαξης αλλάζει την κατάσταση ενός αντικειμένου.

Σχόλια (Comments) // comment /* comment comment */ Σύνταξη σχολίων: // comment σχόλιο μίας γραμμής /* comment comment */ σχόλιο πολλαπλών γραμμών /** comment comment */ σχολια μεθόδων και κλάσεων /** * Return the name of this person. */ public String getName() { ... // some tricky code here return name; }

Διαμόρφωση (Style) Οι οδηγίες διαμόρφωσης κειμένου (style guidelines) περιγράφουν τρόπους διάταξης και τεκμηρίωσης του πηγαίου κώδικα. Αποσκοπούν στο να κάνουν την κατανόηση του κώδικα ευκολότερη. Αφορούν: • σχόλια • διάταξη (ευθυγράμμιση κειμένου, «κενά») • ονόματα μεταβλητών / κλάσεων / μεθόδων / …

Οι υπολογιστές και οι χρήστες τους Με ποιον τρόπο ένας υπολογιστής κατανοεί τα προγράμματα μας; Οι υπολογιστές χρησιμοποιούν τη γλώσσα μηχανής; δυαδικό κώδικα (binary code) Η Java είναι μια γλώσσα «υψηλού επιπέδου» (μια γλώσσα σχεδιασμένη για ανθρώπους)

? Το ερώτημα: 00110011 10010110 00001101 ... CPU class Person { ... } The Question This is what it is about: how does the Pascal program get into the machine as machine code to be executed?

Μεταγλώττιση (Compilation) μετάφραση εκτέλεση 010101 010101 Πηγαίος κώδικας Compilation and Loading Κώδικας μηχανής υπολογιστής

Ιδεατός υπολογιστής (Virtual machine) 010101 Διερμηνέας java [interpreter] (virtual machine) Κώδικας java [bytecode] Εκτέλεση 010101 Μετάφραση 010101 010101 Compilation and Loading Πηγαίος κώδικας Κώδικας java [bytecode] (ανεξάρτητος μηχανής) υπολογιστής