likoyrgos Δημοσ. 20 Ιουνίου 2021 Δημοσ. 20 Ιουνίου 2021 Καλημέρα! Στον γίο ενός φίλου μου , του βάλανε στο Ιδ ΙΕΚ που φοιτά την παρακάτω άσκηση σε C++: Δημιουργείστε μια κλάση με το όνομα Car. Τα χαρακτηριστικά της κλάσης Car θα είναι private και είναι τα εξής: marka (αλφαριθμητικό) model (αλφαριθμητικό) year (ακέραιος) Στη συνέχεια, μέσα στη main(), δημιουργείστε δύο αντικείμενα της κλάσης Car: το αντικείμενο carObj1, με χαρακτηριστικά mark=”Renault”, model=”Clio”, year=2004 το αντικείμενο carObj2, με χαρακτηριστικά mark=”BMW”, model=”X5”, year=1999 Τέλος, εκτυπώστε τα χαρακτηριστικά των δύο αντικειμένων στην οθόνη Με τα λίγα που γνωρίζω σε C++ έδωσα την παρακάτω λύση : #include <iostream> using namespace std; class Car { private: string marka; string model; int year; }; int main() { Car carObj1; carObj1.marka="Renault"; carObj1.model="Clio"; carObj1.year=2004; Car carObj2; carObj2.marka="BMW"; carObj2.model="X5"; carObj2.year=1999; cout<<carObj1.marka<<"\n"; cout<<carObj1.model<<"\n"; cout<<carObj1.year<<"\n"; cout<<carObj2.marka<<"\n"; cout<<carObj2.model<<"\n"; cout<<carObj2.year<<"\n"; return 0; } Η οποία δουλεύει αν τα χαρακτηριστικά είναι public. Διαβάζοντας στο internet είδα οτι αν τα χαρακτηριστικά είναι private είναι δυνατόν να χρησιμοποιηθούν μόνο μέσα απο την ίδια την κλάση (αν το εκφράζω σωστά). Δοκίμασα να βάλω τη δημιουργία αντεικειμένων και τις εκτυπώσεις μέσα στην κλάση αλλά έβγαζε μήνυμα λάθους. Υπάρχει καμία ιδέα για τη λύση του προβλήματος? Ευχαριστώ ! (sorry για το μακροσκελές κείμενο)
Lanike71 Δημοσ. 20 Ιουνίου 2021 Δημοσ. 20 Ιουνίου 2021 C++ Encapsulation and Getters and Setters (w3schools.com) 2
likoyrgos Δημοσ. 20 Ιουνίου 2021 Μέλος Δημοσ. 20 Ιουνίου 2021 Ευχαριστώ πολύ για την βοήθεια! Βελτίωσα τον κώδικα σύμφωνα με αυτά που έλεγε η σελίδα ώς εξής: #include <iostream> using namespace std; class Car { private: string marka; string model; int year; public: // 1 void setmarka(string ma){ marka=ma; } void setmodel(string mo){ model=mo; } void setyear(int y){ year=y; } // 2 string getmarka(){ return marka; } string getmodel(){ return model; } int getyear(){ return year; } }; int main() { Car carObj1; carObj1.setmarka=("Renault"); carObj1.setmodel=("Clio"); carObj1.setyear=(2004); Car carObj2; carObj2.setmarka=("BMW"); carObj2.setmodel=("X5"); carObj2.setyear=(1999); cout<<carObj1.getmarka(); cout<<carObj1.getmodel(); cout<<carObj1.getyear(); cout<<carObj2.getmarka(); cout<<carObj2.getmodel(); cout<<carObj2.getyear(); return 0; } Βγάζει στο try it your self το εξής: (από κάποια βλακεία μου προφανώς !)
tsofras Δημοσ. 20 Ιουνίου 2021 Δημοσ. 20 Ιουνίου 2021 18 λεπτά πριν, likoyrgos είπε Ευχαριστώ πολύ για την βοήθεια! Βελτίωσα τον κώδικα σύμφωνα με αυτά που έλεγε η σελίδα ώς εξής: #include <iostream> using namespace std; class Car { private: string marka; string model; int year; public: // 1 void setmarka(string ma){ marka=ma; } void setmodel(string mo){ model=mo; } void setyear(int y){ year=y; } // 2 string getmarka(){ return marka; } string getmodel(){ return model; } int getyear(){ return year; } }; int main() { Car carObj1; carObj1.setmarka=("Renault"); carObj1.setmodel=("Clio"); carObj1.setyear=(2004); Car carObj2; carObj2.setmarka=("BMW"); carObj2.setmodel=("X5"); carObj2.setyear=(1999); cout<<carObj1.getmarka(); cout<<carObj1.getmodel(); cout<<carObj1.getyear(); cout<<carObj2.getmarka(); cout<<carObj2.getmodel(); cout<<carObj2.getyear(); return 0; } Βγάζει στο try it your self το εξής: (από κάποια βλακεία μου προφανώς !) Βγάλε το ίσον πριν από τον setter Δλδ αντί για carObj1.setmarka=("Renault"); Κάντο carObj1.setmarka("Renault"); Επίσης πες στον φίλο σου ότι ο υιός πρέπει να τα μάθει μόνος του αλλιώς τσάμπα πληρώνει το ΙΕΚ 3
Lanike71 Δημοσ. 20 Ιουνίου 2021 Δημοσ. 20 Ιουνίου 2021 1 ώρα πριν, tsofras είπε Επίσης πες στον φίλο σου ότι ο υιός πρέπει να τα μάθει μόνος του αλλιώς τσάμπα πληρώνει το ΙΕΚ Όλα τα παιδιά το ίδιο κάνουν... Δυστυχώς.
splanis Δημοσ. 20 Ιουνίου 2021 Δημοσ. 20 Ιουνίου 2021 ετσι απο περιεργεια, επειδη ειναι τελη ιουνη, αυτο ειναι τυπου τελικη εργασια or something? 🤔 1
becoming_I Δημοσ. 21 Ιουνίου 2021 Δημοσ. 21 Ιουνίου 2021 20 ώρες πριν, tsofras είπε Επίσης πες στον φίλο σου ότι ο υιός πρέπει να τα μάθει μόνος του αλλιώς τσάμπα πληρώνει το ΙΕΚ Εκτός αν είναι δημόσιο που εκεί είναι πανηγύρι.
likoyrgos Δημοσ. 21 Ιουνίου 2021 Μέλος Δημοσ. 21 Ιουνίου 2021 Να σας ευχαριστήσω όλους και ιδιαίτερα τον Lanike71 και τον tsofras . Τελικά την κατάφερα με την βοήθειά σας αν και δεν εχω ασχοληθεί με C++ παρά ελάχιστα (τα πολύ βασικά). Ασχολούμαι όμως ερασιτεχνικά με Python οπότε έχω μια εμπειρία γενική για κλάσεις. Όσον αφορά τα άλλα ερωτήματα που θέσατε, απ' οτι μου είπε ο πατέρας, το επίπεδο είναι πολύ χαμηλό με σχεδόν καθόλου διάβασμα. Αυτό φαντάζομαι ισχύει παντού σε Ιδ και Δημ ΙΕΚ. Βασικά πιστεύω είναι να σου αρέσει αυτό που κάνεις. Αμα δεν τότε άστα... Η συγκεκριμένη μάλλον είναι τμήμα εργασίας πριν απο τις τελικές εξετάσεις που μετράει στον τελικό βαθμό. (ευτυχώς δεν με αγγάρεψαν και για τα υπόλοιπα !). 1 1
Lanike71 Δημοσ. 21 Ιουνίου 2021 Δημοσ. 21 Ιουνίου 2021 4 ώρες πριν, likoyrgos είπε ευτυχώς δεν με αγγάρεψαν και για τα υπόλοιπα !). Μόλις έκανες την αρχή, δεν υπάρχει επιστροφή... 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα