Εισαγωγή στα Αντικείμενα

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

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

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

Κλάσεις στην Python. Δημιουργία κλάσεων

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

Αντικειμενοστρεφής προγραμματισμός Object Oriented Programming (OOP) Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

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

Κλάσεις στην Python. Δημιουργία κλάσεων

Γλωσσική Τεχνολογία. Object-Orientation in Python

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Deep and Shallow Copies

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

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

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

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

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

Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python. Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python.

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

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

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

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

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

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

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

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

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

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

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

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

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

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων

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

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Τι είναι κλάση Κλάση

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

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

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

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

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

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

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

API: Applications Programming Interface

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

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

Εισαγωγή στον Προγ/μό Υπολογιστών

Κληρονομικότητα. Κληρονομικότητα (inheritance) είναι ο τρόπος µε τον οποίο μία τάξη μπορεί να κληρονομήσει ιδιότητες και συμπεριφορά από άλλες τάξεις.

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

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

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

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

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

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2018 Β ΦΑΣΗ

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

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

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

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

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

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

Εισαγωγή στους Υπολογιστές

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

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

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

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Οδηγίες Εργασίας 1 Facility-Game

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

Προγραμματισμός Υπολογιστών με C++

Κλάσεις και αντικείμενα #include <iostream.h<

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΕΤΑΡΤΗ 20 ΙΟΥΝΙΟΥ 2018

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους

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

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

ΚΕΦΑΛΑΙΟ 8. Κλάσεις και αντικείμενα. 8.1 Εισαγωγή

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

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

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

Προγραμματισμός ΙI (Θ)

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

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

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

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

Transcript:

1 CSE-391: Artificial Intelligence University of Pennsylvania Matt Huenerfauth Εισαγωγή στα Αντικείμενα Δεκέμβριος 2016

2 Όλα είναι αντικείμενα Στην Python ότι χρησιμοποιούμε είναι αντικείμενο: hello.upper() list3.append( a ) dict2.keys() Οι κλήσεις αυτές μοιάζουν με την κλήση μεθόδων στην Java ή την C++. Εκτός από τις έτοιμες κλάσεις της γλώσσας, μπορείτε να δημιουργήσετε δικά σας αντικείμενα

3 Ορίζοντας μία Κλάση Η κλάση είναι ένας ειδικός τύπος δεδομένων που ορίζει τον τρόπο με τον οποίο μπορούμε να κατασκευάσουμε ένα αντικείμενο. Η κλάση αποθηκεύει δεδομένα και συμπεριφορές που μοιράζονται όλα τα αντικείμενα της κλάσης αυτής. Instances είναι αντικείμενα που δημιουργήθηκαν και ακολουθούν τον ορισμό που δόθηκε από την κλάση.

4 Methods σε κλάσεις Μπορείτε να ορίσετε μία μέθοδο σε μία κλάση ορίζοντας την σαν συνάρτηση μέσα στην κλάση. Υπάρχει μία παράμετρος self σε όλες τις μεθόδους. Συνήθως υπάρχει μία ειδική μέθοδος που λέγεται init Θα μιλήσουμε για αυτά σε λίγο...

5 Ορισμός της κλάσης student class Student: Κλάση που αντιπροσωπεύει έναν φοιτητή. def init (self,n,a): self.full_name = n self.age = a def get_age(self): return self.age

6 Δημιουργώντας και καταργώντας αντικείμενα (Instances)

7 Instantiating Objects Για να κατασκευάσουμε ένα αντικείμενο δεν χρησιμοποιούμε new όπως στην Java. Απλά χρησιμοποιούμε το όνομα της κλάσης με () και καταχωρούμε το αποτέλεσμα σε μία μεταβλητή. b = Student( Bob Smith, 21) Τα arguments που περνάμε καταλήγουν στην μέθοδο init ().

