Şimdi Ara

java da class lar

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
22
Cevap
0
Favori
2.511
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • arkadaşlar java ya yeni başladım. sınıf oluşturma kısmına geldim kaldım. bu sınıfları anlayamadım. nasıl oluşturulur nasıl kullanılır? bir bile n örnek gösterecek link verecek var mı?



  • google da java nesneye dayalı programlama örneklerine bak istersen
  • hocam aslında soruyu eksik sormuşum. sınıf oluşturma örnekleri hepsini inceledim. nasıl yapılır falan baktım. kendim de oluşturdum. ama şurayı tam kavrayamadım. örnek olarak oluşturulan sınıflarda diyorlar ki farklı bir değişken tanımlamaya yarar. ben neden farklı bir değişken oluşturma ihtiyacı hissedeyim ki? 1. sorum bu.

    sınıflarında içinde get.x set.x this gibi terimler var. bunları neden kullanıyoruz? hem diyoruz başkası ulaşamasın diye sabit değişkenler oluşturuyoruz. hem de bunları başkaları değiştirsin diye set.x get.x komutları kullanıyoruz. burada kafam karışıyor :) 2. takıldığım nokta burası.

    ben bir denememde, sınıf olarak ad soyad girdisi sağlayan, yani adnızı giriniz soyadınızı giriniz diye mesaj yazdıran ve girildikten sonra bunları değişkenlere atayan sınıf tanımladım. sonra ana(main) kısımda bu değişkenleri kullandım. buradan aklıma şu geldi: bu sınıf dediğimiz kavram, uzun uzun bir program yazmaktansa, kısa kısa sınıflar yap, sonra bunları ana programda topla. sınıflar bu işe mi yarıyorlar? bu da 3. sorum :)




  • quote:

    Orijinalden alıntı: frarslan

    hocam aslında soruyu eksik sormuşum. sınıf oluşturma örnekleri hepsini inceledim. nasıl yapılır falan baktım. kendim de oluşturdum. ama şurayı tam kavrayamadım. örnek olarak oluşturulan sınıflarda diyorlar ki farklı bir değişken tanımlamaya yarar. ben neden farklı bir değişken oluşturma ihtiyacı hissedeyim ki? 1. sorum bu.

    sınıflarında içinde get.x set.x this gibi terimler var. bunları neden kullanıyoruz? hem diyoruz başkası ulaşamasın diye sabit değişkenler oluşturuyoruz. hem de bunları başkaları değiştirsin diye set.x get.x komutları kullanıyoruz. burada kafam karışıyor :) 2. takıldığım nokta burası.

    ben bir denememde, sınıf olarak ad soyad girdisi sağlayan, yani adnızı giriniz soyadınızı giriniz diye mesaj yazdıran ve girildikten sonra bunları değişkenlere atayan sınıf tanımladım. sonra ana(main) kısımda bu değişkenleri kullandım. buradan aklıma şu geldi: bu sınıf dediğimiz kavram, uzun uzun bir program yazmaktansa, kısa kısa sınıflar yap, sonra bunları ana programda topla. sınıflar bu işe mi yarıyorlar? bu da 3. sorum :)

    hocam tüm herhalde ilk programlama diliniz.öncelikle birazcık zaman gerektirdiğini söylüyeyim.birazcık sabretmeniz gerekiyor zaman tanıdıkça kavramlar oturmaya başlıyor.
    1.sorunuz:bu sorunuzu tam kavrayamadım ama yapmak istediğiniz örnekte birden fazla değişken tanımlamanız gerekecektir.birden fazla nesne de gerekecektir.
    2.sorunuz:örnek üzerinde göstermemiz daha anlaşılır olacaktır.

    public class Araba {

    private String arababoyat="Siyah"; //arabamızın default rengi siyah olsun


    public Araba() { //default constructorımız

    }

    public Araba(String arababoyat) { //kişiseleştirilmiş constructorımız
    super();
    this.arababoyat = arababoyat;
    }

    public String getArababoyat() {
    return arababoyat;
    }

    public void setArababoyat(String arababoyat) {
    this.arababoyat = arababoyat;
    }


    }



    ______________________________________
    public class Main {

    public static void main(String[] args) {

    Araba arabayaulaş=new Araba();
    //arabımızın rengi neymiş bakalım.
    System.out.println("Arabamızın rengi nedir?:"+arabayaulaş.getArababoyat()+"dır.");
    //arabımızın rengini set'le değiştirdik.
    arabayaulaş.setArababoyat("Kırmızı");
    //şimdi bakalım arabamızın rengi nedir.
    System.out.println("Arabamızın rengi nedir?:"+arabayaulaş.getArababoyat()+"dır.");
    }
    }
    ____________________
    örnekte gördüğünüz dafault constructor,getter ve setter yordamlarını eclipsede otomatik tanımladım.eclipse kullanıyorsanız değişkenin ismini yazın öncelikle(arababoyat) sonra sağ click-source-burada getter setter vs.mevcut tek tıkla hepsi hazır gelir.


    3.sorunuz:hocam sınıflarla yordamları karıştırıyorsunuz galiba.class ile başlayanlar sınıftır diğerleri o sınıfta bulunan yordamlardır(inner classlar felan da var tabi bunları es geçiyorum)


    son olarak çalışmanızı düzensiz ilerletmişsiniz galiba.bir kaynak edinmenizi öneririm.
    newboston java yazarsanız youtube kanalı var ingilizcenin olmasa bile görsel olduğundan anlarsınız.iyi çalışmalar.bir kaç kaynak listesi pm olarak attım.



    < Bu mesaj bu kişi tarafından değiştirildi deadmanku -- 4 Eylül 2012; 15:02:08 >




  • 1. sorumu biraz açayım isterseniz.

    class Insan {
    int yas;
    string isim;
    }

    burada bir class tanımladım. programda kullanacağım değişken "Insan a1=new Insan()" şeklinde olacak ve a1, bir yas bir de ad değişkeni alacak. buraya kadar yanlışım yok değil mi işte demek istediğim şey şu: ben Insan şeklinde (yeni bir değişken ya da sınıf artık neyse ) bir tanımlamayı neden yapayım? bu ad ve yaş değişkenlerini kullanacağım ana programın içinde de tanımlayabilirim. yanılıyor muyum?

    2. sorumda bir örnek vermişsiniz. ben de eclipse kullanmaya çalışıyorum. setx ve getx otomatik geliyor biliyorum. ama ne işe yaradıklarını anlayamamıştım.

    bir kaç kaynak var elimde ama hepsi de farklı bir yol izlemiş.



    < Bu mesaj bu kişi tarafından değiştirildi frarslan -- 5 Eylül 2012; 13:52:25 >




  • quote:

    Orijinalden alıntı: frarslan

    1. sorumu biraz açayım isterseniz.

    class Insan {
    int yas;
    string isim;
    }

    burada bir class tanımladım. programda kullanacağım değişken "Insan a1=new Insan()" şeklinde olacak ve a1, bir yas bir de ad değişkeni alacak. buraya kadar yanlışım yok değil mi işte demek istediğim şey şu: ben Insan şeklinde (yeni bir değişken ya da sınıf artık neyse ) bir tanımlamayı neden yapayım? bu ad ve yaş değişkenlerini kullanacağım ana programın içinde de tanımlayabilirim. yanılıyor muyum?

    bir kaç kaynak var elimde ama hepsi de farklı bir yol izlemiş.

    Sınıflar birçok yönden işimizi kolaylaştırır, ben en basit sebebini söyleyeyim. Öncelikle insan sınıfını biraz daha genişletelim.

    class Insan {
    int yas;
    String isim;
    boolean cinsiyet;

    String ana_adi;
    String baba_adi;
    String dogum_yeri;
    String dogum_tarihi;
    }

    Programı sen yazdın ve nüfus memurluğunda kullanılıyor. Kişi bilgilerini senin dediğin şekilde class dışında ayrı ayrı yazmış olsaydık her nüfus kaydına gelen kişi için şöyle bir kod gerekirdi.

    Integer yas = new Integer();
    String isim = new String();
    Boolean cinsiyet = new Boolean();
    String ana_adi = new String();
    ...
    ...
    Fakat sınıf içine alırsak yapmamız gereken sadece "Insan kisi = new Insan();".

    Eğer kişileri bir dizide saklıyorsak, sınıf olmazsa her değişken için ayrı dizi gerekir. Mesela 15. kişinin yaşı 1 arttırılacak diyelim.
    yaslar[15] += 1;

    Bu kişinin baba adı lazım ise,
    String baba = baba_adlari[15];

    Tahmin edeceğin gibi böyle bir sistem işi aşırı şekilde zorlaştırır. Sınıflar daha birçok yönden kolaylık sağlar, onları ilerde öğrenirsin.




  • hmm anladım. peki sınıfları, sadece değişkenleri toptan tanımlama ( aşağıda sizin yaptığınız gibi) gibi işlemlerde kullanmıyoruz değil mi?
    mesela;
    class Insan {
    int yas;
    string isim;

    isim=JOPtionPane.showInputDialog(null,"ismi gir:");
    yas=Integer.parseInt(JOPtionPane.showInputDialog(null,"ismi gir:"));

    } dedikten sonra

    ana programda

    Insan.a1=new Insan();

    JOPtionPane.showMessageDialog(null, Insan.a1);

    yazsak böyle bir kullanım sıkıntı çıkarır mı? yoksa bu kullanım da doğru bir kullanım olur mu? kısaca ben sınıflarda ana programda kullanacağım bazı işlemleri sınıflarda yaptırsam ve yukarıdaki gibi bir iki satırla bunları ana programın herhangi bir yerinde kullansam olur mu? Sınıfların mantığı bu mudur?
  • quote:

    Orijinalden alıntı: frarslan

    hmm anladım. peki sınıfları, sadece değişkenleri toptan tanımlama ( aşağıda sizin yaptığınız gibi) gibi işlemlerde kullanmıyoruz değil mi?
    mesela;
    class Insan {
    int yas;
    string isim;

    isim=JOPtionPane.showInputDialog(null,"ismi gir:");
    yas=Integer.parseInt(JOPtionPane.showInputDialog(null,"ismi gir:"));

    } dedikten sonra

    ana programda

    Insan.a1=new Insan();

    JOPtionPane.showMessageDialog(null, Insan.a1);

    yazsak böyle bir kullanım sıkıntı çıkarır mı? yoksa bu kullanım da doğru bir kullanım olur mu? kısaca ben sınıflarda ana programda kullanacağım bazı işlemleri sınıflarda yaptırsam ve yukarıdaki gibi bir iki satırla bunları ana programın herhangi bir yerinde kullansam olur mu? Sınıfların mantığı bu mudur?

    Kullanımda sıkıntı var, Insan.a1 ne?
    Sen insan sınıfını "Insan" ismiyle tanımladıktan sonra, Insan.a1 yazarsan, program Insan sınıfında tanımlanmış static veya const bir değer arar. Oysa senin a1 adında static veya const bir değerin yok.
    Ama kod şöyle olsaydı sorun çıkmazdı;

    Insan a1=new Insan(); //SEN burayı böyle yapmıştın -> Insan.a1=new Insan();

    JOPtionPane.showMessageDialog(null, a1);//Tek başına buraya a1 yazarsan (insan değişkeni), istediğin sonucu alamazsın.

    a1'i direk olarak ekrana yazdırmak için bir toString fonksiyonu yazman gerek, mesela atıyorum;
    "İsim : " + isim + ", Yaş : " + yas.toString() şeklinde geriye değer döndürecek bir toString() fonksiyonu yazarsan;
    a1.toString()'i direk olarak ekrana basabilirsin.




  • quote:

    Orijinalden alıntı: welrocken


    Kullanımda sıkıntı var, Insan.a1 ne?
    Sen insan sınıfını "Insan" ismiyle tanımladıktan sonra, Insan.a1 yazarsan, program Insan sınıfında tanımlanmış static veya const bir değer arar. Oysa senin a1 adında static veya const bir değerin yok.
    Ama kod şöyle olsaydı sorun çıkmazdı;

    Insan a1=new Insan(); //SEN burayı böyle yapmıştın -> Insan.a1=new Insan();

    JOPtionPane.showMessageDialog(null, a1);//Tek başına buraya a1 yazarsan (insan değişkeni), istediğin sonucu alamazsın.

    a1'i direk olarak ekrana yazdırmak için bir toString fonksiyonu yazman gerek, mesela atıyorum;
    "İsim : " + isim + ", Yaş : " + yas.toString() şeklinde geriye değer döndürecek bir toString() fonksiyonu yazarsan;
    a1.toString()'i direk olarak ekrana basabilirsin.

    hocam kodları örnek olsun diye vermiştim asıl merak ettiğim şey sorduğum sorulardı.




  • quote:

    Orijinalden alıntı: frarslan

    quote:

    Orijinalden alıntı: welrocken


    Kullanımda sıkıntı var, Insan.a1 ne?
    Sen insan sınıfını "Insan" ismiyle tanımladıktan sonra, Insan.a1 yazarsan, program Insan sınıfında tanımlanmış static veya const bir değer arar. Oysa senin a1 adında static veya const bir değerin yok.
    Ama kod şöyle olsaydı sorun çıkmazdı;

    Insan a1=new Insan(); //SEN burayı böyle yapmıştın -> Insan.a1=new Insan();

    JOPtionPane.showMessageDialog(null, a1);//Tek başına buraya a1 yazarsan (insan değişkeni), istediğin sonucu alamazsın.

    a1'i direk olarak ekrana yazdırmak için bir toString fonksiyonu yazman gerek, mesela atıyorum;
    "İsim : " + isim + ", Yaş : " + yas.toString() şeklinde geriye değer döndürecek bir toString() fonksiyonu yazarsan;
    a1.toString()'i direk olarak ekrana basabilirsin.

    hocam kodları örnek olsun diye vermiştim asıl merak ettiğim şey sorduğum sorulardı.

    Kullanım doğru öyleyse




  • .



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 13:45:41 >
  • quote:

    Orijinalden alıntı: welrocken


    Kullanım doğru öyleyse

    Hocam aslında tam olarak şöyle yapmıştım :
    import javax.swing.JOptionPane;
    class Insan {

    String ad;
    int yas ;

    String soyad;

    public void selamla() {
    ad=JOptionPane.showInputDialog("ad gir:");
    yas = Integer.parseInt(JOptionPane.showInputDialog(null,"yas gir:"));

    soyad=JOptionPane.showInputDialog("soyad gir:");
    }
    }

    bunu da:
    public class classDeneme {

    public static void main(String [] arg) {
    Insan a1=new Insan();

    a1.selamla();

    JOptionPane.showMessageDialog(null,a1.yas+a1.soyad+a1.ad);
    }
    }

    şeklinde kullandım.

    Burada ben kullanmadım. fakat sınıflarda kullanılan get ve set metodlarını kısaca anlatabilicek var mı? gördüğüm bir kaç kaynaktaki anlatımlar biraz yüzeysel de.



    < Bu mesaj bu kişi tarafından değiştirildi frarslan -- 5 Eylül 2012; 18:06:20 >




  • quote:

    Orijinalden alıntı: frarslan

    quote:

    Orijinalden alıntı: welrocken


    Kullanım doğru öyleyse

    Hocam aslında tam olarak şöyle yapmıştım :
    import javax.swing.JOptionPane;
    class Insan {

    String ad;
    int yas ;

    String soyad;

    public void selamla() {
    ad=JOptionPane.showInputDialog("ad gir:");
    yas = Integer.parseInt(JOptionPane.showInputDialog(null,"yas gir:"));

    soyad=JOptionPane.showInputDialog("soyad gir:");
    }
    }

    bunu da:
    public class classDeneme {

    public static void main(String [] arg) {
    Insan a1=new Insan();

    a1.selamla();

    JOptionPane.showMessageDialog(null,a1.yas+a1.soyad+a1.ad);
    }
    }

    şeklinde kullandım.

    Burada ben kullanmadım. fakat sınıflarda kullanılan get ve set metodlarını kısaca anlatabilicek var mı? gördüğüm bir kaç kaynaktaki anlatımlar biraz yüzeysel de.

    get set metodlarını diyorsan, illa isminin get set olmasına gerek yok.
    Mesela
    public void IsmiDegistir(String Isim)
    {

    }
    Bu da bir set (belirlemek) metodu olabilir.
    Önemli olan, get ile set kavramlarını anlamaktır. Get dediğimizde geriye bir değer gönderileceğini ve Set dediğimizde birşeyler değiştirileceğini bilmelisin.
    Şöyle bir genelleme yapabiliriz, get için fonksiyon kullanırsın, fonksiyon türü alınacak verinin türü ile aynıdır. Örneğin;

    int SayiAl()
    {
    return sayi;
    }

    gibi.
    Veya set için metod kullanırsın (istersen fonksiyon da kullanabilirsin)

    void SayiDegistir(int Sayi)
    {
    sayi = Sayi;
    }

    Bunların genel kullanım amacı; senin private olarak belirlediğin bir nesneye dışarıdan erişim yoktur. Ama kullanıcının görmesi, değiştirmesi gereken nesneler olabilir. Senin örneğin için kullanıcının adı yaşı. Bunların dışarıdan (DİĞER CLASSLAR DIŞARISI OLUYOR)
    erişimini sağlamak için bu metodları kullanırsın.

    Aynı zamanda bir değerin değiştirilmesini kısıtlamak için de bu yöntemler kullanılır. Örneğin senin bir sayın vardır, sayının 0 dan küçük ve 100den büyük olmasını istemedeğini varsayılım;

    public void SayiDegistir(int YeniDeger)
    {
    if(YeniDeger >= 0 && YeniDeger <= 100)
    {
    sayi = YeniDeger;
    }
    }

    gibi bir kullanım, senin sayını kontrol altında tutar.

    Umarım anlatabilmişimdir, kolay gelsin.




  • .



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 13:46:25 >
  • quote:

    Orijinalden alıntı: rob dö şambır

    C#'ta property var, direkt get/set alanlara tekabül ediyor. Java çok geri kaldı artık.

    Evet zekice gerçekten.
    Javada operator overload olsaydı aynı olay gene yapılırdı ama o da yok. Javayı tasarlayanlar dilin zorlaşmaması için birçok güzelliği eklemiyor ama bana kalırsa öğrenmesi kolay olan dili kullanması zordur. Ya da tam tersi.
  • sxd tyujisagc sfas cwe aasacw tumytu we qwwer q3 etwe



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 13:47:39 >
  • arkadaşlar bu classlarda dizi değişkenleri kullanılabiliyor mu? şunu demek istiyorum. basit bir örnek ile anlatayım.

    ana kısımda kaç sayı diyerek giriş alalım. diyelim ki 10 tane sayı girilmesi istendi. 10 sayı girişi for döngüsü kullanılarak bir dizi değişkenine atandı. daha sonra işlemler adı altında bir class oluşturalım ve girilen bu sayıların o class da toplanmasını, çarpılmasını, ortalamalarının alınmasını sağlayalım. sonra tekrar ana kısma gönderelim.

    bu işlemi bir kaç değişken atayarak yapabiliyoruz. 1. sayıyı gir. 2. sayıyı gir dedikten sonra class da bir toplama işlemi oluşturup oradan sonuç alabiliyoruz. işte merak ettiğim dizin olarak class lara gönderip işlem yapıp geri sonucu alabiliyor muyuz? yapılabiliyorsa bir örnek yazmanız mümkün mü acaba?
  • quote:

    Orijinalden alıntı: frarslan

    arkadaşlar bu classlarda dizi değişkenleri kullanılabiliyor mu? şunu demek istiyorum. basit bir örnek ile anlatayım.

    ana kısımda kaç sayı diyerek giriş alalım. diyelim ki 10 tane sayı girilmesi istendi. 10 sayı girişi for döngüsü kullanılarak bir dizi değişkenine atandı. daha sonra işlemler adı altında bir class oluşturalım ve girilen bu sayıların o class da toplanmasını, çarpılmasını, ortalamalarının alınmasını sağlayalım. sonra tekrar ana kısma gönderelim.

    bu işlemi bir kaç değişken atayarak yapabiliyoruz. 1. sayıyı gir. 2. sayıyı gir dedikten sonra class da bir toplama işlemi oluşturup oradan sonuç alabiliyoruz. işte merak ettiğim dizin olarak class lara gönderip işlem yapıp geri sonucu alabiliyor muyuz? yapılabiliyorsa bir örnek yazmanız mümkün mü acaba?

    Neden yapılamasın. Yanlız "class lara göndermek" diye bişey yok, class ın metodlarına gönderirsin.

    class Islemler {
    static int topla(int[] dizi) {
    ...
    }
    static int carp(int[] dizi) {
    ...
    }
    }
    main(args) {
    int yerel_dizi[] = new int[20];
    int sonuc = Islemler.carp(yerel_dizi);
    sonuc = Islemler.ortalama(yerel_dizi);

    Bu birinci yaklaşım. Herhangi bir üye nesne/değişken olmadığı için metodların static olması daha iyi. Hem daha verimli hem de sınıftan new ile örnek oluşturmak gerekmiyor.

    İkinci yaklaşım nesne kavramına daha uygun. Sınıfın bir üye dizisi (dizi referansı) vardır ve bu diziyi yapılandırıcı (constructor) da hazırlarsın. Sonra sınıftan bir örnek oluşturup yerel diziyi yapılandırıcıya gönderirsin. Bundan sonra üye metodlara ayrı ayrı diziyi geçirmek gerekmez çünkü kendi içinde o diziyi gören referansı var.
    Bunun örneğini yazmayı sana bırakıyorum.

    Ha birde unutmadan javada ilerlediğinde int, long, float gibi her veri türü için ayrı ayrı sınıf yazmanın gerekmediğini göreceksin. Belki kafana takılmıştır diye söyledim.




  • anladım hocam. teşekkür ederim. bir kaç deneme yapayım bakalım
  • quote:

    Orijinalden alıntı: elektro_gadget



    İkinci yaklaşım nesne kavramına daha uygun. Sınıfın bir üye dizisi (dizi referansı) vardır ve bu diziyi yapılandırıcı (constructor) da hazırlarsın. Sonra sınıftan bir örnek oluşturup yerel diziyi yapılandırıcıya gönderirsin. Bundan sonra üye metodlara ayrı ayrı diziyi geçirmek gerekmez çünkü kendi içinde o diziyi gören referansı var.



    Sanırım burada şunu demek istiyorsunuz. Main kısmında değil de diziye girilecek bilgileri yapılandırıcı içinde al, işlemleri orada yaptır. bunu da main kısmında kullan. Yanlış mı anlamışım? Birinci kısmı kullandım çok teşekkür ederim. Diğer bahsettiğiniz kısmı yakında soracaktım iyi oldu




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