Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Υπαρχει τροπος να παρω τιμες για μεταβλητες που ανοικουν ταυτοχρονια σε δυο διαφορετικες κλασσεις? Χρειαζομαι τις μεταβλητες ticket_id και event_id για την κλαση check ωστε να ελενχω τις τιμες τους και να δημιουργω αντικειμενο της check στην Application με τα ορισματα καθε φορα να αλλαζουν τιμες οταν αλλαζουν οι τιμες στις αλλες κλασεις.


Επιτρεπεται/Γινεται αυτο?



//Class ticket

public class ticket{
public int ticket_id;
.
.
.
ticket_id = ...;
}

//Class event

public class event{
public int event_id;
.
.
.
event_id = ...;
}

//Class check

public class check{

public check(int ticket_id,int event_id){
super();
this.ticket_id = ticket_id;
this.event_id = event_id;
}
.
.
.
getters and setters
.
.
.
}

//Class Application

public class Application{
// the parameters must change everytime they change on the previous classes.
check app = new check(ticket_id,event_id);
.
.
.
}

Δημοσ.

Τα int ειναι primitive types.

Αν δυο μεταβλητές int εχουν ιδια τιμη δεν σημαίνει αν αλλάξεις τη μια θα αλλαξει και η αλλη.

 

Oχι οχι δεν θελω αυτο. Εχουν διαφορετικες τιμες υποτιθεται και γω ελεγχω αν ειναι ισες

Δημοσ.

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

Δημοσ.

 

Υπαρχει τροπος να παρω τιμες για μεταβλητες που ανοικουν ταυτοχρονια σε δυο διαφορετικες κλασσεις? Χρειαζομαι τις μεταβλητες ticket_id και event_id για την κλαση check ωστε να ελενχω τις τιμες τους και να δημιουργω αντικειμενο της check στην Application με τα ορισματα καθε φορα να αλλαζουν τιμες οταν αλλαζουν οι τιμες στις αλλες κλασεις.

Επιτρεπεται/Γινεται αυτο?

 

 

Όλα γίνονται αλλά θα πρέπει να καταλάβουμε (ίσως και εσύ να καταλάβεις) τι θέλεις να κάνεις για να βρούμε το πώς.

 

Μια παρατήρηση: οι μεταβλητές «ανήκουν» (δηλώνονται, γράφονται) σε κλάσεις αλλά συνήθως (δηλαδή εκτός και αν είναι static -- αυτές που έχεις στις ticket και event δεν φαίνονται για static) λαμβάνουν τιμές στα αντικείμενα που έχουν τον τύπο των αντίστοιχων κλάσεων.

 

[Αν η προηγούμενη παράγραφος δεν σου λέει και πολλά, πρέπει να ξαναδεις πιο προσεκτικά τις έννοιες κλάση και αντικείμενο...]

Δημοσ.

Θελω να κληρονομησω τις τιμες των μεταβλητων ticket_id και event_id απο τις κλασεις ticket και event αντιστοιχα και να τις εχω στις κλασεις check και Application.

Δημοσ.

Γράφεις «να κληρονομήσω» και πάλι έχω την εντύπωση ότι χρησιμοποιείς τη λάθος λέξη για αυτό που θέλεις να κάνεις. Η κληρονομικότητα είναι πολύ συγκεκριμένο πράγμα στον αντικειμενοστρεφή προγραμματισμό και δεν κληρονομείς τιμές μεταβλητών αλλά ολόκληρες κλάσεις.

 

Όταν έγραφα «τι θέλεις να κάνεις» εννοούσα να περιγράψεις με λόγια (όχι προγραμματιστικούς όρους) το πρόβλημά σου. Πρέπει να υπάρχει μια «ιστορία» που περιγράφει αυτό που προσπαθείς να κάνεις. Αν μπορείς να την «διηγηθείς» με απλά λόγια (και πάλι, χωρίς κανένα προγραμματιστικό όρο!) θα ξεκαθαρίσεις σε μεγάλο βαθμό και πώς θα την αντιμετωπίσεις προγραμματιστικά.

Δημοσ.

Ωραια θα αρχισω με απλα λογια να εξηγω το προγραμμα τοτε. Κανω ενα προγραμμα για μια ομαδα μπασκετ που συνδεεται με βαση δεδομενων και αποθηκευει δεδομενα που θα γινει ο χρηστης (προσπαθω να μην αναφερω προγ. ορους).

 

Η κλαση ticket λαμβανει ονομα, χρονια και εισητηριο απο το χρηστη και τις αποθηκευει σε ενα πινακα ticket απο τον οποιο μετεπειτα θα χρειαστω το id για καθε εγγραφη ξεχωριστα (ticket_id). Η Application εχει τα πεδια που ο χρηστης δινει τιμες.

 

Στην κλαση event ο χρηστης δινει τον αγωνα της ομαδας και την χρονια που εγινε ο αγωνας και τα αποθηκευει σε ενα 2ο πινακα δεδομενων event. Και απο εκει χρεαιζομαι να περνω το id για καθε event ξεχωριστα (event_id). To σχεδιαστικο κομματι γινεται σε μια αλλη κλαση Application2.

 

Η κλαση check ουσιαστικα θα πρεπει να περνει τις τιμες των ticket_id και event_id απο τις κλασεις ticket και event αντιστοιχα και να ελεγχει αν ειναι ιδιες πανω απο απο 1 φορα. Αν ειναι, θα σημαινει οτι το ιδιο εισητηριο παει να χτυπηθει 2η φορα και πεταω error.

 

Επειτα φτιαχνω αντικειμενο check στην κλαση Application και πρεπει καθε φορα να παιρνει τις νεες τιμες για τα id καθε φορα.

Δημοσ.

Όπως είπε και ο φίλος πιο πάνω τα int είναι primitive types. Που σημαίνει ότι όταν περνάς ένα int parameter σε μια method /constructor δημιουργείται ένα αντίγραφο αυτής της τιμής.

 

Όταν έχεις ένα instance απο ένα object έχεις ουσιαστικά ένα reference σε αυτό. Άρα μέσα στη μέθοδο/constructor θα περάσεις ένα αντιγραφο του reference.

 

Στην κλάση Check λοιπόν θα έχεις τα αντικείμενα Ticket/Event ως fields αντι για απλά τα id τους. Χρησιμοποιώντας τους getters θα παίρνεις την τρέχουσα τιμή των id.

public void example() {

    Ticket t = new Ticket();
    t.setId(1);

    Event e = new Event();
    e.setId(1);

    Check c = new Check(e, c);
    boolean b = c.isCheckEqual(); //b == true;

    e.setId(30000);
    b = c.isCheckEqual(); //b == false;
}

Κάτι τέτοιο δηλαδή. 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...