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

Γενικό Λύκειο => Γ΄ Λυκείου => Θεωρία => Μήνυμα ξεκίνησε από: maryangel στις 10 Απρ 2022, 06:56:05 ΜΜ

Τίτλος: ιδιότητες αντικειμένου
Αποστολή από: maryangel στις 10 Απρ 2022, 06:56:05 ΜΜ
Μία ερώτηση παρακαλώ, για τους πιο έμπειρους προγραμματιστές σε αντικειμενοστρεφή (από μένα τουλάχιστον :) ) 

Μια ιδιότητα ενός αντικειμένου μπορεί να αλλάξει τιμή αν τρέξουμε μια μέθοδο του ίδιου του αντικειμένου (π.χ. αντικείμενο: κουμπαράς- ιδιότητα: υπόλοιπο- μέθοδος: βγάζω_χρήματα() )

Είναι δυνατόν να αλλάξει τιμή μια ιδιότητα αν τρέξουμε μια μέθοδο διαφορετικού αντικειμένου; 

Ευχαριστώ εκ των προτέρων για τις απαντήσεις. :) 
Τίτλος: Απ: ιδιότητες αντικειμένου
Αποστολή από: pgrontas στις 10 Απρ 2022, 07:35:05 ΜΜ
Ναι, μπορεί να μη θεωρείται καλή πρακτική αλλά δεν απαγορεύεται.
Τίτλος: Απ: ιδιότητες αντικειμένου
Αποστολή από: maryangel στις 11 Απρ 2022, 09:13:42 ΜΜ
Στις σημειώσεις που κυκλοφορούν από το  "2 ο ΠΕ.Κ.Ε.Σ. Βορείου Αιγαίου" του Συρρή Ιωάννη " Αντικειμενοστραφής προγραμματισμός Πληροφορική Γ' ΓΕ.Λ. 2019 - 2020" γράφει στην 11η διαφάνεια: " Δεν μπορεί μία μέθοδος ενός αντικειμένου να μεταβάλει τις ιδιότητες ενός άλλου αντικειμένου". 

https://blogs.sch.gr/webinarspe1920/files/2020/03/Webinar-57-%CE%94%CE%99%CE%91%CE%A6%CE%91%CE%9D%CE%95%CE%99%CE%A3-%CE%A3%CF%85%CF%81%CF%81%CE%AE%CF%82-%CE%99%CF%89%CE%AC%CE%BD%CE%BD%CE%B7%CF%82_%CE%91%CE%BD%CF%84%CE%B9%CE%BA%CE%B5%CE%B9%CE%BC%CE%B5%CE%BD%CE%BF%CF%83%CF%84%CF%81%CE%B1%CF%86%CE%AE%CF%82-%CF%80%CF%81%CE%BF%CE%B3%CF%81%CE%B1%CE%BC%CE%BC%CE%B1%CF%84%CE%B9%CF%83%CE%BC%CF%8C%CF%82-%CE%93-%CE%93%CE%95%CE%9B.pdf 

Τι ισχύει τελικά; 
Τίτλος: Απ: ιδιότητες αντικειμένου
Αποστολή από: pgrontas στις 11 Απρ 2022, 10:49:31 ΜΜ
Ξανα-απαντώ:
Στην πρακτική του OOP πολλές ιδιότητες μπορούν να μαρκαριστούν ως public. Αυτό σημαίνει ότι μπορούν να διαβαστούν αλλά ή/και να αλλάξουν από οποιοδήποτε άλλο τμήμα κώδικα. Άρα μπορεί να γίνει. Πχ. σε μια κλάση μόνο με ιδιότητες, απόγονο (sic) των struct της C, πρέπει να μπορούμε να τις αλλάξουμε από οπουδήποτε.
Δεν σημαίνει όμως ότι πρέπει να γίνει, γιατί παραβιάζει τον σκοπό της ενθυλάκωσης.

Εδώ μπορούμε να κάνουμε μεγάλη κουβέντα για το ποια είναι τα όρια της ενθυλάκωσης: απόλυτα (θεωρία) ή ελαστικά (πράξη). Δεν νομίζω ότι έχει νόημα.

Κατά τη γνώμη μου πρόκειται για κακή ερώτηση. Μια καλύτερη θα ήταν: Παραβιάζει η μεταβολή των ιδιοτήτων ενός αντικειμένου από άλλο αντικείμενο τον σκοπό της ενθυλάκωσης; Εδώ απαντάμε ναι.
Τίτλος: Απ: ιδιότητες αντικειμένου
Αποστολή από: dpa2006 στις 11 Απρ 2022, 11:27:46 ΜΜ
Αυστηρώς όχι,αλλά μπορεί να υπάρξουν γλώσσες που να υποστηρίζουν τη μαζική μεταβολή παραμέτρων...

By using properties and methods, you can modify a single object or a whole collection of objects

https://docs.microsoft.com/en-us/office/vba/word/concepts/objects-properties-methods/understanding-objects-properties-and-methods

Μια άλλη περίπτωση...

https://stackoverflow.com/questions/40711574/python-methods-modify-original-vs-return-a-different-object

An immutable object cannot be modified, but of course it can be replaced. The usual Python convention is that functions & methods that operate on a mutable object perform the operation in-place and return 
Κώδικας [Επιλογή]
None, they don't return the modified original. OTOH, there are some functions that behave like the 
Κώδικας [Επιλογή]
sorted function, which can be given a mutable or immutable collection to sort, but it always returns the result in a new list and doesn't modify the original even if it is mutable. Intenaly, 
Κώδικας [Επιλογή]
sorted creates a new list from the input collection, sorts that new list in-place, and returns it. 
– [color=var(--theme-link-color)]PM 2Ring[/font][/size][/color]
 [color=var(--black-350)]Nov 21, 2016 at 1:49 [/font][/size][/color]
Τίτλος: Απ: ιδιότητες αντικειμένου
Αποστολή από: alkisg στις 11 Απρ 2022, 11:55:55 ΜΜ
Access Levels
ModifierClassPackageSubclassWorld
publicYYYY
protectedYYYN
no modifierYYNN
privateYNNN

Όπου γράφει "Υ" στον παραπάνω πίνακα, επιτρέπεται η πρόσβαση, οπότε μειώνεται η ενθυλάκωση.
Την ενθυλάκωση θέλουμε να την μεγιστοποιούμε αλλά μερικές φορές είναι βολικότερο (π.χ. απόδοση/αναγνωσιμότητα/βαρεμάρα) να την καταστρατηγήσουμε.
Αν αυτό δεν ήταν αποδεκτό, δεν θα υπήρχαν καν τα access levels για ιδιότητες...
Τίτλος: Απ: ιδιότητες αντικειμένου
Αποστολή από: maryangel στις 13 Απρ 2022, 07:51:13 ΜΜ
Ευχαριστώ πολύ για τις απαντήσεις! :)