Εργαλεία Χρήστη

Εργαλεία ιστότοπου


oopython

Σύγκριση εκδόσεων

Εδώ βλέπετε τις διαφορές μεταξύ της επιλεγμένης έκδοσης και της τρέχουσας έκδοσης της σελίδας.

Σύνδεσμος σε αυτή την προβολή διαφορών.

Επόμενη αναθεώρηση
Προηγούμενη αναθεώρηση
oopython [2010/07/28 09:38]
chiossif δημιουργήθηκε
oopython [2023/02/08 12:09] (τρέχουσα)
chiossif [1ο Παράδειγμα]
Γραμμή 1: Γραμμή 1:
-+----------------------------------------------+ +===== Αντικειμενοστραφής προγραμματισμός σε Python  =====
-Αντικειμενοστραφής προγραμματισμός σε Python +
-+----------------------------------------------++
  
-Εισαγωγή +==== Εισαγωγή ====
---------+
  
 Η python είναι μια γλώσσα αντικειμενοστραφούς προγραμματισμού. Αντικειμενοστραφής προγραμματισμός είναι ο προγραμματισμός με την χρήση τάξεων - κατηγοριών - κλάσεων και των εμφανίσεών τους των αντικειμένων. Η ιστορική αναδρομή η οποία ακολουθεί βοηθάει στην κατανόηση αυτών των όρων (αν οι όροι σας είναι οικείοι προχωρήστε στα παραδείγματα εκμάθησης). Η python είναι μια γλώσσα αντικειμενοστραφούς προγραμματισμού. Αντικειμενοστραφής προγραμματισμός είναι ο προγραμματισμός με την χρήση τάξεων - κατηγοριών - κλάσεων και των εμφανίσεών τους των αντικειμένων. Η ιστορική αναδρομή η οποία ακολουθεί βοηθάει στην κατανόηση αυτών των όρων (αν οι όροι σας είναι οικείοι προχωρήστε στα παραδείγματα εκμάθησης).
  
-Ιστορική αναδρομή στις μεθόδους προγραμματισμού +==== Ιστορική αναδρομή στις μεθόδους προγραμματισμού ====
------------------------------------------------+
  
-Στην αρχή (έως την δεκαετία του 1960) κυριαρχούσε ο γραμμικός τρόπος προγραμματισμού (http://en.wikipedia.org/wiki/Spaghetti_code). Οι προγραμματιστές έγραφαν τις εντολές τους στην σειρά και όποτε χρειαζόταν μια διακλάδωση τότε χρησιμοποιούσαν την εντολή GOTO. Ο κώδικας ήταν συμπαγής εξαιρετικά γρήγορος αλλά είχε τεράστια μεινονεκτήματα ιδίως στην δυνατότητα διαχείρησης, συντήρησης και εκσφαλμάτωσης του. Κύριες γλώσσες γραμμικού προγραμματισμού είναι η Assebly και άλλες γλώσσες της εποχής όπως η Basic και η Fortran V+Στην αρχή (έως την δεκαετία του 1960) κυριαρχούσε ο γραμμικός τρόπος προγραμματισμού ( http://en.wikipedia.org/wiki/Spaghetti_code ). Οι προγραμματιστές έγραφαν τις εντολές τους στην σειρά και όποτε χρειαζόταν μια διακλάδωση τότε χρησιμοποιούσαν την εντολή GOTO. Ο κώδικας ήταν συμπαγής εξαιρετικά γρήγορος αλλά είχε τεράστια μειονεκτήματα ιδίως στην δυνατότητα διαχείρισης, συντήρησης και εκσφαλμάτωσης του. Κύριες γλώσσες γραμμικού προγραμματισμού είναι η Assembly και άλλες γλώσσες της εποχής όπως η Basic και η Fortran V.
-Την δεκαετία του 1970 επικράτησε ο δομημένος προγραμματισμός (http://en.wikipedia.org/wiki/Structured_programming) ο οποίος κατήργησε την χρήση του GOTO. Αυτό επετεύχθει με την δημιουργία των προγραμματιστικών μονάδων δηλαδή των δομών και των υποπρογραμμάτων. Κάθε φορά που απαιτείται μια πρόσθετη εργασία αντί της διακλάδωσης επιλέγεται η χρήση μιας ομάδας εντολών σαφώς διακριτών από τις υπόλοιπες. Αυτές οι ομάδες είτε είναι τμήματα εντολών ελέγχου ή επανάληψης είτε είναι υποπρογράμματα. Περιέχουν δε οποιοδήποτε πλήθος ή συνδυασμό άλλων εντολών. Γλώσσες δομημένου προγραμματισμού οι οποίες παραμένουν έως σήμερα είναι η C και η Pascal.+
  
-Τέλος από την δεκαετία του 1990 και μετά άρχισε να κυριαρχεί ο αντικειμενοστραφής προγραμματισμός (http://en.wikipedia.org/wiki/Object-oriented_programming). Τώρα οι "ομάδες" του δομημένου ονομάστηκαν κατηγορίες-τάξεις-κλάσεις και εκτός από εντολές (αλγόριθμους) περιέχουν και μεταβλητές (δεδομένα). Στο πλαίσιο λειτουργιών ενός αντικειμένου (ή καλύτερα μιας κατηγορίας) συμπεριλαμβάνονται τόσο οι μέθοδοι (αλγόριθμοι) που το αφορούν με την μορφή υποπρογραμμάτων όσο και τα δεδομένα (μεταβλητές) που το περιγράφουν. Κάθε αντικείμενο είναι η στιγμιαία έκφραση μιας κατηγορίας και περιλαμβάνει το δικά του χαρακτηριστικά στις μεταβλητές της κατηγορίας του και δικαίωμα χρήσης των υποπρογραμμάτωνεθόδων της. Σήμερα κύριες γλώσσες αντικειμενοστραφούς προγραμματισμού είναι η C++, η Python και η Java+Την δεκαετία του 1970 επικράτησε ο δομημένος προγραμματισμός ( http://en.wikipedia.org/wiki/Structured_programming ) ο οποίος κατάργησε την χρήση του GOTO. Αυτό επετεύχθη με την δημιουργία των προγραμματιστικών μονάδων δηλαδή των δομών και των υποπρογραμμάτων. Κάθε φορά που απαιτείται μια πρόσθετη εργασία αντί της διακλάδωσης επιλέγεται η χρήση μιας ομάδας εντολών σαφώς διακριτών από τις υπόλοιπες. Αυτές οι ομάδες είτε είναι τμήματα εντολών ελέγχου ή επανάληψης είτε είναι υποπρογράμματα. Περιέχουν δε οποιοδήποτε πλήθος ή συνδυασμό άλλων εντολών. Γλώσσες δομημένου προγραμματισμού οι οποίες παραμένουν έως σήμερα είναι η C και η Pascal.
  
-1ο Παράδειγμα αντικειμενοστραφούς προγραμματισμού με Python+Τέλος από την δεκαετία του 1990 και μετά άρχισε να κυριαρχεί ο αντικειμενοστραφής προγραμματισμός ( http://en.wikipedia.org/wiki/Object-oriented_programming ). Τώρα οι "ομάδες" του δομημένου ονομάστηκαν κατηγορίες-τάξεις-κλάσεις και εκτός από εντολές (αλγόριθμους) περιέχουν και μεταβλητές (δεδομένα). Στο πλαίσιο λειτουργιών ενός αντικειμένου (ή καλύτερα μιας κατηγορίας) συμπεριλαμβάνονται τόσο οι μέθοδοι (αλγόριθμοι) που το αφορούν με την μορφή υποπρογραμμάτων όσο και τα δεδομένα (μεταβλητέςπου το περιγράφουν. Κάθε αντικείμενο είναι η στιγμιαία έκφραση μιας κατηγορίας και περιλαμβάνει το δικά του χαρακτηριστικά στις μεταβλητές της κατηγορίας του και δικαίωμα χρήσης των υποπρογραμμάτων-μεθόδων της. Σήμερα κύριες γλώσσες αντικειμενοστραφούς προγραμματισμού είναι η C++, η Python και η Java. 
-------------------------------------------------------------+
  
-Ορισμός κατηγοριών με χαρακτηριστικά και μεθόδους. Δήλωση αντικειμένων και χρήση τους. +==== 1ο Παράδειγμα  ====
---------------------------------------------------------------------------------------+
  
 +== Ορισμός κατηγοριών με χαρακτηριστικά και μεθόδους. Δήλωση αντικειμένων και χρήση τους. ==
  
 Έστω ότι έχουμε να δουλέψουμε με κύκλους. Για να δούμε ένα παράδειγμα: Έστω ότι έχουμε να δουλέψουμε με κύκλους. Για να δούμε ένα παράδειγμα:
  
-#!/usr/bin/python3 +  #!/usr/bin/python3 
-# -*- coding: UTF-8 -*- +  # -*- coding: UTF-8 -*- 
- +  #Filename: cycle.py - 1ο/3 μέρη - 1η έκδοση 
-#Filename: cycle.py - 1ο/3 μέρη - 1η έκδοση +   
-class cycle: +  from math import pi # θα το χρειαστούμε στον υπολογισμό περιμέτρου 
- '''Αυτή είναι η κατηγορία του κύκλου'''+   
 +  class cycle: 
 +   '''Αυτή είναι η κατηγορία του κύκλου'''
  def __init__(self,r=1):  def __init__(self,r=1):
  self.rad=r  self.rad=r
Γραμμή 44: Γραμμή 40:
 Για να δούμε και 2-3 εντολές χρήσης: Για να δούμε και 2-3 εντολές χρήσης:
  
-#Filename: cycle.py - 2ο/3 μέρη - 1η έκδοση +  #Filename: cycle.py - 2ο/3 μέρη - 1η έκδοση 
- +  a=cycle(5); 
-a=cycle(5); +  print('Η ακτίνα του κύκλου είναι:', a.rad) 
-print('Η ακτίνα του κύκλου είναι:', a.rad) +  print('Η περίμετρος του κύκλου είναι:', a.perimeter())
-print('Η περίμετρος του κύκλου είναι:', a.perimeter())+
  
 Εδώ ορίζουμε τον κύκλο a με ακτίνα 5. Εδώ ορίζουμε τον κύκλο a με ακτίνα 5.
 Εμφανίζουμε στην οθόνη την ακτίνα και την περίμετρό του. Εμφανίζουμε στην οθόνη την ακτίνα και την περίμετρό του.
  
-#Filename: cycle.py - 3ο/3 μέρη - 1η έκδοση +  #Filename: cycle.py - 3ο/3 μέρη - 1η έκδοση 
- +  b=cycle(); 
-b=cycle(); +  print('Η ακτίνα του κύκλου είναι:', b.rad) 
-print('Η ακτίνα του κύκλου είναι:', b.rad) +  print('Η περίμετρος του κύκλου είναι:', b.perimeter())
-print('Η περίμετρος του κύκλου είναι:', b.perimeter())+
  
 Εδώ ορίζουμε τον κύκλο a χωρίς ρύθμιση της ακτίνας και άρα θα πάρει την τιμή 1. Εδώ ορίζουμε τον κύκλο a χωρίς ρύθμιση της ακτίνας και άρα θα πάρει την τιμή 1.
Γραμμή 67: Γραμμή 61:
 Το παραπάνω παράδειγμα μετά και τον εξελληνισμό των αναγνωριστικών του παίρνει την ακόλουθη μορφή: Το παραπάνω παράδειγμα μετά και τον εξελληνισμό των αναγνωριστικών του παίρνει την ακόλουθη μορφή:
  
-#!/usr/bin/python3 +  #!/usr/bin/python3 
-# -*- coding: UTF-8 -*- +  # -*- coding: UTF-8 -*- 
- +  #Filename: cycle.py - 1ο/1 μέρη - 2η έκδοση με Ελληνικά ! 
-#Filename: cycle.py - 1ο/1 μέρη - 2η έκδοση με Ελληνικά ! +  from math import pi 
- +  class Κύκλος:
-from math import pi +
- +
-class Κύκλος:+
  '''Αυτή είναι η κατηγορία του κύκλου'''  '''Αυτή είναι η κατηγορία του κύκλου'''
  def __init__(self,ρ=1):  def __init__(self,ρ=1):
Γραμμή 89: Γραμμή 80:
  def Περίμετρος(self):  def Περίμετρος(self):
  return self.rad*2*pi  return self.rad*2*pi
 +  
 +  Αλφα=Κύκλος(5);
 +  print('Η ακτίνα του κύκλου είναι:', Αλφα.Ακτίνα())
 +  print('Η περίμετρος του κύκλου είναι:', Αλφα.Περίμετρος())
 +  Βήτα=Κύκλος();
 +  Βήτα.Βάλε_Ακτίνα(3);
 +  print('Η ακτίνα του κύκλου είναι:', Βήτα.Ακτίνα())
 +  print('Η περίμετρος του κύκλου είναι:', Βήτα.Περίμετρος())
  
-Αλφα=Κύκλος(5); +==== 2ο Παράδειγμα  ====
-print('Η ακτίνα του κύκλου είναι:', Αλφα.Ακτίνα()) +
-print('Η περίμετρος του κύκλου είναι:', Αλφα.Περίμετρος()) +
-Βήτα=Κύκλος(); +
-Βήτα.Βάλε_Ακτίνα(3); +
-print('Η ακτίνα του κύκλου είναι:', Βήτα.Ακτίνα()) +
-print('Η περίμετρος του κύκλου είναι:', Βήτα.Περίμετρος())+
  
-2ο Παράδειγμα αντικειμενοστραφούς προγραμματισμού με Python: +== Κληρονομικότητα και Πολυμορφισμός ==
-------------------------------------------------------------+
  
-Κληρονομικότητα και Πολυμορφισμός +  #!/usr/bin/python3 
---------------------------------- +  # -*- coding: UTF-8 -*- 
- +  #Filename: Σχολές.py - Έκδοση με Ελληνικά ! 
-#!/usr/bin/python3 +   
-# -*- coding: UTF-8 -*- +  class Ίδρυμα:
- +
-#Filename: Σχολές.py - Έκδοση με Ελληνικά ! +
- +
-class Ίδρυμα:+
  '''Αυτή είναι η κατηγορία ιδρύματος ανώτατης εκπαίδευσης'''  '''Αυτή είναι η κατηγορία ιδρύματος ανώτατης εκπαίδευσης'''
  def __init__(self, Όνομα):  def __init__(self, Όνομα):
  self.τίτλος=Όνομα  self.τίτλος=Όνομα
  print('Αρχικοποιήθηκε το ίδρυμα :',self.τίτλος)  print('Αρχικοποιήθηκε το ίδρυμα :',self.τίτλος)
 +  
  def Όνομα(self):  def Όνομα(self):
  return self.τίτλος  return self.τίτλος
 +  
  def Τίτλος(self): # Ίδια με την προηγούμενη αλλά ορατή από την κατηγορία Σχολή  def Τίτλος(self): # Ίδια με την προηγούμενη αλλά ορατή από την κατηγορία Σχολή
  return self.τίτλος  return self.τίτλος
Γραμμή 127: Γραμμή 115:
  def Είδος(self):  def Είδος(self):
  return self.είδος  return self.είδος
- +   
-class Σχολή(Ίδρυμα): # ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ: Η κατηγορία Σχολή είναι θυγατρική της κατηγορίας Ίδρυμα+  class Σχολή(Ίδρυμα): # ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ: Η κατηγορία Σχολή είναι θυγατρική της κατηγορίας Ίδρυμα
  '''Αυτή είναι η κατηγορία σχολής ενός ιδρύματος ανώτατης εκπαίδευσης'''  '''Αυτή είναι η κατηγορία σχολής ενός ιδρύματος ανώτατης εκπαίδευσης'''
  def __init__(self, Όνομα, ίδρυμα):  def __init__(self, Όνομα, ίδρυμα):
Γραμμή 134: Γραμμή 122:
  self.τίτλος=ίδρυμα.τίτλος  self.τίτλος=ίδρυμα.τίτλος
  print('Αρχικοποιήθηκε η σχολή :',self.όνομα, 'του ιδρύματος',self.τίτλος)  print('Αρχικοποιήθηκε η σχολή :',self.όνομα, 'του ιδρύματος',self.τίτλος)
 +  
  def Όνομα(self): # ΠΟΛΥΜΟΡΦΙΣΜΟΣ: Μέθοδος με ίδιο όνομα με αυτό μητρικής κατηγορίας  def Όνομα(self): # ΠΟΛΥΜΟΡΦΙΣΜΟΣ: Μέθοδος με ίδιο όνομα με αυτό μητρικής κατηγορίας
  return self.όνομα  return self.όνομα
Γραμμή 144: Γραμμή 132:
  def Επίπεδο(self):  def Επίπεδο(self):
  return self.επίπεδο  return self.επίπεδο
- +   
-ΕΜΠ=Ίδρυμα('ΕΘνικόν Μετσόβιον Πολυτεχνείον'+  ΕΜΠ=Ίδρυμα('ΕΘνικόν Μετσόβιον Πολυτεχνείον'
-ΕΜΠ.Βάλε_Είδος('Α.Ε.Ι.'+  ΕΜΠ.Βάλε_Είδος('Α.Ε.Ι.'
-print('Το ίδρυμα', ΕΜΠ.Όνομα(),' είναι : ', ΕΜΠ.Είδος()) +  print('Το ίδρυμα', ΕΜΠ.Όνομα(),' είναι : ', ΕΜΠ.Είδος()) 
- +   
-ΣΑΤΜ=Σχολή('Αγρονόμων και Τοπογράφων Μηχανικών',ΕΜΠ) +  ΣΑΤΜ=Σχολή('Αγρονόμων και Τοπογράφων Μηχανικών',ΕΜΠ) 
-ΣΑΤΜ.Βάλε_Επίπεδο() +  ΣΑΤΜ.Βάλε_Επίπεδο() 
-print('Η σχολή ', ΣΑΤΜ.Όνομα(), 'του', ΣΑΤΜ.Τίτλος(), 'είναι επιπέδου : ', ΣΑΤΜ.Επίπεδο()) +  print('Η σχολή ', ΣΑΤΜ.Όνομα(), 'του', ΣΑΤΜ.Τίτλος(), 'είναι επιπέδου : ', ΣΑΤΜ.Επίπεδο()) 
- +   
-ΣΗΜΜΗΥ=Σχολή('Ηλεκτρολόγων Μηχανικών και Μηχανικών Ηλεκτρονικών Υπολογιστών',ΕΜΠ) +  ΣΗΜΜΗΥ=Σχολή('Ηλεκτρολόγων Μηχανικών και Μηχανικών Ηλεκτρονικών Υπολογιστών',ΕΜΠ) 
-ΣΗΜΜΗΥ.Βάλε_Επίπεδο("Masters++ :-) ") +  ΣΗΜΜΗΥ.Βάλε_Επίπεδο("Masters++ :-) ") 
-print('Η σχολή ', ΣΗΜΜΗΥ.Όνομα(), 'του', ΣΗΜΜΗΥ.Τίτλος(), 'είναι επιπέδου : ', ΣΗΜΜΗΥ.Επίπεδο()) +  print('Η σχολή ', ΣΗΜΜΗΥ.Όνομα(), 'του', ΣΗΜΜΗΥ.Τίτλος(), 'είναι επιπέδου : ', ΣΗΜΜΗΥ.Επίπεδο()) 
- +   
-if ΣΗΜΜΗΥ.Τίτλος() == ΣΑΤΜ.Τίτλος():+  if ΣΗΜΜΗΥ.Τίτλος() == ΣΑΤΜ.Τίτλος():
  print('Η σχολή ', ΣΑΤΜ.Όνομα(), 'και η σχολή ',ΣΗΜΜΗΥ.Όνομα(), 'είναι στο ',ΣΗΜΜΗΥ.Τίτλος())  print('Η σχολή ', ΣΑΤΜ.Όνομα(), 'και η σχολή ',ΣΗΜΜΗΥ.Όνομα(), 'είναι στο ',ΣΗΜΜΗΥ.Τίτλος())
- +   
-print('Η σχολή ', ΣΑΤΜ.Όνομα(), 'και η σχολή ',ΣΗΜΜΗΥ.Όνομα()) +  print('Η σχολή ', ΣΑΤΜ.Όνομα(), 'και η σχολή ',ΣΗΜΜΗΥ.Όνομα()) 
-if ΣΗΜΜΗΥ.Επίπεδο() != ΣΑΤΜ.Επίπεδο():+  if ΣΗΜΜΗΥ.Επίπεδο() != ΣΑΤΜ.Επίπεδο():
  print (' ΔΕΝ ')  print (' ΔΕΝ ')
-print (' έχουν το ίδιο επίπεδο σπουδών.'+  print (' έχουν το ίδιο επίπεδο σπουδών.'
- +   
-print('Η σχολή ') +  print('Η σχολή ') 
-if ΣΗΜΜΗΥ.Επίπεδο() > ΣΑΤΜ.Επίπεδο():+  if ΣΗΜΜΗΥ.Επίπεδο() > ΣΑΤΜ.Επίπεδο():
  print(ΣΗΜΜΗΥ.Όνομα())  print(ΣΗΜΜΗΥ.Όνομα())
-elif ΣΗΜΜΗΥ.Επίπεδο() < ΣΑΤΜ.Επίπεδο(): +  elif ΣΗΜΜΗΥ.Επίπεδο() < ΣΑΤΜ.Επίπεδο(): 
-    print(ΣATM.Όνομα()) +        print(ΣATM.Όνομα()) 
-print('έχει υψηλότερο επίπεδο σπουδών. :-)')+  print('έχει υψηλότερο επίπεδο σπουδών. :-)')
  
 Μελετήστε προσεκτικά το παράδειγμα αυτό και σχολιάστε μόν-οι/ες σας τις έννοιες της κληρονομικότητας και του πολυμορφισμού. Μελετήστε προσεκτικά το παράδειγμα αυτό και σχολιάστε μόν-οι/ες σας τις έννοιες της κληρονομικότητας και του πολυμορφισμού.
  
-Καλό κώδικα με Python.+Καλό αντικειμενοστραφή κώδικα με Python.
oopython.1280309919.txt.gz · Τελευταία τροποποίηση: 2020/11/21 09:52 (εξωτερική τροποποίηση)