Καλησπέρα σε όλους!
Είμαι ένας καινούργιος χρήστης της JAVA (ή τουλάχιστον ευελπιστώ να γίνω) και για την ώρα προσπαθώ να καταλάβω έστω και θεωρητικά κάποιες απο τις λειτουργίες της. Αντιμετωπίζω όμως κάποια μικρά προβληματάκια και νομίζω οτι θα χρειαστώ την βοήθεια σας... Είναι περισσότερο θεωρητικά οπότε ελπίζω να μην σας κουράσω!
1)Πώς περνάμε γενικά τιμές σε μία κλάση της java που εμείς έχουμε δημιουργήσει πέραν απο την χρήση κάποιου constructor στην αρχή?
(π.χ θέλω να περάσω 20 τιμές διαφορετικού τύπου σε κάποια χρονική στιγμή στην κλάση μου χωρίς όμως να θέλω να χρησιμοποιήσω τον constructor είτε γιατί θα γίνει χάος μέσα στη παρένθεση, είτε γιατί τον έχω ήδη χρησιμοποιήσει.)
2)Άμα χρησιμοποιήσω έναν κενό constructor και εάν δεν χρησιμοποιήσω καθόλου constructor, τι διαφορά θα υπάρξει?
Όπως ίσως να έχετε καταλάβει είμαι αρκετά μπερδεμένος οπότε θα ήθελα να σας παρακαλέσω να μου τα εξηγήσετε όσο πιο απλά γίνεται!
Χίλια ευχαριστώ εκ των προτέρων για τον χρόνο και την υπομονή σας.
Εμφάνιση 1-15 από 16
Θέμα: Constructors - JAVA
-
11-01-09, 20:17 Constructors - JAVA #1
-
11-01-09, 20:28 Απάντηση: Constructors - JAVA #2
Γεια χαρα,
1)Πώς περνάμε γενικά τιμές σε μία κλάση της java που εμείς έχουμε δημιουργήσει πέραν απο την χρήση κάποιου constructor στην αρχή?
(π.χ θέλω να περάσω 20 τιμές διαφορετικού τύπου σε κάποια χρονική στιγμή στην κλάση μου χωρίς όμως να θέλω να χρησιμοποιήσω τον constructor είτε γιατί θα γίνει χάος μέσα στη παρένθεση, είτε γιατί τον έχω ήδη χρησιμοποιήσει.)
Κώδικας:void setX(int x) { this.x=x; }
2)Άμα χρησιμοποιήσω έναν κενό constructor και εάν δεν χρησιμοποιήσω καθόλου constructor, τι διαφορά θα υπάρξει?
1.Αρχικοποιει ολες τις μεταβλητες-αριθμους σε 0
2.Ολες τις string σε ""(string μηδενικου μηκους)
3.Ολα τα αντικειμενα σε null.
Ελπιζω να σε βοηθησα και να καταλαβα καλα τι θες να μαθεις.Τελευταία επεξεργασία από το μέλος hammer21 : 11-01-09 στις 20:56.
Hold my breath as I wish for death...Oh please God wake me
-
11-01-09, 20:49 Απάντηση: Constructors - JAVA #3
Θέλει και λίγο προσοχή γενικά με τα objects και τις τιμές που περνάς ειδικά αν αυτά είναι dependent σε άλλα. Βέβαια αυτό είναι άλλη ιστορία (Dependency Injection) αλλά καλό είναι όταν εξοικειωθεί κανείς με Constructors και Objects να διαβάσει άμεσα τι είναι το Dependency Injection.
-
11-01-09, 21:11 Απάντηση: Constructors - JAVA #4
Διάβασε αυτό http://java.sun.com/docs/books/tutor...tcreation.html
Θα σε βοηθήσει να καταλάβεις αρκετά γύρω απο το πρόβλημά σου. Πρέπει να κατανοήσεις την σημασία των objects.
-
11-01-09, 21:23 Απάντηση: Constructors - JAVA #5
- Τι ακριβώς είναι η "υποστασιακή μεταβλητή"?
- Επιπλέον μπορείς να γίνεις λίγο πιο συγκεκριμένος σχετικά με το πως θα μπορούσα να χρησιμοποιήσω τις μεθόδους "set"?
Φαντάσου ότι αυτή τη στιγμή είμαι σε επίπεδο τύπου:
Κώδικας:int takis; takis = 15;
Απορίες έως τώρα:
1)Μπορείς να γράψεις σκέτο "void"? - μήπως εννοούσες "public void"?
2)Άν μιλάμε για πολλές διαφορετικές τιμές, τότε το "int x" απο μόνο του τι κάνει ως παράμετρος?
3)Τι σημαίνει η γραμμή "this.x=x;"?
+ 1 Case study (όπως μας λένε κι εδώ) για να καταλάβω καλύτερα...
Έστω ότι έχω μια κλάση που λέγεται Car και απο αυτήν έχω δημιουργήσει ένα object που λέγεται limousine.
Χρησιμοποίησα λοιπόν έναν constuctor αρχικά και έδωσα τις διαστάσεις του αυτοκινήτου καθώς έκανα instantiation το object μου. (Θεωρώ ότι υπάρχει constructor μεσα στην κλαση που περιέχει τις αντίστοιχες παραμέτρους).
Σε κάποια χρονική στιγμή με βάση το input ενός χρήστη εγώ θέλω να περάσω 30 διαφορετικές τιμές στην Car σχετικά με μία τροποποίηση στο object limousine ως προς το χρώμα, τις διαστάσεις, τις επιδόσεις κλπ κλπ.
Πως (στο περίπου πάντα) θα εφαρμόσω την μέθοδο set που μου είπες και για τις 30 τιμές?
Και πάλι ευχαριστώ για τις απαντήσεις!
-
11-01-09, 22:07 Απάντηση: Constructors - JAVA #6- Τι ακριβώς είναι η "υποστασιακή μεταβλητή"?
Φαντάσου ότι αυτή τη στιγμή είμαι σε επίπεδο τύπου:
- Επιπλέον μπορείς να γίνεις λίγο πιο συγκεκριμένος σχετικά με το πως θα μπορούσα να χρησιμοποιήσω τις μεθόδους "set"?
Περι this:Πολλες φορες,θες μεσα απο μια μεθοδο της κλασης να αναφερθεις στο αντικειμενο που καλεσε την μεθοδο αυτη.Αυτο γινεται με τη λεξη κλειδι this.Συνηθως μπορεις και να μη το γραψεις αλλα βοηθαει στην αναγνωσιμοτητα
1)Μπορείς να γράψεις σκέτο "void"? - μήπως εννοούσες "public void"?
2)Άν μιλάμε για πολλές διαφορετικές τιμές, τότε το "int x" απο μόνο του τι κάνει ως παράμετρος?
3)Τι σημαίνει η γραμμή "this.x=x;"?
Ενα αντικειμενο σου πχ απο την main καλει την μεθοδο setX του για να αλλαξει την τιμη της υποστασιακης μεταβλητης του,χ.Αρχικα υπολογιζουμε το αριστερο μερος του =.Ειναι απλως η τιμη του x που περναει ως ορισμα απο την μεθοδο που καλεσε την setX(εδω την main).Το αριστερο μερος λεει "Παρε την μεταβλητη(υποστασιακη) χ του αντικειμενου που καλεσε την setX και εκχωρησε της την τιμης της παραμετρου χ".
Eδω οπως βλεπεις,το ονομα της παραμετρου ειναι x.αν ηταν πχ z τοτε θα ηταν αχρειαστο το this.Τωρα ομως εχουν κοινο ονομα και ειναι απαραιτητο
Σε κάποια χρονική στιγμή με βάση το input ενός χρήστη εγώ θέλω να περάσω 30 διαφορετικές τιμές στην Car σχετικά με μία τροποποίηση στο object limousine ως προς το χρώμα, τις διαστάσεις, τις επιδόσεις κλπ κλπ.
ή μηπως θες να φτιαξεις 30 διαφορετικα Car?
Πως (στο περίπου πάντα) θα εφαρμόσω την μέθοδο set που μου είπες και για τις 30 τιμές?Hold my breath as I wish for death...Oh please God wake me
-
12-01-09, 19:43 Απάντηση: Constructors - JAVA #7
Καταρχήν συγνώμη για την καθυστέρηση και ένα τεράστιο ευχαριστώ για το χρόνο που έχεις ασχοληθεί έως τώρα μαζί μου!
Πιστεύω ότι έχω αρχίσει να καταλαβαίνω περίπου τι μου λες, χρειάζομαι όμως μερικές ακόμα διευκρινήσεις:
1)Αν κατάλαβα καλά, προκειμένου να αλλάξει μια "instance variable" η οποία είναι δηλωμένη ως "private", χρησιμοποιούμε το "τρικ" της "public" μεθόδου την οποία δημιουργούμε μέσα στην εκάστοτε κλάση και η οποία έχει πρόσβαση στα πάντα εντός της κλάσης. Σωστά μέχρι εδώ?
-Σε περίπτωση όμως που θέλουμε να επιστραφεί μία τιμή μέσω της μεθόδου set, τι ακριβώς χρησιμοποιούμε? Ρωτάω επειδή παρατήρησα το "void" που δεν επιστρέφει τίποτα στον caller....
2)Οι μεθόδοι set γιατι αλλάζουν μία μόνο τιμή? Αν για παράδειγμα θέλω να αλλάξω 30 τιμές, θα πρέπει να περάσω 30 μεθόδους μέσα στην κλάση μου?! ή απλά θα βάλω 30 παραμέτρους? η μήπως θα καλέσω τη μέθοδο χωρίς παραμέτρους και μέσα στο body περνάω τις 30 νέες τιμές στις private variables μου?
--Αυτή είναι παράλληλα και η απορία μου στο τελευταίο σκέλος που σου είπα ότι θέλω να περάσω 30 διαφορετικών τύπων τιμές σε μια κλάση. (Η Car δηλαδή να έχει 30 μεταβλητές)
-
12-01-09, 20:06 Απάντηση: Constructors - JAVA #81)Αν κατάλαβα καλά, προκειμένου να αλλάξει μια "instance variable" η οποία είναι δηλωμένη ως "private", χρησιμοποιούμε το "τρικ" της "public" μεθόδου την οποία δημιουργούμε μέσα στην εκάστοτε κλάση και η οποία έχει πρόσβαση στα πάντα εντός της κλάσης. Σωστά μέχρι εδώ?
-Σε περίπτωση όμως που θέλουμε να επιστραφεί μία τιμή μέσω της μεθόδου set, τι ακριβώς χρησιμοποιούμε? Ρωτάω επειδή παρατήρησα το "void" που δεν επιστρέφει τίποτα στον caller....
Κώδικας:public type_of_X getX() { return this.x; }
2)Οι μεθόδοι set γιατι αλλάζουν μία μόνο τιμή? Αν για παράδειγμα θέλω να αλλάξω 30 τιμές, θα πρέπει να περάσω 30 μεθόδους μέσα στην κλάση μου?! ή απλά θα βάλω 30 παραμέτρους? η μήπως θα καλέσω τη μέθοδο χωρίς παραμέτρους και μέσα στο body περνάω τις 30 νέες τιμές στις private variables μου?
Η τελευταια προταση σου νομιζω πως δεν ειναι εφικτη
η μήπως θα καλέσω τη μέθοδο χωρίς παραμέτρους και μέσα στο body περνάω τις 30 νέες τιμές στις private variables μου?Κώδικας:max_spped=180;(?)
Hold my breath as I wish for death...Oh please God wake me
-
12-01-09, 21:12 Απάντηση: Constructors - JAVA #9
Περίπου αυτό εννοώ...κάτι σαν reset. Άσε το αν είναι χρηστικό...αυτό είναι μια άλλη ιστορία!
Θα μπορώ δηλαδή απ'την "main" να καλέσω την "Κώδικας:limousine.changeVars()
και μέσα να λέει:
Κώδικας:speed = 100; color = blue; name = takis;
Γίνεται αυτό, έτσι? - το μειονέκτημα πιστεύω είναι οτι δε θα μπορώ να "μιλήσω" σε συγκεκριμένες μεταβλητές ξεχωριστά...γιαυτό άλλωστε και μου προτείνεις τις 30 ξεχωριστές set...
Το πέτυχα ή αστόχησα?
Επιπλέον υπάρχει τρόπος με μία μέθοδο να δώσω και να πάρω τιμή ταυτόχρονα?
Δηλαδή μου είπες προηγουμένως ότι μπορώ να χρησιμοποιήσω την get για να πάρω τιμή....Μπορώ π.χ να δώσω μια τιμή με την set η οποία θα υποστεί κάποια αλλαγή μέσα στην μέθοδο και θα μου επιστραφεί απευθείας με κάποιον return τύπο προσπενόντας εντελώς την get? - Ή πρέπει σε κάθε περίπτωση αν θέλω να πάρω πίσω τιμή, να χρησιμοποιήσω την get?
-
12-01-09, 22:22 Απάντηση: Constructors - JAVA #10Μπορώ π.χ να δώσω μια τιμή με την set η οποία θα υποστεί κάποια αλλαγή μέσα στην μέθοδο και θα μου επιστραφεί απευθείας με κάποιον return τύπο προσπενόντας εντελώς την get?
το μειονέκτημα πιστεύω είναι οτι δε θα μπορώ να "μιλήσω" σε συγκεκριμένες μεταβλητές ξεχωριστά...γιαυτό άλλωστε και μου προτείνεις τις 30 ξεχωριστές set...
Επειδη απο οτι καταλαβα κανεις ταχυρυθμα(διορθωσε με αν κανεις λαθος) μια λιστα με tutorial να δεις(στα ελληνικα).αν ξερεις καλα αγγλικα το tutorial της sun ειναι mustHold my breath as I wish for death...Oh please God wake me
-
13-01-09, 03:04 Απάντηση: Constructors - JAVA #11
-
13-01-09, 03:44 Απάντηση: Constructors - JAVA #12
Να έχεις public την μία μεταβλητή της τάξης, οπότε έχεις απευθείας πρόσβαση στην μεταβλητή. Αυτό βέβαια είναι θεωρητικά λάθος και το αναφέρω γιατί απλά γίνεται, και όχι γιατί είναι σωστό να γίνεται.
Πολλές φορές όμως θα δεις ότι χρησιμοποιούνται public static final μεταβλητές. Αυτές δεν έχουν το νόημα να μπορείς να στέλνεις δεδομένα στην τάξη αλλά να μπορείς να διαβάζεις κάποιες σταθερές που ποτέ δεν αλλάζουν. Σε αυτήν την περίπτωση δεν έχει κάποιο ιδιαίτερο νόημα να χρησιμοποιήσεις get μεθόδους.
-
13-01-09, 21:57 Απάντηση: Constructors - JAVA #13
Δηλαδή πέρα απο τις λεγόμενες static variables που αναφέρεις, είτε χρησιμοποιώντας class constructor είτε χρησιμοποιώντας method constructor, μόνο με "παρενθέσεις" περνάω μεταβλητές έτσι?
-
13-01-09, 23:19 Απάντηση: Constructors - JAVA #14
-
14-01-09, 19:20 Απάντηση: Constructors - JAVA #15
Σας ευχαριστώ πάρα πολύ όλους για τις απαντήσεις σας!
Να είστε όλοι καλά!
Παρόμοια Θέματα
-
εχασα την java. ( new with java ) .
Από giannistrsl στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 2Τελευταίο Μήνυμα: 19-11-06, 13:13
Bookmarks