THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: Vlassis on November 07, 2015, 16:11:49 pm



Title: [C++] Άσκηση 5 - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: Vlassis on November 07, 2015, 16:11:49 pm
Κληρονομικότητα Ι

Να τροποποιήσετε την άσκηση «Πύλες» (https://www.thmmy.gr/smf/index.php?topic=65104.msg1103015#msg1103015) ώστε να υποστηρίζει τα βασικά χαρακτηριστικά κληρονομικότητας. Η βασική κλάση θα έχει τα κοινά στοιχεία των διαφορετικών κλάσεων που υλοποιήσατε στις Πύλες.



Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: Apostolof on November 07, 2015, 16:39:44 pm
Κληρονομικότητα Ι

Να τροποποιήσετε την άσκηση «Πύλες» (https://www.thmmy.gr/smf/index.php?topic=65104.msg1103015#msg1103015) ώστε να υποστηρίζει τα βασικά χαρακτηριστικά κληρονομικότητας. Η βασική κλάση θα έχει τα κοινά στοιχεία των διαφορετικών κλάσεων που υλοποιήσατε στις Πύλες.



:D Lol όσο πάει και πιο minimal. Η επόμενη θα λέει γράψτε σε c++... :P


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: Schro on November 07, 2015, 17:33:40 pm
Κληρονομικότητα Ι

Να τροποποιήσετε την άσκηση «Πύλες» (https://www.thmmy.gr/smf/index.php?topic=65104.msg1103015#msg1103015) ώστε να υποστηρίζει τα βασικά χαρακτηριστικά κληρονομικότητας. Η βασική κλάση θα έχει τα κοινά στοιχεία των διαφορετικών κλάσεων που υλοποιήσατε στις Πύλες.



:D Lol όσο πάει και πιο minimal. Η επόμενη θα λέει γράψτε σε c++... :P

 ;D


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: pentium4 on November 07, 2015, 18:47:28 pm
Κληρονομικότητα Ι

Να τροποποιήσετε την άσκηση «Πύλες» (https://www.thmmy.gr/smf/index.php?topic=65104.msg1103015#msg1103015) ώστε να υποστηρίζει τα βασικά χαρακτηριστικά κληρονομικότητας. Η βασική κλάση θα έχει τα κοινά στοιχεία των διαφορετικών κλάσεων που υλοποιήσατε στις Πύλες.



:D Lol όσο πάει και πιο minimal. Η επόμενη θα λέει γράψτε σε c++... :P

 ;D

 ;D μιας και βγάλαμε και αυτήν που είναι για αύριο......


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: geopas on November 07, 2015, 19:54:16 pm
Κληρονομικότητα Ι

Να τροποποιήσετε την άσκηση «Πύλες» (https://www.thmmy.gr/smf/index.php?topic=65104.msg1103015#msg1103015) ώστε να υποστηρίζει τα βασικά χαρακτηριστικά κληρονομικότητας. Η βασική κλάση θα έχει τα κοινά στοιχεία των διαφορετικών κλάσεων που υλοποιήσατε στις Πύλες.



:D Lol όσο πάει και πιο minimal. Η επόμενη θα λέει γράψτε σε c++... :P

 ;D

 ;D μιας και βγάλαμε και αυτήν που είναι για αύριο......
βασικα μεχρι σημερα τα μεσανυχτα ειναι


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: K on November 07, 2015, 20:00:32 pm

βασικα μεχρι σημερα τα μεσανυχτα ειναι

Koυράγιο φίλε. Δεν είσαι μόνος σ αυτήν την προσπάθεια.


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: Schro on November 09, 2015, 00:16:16 am
Κληρονομικότητα Ι

Να τροποποιήσετε την άσκηση «Πύλες» (https://www.thmmy.gr/smf/index.php?topic=65104.msg1103015#msg1103015) ώστε να υποστηρίζει τα βασικά χαρακτηριστικά κληρονομικότητας. Η βασική κλάση θα έχει τα κοινά στοιχεία των διαφορετικών κλάσεων που υλοποιήσατε στις Πύλες.



η main θα εκτυπώνει πάλι τους πίνακες αληθείας ή θα πρέπει να δίνει ο χρήστης εισόδους;
ή και τα δύο;


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: geopas on November 09, 2015, 00:49:31 am
Κληρονομικότητα Ι

Να τροποποιήσετε την άσκηση «Πύλες» (https://www.thmmy.gr/smf/index.php?topic=65104.msg1103015#msg1103015) ώστε να υποστηρίζει τα βασικά χαρακτηριστικά κληρονομικότητας. Η βασική κλάση θα έχει τα κοινά στοιχεία των διαφορετικών κλάσεων που υλοποιήσατε στις Πύλες.



η main θα εκτυπώνει πάλι τους πίνακες αληθείας ή θα πρέπει να δίνει ο χρήστης εισόδους;
θα τον ρωτησω μες τη βδομαδα αλλα φανταζομαι την ιδια λογικη θα εχει,απλα τωρα θελει να εξετασει και κληρονομικοτητα που δεν μας εχει κανει ακομα


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: Schro on November 09, 2015, 01:07:15 am
thanks geopas!


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: pansakk on November 09, 2015, 20:45:13 pm
στον ημιαθροιστή αλλάζουμε κάτι(πχ να κληρονομεί τις άλλες 3 κλάσεις) ή δεν ασχολιόμαστε καθόλου;


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: pentium4 on November 11, 2015, 01:15:34 am
Κληρονομικότητα Ι

Να τροποποιήσετε την άσκηση «Πύλες» (https://www.thmmy.gr/smf/index.php?topic=65104.msg1103015#msg1103015) ώστε να υποστηρίζει τα βασικά χαρακτηριστικά κληρονομικότητας. Η βασική κλάση θα έχει τα κοινά στοιχεία των διαφορετικών κλάσεων που υλοποιήσατε στις Πύλες.



η main θα εκτυπώνει πάλι τους πίνακες αληθείας ή θα πρέπει να δίνει ο χρήστης εισόδους;
θα τον ρωτησω μες τη βδομαδα αλλα φανταζομαι την ιδια λογικη θα εχει,απλα τωρα θελει να εξετασει και κληρονομικοτητα που δεν μας εχει κανει ακομα

ok.


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: electric67 on November 14, 2015, 14:07:24 pm
γενικά είναι καλό να βάζω στο πρόγραμμα όλες τις συναρτήσεις get και set που θα ήταν χρήσιμες ή μόνο αυτές που χρησιμοποιώ στο πρόγραμμα;


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: Apostolof on November 14, 2015, 14:22:17 pm
γενικά είναι καλό να βάζω στο πρόγραμμα όλες τις συναρτήσεις get και set;

Κατά τη γνώμη μου όχι. Όταν έχεις ένα μέλος κλάσης private και συναρτήσεις set και get ψιλό-χάνεις το νόημα του private σκέλους, καλύτερα δήλωσε το μέλος public και γλύτωσε ένα τόνο κώδικα από setters και getters. Ούτως ή άλλως τα private μέλη αποσκοπούν στη περιορισμένη πρόσβαση, γιατί να έχεις συναρτήσεις set;

Πάντως από ότι έχω διαβάσει οι απόψεις διίστανται, είναι υποκειμενικό το θέμα δεν υπάρχει ξεκάθαρα καλύτερη πρακτική.


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: LordOdy on November 14, 2015, 14:35:31 pm
γενικά είναι καλό να βάζω στο πρόγραμμα όλες τις συναρτήσεις get και set;

Κατά τη γνώμη μου όχι. Όταν έχεις ένα μέλος κλάσης private και συναρτήσεις set και get ψιλό-χάνεις το νόημα του private σκέλους, καλύτερα δήλωσε το μέλος public και γλύτωσε ένα τόνο κώδικα από setters και getters. Ούτως ή άλλως τα private μέλη αποσκοπούν στη περιορισμένη πρόσβαση, γιατί να έχεις συναρτήσεις set;

Πάντως από ότι έχω διαβάσει οι απόψεις διίστανται, είναι υποκειμενικό το θέμα δεν υπάρχει ξεκάθαρα καλύτερη πρακτική.

Public πεδία είναι γενικά ΑΠΑΓΟΡΕΥΤΙΚΑ στην C++ και γενικά στον αντικειμενοστραφή προγραμματισμό , δεν είναι θέμα γνώμης , είναι θέμα design (βλ αρχή του encapsulation). Οπότε, αν θες να είσαι τυπικά σωστός βάζε getters setters όπου χρειάζεται. Επίσης που είδες ότι οι απόψεις διίστανται ??


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: K on November 14, 2015, 14:46:59 pm
Εμείς τα γνήσια προγραμματιστικά τέκνα του κ.Κορτέση μάθαμε να τηρούμε την αρχή της ενσωμάτωσης. Τώρα αυτή η νέα γενιά έρχεται να τα ισοπεδώσει όλα. Κρίση προγραμματιστικών αξιών...


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: Apostolof on November 14, 2015, 15:15:57 pm
γενικά είναι καλό να βάζω στο πρόγραμμα όλες τις συναρτήσεις get και set;

Κατά τη γνώμη μου όχι. Όταν έχεις ένα μέλος κλάσης private και συναρτήσεις set και get ψιλό-χάνεις το νόημα του private σκέλους, καλύτερα δήλωσε το μέλος public και γλύτωσε ένα τόνο κώδικα από setters και getters. Ούτως ή άλλως τα private μέλη αποσκοπούν στη περιορισμένη πρόσβαση, γιατί να έχεις συναρτήσεις set;

Πάντως από ότι έχω διαβάσει οι απόψεις διίστανται, είναι υποκειμενικό το θέμα δεν υπάρχει ξεκάθαρα καλύτερη πρακτική.

Public πεδία είναι γενικά ΑΠΑΓΟΡΕΥΤΙΚΑ στην C++ και γενικά στον αντικειμενοστραφή προγραμματισμό , δεν είναι θέμα γνώμης , είναι θέμα design (βλ αρχή του encapsulation). Οπότε, αν θες να είσαι τυπικά σωστός βάζε getters setters όπου χρειάζεται. Επίσης που είδες ότι οι απόψεις διίστανται ??

Δεν λέω ότι τα public πεδία είναι καλός προγραμματισμός. Λέω ότι η μέθοδος private member-setter + getter είναι εξίσου κακός για εμένα. Πάνω σε αυτό διίστανται οι απόψεις. Πως προστατεύεις τα private members σου αν έχεις setters;
Για το που το είδα δε μπορώ να απαντήσω τώρα είμαι από κινητό και βράζουμε τσίπουρα  ;D ;D


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: LordOdy on November 14, 2015, 15:24:27 pm
γενικά είναι καλό να βάζω στο πρόγραμμα όλες τις συναρτήσεις get και set;

Κατά τη γνώμη μου όχι. Όταν έχεις ένα μέλος κλάσης private και συναρτήσεις set και get ψιλό-χάνεις το νόημα του private σκέλους, καλύτερα δήλωσε το μέλος public και γλύτωσε ένα τόνο κώδικα από setters και getters. Ούτως ή άλλως τα private μέλη αποσκοπούν στη περιορισμένη πρόσβαση, γιατί να έχεις συναρτήσεις set;

Πάντως από ότι έχω διαβάσει οι απόψεις διίστανται, είναι υποκειμενικό το θέμα δεν υπάρχει ξεκάθαρα καλύτερη πρακτική.

Public πεδία είναι γενικά ΑΠΑΓΟΡΕΥΤΙΚΑ στην C++ και γενικά στον αντικειμενοστραφή προγραμματισμό , δεν είναι θέμα γνώμης , είναι θέμα design (βλ αρχή του encapsulation). Οπότε, αν θες να είσαι τυπικά σωστός βάζε getters setters όπου χρειάζεται. Επίσης που είδες ότι οι απόψεις διίστανται ??

Δεν λέω ότι τα public πεδία είναι καλός προγραμματισμός. Λέω ότι η μέθοδος private member-setter + getter είναι εξίσου κακός για εμένα. Πάνω σε αυτό διίστανται οι απόψεις. Πως προστατεύεις τα private members σου αν έχεις setters;
Για το που το είδα δε μπορώ να απαντήσω τώρα είμαι από κινητό και βάζουμε τσίπουρα  ;D ;D

Σε αυτή την trivial περίπτωση φαίνεται ανούσιο , το καταλαβαίνω. Πες όμως πως θες να βάλεις έναν έλεγχο στην set (πχ μην δέχεσαι τιμές πάνω απο 100 κλπ) . Εκεί αρχίζει και φαίνεται η αναγκαιότητα του encapsulation. Οπότε , από το να λες καθε φορά "Βρε λες να το βάλω Public , το ίδιο είναι",απλά ακολουθείς το design choice και έχεις το κεφάλι σου ήσυχο. Η λογική είναι ότι μια κλάση (και κατ'επεκταση ένα αντικείμενο αυτής) είναι η μόνη υπεύθυνη για τον χειρισμό της μεταβλητής , για να γλυτώνεις περρίσιο κώδικα κλπ κλπ. Καλα τσίπουρα  :D


Title: Re: [C++] Άσκηση E - 2015/2016 Προθεσμία 14/11/2015 11:00 μμ
Post by: Apostolof on November 15, 2015, 13:13:56 pm
Σε αυτή την trivial περίπτωση φαίνεται ανούσιο , το καταλαβαίνω. Πες όμως πως θες να βάλεις έναν έλεγχο στην set (πχ μην δέχεσαι τιμές πάνω απο 100 κλπ) . Εκεί αρχίζει και φαίνεται η αναγκαιότητα του encapsulation. Οπότε , από το να λες καθε φορά "Βρε λες να το βάλω Public , το ίδιο είναι",απλά ακολουθείς το design choice και έχεις το κεφάλι σου ήσυχο. Η λογική είναι ότι μια κλάση (και κατ'επεκταση ένα αντικείμενο αυτής) είναι η μόνη υπεύθυνη για τον χειρισμό της μεταβλητής , για να γλυτώνεις περρίσιο κώδικα κλπ κλπ. Καλα τσίπουρα  :D

Ξαναλέω δε τίθεται θέμα αν τα public πεδία είναι καλός προγραμματισμός, γιατί απλά συμφωνώ ότι δεν είναι. Το θέμα είναι αν θα πρέπει κάθε μεταβλητή να έχει μια setter και μια getter συνάρτηση. Ειδικά setter πιστεύω ότι δε πρέπει να έχει και μάλιστα καλό θα είναι να αποφεύγεται όπου είναι δυνατόν.

http://www.artima.com/intv/goldilocks2.html
Bjarne Stroustrup: "Going to the big class hierarchy is again, you write more code than you need to, and you get too much connection between different parts. I particularly dislike classes with a lot of get and set functions. That is often an indication that it shouldn't have been a class in the first place. It's just a data structure. And if it really is a data structure, make it a data structure."

http://typicalprogrammer.com/doing-it-wrong-getters-and-setters/
“Python is not Java” Phillip J. Eby: "Getters and setters are evil. Evil, evil, I say! Python objects are not Java beans. Do not write getters and setters. This is what the ‘property’ built-in is for. And do not take that to mean that you should write getters and setters, and then wrap them in ‘property’. That means that until you prove that you need anything more than a simple attribute access, don’t write getters and setters."

Επίσης ούτε η c++ είναι η java.

Καλά ήταν τα τσίπουρα!! :D