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

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

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

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

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Γραφικά υπολογιστών Εργαστήριο 2 Παιχνίδια μαντεύματος με τυχαίους αριθμούς και loops

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

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

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

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

τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4»

Τελικό τεστ - απαντήσεις

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

Η Απάντηση. Φύλλο Εργασίας. Μηνύματα

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

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ

Οδηγίες για τη Χρήση του Google Drive

Χρήση του Office 365 σε τηλέφωνο Android

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

18.ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 1 Δραστηριότητα 1

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

Στο πρόγραμμα θα πρέπει να γίνει υποχρεωτικά χρήση κλάσεων. Για την υλοποίηση του προγράμματος χρειάζονται 3 βασικές κλάσεις.

Ενότητα 06 Δημιουργία Και Χρήση Φόρμουλας

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Η Απάντηση. Ενδεικτικές Απαντήσεις Φύλλου Εργασίας. Μηνύματα. 1. Πληκτρολογήστε την εντολή:

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

Τιμή Τιμή. σκορ. ζωές

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Σχεδιασμός εκτυπώσεων ERG

Τα στοιχεία του παιχνιδιού : Σκηνικό

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

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων.

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Οδηγός γρήγορης εκκίνησης

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Μεθοδολογία Προγραμματισμού

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

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

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

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Δομημένος Προγραμματισμός (ΤΛ1006)

Παραδείγματα μεταβλητών

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Σχεδιασμός εκτυπώσεων ERG

TRIDIO TRIDIO 1

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΔΟΜΕΣ. Γενική μορφή της επανάληψης επανάλαβε φορές [... ενέργειες...]

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

επανάληψης» υπάρχουν;

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

αξιοποίηση των ΤΠΕ: Η logo στη διδακτική διδακτική πράξη

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

ΣΥΝΟΛΟ ΣΕΛΙ ΩΝ: ΕΠΤΑ (7)

Προγραμματιστικές τεχνικές

Πίνακες δημιουργία και μορφοποίηση πίνακα

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2520

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 2: Δείκτες & Δυναμική Ανάθεση Μνήμης

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Σχεδιασμός των Πινάκων μίας Βάσης Δεδομένων

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

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

Δημιουργία παρουσιάσεων με το PowerPoint

21. ΑΝΑΛΥΤΙΚΗ ΛΟΓΙΣΤΙΚΗ

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Σύνθεση και Κληρονομικότητα

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ & ΠΛΗΡΟΦΟΡΙΚΗΣ. Εργαστήριο Λογισµικού (Γλώσσα C++) Ακαδ. Έτος: Εργασία (40%) Το Μπουντρούµι

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

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

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

Δημιουργία παιχνιδιού με το Game Maker

Ελέγξτε την ταινία σας

ΗΥ101: Εισαγωγή στην Πληροφορική

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

Εμφανίζονται 3 επιλογές με 3 εικονίδια, η «ζωγραφική», η «εισαγωγή» και η «κάμερα».

Transcript:

Γραφικά υπολογιστών Εργαστήριο 9 Κλάσεις στην Python Σκοπός της 9ης άσκησης είναι να μάθουμε αντικειμενοστρεφή προγραμματισμό στην Python. 1. Εισαγωγή Κάθε χαρακτήρας σε ένα παιχνίδι χρειάζεται κάποια πληροφορία: ένα όνομα, την τοποθεσία στην οποία βρίσκεται, την κατεύθυνση προς την οποία κινείται, τις ενέργειες τις οποίες κάνει κλπ. Προκειμένου να μπορούμε να γράφουμε πιο καλό και καθαρό κώδικα και να μπορούμε εύκολα να τον τροποποιούμε, π.χ. να προσθέτουμε νέες ιδιότητες/ενέργειες κλπ στους χαρακτήρες μας, μια καλή πρακτική είναι να χρησιμοποιούμε κλάσεις. Η Python όπως έχουμε ήδη δει δεν απαιτεί την χρήση κλάσεων, αλλά με την προσθήκη τους μας βοηθά να γράψουμε πολύ καλύτερο κώδικα. 2. Η πρώτη μας κλάση Ας φτιάξουμε την πρώτη μας κλάση. Για ευκολία ας θεωρήσουμε ότι η κλάση αυτή θα χρησιμοποιείται για να αποθηκεύει όλα τα πεδία μιας διεύθυνσης. Εδώ, όπως έχουμε ήδη καταλάβει, η κλάση είναι η Address και διαθέτει τα πεδία name, line1, line2, city, state και zip. Θα πρέπει να προσέξουμε τα παρακάτω: Το def init (self)είναι ο constructor της κλάσης. Είναι η συνάρτηση η οποία τρέχει αυτόματα όταν δημιουργείται η κλάση. Θα δούμε σχετικά στη συνέχεια. Το self με απλά λόγια δηλώνει ότι τα συγκεκριμένα πεδία ανήκουν μόνο στην κλάση αυτή. Προσέξτε ότι μα βάση τη στοίχιση, βρίσκονται μέσα στον ορισμό της κλάσης Εάν έχετε πολλές κλάσεις, συνίσταται να φτιάχνετε ένα διάγραμμα που να περιλαμβάνει τις κλάσεις και τον τρόπο που συνδέονται μεταξύ τους, π.χ. για την περιγραφή της προηγούμενης κλάσης, αρκεί κάτι τέτοιο: Φυσικά, ο παραπάνω κώδικας απλά ορίζει το πώς μοιάζει μια κλάση, αλλά δεν φτιάχνει και κάποιο στιγμιότυπό της. Τονίζουμε ότι παρ όλο που δεν είναι υποχρεωτικό κάθε κλάση να έχει στιγμιότυπα, δεν έχει και ιδιαίτερο νόημα να ορίζουμε κλάσεις που δεν θα χρησιμοποιήσουμε. Ας φτιάξουμε λοιπόν ένα στιγμιότυπο της κλάσης address:

Καλώντας τον constructor έχουμε φτιάξει ένα αντικείμενο και στη συνέχεια, με τρόπο που μας φαίνεται οικείος έχουμε δώσει τιμές σε όλα τα πεδία του, με τη βοήθεια του dot operator (. ). Προσοχή, δεν μπορούμε να γράψουμε π.χ. Address.state: Ας φτιάξουμε τώρα μια συνάρτηση, η οποία θα τυπώνει το περιεχόμενο ενός στιγμιοτύπου της κλάσης Address: Δοκιμάστε να την καλέσετε! 3. Προσθήκη μεθόδων σε κλάσεις Εκτός από τις ιδιότητες, όπως ίσως περιμέναμε, οι κλάσεις έχουν και μεθόδους. Μια μέθοδος είναι μια συνάρτηση η οποία υπάρχει έξω από την κλάση. Ας φτιάξουμε μια απλή κλάση Dog και ας της προσθέσουμε μια μέθοδο:

Προσοχή, οι ορισμοί των μεθόδων μέσα σε μια κλάση είναι ακριβώς ίδιοι με αυτούς των συναρτήσεων. Η βασική διαφορά έιναι η προσθήκη της παραμέτρου self. Η πρώτη παράμετρος κάθε μεθόδου μέσα σε μια κλάση πρέπει να είναι η self. Απαιτείται ακόμη κι αν δε χρησιμοποιείται από τη συνάρτηση. Επίσης, θα πρέπει να προσέχουμε τα εξής: Πρώτα ορίζουμε ιδιότητες, έπειτα μεθόδους Η πρώτη παράμετρος κάθε μεθόδου πρέπει να είναι η self Οι ορισμοί των μεθόδων πρέπει να έχουν στοίχιση ίση με ένα tab stop Κατα τ άλλα, οι μέθοδοι χρησιμοποιούνται ακριβώς όπως και οι ιδιότητες: Προσέξτε ότι παρ ότι το self είναι το όρισμα της bark(), την καλούμε χωρίς όρισμα. Εσωτερικά η Python καλεί το εν λόγω αντικείμενο. Αν η συνάρτηση bark χρειαζόταν να χρησιμοποιήσει κάποια από τις ιδιότητες, τότε αυτό θα μπορούσε να γίνει με τη βοήθεια του self. Αλλάξτε την bark ως εξής: Δείτε τι συμβαίνει εάν καλέσετε ξανά τη μέθοδο bark: Μιας και αναφέραμε ότι ορισμένες φορές μας διευκολύνει να σχεδιάζουμε τις κλάσεις, στην περίπτωση που αυτές περιέχουν μεθόδους, αυτό θα γινόταν κάπως έτσι: Για να κατανοήσουμε καλύτερα τα παραπάνω, ας φτιάξουμε μια κλάση που θα αντιπροσωπεύει μια μπάλα, η οποία και θα κινείται στην οθόνη. Χρησιμοποιείστε το pygame_base_template.py και αρχικά τοποθετείστε έξω από τον κυρίως βρόχο τον ορισμό της κλάσης:

Πριν τον κυρίως βρόχο φτιάξτε ένα στιγμιότυπο της κλασης: Και στη συνέχεια, μέσα στον κυρίως βρόχο προσθέστε τον κώδικα που θα κινεί την μπάλα: 4. Constructors Η προηγούμενη κλάση Dog είχε καθορισμένο όνομα για κάθε σκύλο που γεννιέται. Στην πράξη δε θέλουμε κάτι τέτοιο. Αν απλώς ορίσουμε ότι η ιδιότητα name έχει τιμή ίση με, τότε θα γεννιούνται σκύλοι χωρίς όνομα! Για να ξεπεράσουμε τέτοιου τύπου προβλήματα, ο πιο ενδεδειγμένος τρόπος είναι να τροποποιήσουμε τον constructor έτσι ώστε να απαιτεί τη χρήση του ονόματος. Δοκιμάστε να καλέσετε τον constructor με και χωρίς όνομα για τον σκύλο σας!

5. Κληρονομικότητα Η κληρονομικότητα στην Python λειτουργεί ακριβώς με τον τρόπο που θα περιμεναμε. Αφού ορίσουμε μια κλάση, στη συνέχεια μπορούμε να ορίσουμε κλάσεις που κληρονομούν την αρχική. Δηλαδή, κληρονομούν τις ιδιότητες και ενδεχομένως προσθέτουν και νέες, κληρονομούν τις μεθόδους και ενδεχομένως προσθέτουν και νέες. Δείτε το ακόλουθο παράδειγμα: Η κλάση Person ορίζεται με τον κλασικό τρόπο. Ακολούθως, η κλάση Employee κληρονομεί την Person, άρα έχει name! Στη συνέχεια με την super(). init () καλεί την init της Person και ακολούθως ορίζει και μια περαπάνω ιδιότητα. Το ίδιο κάνει και η Customer. Δοκιμάστε να καλέσετε τους constructors: Με αντίστοιχο τρόπο κληρονομούνται και οι μέθοδοι. Προσοχή, οι θυγατρικές κλάσεις έχουν τη δυνατότητα να ορίσουν δικές τους μεθόδους για να αντικαταστήσουν αυτές των πατρικών, αλλά και να καλούν με τη super τις αντίστοιχες μεθόδους της πατρικής κλάσης. Δείτε το παρακάτω και κάντε τις απαραίτητες δοκιμές για να κατανοήσετε πώς λειτουργεί η κληρονομικότητα.