8 Constructor: init init λειτουργεί σαν κατασκευαστής (constructor) για την κλάση. Όταν δημιουργούμε ένα νέο αντικείμενο της κλάσης, η μέθοδος αυτή καλείται. Συνήθως γίνεται αρχικοποίηση των δεδομένων του αντικειμένου. Περνάμε τις αρχικές τιμές στο αντικείμενο της κλάσης μέσω της μεθόδου init. b = Student( Bob, 21) Εδώ η init δέχεται Bob and 21.

9 Instantiating Objects Για να κατασκευάσουμε ένα αντικείμενο δεν χρησιμοποιούμε new όπως στην Java. Απλά χρησιμοποιούμε το όνομα της κλάσης με () και καταχωρούμε το αποτέλεσμα σε μία μεταβλητή. b = Student( Bob Smith, 21) Τα arguments που περνάμε πάνε στην μέθοδο init ().

10 Constructor: init H μέθοδος init μπορεί να πάρει όποιον αριθμό παραμέτρων χρειάζεται. Όπως σε οποιαδήποτε άλλη συνάρτηση, οι παράμετροι μπορούν να ορίζονται με αρχικές τιμές και έτσι δεν είναι απαραίτητες για το καλών πρόγραμμα. Η πρώτη παράμετρος όμως, self στον ορισμό της init είναι ειδική

11 Self Το πρώτο argument κάθε μεθόδου είναι η αναφορά στο τρέχων αντικείμενο της κλάσης. Εξ ορισμού, ονομάζουμε την παράμετρο αυτή self. Στην init, η self αναφέρεται στο αντικείμενο το οποίο δημιουργείται, έτσι σε όλες τις άλλες μεθόδους της κλάσης αναφέρεται στο αντικείμενο του οποίου η μέθοδος καλέστηκε. Το self είναι σαν το keyword this της Java ή C++. Η Python χρησιμοποιεί το self συχνότερα από ότι η Java χρησιμοποιεί this.

12 Self Παρά το ότι ορίζουμε τη self, όταν ορίζουμε την μέθοδο, δεν την περιλαμβάνουμε όταν την καλούμε. H Python την περνάει αυτόματα. Defining a method: (this code inside a class definition.) def set_age(self, num): self.age = num Calling a method: >>> x.set_age(23)

13 Δεν χρειάζεται free Όταν δεν χρειάζεται πλέον το αντικείμενο δεν είμαστε υποχρεωμένοι να το καταστρέψουμε. Η Python έχει αυτόματο garbage collection. Η Python βρίσκει ποιες αναφορές σε αντικείμενα δεν χρησιμοποιούνται και αυτόματα ελευθερώνει την μνήμη που δεσμεύουν. Αυτό γενικά δουλεύει αρκετά καλά. Δεν υπάρχει destructor method για τις κλάσεις.

14 Πρόσβαση στα attributes και μέθοδοι

15 Ορισμός κλάσης Student class Student: κλάση που αναπαριστά ένα φοιτητή def init (self,n,a): self.full_name = n self.age = a def get_age(self): return self.age

Σύνταξη για πρόσβαση >>> f = Student ( Bob Smith, 23) >>> f.full_name # Access an attribute. Bob Smith >>> f.get_age() # Access a method. 23 16

17 Πρόσβαση σε άγνωστα members Τι συμβαίνει εάν δεν γνωρίζουμε το όνομα ενός attribute ή μίας μεθόδου μίας κλάσεις που θέλουμε να χρησιμοποιήσουμε έως το run time; Υπάρχει τρόπος να πάρουμε ένα string που να περιέχει το όνομα ενός attribute ή μεθόδου μίας κλάσης και μία αναφορά σε αυτό για να το χρησιμοποιήσουμε;

18 getattr(object_instance, string) >>> f = Student( Bob Smith, 23) >>> getattr(f, full_name ) Bob Smith >>> getattr(f, get_age ) <method get_age of class studentclass at 010B3C2> >>> getattr(f, get_age )() # We can call this. 23 >>> getattr(f, get_birthday ) # Raises AttributeError No method exists.

19 hasattr(object_instance,string) >>> f = Student( Bob Smith, 23) >>> hasattr(f, full_name ) True >>> hasattr(f, get_age ) True >>> hasattr(f, get_birthday ) False