static Classes

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
apostolos_
Δημοσιεύσεις: 6
Εγγραφή: 08 Μάιος 2008 17:50

static Classes

Δημοσίευση από apostolos_ » 08 Μάιος 2008 18:00

Εχω μια εργασία για java ανάπτυξη λογισμικούν γραμματειακής υποστήριξης φροντιστηρίου δευτεροβάθμιας εκπαίδευσης.Επειδή ειναι στα πλαίσια μαθήματος αντικειμενοστραφους ο καθηγητής δεν θέλει να χρησιμοποιήσουμε βάση δεδομένων.Με συζήτηση μαζί του αποφάσισα να χρησιμοποιήσω την σειριακή αποθήκευση κλάσεων (implements Serialization).Ολα έτοιμα το gui έτοιμο οι κλάσσεις καθηγητών μαθητών μαθημάτων αιθουσών..κτλ.Με συζήτηση με τον καθηγήτη μου με συμβούλεψε ή "βάση"(δλδ μια κλάση που θα αποθηκεύει σε μια ArrayList τους μαθητές μια άλλη τους καθηγητές και μια άλλη τα μαθηματα κτλ..η οποία κλάση θα περιέχει όλες τις μεθόδους αναζήτησης διαγραφής μαθητη κτλ) θα πρέπει να είναι δηλωμένη static για να την βλέπουν όλα τα Frames JDialogs κτλ και να μην εμπλέκεται η "βάση" με τα JFrames. Μπορείτε αν καταλαβατε κατι απο αυτά που λεω(αν οχι ρωτηστε με να γινω ακόμα πιο επεξηγηματκός προφανως φταίω εγω :) ) που θα δηλωθεί η κλάσεις/Βαση static και πώς;

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

static Classes

Δημοσίευση από cherouvim » 08 Μάιος 2008 19:20

Αν το αυτό είναι το person repository (database):

Κώδικας: Επιλογή όλων

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class PersonRepository implements Serializable {
    
    private List people = new ArrayList();
    
    public PersonRepository() {
    }
    
    public void addPerson(Person person) {
        people.add(person);
    }
    
    public void removePerson(Person person) {
        people.remove(person);
    }
    
    public Person getPersonByName(String name) {
        // ...
        return null;
    }
    
}
Τότε πρέπει να έχεις κάτι άλλο που θα το βάζει και θα το βγάζει από το δίσκο η το καλώδιο (serialization/deserialization). Αυτό το κάτι μπορεί να είναι το ίδιο το repository.

Ένα singleton εννοεί, για να έχεις ένα instance αυτού να τρέχει μέσα σε όλη σου την εφαρμογή:

Κώδικας: Επιλογή όλων

...

    private PersonRepository() {
    }
    
    public static PersonRepository INSTANCE = new PersonRepository();

...
Από παντού τώρα μπορείς να πεις PersonRepository.INSTANCE.addPerson(..) κτλ

apostolos_
Δημοσιεύσεις: 6
Εγγραφή: 08 Μάιος 2008 17:50

static Classes

Δημοσίευση από apostolos_ » 08 Μάιος 2008 20:57

Pws tha mporoysa dld na tropoipoihsw mia klash ayths ths morfhs gia na tin vlepoyn ola ta frames (to skeptiko einai na kanw add stin database apo ta event listeners)

(grammenh se diaforetiko arxeio .java fysika)

Κώδικας: Επιλογή όλων

public class Studentdb implements Serialization{
  
  private List static  students =new ArrayList();

    public Studentdb(){
     
    }
    
    public static addStudent(Student s){
      students.add(s);
    }
    //Alloi methodoi poy aforan thn database
}
A tha prepei na dhlwsw ena antikeimeno typou Stdentdb stin main poy tha kaleite kai h ParentFrame as poyme?

Se eyxaristw poly re file gia tin asxolia sou

A! opws eida kai ton kwdika sou....tha afairesw ton public constructor?Kai tha ton kanw private?An mporeis tropopoihse thn klash ayth etsi opws les

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

static Classes

Δημοσίευση από cherouvim » 08 Μάιος 2008 21:04

Κάνε private το constructor, και κράτα ένα και μοναδικό static instance σε όλη την εφαρμογή.

Οι μεθόδοι δεν θα είναι static. Θα παίζουν όλες πάνω στο μοναδικό instance.

apostolos_
Δημοσιεύσεις: 6
Εγγραφή: 08 Μάιος 2008 17:50

static Classes

Δημοσίευση από apostolos_ » 08 Μάιος 2008 21:09

dhladh

Κώδικας: Επιλογή όλων

public class Studentdb implements Serialization{
 
  private List students =new ArrayList();
  public static Studentdb INSTANCE = new Studentdb();


    private Studentdb(){
     
    }
   
    public addStudent(Student s){
      students.add(s);
    }
    //Alloi methodoi poy aforan thn database
}
kai stin apla tha kanw Studentdb.INSTANCE.addStudent(s) opote xreiazomai se opoiodhpote frame xwris na xreiazete na na dhmiourgisw antikeimeno Studentdb stin main h se opoiodhpote allo frame?

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες