Το Στέκι των Πληροφορικών

Επαγγελματικό Λύκειο => Γενικά => Προγραμματισμός Υπολογιστών => Μήνυμα ξεκίνησε από: user_83 στις 19 Μαρ 2017, 09:28:17 ΜΜ

Τίτλος: κεφάλαιο 11
Αποστολή από: user_83 στις 19 Μαρ 2017, 09:28:17 ΜΜ
υπάρχει κάποιο υλικο - πληροφρορία για το κεφάλαιο 11?
Τίτλος: Betty speed
Αποστολή από: triantaf στις 27 Μαρ 2017, 12:31:55 ΜΜ
η betty  παιρνει την ταχύτητα της  απο τον χρήστη
2 ) παραλλαγη η betty εχει ταχύτητα
3) dog
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: nefeli στις 27 Μαρ 2017, 08:49:50 ΜΜ
Συνάδελφε ευχαριστούμε για τα αρχεία.

Σχετικά με την κλάση Dog όμως, μήπως μπορεί κάποιος να εξηγήσει τι εννοεί η τελευταία παράγραφος της σελίδας 201 του βιβλίου;
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: zsdregas στις 29 Μαρ 2017, 12:21:44 ΜΜ
Παράθεση από: nefeli στις 27 Μαρ 2017, 08:49:50 ΜΜ
....
Σχετικά με την κλάση Dog όμως, μήπως μπορεί κάποιος να εξηγήσει τι εννοεί η τελευταία παράγραφος της σελίδας 201 του βιβλίου;
Έχει να κάνει με την αρχικοποίηση της ιδιότητας food, η οποία αρχικοποιείται στη μέθοδο eat. Δες και το παράδειγμα με την κλάση Vehicle1 στη σελίδα 200, και πιο συγκεκριμένα τις δύο τελευταίες παραγράφους.
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: nefeli στις 29 Μαρ 2017, 04:06:12 ΜΜ
Σε ευχαριστώ για την απάντηση, αλλά δεν καταλαβαίνω πώς προκύπτει ότι η food είναι ιδιότητα της Dog. Θα το καταλάβαινα αν υπήρχε στην μέθοδο eat η δήλωση
self.food=food
αλλά δεν τη βλέπω.
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: nikiforos στις 29 Μαρ 2017, 04:59:46 ΜΜ
nefeli και εγώ ακριβώς το ίδιο σκέφτηκα.
Από που κι ως που η food είναι ιδιότητα της Dog? αφού δεν έχει πουθενά εκχώρηση.
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init? Τι σόι αντικειμενοστρέφεια είναι αυτή? Μας δουλεύουν?
Καταστρατηγείται μια από τις θεμελιώδεις αρχές του OOP η ενθυλάκωση!!
Το συγκεκριμένο κεφάλαιο πρέπει να βγει όλο από την ύλη γιατί είναι απίστευτα κακογραμμένο.
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: zsdregas στις 29 Μαρ 2017, 08:41:40 ΜΜ
Παράθεση από: nefeli στις 29 Μαρ 2017, 04:06:12 ΜΜ
Σε ευχαριστώ για την απάντηση, αλλά δεν καταλαβαίνω πώς προκύπτει ότι η food είναι ιδιότητα της Dog. Θα το καταλάβαινα αν υπήρχε στην μέθοδο eat η δήλωση
self.food=food
αλλά δεν τη βλέπω.
Έχεις δίκιο, συγνώμη.
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: Λάμπρος Παπαδόπουλος στις 30 Μαρ 2017, 09:53:44 ΠΜ
Παράθεση από: nikiforos στις 29 Μαρ 2017, 04:59:46 ΜΜ
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init? Τι σόι αντικειμενοστρέφεια είναι αυτή? Μας δουλεύουν?
Καταστρατηγείται μια από τις θεμελιώδεις αρχές του OOP η ενθυλάκωση!!

Και πάλι δεν θα είχες ενθυλάκωση. Για να έχεις ενθυλάκωση πρέπει να γράψεις self.__attribute
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: evry στις 30 Μαρ 2017, 10:36:21 ΜΜ
Υπάρχει διόρθωση στα παροράματα για το συγκεκριμένο σημείο. Έχει προστεθεί η εντολή self.food = food
και τώρα έχει νόημα.
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: nefeli στις 31 Μαρ 2017, 05:50:24 ΜΜ
Ακόμη και έτσι πάντως, η τελευταία πρόταση της σελ. 201 δεν είναι σωστή. Δηλαδή δεν μπορώ να παρεμβάλλω την
print Max.breed
πριν από την αρχικοποίηση της ιδιότητας Max.food; Συμφωνώ βέβαια με αυτό που έγραψε περί ενθυλάκωσης ο συνάδελφος, αλλά η python το επιτρέπει. 
Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: zsdregas στις 31 Μαρ 2017, 06:50:27 ΜΜ
Παράθεση από: nefeli στις 31 Μαρ 2017, 05:50:24 ΜΜ
Ακόμη και έτσι πάντως, η τελευταία πρόταση της σελ. 201 δεν είναι σωστή. Δηλαδή δεν μπορώ να παρεμβάλλω την print Max.breed πριν από την αρχικοποίηση της ιδιότητας Max.food; ... 
Και βέβαια μπορείς. Αυτό που δεν μπορείς να είναι να γράψεις print Max.food πριν εκτελεστεί η Max.eat("bone").
Παράθεση από: nikiforos στις 29 Μαρ 2017, 04:59:46 ΜΜ
Επίσης είναι δυνατόν να αρχικοποιείται ιδιότητα έξω από την init?
Η __init__ είναι κι αυτή μέθοδος και είναι δυνατό να μην υπάρχει. Στο παράδειγμα στη σελίδα 204, η κλάση δεν έχει __init__.
Κώδικας (python) [Επιλογή]
class C:
    classattr = "attr on class"

Δημιουργεί μάλιστα και μια ιδιότητα κλάσης, την classattr, και αφού δημιουργήσει αντικείμενο κλάσης C, δημουργεί και μια ιδιότητα αντικειμένου την instattr. Που σημαίνει ότι αν δημιουργήσουμε ένα νέο αντικείμενο κλάσης C, αυτό δε θα έχει την ιδιότητα instattr αλλά θα έχει την classattr.
Αν θέλουμε να το παρατραβήξουμε και λίγο, κι αυτό σωστό είναι, χωρίς να σημαίνει ότι είναι σωστή πρακτική ή ότι πρέπει να το διδάξουμε:
Κώδικας (python) [Επιλογή]
class C:
    classattr = "attr on class"
cobj = C()
cobj.instattr = "attr on instance"
def speak():
    print "Hello"

cobj.mila = speak
cobj.mila()

Τίτλος: Απ: κεφάλαιο 11
Αποστολή από: nefeli στις 31 Μαρ 2017, 07:26:10 ΜΜ
Το θέμα είναι ότι αν συμφωνούμε ότι η συγκεκριμένη πρόταση που γράφει το σχολικό βιβλίο δεν είναι σωστή, πρέπει να διαγραφεί ή τουλάχιστον να αλλάξει ώστε αυτό που γράφει να ισχύει.