Şimdi Ara

Farklı Class daki Arraya Ulaşma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
7
Cevap
0
Favori
795
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar 1 den fazla classım var 1 formda veri girdiğim bir arraya başka bir gorumda nasıl ulaşailirim
    bilgilerinizi arz ederim....

    saygılar....



  • Arrayin public le beraber static olmasi ve tanimlanmasi gerekir.

    Ornegin
    public class Data
    {
    public static int[] notlar = new int[3];
    }

    public class A
    {
    public static void sayilariKaydet()
    {
    Data.notlar[0]= 90;
    Data.notlar[1] = 78;
    }
    }


    public class B
    {
    public void sayilariOku()
    {
    System.out.println("Not 1 : "+Data.notlar[1]);
    }
    }
  • Hayir, arrayler static olmak zorunda degiller. Array'leri icinde tutan bir singleton class' i tanimlanir, onu cagiran fonksiyonlar da arraylere yine o class'in metodlari uzerinden ulasabilirler. Bu class'in tek gorevi programin geri kalaninda ulasilacak verileri guvenli bir sekilde tutmasi olacaktir. Ayrica bir tane class yazarken baska bir class okumaya calisiyorsa ( eger multithread bir uygulama ise ) yine hata alinir. Soyle bir kod ile temiz bir sekilde halledebilirsin:
     
    public class DataHolder {

    private static DataHolder instance;
    private Integer[] integerArray;
    private final Integer integerArrayLength = 10;

    private DataHolder() {
    integerArray = new Integer[integerArrayLength];
    }

    public static synchronized DataHolder getInstance() {
    if (instance == null)
    instance = new DataHolder();
    return instance;
    }

    public Integer[] getIntegerArray() {
    return integerArray;
    }

    public void setIntegerArray(Integer[] integerArray) {
    this.integerArray = integerArray;
    }

    }


    Bu sekilde ustteki dataHolder uzerinden herhangi bir class integerArrayine ulasabilir. Ornek:
     
    public class A {


    public void getArray(){
    DataHolder dataHolder = DataHolder.getInstance();
    Integer[] myArray = dataHolder.getIntegerArray();
    }

    }

    public class B{


    public void getFamousArray(){
    DataHolder myDataHolder= DataHolder.getInstance();
    Integer[] theArray= dataHolder.getIntegerArray();
    }

    }


    Ancak ustteki kod tam anlamiya multithread dostu degil, ama o kadar ince bir tasarim da gerekmiyor sanirim : )




  • quote:

    Orijinalden alıntı: Mephalay

    Hayir, arrayler static olmak zorunda degiller. Array'leri icinde tutan bir singleton class' i tanimlanir, onu cagiran fonksiyonlar da arraylere yine o class'in metodlari uzerinden ulasabilirler. Bu class'in tek gorevi programin geri kalaninda ulasilacak verileri guvenli bir sekilde tutmasi olacaktir. Ayrica bir tane class yazarken baska bir class okumaya calisiyorsa ( eger multithread bir uygulama ise ) yine hata alinir. Soyle bir kod ile temiz bir sekilde halledebilirsin:
     
    public class DataHolder {

    private static DataHolder instance;
    private Integer[] integerArray;
    private final Integer integerArrayLength = 10;

    private DataHolder() {
    integerArray = new Integer[integerArrayLength];
    }

    public static synchronized DataHolder getInstance() {
    if (instance == null)
    instance = new DataHolder();
    return instance;
    }

    public Integer[] getIntegerArray() {
    return integerArray;
    }

    public void setIntegerArray(Integer[] integerArray) {
    this.integerArray = integerArray;
    }

    }


    Bu sekilde ustteki dataHolder uzerinden herhangi bir class integerArrayine ulasabilir. Ornek:
     
    public class A {


    public void getArray(){
    DataHolder dataHolder = DataHolder.getInstance();
    Integer[] myArray = dataHolder.getIntegerArray();
    }

    }

    public class B{


    public void getFamousArray(){
    DataHolder myDataHolder= DataHolder.getInstance();
    Integer[] theArray= dataHolder.getIntegerArray();
    }

    }


    Ancak ustteki kod tam anlamiya multithread dostu degil, ama o kadar ince bir tasarim da gerekmiyor sanirim : )

    1 Form'dan diğerine veri taşımaya çalışan arkadaşa singleton, synchronized, multithread'ten falan girmişsin, iyi yapmişsin :)




  • TEŞEKKÜRLER DEĞERLİ HOCALARIM SORUN ÇÖZÜLDÜÜ
  • Ama nasıl çözüldü? Gidip static mi yaptın yoksa? Önüne gelen aynı şeyi söylüyor. Yahu veri static olduğu zaman o sınıfın sadece tek örneği çıkabilir. O durumda da "nesne" olmaz o, bildiğin fonksiyon tabanlı kod olur.

    Adamlar nasıl yapmış diye merak edip sdk reference falan okusaydınız doğrusunu öğrenmiş olurdunuz.
  • quote:

    Orijinalden alıntı: elektro_gadget

    Ama nasıl çözüldü? Gidip static mi yaptın yoksa? Önüne gelen aynı şeyi söylüyor. Yahu veri static olduğu zaman o sınıfın sadece tek örneği çıkabilir. O durumda da "nesne" olmaz o, bildiğin fonksiyon tabanlı kod olur.

    Adamlar nasıl yapmış diye merak edip sdk reference falan okusaydınız doğrusunu öğrenmiş olurdunuz.

    bütün programda kullanacağım 1 arraya ihtiyacım vardı public statik tanımladım

    public class Arac{
    String marka;
    String model;
    double deger;
    int stok;
    }


    //-------------------------


    public class Main {
    public static Arac[] car = new Arac[1];
    public static void main(String[] args) {

    Ekran e = new Ekran();
    e.setVisible(true);

    }
    }

    //------------------------
    JOptionPane.showMessageDialog(null, Main.car.length);
    Main.car[Main.car.length - 1].marka = aracMarka.getText();
    Main.car[Main.car.length - 1].model = aracModel.getText();
    Main.car[Main.car.length - 1].deger = Double.parseDouble(aracDeger
    .getText());
    Main.car[Main.car.length - 1].stok = Integer.parseInt(aracStok
    .getText());



    < Bu mesaj bu kişi tarafından değiştirildi yogilit -- 5 Eylül 2014; 13:07:07 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.