Δευτέρα 8 Φεβρουαρίου 2016

Μικρή αναθεώρηση 154 - Παράδειγμα με κλάσεις

Μια μικρή αλλαγή ώστε την εμφάνιση των τμημάτων/συναρτήσεων να μην εμφανίζονται τα ιδιωτικά.

Μια απλή εξήγηση:
Φτιάχνουμε δυο κλάσεις και μια ομάδα  (οι κλάσεις είναι συναρτήσεις που επιστρέφουν ομάδες, τα αντικείμενα της Μ2000). Μπορούμε να φτιάξουμε μια ομάδα χωρίς τη χρήση κλάσης. Πάλι στην ουσία δίνουμε ορισμό αλλά πάει απευθείας στο όνομα που δίνουμε (δεν υπάρχει άλλο αντίγραφο)
Μπορούμε από μια ομάδα να φτιάξουμε μια άλλη ίδια ακριβώς.

Δείτε όμως, δεν μπορώ να δώσω δυο φορές ένα όνομα, οπότε αν αντιγράψω την πρώτη αφού αλλάξω όνομα δεν θα μπορώ να την χρησιμοποιήσω!
Στις δυο ομάδες έχω από ένα όνομα και μια συνάρτηση Χ().
Στην ομάδα Παιδί δίνω με τη σειρά την πρώτη κλάση και μετά τη δεύτερη. Κάθε φορά έχω αναβάθμιση της ομάδας. Η συνάρτηση Χ() αλλάζει!

Δηλαδή μπορούμε να αλλάζουμε τα αντικείμενα (ομάδες) όχι μόνο αλλάζοντας τιμές αλλά αλλάζοντας και κλάσεις. Από τη κλάση παππούς() θα πάρει ότι έχει και σε ότι είναι ίδιο θα γίνει αντικατάσταση, εδώ έγινε αντικατάσταση στη Χ(). Δεν είχαμε όμως μια όνομα$, έτσι δεν έγινε αντικατάσταση. Έχει σημασία δηλαδή τι βάζουμε πάνω από την ομάδα, πως την αναβαθμίζουμε.
Η ομάδα Παιδί και μια ομάδα που φτιάχνουμε με την κλάση Παππούς έχουν μια κοινή διεπαφή που περιλαμβάνει το X(). Η Μ2000 δεν ονομάζει διεπαφές (ακόμα, ίσως να το κάνω και αυτό κάποτε).


Κλάση παππούς {
      Συνάρτηση Χ {
            =70
      }  
}
Κλάση Γονιός {
      Συνάρτηση Χ {
            =35
      }
}
\\ μπορούμε να φτιάχνουμε αντικείμενα
\\ απευθείας χωρίς Κλάση
Ομάδα Παιδί {
Ιδιωτικό:
     όνομα$
Δημόσιο:
      Τμήμα ΔώσεΌνομα {
            Αν .όνομα$="" Τότε { Διάβασε .όνομα$ } Αλλιώς Πέτα 'πετάει την τιμή
      }
      Συνάρτηση ΔώσεΌνομα$ {
            =.όνομα$
      }
      Συνάρτηση Χ {
            =10
      }
}
ΆλλοΠαιδί=Παιδί
Παιδί.ΔώσεΌνομα "Γιώργος"
Παιδί.ΔώσεΌνομα "Ανδρέας"   '' δεν αλλάζει
ΆλλοΠαιδί.ΔώσεΌνομα "Πέτρος"
Τύπωσε Παιδί.Χ() '10
Παιδί=Γονιός() \\ αναβάθμιση
Τύπωσε Παιδί.Χ() '35
Παιδί=Παππούς() \\ αναβάθμιση
Τύπωσε Παιδί.Χ() '70
Τύπωσε ΆλλοΠαιδί.Χ() '10
\\ κάναμε αναβαθμίσεις χωρίς να χαλάσουμε άλλα στοιχεία
Τύπωσε Παιδί.ΔώσεΌνομα$(), ΆλλοΠαιδί.ΔώσεΌνομα$()
Τύπωσε Έγκυρο(Παιδί.όνομα$) ' 0 δεν είναι φανερή η μεταβλητή
Λίστα ! ' τυπώνει ότι είναι φανερό σε μεταβλητές και πίνακες και ομάδες
Τμήματα ? ' τυπώνει ότι είναι φανερό σε συναρτήσεις και τμήματα



αναβάθμισα και αυτό: Συνδεδεμένες Λίστες FIFO και LIFO για αντικείμενα!

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.