Μάθημα : Προγραμματισμός Η/Υ
Κωδικός : T522234
-
Εμφάνιση όλων των ενοτήτων
-
Τύποι δεδομένων
-
Πράξεις και εκφράσεις (αριθμητικές και λογικές)
-
Μεταβλητές
-
Βασικές (ενσωματωμένες) συναρτήσεις -Βιβλιοθήκες συναρτήσεων
-
Δομή προγράμματος και καλές πρακτικές
-
Τύποι και δομές δεδομένων στις γλώσσες προγραμματισμού
-
Δομή ακολουθίας
-
Αλγοριθμικές δομές (if, for, while)
-
Αλγοριθμικές δομές (Θέματα)
-
Δυαδική αναζήτηση
-
Ταξινόμηση Ευθείας ανταλλαγής
-
Διαχείριση Αρχείων
-
Υποπρογράμματα, Συναρτήσεις
-
Αρθρώματα (Modules)
-
Συμβολοσειρές (strings)
-
Λίστες
-
Στοίβα
-
Ουρά
-
Αντικειμενοστρεφής Προγραμματισμός
-
Θέματα προηγουμένων χρόνων
-
Tips & Tricks
-
Module random
-
Module math
-
Θέματα 2022-23
-
Θέματα 2023-24
-
Η ΑΙ λύνει τα θέματα
-
Τύποι δεδομένων
Αντικειμενοστρεφής Προγραμματισμός
Ο Αντικειμενοστρεφής προγραμματισμός αλλάζει την εστίαση του προγραμματισμού από τις διαδικασίες στις έννοιες. Σε αυτές αναθέτει χαρακτηριστικά, τα οποία ονομάζουμε ιδιότητες (attributes), και τα οποία επεξεργάζεται μέσω ειδικών συναρτήσεων που ονομάζουμε μεθόδους. Οι ιδιότητες δεν είναι άλλες από τα σχετικά με το αντικείμενο δεδομένα, και οι μέθοδοι αποτελούν περιγραφές ενεργειών που αφορούν συγκεκριμένα σε αυτές τις ιδιότητες.
Ένα αντικείμενο στον αντικειμενοστρεφή προγραμματισμό είναι ένα αντικείμενο της πραγματικής ζωής που το περιγράφουμε με χρήση κώδικα. π.χ. ένα αυτοκίνητο
Τα χαρακτηριστικά (attributes) ενός αντικειμένου ονομάζονται και ιδιότητες (properties).
Οι ενέργειες που μπορεί να κάνει ένα αντικείμενο ονομάζονται μέθοδοι (methods).
Οι μέθοδοι επιτρέπουν στα αντικείμενα να κάνουν διάφορες ενέργειες, μέσω των οποίων, μπορούμε να ελέγχουμε τις ιδιότητες του αντικειμένου, όπως για παράδειγμα να ελέγχουμε την ταχύτητα του αυτοκινήτου.
Eνα αντικείμενο δημιουργείται από μια ειδική μέθοδο που στην αντικειμενοστρεφή ορολογία ονομάζεται κατασκευαστής (constructor). Η μέθοδος αυτή δεσμεύει μνήμη στον υπολογιστή.
H απόδοση αρχικών τιμών σε ιδιότητες ενός αντικειμένου που δημιουργείται, ονομάζεται αρχικοποίηση (initialization).
H μέθοδος η οποία να καταστρέφει τα αντικείμενα αυτά και να απελευθερώνει την αντίστοιχη μνήμη ονομάζεται αποδομητής (destructor).
Τα πρότυπα που συγκεντρώνουν τα κοινά στοιχεία άλλων αντικειμένων, έχουν ένα ειδικό όνομα και ονομάζονται κλάσεις (classes). Οι κλάσεις μας επιτρέπουν να γνωρίζουμε πράγματα για αντικείμενα που ακόμα δεν έχουν δημιουργηθεί.
Η κλάση γονέας (parent class) και οι υπο-κλάσεις (subclasses).
Οι υποκλάσεις (κλάσεις παιδιά) αυτόματα, έχουν τις ίδιες ιδιότητες και μεθόδους, χωρίς να είναι απαραίτητο να τις ορίσουμε ξανά. Αυτή, η μεταβίβαση ιδιοτήτων και μεθόδων ονομάζεται κληρονομικότητα (inheritance).
Σε κάθε υποκλάση ορίζονται οι ιδιότητες και οι μέθοδοι που δεν καλύπτονται από την πατρική κλάση.
Ορισμός κλάσης στην Python
Ο ορισμός μιας κλάσης γίνεται
class ΟΝΟΜΑ_ΚΛΑΣΗΣ:
def_init_(ιδιότητες σαν παράμετροι):
self.idotita1=idiotita1
self.idotita2=idiotita2
......................
self.idotitan=idiotitan
def Μεθοδο1
...
def ΜεθοδοΝ
τα αντικείμενα είναι συγκεκριμένες οντότητες που χαρακτηρίζονται από ιδιότητες και μπορούν να εκτελούν συγκεκριμένες ενέργειες.
Οι ενέργειες που μπορεί να κάνει ένα αντικείμενο ονομάζονται μέθοδοι και δεν είναι τίποτε άλλο παρά συναρτήσεις που ανήκουν σε ένα αντικείμενο
Παράδειγμα
class Foititis:
def __init__(self, am, onoma, credit):
self.am=am
self.onoma=onoma
self.credits=credit
def perasa_mathima(self, p):
self.credit+=p
return self.credit
foititis1=Foititis('103','konstantinou', 0)
foititis1.perasa_mathima(5)
Παράδειγμα
class Kinito:
def __init__(self, marka, model,cpu_cores,cam_resolution):
self.marka=marka
self.model=model
self.cpu_cores=cpu_cores
self.cam_resolution=cam_resolution
def fortizi(self):
print "το κινητό φορτίζει"
phone1=Kinito('orange','S3',4,10)
phone1.fortizi()
Β1.
Δίνεται η παρακάτω κλάση:
class Student:
def __init__(self, onoma, vath1, vath2):
self.onoma=onoma
self.vath1=vath1
self.vath2=vath2
όπου onoma είναι το όνομα του σπουδαστή, vath1 η βαθμολογία του στο πρώτο εξάμηνο και vath2 η βαθμολογία του στο δεύτερο εξάμηνο.
α) Να δημιουργήσετε τη μέθοδο με όνομα find_mo(), η οποία θα υπολογίζει και θα επιστρέφει τον μέσο όρο των vath1 και vath2 του σπουδαστή (μον. 4).
β) Να δημιουργήσετε δύο (2) στιγμιότυπα της κλάσης ως εξής: student1, με τιμές των ιδιοτήτων του onoma="Ιωάννου", vath1=7, vath2=6 και student2, με τιμές των ιδιοτήτων του onoma="Αναστασίου", vath1=10, vath2=9 (μον.2).
γ) Να βρείτε και να εμφανίσετε το όνομα του στιγμιοτύπου που έχει τον μεγαλύτερο μέσο όρο με χρήση της μεθόδου find_mo() που περιγράφεται στο ερώτημα α. Στην περίπτωση που και τα δύο (2) στιγμιότυπα έχουν τον ίδιο μέσο όρο, να εμφανίσετε και τα δύο (2) ονόματα των στιγμιοτύπων (μον. 6).
Μονάδες 12
(Ιούνιος 2023)
Λύση
α)
def find_mo(self):
mo=(self.vath1+self.vath2)/2.0
return mo
β)
student1=Student ("Ιωάννου", 7, 6 )
student2=Student("Αναστασίου", 10, 9)
γ)
if student1.find_mo()>student2.find_mo():
print student1.onoma
elif student1.find_mo()<student2.find_mo():
print student2.onoma
else:
print student1.onoma, student2.onoma
B2.
Δίνεται η παρακάτω κλάση:
class Ergazomenos :
def __init__(self,onoma,epon,etos,misthos):
self.onoma=onoma
self.epon=epon
self.etos=etos
self.misthos=misthos
όπου onoma είναι το όνομα του εργαζομένου, epon είναι το επώνυμό του, etos το έτος γέννησής του και misthos ο μισθός του. Να γραφεί τμήμα προγράμματος σε Python που υλοποιεί τα παρακάτω:
α) Να δημιουργεί μία μέθοδο με όνομα afxisi(), η οποία θα αυξάνει το ν μισθό του εργαζ ομένου κατά 5% και θα εμφανίζει τον καινούριο μισθό με κατάλληλο μήνυμα (μον.8).
β) Να δημιουργεί δύο (2) στιγμιότυπα της κλάσης ως εξής:
erg1 με τιμές των ιδιοτήτων του onoma="Μαρίνα", epon="Παπαδοπούλου", etos=1985 και misthos=900 και
erg2 με τιμές των ιδιοτήτων του onoma="Γεώργιος", epon="Δημητρίου", etos=1990 και misthos=800 (μον. 4).
γ) Για το στιγμιότυπο erg2 να καλεί τη μέθοδο afxisi() (μον. 3).
Μονάδες 15
(Σεπτέμβριος 2022)
Λύση
α)
def afxisi(self):
self.misthos+=self.misthos*5/100
print self.misthos
return self.misthos
β)
erg1=Ergazomenos("Μαρίνα", "Παπαδοπούλου", 1985, 900)
erg2=Ergazomenos("Γεώργιος","Δημητρίου", 1990, 800)
γ)
erg2.afxisi()
Παράδειγμα αντικειμενοστραφούς προγραμματισμού (κώδικας)
class Student:
def __init__(self, onoma, vath1, vath2):
self.onoma=onoma
self.vath1=vath1
self.vath2=vath2
def find_mo(self):
mo=(self.vath1+self.vath2)/2.0
return mo
print 'Spoydasti1 '
student1=Student (raw_input('onoma '),input('vath1 '), input('vath2 ' ))
print 'Spoydasti2 '
student2=Student (raw_input('onoma '),input('vath1 '), input('vath2 ' ))
if student1.find_mo()>student2.find_mo():
print student1.onoma
elif student1.find_mo()<student2.find_mo():
print student2.onoma
else:
print student1.onoma, student2.onoma
Θέματα από πανελλαδικές
Λάθος
Σωστό
Λάθος
A2.
Δίνεται η παρακάτω κλάση:
α) Ο κατασκευαστής της κλάσης είναι η ειδική μέθοδος def __init__(self,marka,model)
class Kinito:
phone1=Kinito('orange','S3',4,10)
∆ίνεται η παρακάτω κλάση:
def perasa_mathima (self, p):