Şimdi Ara

Java basit programlama. [Yardım]

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
1.183
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar, Java'dan pek anlamam. Vize ödevim için bir soruda takıldım. Takılmadım aslında başlayamadım bile. Sınıflar, nesneler biraz kafam karıştı. Soruyu vereyim;

     Java basit programlama. [Yardım]


    Yardımcı olabilecek birilerini arıyorum. Şimdiden teşekkürler.

    NOT: Ödevi yapacak birini aramıyorum. Biraz açıklayacak veya sadece tek işlemi kod ile gösterecek birini arıyorum. Saygılar.



  • Ornekte verilen toplama isleminin aynisini carpma, ve cikarma icin de yapmak gerekiyor.
    Bolme islemi icin de aynen, fakat onun icin try-catch blogu kullanmak gerekiyor.
    Bir de bunun icin bir GUI tasarlanmali.
    Toplama islemi nasil verilen iki parametreyi toplayip return ediyorsa, diger islemler de kendi islerini yapmalilar. Carpma islemi iki parametreyi carpmali vs vs. Tabi bu sorudaki eksiklik, hangi parametrenin hangisinden cikartilacagini kesin vermiyor olmasi. Ilk verileni ikinciye bolecegiz ve ilk verilenden ikinciyi cikartacagiz buyuk ihtimalle ama bu tarz seylerin kesin olarak verilmesi gerekirdi. Yazilim muhendisliginde bu tarz belirsizlikler proje ilerledikce sorunlara yol acar. Kimse "ben aslinda onu dememistim" dememelidir.
  • İlginiz için sağ olun. Derlemeye çalıştım biraz. Göz gezdirirseniz geri dönüş yaparsınız. İyi günler.

    import javax.swing.JOptionPane; 

    public class Toplama{

    private int sayi1,sayi2;
    public Toplama(int sayi1, int sayi2){

    this.sayi1=sayi2;
    this.sayi2=sayi2;

    }

    public int topla(){

    return sayi1+sayi2;
    }
    }

    public class Cikarma{

    private int sayi1,sayi2;
    public Cikarma(int sayi1, int sayi2){

    this.sayi1=sayi2;
    this.sayi2=sayi2;

    }

    public int cikar(){

    return sayi1-sayi2;
    }
    }

    public class Carpma{

    private int sayi1,sayi2;
    public Carpma(int sayi1, int sayi2){

    this.sayi1=sayi2;
    this.sayi2=sayi2;

    }

    public int carp(){

    return sayi1*sayi2;
    }
    }

    public class Bolme{
    private int sayi1,sayi2;
    public Bolme(int sayi1, int sayi2){

    this.sayi1=sayi2;
    this.sayi2=sayi2;
    }

    public double Bol(){

    try {

    return sayi1/sayi2;

    } catch (ArithmeticException Hata) {
    JOptionPane.showMessageDialog("Hata: " + Hata.getMessage());
    }
    }
    }






    public class HesapMakinesi{

    Toplama topla = new Toplama();

    topla.sayi1=Integer.parseInt(JOptionPane.showInputDialog("Ilk Sayiyi Girin:"));
    topla.sayi2=Integer.parseInt(JOptionPane.showInputDialog("Ikinci Sayiyi Girin: "));
    topla.topla();

    Cikarma cikar = new Cikarma();

    cikar.sayi1=Integer.parseInt(JOptionPane.showInputDialog("Ilk Sayiyi Girin:"));
    cikar.sayi2=Integer.parseInt(JOptionPane.showInputDialog("Ikinci Sayiyi Girin:"));
    cikar.cikar();

    Carpma carp = new Carpma();

    carp.sayi1=Integer.parseInt(JOptionPane.showInputDialog("Ilk Sayiyi Girin:"));
    carp.sayi2=Integer.parseInt(JOptionPane.showInputDialog("Ikinci Sayiyi Girin:"));
    carp.carp();

    Bolme bol = new Bolme();

    bol.sayi1=Integer.parseInt(JOptionPane.showInputDialog("Ilk Sayiyi Girin:"));
    bol.sayi2=Integer.parseInt(JOptionPane.showInputDialog("Ikinci Sayiyi Girin:"));
    bol.bol();

    }


    Doğru mu yanlış mı buraya kadar pek emin değilim. Ayrıca şu kısmıda anlayamadım;

    this.sayi1=sayi2; 
    this.sayi2=sayi2;

    // Acaba sayıları kullanıcıdan burada mı isteyecektim. Yoksa bu kodların bir anlamı var mı? Ayrıca sonuçları HesapMakinesi()'nin içinde mi yazdıracağım?



    < Bu mesaj bu kişi tarafından değiştirildi JB.Burak -- 11 Nisan 2014; 9:19:54 >




  • JB.Burak kullanıcısına yanıt
    Soruda toplama,cikarma,bolme vs vs nin ayri ayri dosyada olmasi isteniyor. Sanirin sen hepsini ayni dosyada yaptin ya da ben yanliyorum farkli dosyalardan buraya kopyaladin. Yine de bir daha uzerinden gecmekte fayda var.

    HesapMakinesi class'indaki gibi objeleri construct etmeniz bu ornek icin yanlis, class'lari yazarken iki tane parametre alarak construct ediyoruz. Yani mesela toplama icin soyle yazdik:

     
    public Toplama(int sayi1, int sayi2){

    this.sayi1=sayi2;
    this.sayi2=sayi2;

    }


    Bu sebeple once hic "new" ile yeni obje yaratmadan kullanicidan toplanacak sayilari gormesini isteyecegiz, sonra da su sekilde islemi yapacagiz:

     
    Toplama toplama = new Toplama(int userParameter1, int userParameter2 ); //Kullanicidan gelen parametreler ile obje yaratiliyor.
    int toplamaSonuc = toplama.topla();


    Sizin yaptiginiz sekli ile de aslinda olur. Yani

     
    carp.sayi1=Integer.parseInt(JOptionPane.showInputDialog("Ilk Sayiyi Girin:"));
    carp.sayi2=Integer.parseInt(JOptionPane.showInputDialog("Ikinci Sayiyi Girin:"));


    kullanimi da calisacaktir, ancak Object Oriented programlamaya ters bir kullanim. Objelerin metodlari uzerinden degisiklik yapmaliyiz, objelerin degiskenlerine "." kullanarak ulasmak Encapsulation'a ters bir hareket.

    Bir de eger kullanici Sayi yerine kelime yazarsa program hata verecek, parse ettigimiz yerleri de try-catch'e alabiliriz ama muhtemelen bunu test eden insan surekli sayi yazacak.




  • Mephalay M kullanıcısına yanıt
    Kafam iyice karıştı.

    Şimdi şöyle diyelim. Yazdığım Toplama, Cikarma, Carpma ve Bolme class'ları ayrı dosyada, HesapMakinesi ayrı dosyada olsun. Yani elimde toplam ".java" uzantılı 5 dosya var. HesapMakinesi classı hariç diğerlerini doğru yazdığımı ümit ediyorum. Yani sanırım yazdıklarımda bir sorun yok. Son olarak HesapMakinesi kodunu tekrar yazalım;

    public class HesapMakinesi{ 

    sayi1=Integer.parseInt(JOptionPane.showInputDialog("Ilk Sayiyi Girin:"));
    sayi2=Integer.parseInt(JOptionPane.showInputDialog("Ikinci Sayiyi Girin:"));

    Toplama toplama = new Toplama(int sayi1, int sayi2);
    int toplamaSonuc = toplama.topla();
    JOptionPane.showMessageDialog("Toplama Sonucu :" + toplamaSonuc);

    Cikarma cikarma = new Cikarma(int sayi1, int sayi2);
    int cikarmaSonuc = cikarma.cikar();
    JOptionPane.showMessageDialog("Cikarma Sonucu :" + cikarmaSonuc);

    Carpma carpma = new Carpma(int sayi1, int sayi2);
    int carpmaSonuc = carpma.carp();
    JOptionPane.showMessageDialog("Carpma Sonucu :" + carpmaSonuc);

    Bolme bolme = new Bolme(int sayi1, int sayi2);
    int bolmeSonuc = bolme.bol();
    JOptionPane.showMessageDialog("Bolme Sonucu :" + bolmeSonuc);


    }


    Bu mudur?




  • JB.Burak kullanıcısına yanıt
    Evet aynen bu sekilde. Ama burada soyle bir durum var:

    - Kullanici yalnizca iki tane sayi giriyor, biz butun islemleri yapiyoruz, istenen bu mu yoksa kullanici hangi islemi yapacagini da kendisi mi sececek ? Eger oyleyse gereksiz yere 3 islem daha yapmis oluyoruz. ( Performans kaybi ).
  • Mephalay M kullanıcısına yanıt
    Açıklama 3'te ayrı ayrı diye bir terim yazmamış hoca. Aslında benim durumum şu; Uzaktan eğitim öğrenciyim. C#, PHP, ASP, Java dilleri görüyorum. Bu derlerin hepsinde düzenli olarak ders görmemize karşın Java dilinde hiç bir ders görmüyoruz, sadece hazırlanmış dokümanlar ile çalışmak zorundayım. Buda benim kafamı oldukça bunaltıyor zaten.

    Yani demek istediğim; örneğin bu ödev C# dilinde verilmiş olsaydı programın içine "işlem seçme", "hata ayıklama[Sayı yerine harf girilmesi falan]" oldukça ayrıntılı yapardım. Yapmak için uğraşırdım. Hal böyle olunca benimde pek uğraşasım kalmıyor bu ders için.

    Neyse, başınızı ağrıttım. Yardımlarınız için çok teşekkür ederim. Allah razı olsun. İyi günler.




  • JB.Burak kullanıcısına yanıt
    Rica ederim, basarilar.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.