Πέμπτη, 3 Δεκεμβρίου 2015

Αναθεώρηση 100 - διόρθωση σφάλματος!

Στο παρακάτω παράδειγμα χρησιμοποιώ μια εντολή  Παιδί α μέσα στον ορισμό της κλάσης Πατέρας. Στις τελευταίες αναθεωρήσεις (μετά την 93) είχε χαλάσει αυτή η λειτουργία, και τώρα στην αναθεώρηση 100 διορθώθηκε. Η δουλεία της είναι να φτιάξει μια κλάση από μια υπάρχουσα κλάση κατά τον ορισμό της. Δεν μπορούμε όμως να περάσουμε στοιχεία στον κατασκευαστή της. Αν θέλουμε να περάσουμε στοιχεία πέρα από τα αρχικά, τότε πρέπει να βάλουμε εδώ έναν κατασκευαστή για την Πατέρας με ένα τμήμα με το όνομα Πατέρας και να βάλουμε
      Ομάδα α
      Τμήμα Πατέρας {
      <=.Παιδί(10,20,30)
      }

Οπότε φτιάχνεται αρχικά μια άδεια ομάδα και μετά βάζουμε την ομάδα που θέλουμε!
Δείτε ότι στον κατασκευαστή βάζουμε τελείες για να αναφερθούμε στο ΑΥΤΟ (που φτιάχνει η κλάση, και είναι κάτι που θα έχει παρουσία). Δείτε επίσης ότι έχει χρησιμοποιηθεί "<=" που χρειάζονται οι μεταβλητές της κλάσης για να δώσουμε μια τιμή (ή μια ομάδα), και είναι το ίδιο με αυτό που χρησιμοποιούμε για να δώσουμε τιμή σε γενική μεταβλητή.

Κλάση Πατέρας {
      Συνάρτηση Καλή {
            =1000
      }
      Κλάση Παιδί {
             χ, ψ=10, ζ
             Συνάρτηση Καλή {
             =10000
             }
             Τμήμα Παιδί {
             Αν Ταύτιση("ΑΑΑ") τότε {
                   Διάβασε,,
                   }
             }
      }
      Παιδί α
      Τμήμα Παιδί {
      β=.Παιδί()
      ? β.ψ
      }
}
' Τώρα θα φτιάξουμε ένα αντικείμενο (ομάδα) από την κλάση Πατέρας
αλφα=Πατέρας()
' το άλφα έχει μια ομάδα Α που έχει ένα αντίγραφο της κλάσης Παιδί.
' Έχει ένα τμήμα Παιδί και μια συνάρτηση Παιδί() που παράγει αντίγραφα της κλάσης Παιδί
' Έχει επίσης και μια Καλή() συνάρτηση!
' Στο τμήμα Παιδί φτιάχνουμε πρόσκαιρα μια ομάδα από την κλάση Παιδί
' Καλούμε το τμήμα (μπορούμε να το καλέσουμε και με την Κάλεσε
αλφα.Παιδί  ' τυπώνει 10
Κάλεσε αλφα.Παιδί ' ξαναφτιάχνει τη τοπική ομάδα β
' Τώρα μπορούμε να καλέσουμε την συνάρτηση Καλή()
' Σε μια τύπωσε
Τύπωσε αλφα.Καλή() ' 100
' Το α που βρίσκεται στο άλφα έχει και αυτό μια συνάρτηση Καλή() διαφορετική.
? αλφα.α.καλή() ' 10000
' Τώρα θα φτιάξω ένα παιδί..δίχως πατέρα!
' Μάλιστα δίνω και νέες τιμές που θα τις πάρει ο κατασκευαστής (τμήμα Παιδί)
βήτα=άλφα.Παιδί(100,200,300)
' Πράγματι το βήτα.χ είναι 100
? βήτα.χ ' 100
' Θα το αυξήσω τώρα - θα γίνει 101
βήτα.χ++
' Τώρα θα αντιγράψω ότι έχει στο α που είναι στο άλφα!
αλφα.α=βήτα '' αντιγράφουμε το βήτα στο αλφα.α
' Πράγματι το άλφα.α.χ είναι 101
? αλφα.α.χ


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

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