Lanike71 Δημοσ. 2 Νοεμβρίου 2011 Δημοσ. 2 Νοεμβρίου 2011 Καλησπέρα παιδιά, Θα ήθελα τη βοήθειά σας σαν αρχάριος σε Java. Θέλω να φτιάξω ένα constructor ο οποίος με μπερδεύει. Θα πρέπει να αποθηκεύονται πχ δεδομένα ενός αντικειμένου,τα οποία είναι τύπου int και string. Για παράδειγμα,κλάση "παραγγελία" και πεδία "Είδος","ποσότητα","Ποσό πληρωμής" Θα χρειαστώ ένα constructor τύπου array ή κάτι άλλο;
anakiou Δημοσ. 2 Νοεμβρίου 2011 Δημοσ. 2 Νοεμβρίου 2011 Δες παρακάτω: > package com.test; public class Paraggelia { private String eidos; private int price; private int posotita; //κατασκευαστής public Paraggelia(String eidos, int price, int posotita) { this.eidos = eidos; this.price = price; this.posotita = posotita; } public String getEidos() { return eidos; } public void setEidos(String eidos) { this.eidos = eidos; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getPosotita() { return posotita; } public void setPosotita(int posotita) { this.posotita = posotita; } }
Lanike71 Δημοσ. 3 Νοεμβρίου 2011 Μέλος Δημοσ. 3 Νοεμβρίου 2011 Κατ΄αρχήν σε ευχαριστώ για την απάντηση. Ωραία,φτιάξαμε τους δημιουργούς με τα πεδία. Το πρόβλημα που αντιμετωπίζω είναι ότι θέλω τα αντικείμενα να αποθηκεύονται και να είναι προσπελάσιμα με μία for για παράδειγμα,γιστί θα θέλω να βρω για παράδειγμα το μεγαλύτερο ποσό. Αυτό είναι το πραγματικό πρόβλημά μου,εκεί κολλάω. Πχ. (Γιώργος,σκληρός δίσκος,1,100e)---(όνομα,προιόν,ποσότητα,ποσό) Εκεί πώς θα σκεφτώ;
xlomo Δημοσ. 3 Νοεμβρίου 2011 Δημοσ. 3 Νοεμβρίου 2011 Δημιουργώντας έναν πίνακα κλάσεων Paraggelia() Paraggelia[] ListaParaggelion = new Paraggelia[100]; Αν και για κάποιο λόγο πιστεύω πως εκεί που το πας το τροπάρι θα ήταν προτιμότερο να χρησιμοποιήσεις βάση δεδομένων για την αποθήκευση.
anakiou Δημοσ. 3 Νοεμβρίου 2011 Δημοσ. 3 Νοεμβρίου 2011 Ένας απλοϊκός τρόπος θα ήταν να το κάνεις όπως σου λέει ο xlomo, στην πραγματικότητα όμως θα χρησιμοποιούσες collections. http://www.tutorialspoint.com/java/java_collections.htm http://download.oracle.com/javase/tutorial/collections/intro/index.html Δεν είναι εύκολο θέμα αλλά αν ασχοληθείς με οτιδήποτε άλλο εκτός από hello world θα τα χρειαστείς
fonsde Δημοσ. 5 Νοεμβρίου 2011 Δημοσ. 5 Νοεμβρίου 2011 το πιο απλο και κλασσικο ειναι το arraylist cheers
Lanike71 Δημοσ. 8 Νοεμβρίου 2011 Μέλος Δημοσ. 8 Νοεμβρίου 2011 Μία ερώτηση ακόμη παιδιά: Όλα καλά,φτιάξαμε μία κλάση και δημιουργό και ένα πίνακα με αντικείμενα. Πώς μπορούμε να χρησιμοποιήσουμε τώρα αυτό τον πίνακα; Πχ. αν έχω ένα πεδίο price και θέλω να βρω το μέγιστο,αυτό φτάνει; Ρωτάω γιατί τρέχω στην κλάση Paraggelies το παρακάτω: public void calculateHighestPrice() { for(int a=0;a<3;a++){ pmax=pinakas[a].price; if(pinakas[a].price>pmax){ pmax=pinakas[a].price; } } } public float getHighestPrice() { calculateHighestPrice(); return pmax; ..και στη main System.out.print( getHighestPrice()); Αλλά πετάει 0... Τι κάνω λάθος;
nexuss Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 Αρχικά ο τρόπος που προσπαθείς να υπολογίσεις την max τιμή δεν είναι σωστός, γιατί σε κάθε επανάληψη το pmax θα παίρνει την τιμή που διαβάζεις στον πίνακα (άρα το if θα σου βγαίνει false). Θα πρέπει να το κάνεις ως εξής: >public int getMax() { int max = 0; for (int i:table) { if (i > max) { max = i; } } return max; } Τώρα το γιατί σου βγαίνει 0, θα πρέπει να δούμε αν υπάρχει κάποιο πρόβλημα με τα αντικείμενα που έχεις στον πίνακα. Μπορείς να βάλεις println για να δεις τις τιμές του pmax (μήπως και δεν έχεις αρχικοποιήσει σωστά τα αντικείμενα του πίνακα για παράδειγμα).
Lanike71 Δημοσ. 8 Νοεμβρίου 2011 Μέλος Δημοσ. 8 Νοεμβρίου 2011 Ουπς,αυτό δεν το πρόσεξα αλλά δεν είναι αυτό μάλλον... Τώρα μου πετάει ότι θέλει αντικείμενο για τη μέθοδο GetMax. Εκεί τι θα μπει;
nexuss Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 (επεξεργασμένο) Βασικά η μέθοδος που έγραψα ήταν γενική για να καταλάβεις τι έπρεπε να κάνεις. Θα πρέπει να την προσαρμόσεις λίγο σύμφωνα με το δικό σου κώδικα. Αν δεν έχεις καταλάβει τη λογική της getMax πες μου να σου εξηγήσω. Επεξ/σία 9 Νοεμβρίου 2011 από nexuss
Lanike71 Δημοσ. 9 Νοεμβρίου 2011 Μέλος Δημοσ. 9 Νοεμβρίου 2011 Σε ευχαριστώ για τη βοήθεια... Ναι θα ήθελα να μου εξηγήσεις το εξής: Σύμφωνα με τη θεωρία,θα πρέπει να έχουμε το αντικείμενο στο οποίο αναφέρεται η μέθοδος. Πχ αν έχουμε κλάση Σκύλος με αντικείμενο Jack και μία μέθοδο SayName() η οποία επιστρέφει το όνομα του Σκύλου, Ο τρόπος για να το κάνουμε είναι Jack.SayName(),σωστά; Στην περίπτωση μου αυτό συμβαίνει,ζητά μπροστά από τη μέθοδο το αντικείμενο,αλλά τι να βάλω; Τον πίνακα;την κλάση;Τι;
nexuss Δημοσ. 9 Νοεμβρίου 2011 Δημοσ. 9 Νοεμβρίου 2011 Χμμμ..... Κάτι μου λέει ότι δεν έχεις κατανοήσει πλήρως το πώς δουλεύει ο αντικειμενοστραφής προγραμματισμός. Για να καλέσεις τις μεθόδους μιας κλάσης, θα πρέπει να έχεις ένα αντικείμενο της κλάσης αυτής. Για παράδειγμα, έχεις την κλάση Paraggelies και σε αυτήν έχεις τη μέθοδο getHighestPrice(). Για να την καλέσεις αυτή τη μέθοδο θα πρέπει να δημιουργήσεις ένα "στιγμιότυπο" par της κλάσης αυτής Paraggelies par = new Paraggelies() με το par θα μπορέσεις να καλέσεις τη μέθοδο που θέλεις, par.getHighestPrice(). Αν η μέθοδος είναι static, τότε μπορείς να την καλείς χωρίς να δημιουργείς αντικείμενο της κλάσης αυτής. Δηλαδή αν στην κλάση Paraggelies είχες μια στατική μέθοδο, πχ public static void staticMethod(), θα μπορούσες να την καλέσεις ως εξής: Paraggelies.staticMethod().
Lanike71 Δημοσ. 10 Νοεμβρίου 2011 Μέλος Δημοσ. 10 Νοεμβρίου 2011 Χμμμ..... Κάτι μου λέει ότι δεν έχεις κατανοήσει πλήρως το πώς δουλεύει ο αντικειμενοστραφής προγραμματισμός. Για να καλέσεις τις μεθόδους μιας κλάσης, θα πρέπει να έχεις ένα αντικείμενο της κλάσης αυτής. Για παράδειγμα, έχεις την κλάση Paraggelies και σε αυτήν έχεις τη μέθοδο getHighestPrice(). Για να την καλέσεις αυτή τη μέθοδο θα πρέπει να δημιουργήσεις ένα "στιγμιότυπο" par της κλάσης αυτής Paraggelies par = new Paraggelies() με το par θα μπορέσεις να καλέσεις τη μέθοδο που θέλεις, par.getHighestPrice(). Και αν έχουμε ένα array με αντικείμενα τι κάνουμε;Πώς την καλούμε τη μέθοδο; Να την κάνουμε static υποθέτω; Αυτό είναι που με παιδεύει...
nexuss Δημοσ. 10 Νοεμβρίου 2011 Δημοσ. 10 Νοεμβρίου 2011 Το ίδιο ισχύει και όταν έχεις πίνακα με αντικείμενα. Έστω ότι θέλεις να φτιάξεις ένα πίνακα 2 στοιχείων, ο οποίος θα περιέχει αντικείμενα της κλάσης Paraggelies. Άρα θα έχεις: Paraggelies[] parArray = new Paraggelies[2]; Για να προσθέσεις στοιχεία στον πίνακα, θα πρέπει να δημιουργήσεις νέα "στιγμιότυπα" της κλάσης Paraggelies, πχ parArray[0] = new Paraggelies(); Άρα η θέση 0 του πίνακα περιέχει μια αναφορά σε ένα αντικείμενο Paraggelies. Οπότε αν θέλεις να καλέσεις μια μέθοδο αυτού του αντικειμένου, το κάνεις με τον κλασικό τρόπο: parArray[0].getHighestPrice(). Αν η μέθοδός σου είναι στατική, δεν χρειάζεται να δημιουργήσεις καμία αναφορά. Αν σε δυσκολεύουν τα παραπάνω, προτείνω να διαβάσεις παραπάνω για το πώς λειτουργούν τα αντικείμενα και οι κλάσεις. Κοίταξε και το tutorial της java αν δεν το έχεις ήδη κάνει http://download.oracle.com/javase/tutorial/reallybigindex.html.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα