none
Sınıf sorusu RRS feed

  • Soru

  • Arkadaşlar hesaplamak istediğim şeyi ekrana yazmıyor.Bi bakabilirmisiniz

    main kısmı

     class Program

        {

            static void Main(string[] args)

            {

               dikdortgen dd = new dikdortgen();

                dd.Yazdir();

              Console.ReadKey();

            }

        }

    sınfımın ksımı

     public class dikdortgen

        {

            public double en=5;

            public double boy=6;

            public double Alan;

            public double Cevre;

     

            public void AlanHesabı()

            {

                this.Alan  = this.en * this.boy;

            }

     

     

      public void Yazdir()

            {

                Console.Write("alan hesabı: "+this.Alan);

            }

     

        }

    ekrana alanı yazdırmıyor.Acaba neden

    27 Ekim 2011 Perşembe 08:57

Yanıtlar

  • Ben şöyle düşünüyorum.Şimdi alanhesabı fonksiyonu ile ben alan değişkeninin değerini değiştirmiş olmadım mı?Başlangıçta tamam 0 ancak alanhesabı metodu ile bu alan değişkenin değeri değişmez mi?


    bir sınıfın içine fonksiyon tanımladın diye o fonksiyon kendi kendine çalışacak değil elbet, o fonksiyonu bir yerlerde çağırıp işlettirmen gerekir. sende bu fonksiyonu main içinde hiçbir yerde çağırırıp kullanmadığın için elbetteki çalışmıyor.

    Yani nasıl dd.Yazdir satirini kullanarak fonksiyonunu çağırmışsın işini yapmış, dd.AlanHesabı fonksiyonunuda bu çağırdığın çağrıdan önce çağırırsan oda işini yapar

    • Yanıt Olarak İşaretleyen pcci 27 Ekim 2011 Perşembe 18:28
    27 Ekim 2011 Perşembe 18:14
    Yanıtlayıcı

Tüm Yanıtlar

  • Yazdirmiyor derken herhalde 0 yaziyor demek istedin. Alan'a herhangi bir deger atanmiyor. Degeri 0. AlanHesabi() cagirilmadan dogrudan this.Alan yazdiriyorsun. Soyle birsey daha uygun:
     
    	public double Alan { get {return this.en * this.boy;} }
    	public double Cevre;
     
     
    	public double AlanHesabı() 
     	{
    		return this.Alan;
    	}
    
    
     
    27 Ekim 2011 Perşembe 09:52
    Yanıtlayıcı
  • Sizin yapmak istediğiniz ile benimkisi farklı.Ekrana yazdır komutu ile ekrana yazdırıcam.Yani alan hesabı metodu void olacak.Onun için alanhesabını yaptıracağım.siz alan değişkenini tanımlarken direk alanı hesaplatmışsınız.Benim yaptığım da hangi hata var ki ekrana sıfır yazıyorda gerçek alan heasbını yazmıyor.
    27 Ekim 2011 Perşembe 11:52
  • Hesap yaptirmiyorsun ki. Dogrudan Alan'i soruyorsun. Alan o sirada ilk degeri olan 0.

    Yapmak istedigin farkli degil ama sana oyleymis gibi geliyor:) Orada direkt alani hesaplatma yok aslinda. O bir get metodu. Ne zaman alan sorsan o hesap yapilacak, yani en boy degistirirsen yeni alani alacaksin. Mantiken ayrica bir AlanHesabi() metodu gereksiz.

    27 Ekim 2011 Perşembe 11:56
    Yanıtlayıcı
  • tamm gereksiz olabilir.Ancak benim yazdığım kodların neresinde hata var ki sıfır yazıyor.Ben bunu öğrenmek istiyorum.Yani benim yaptığımda yanlış nerde.Alternatiflerin olduğunu biliyorum
    27 Ekim 2011 Perşembe 14:48
  •   public void Yazdir()

            {

                AlanHesabı();

                Console.Write("alan hesabı: "+this.Alan);

            }

     

    olarak denermisin? Eksikligi fark edeceksin...

    27 Ekim 2011 Perşembe 15:08
  • ewet bu şekilde çalıştı.Ama neden ben yazdır metodunun içinde Alanhesabı() metodunu çağırmak zorunda kaldım.Bunu açıklayabilirmisiniz?
    27 Ekim 2011 Perşembe 15:17
  • 3.kez ayni seyi tekrarlayacagim. Sen ne istediysen onu yapiyor.

    Alan zaten 0. 

    ( dikdortgen dd = new dikdortgen(); ) satirinda yeni bir nesne olustugu sirada atanan deger. dd.Yazdir() yerine:

    Console.WriteLine( dd.Alan ) ile de kontrol edebilirsin.

    Onun baska bir deger almasini nerede sagladin ki farkli birsey bekliyorsun? Alan'in degerini sadece AlanHesabi()  metodunda degistiriyorsun ve o metod hic cagirilmiyor. Metodlar durup dururken otomatikman cagirilmaz. Yoksa dd.Yazdir() olmadan da onun cagirilmasi gerekirdi.

    27 Ekim 2011 Perşembe 15:25
    Yanıtlayıcı
  • Ben şöyle düşünüyorum.Şimdi alanhesabı fonksiyonu ile ben alan değişkeninin değerini değiştirmiş olmadım mı?Başlangıçta tamam 0 ancak alanhesabı metodu ile bu alan değişkenin değeri değişmez mi?
    27 Ekim 2011 Perşembe 15:51
  • Ben şöyle düşünüyorum.Şimdi alanhesabı fonksiyonu ile ben alan değişkeninin değerini değiştirmiş olmadım mı?Başlangıçta tamam 0 ancak alanhesabı metodu ile bu alan değişkenin değeri değişmez mi?


    bir sınıfın içine fonksiyon tanımladın diye o fonksiyon kendi kendine çalışacak değil elbet, o fonksiyonu bir yerlerde çağırıp işlettirmen gerekir. sende bu fonksiyonu main içinde hiçbir yerde çağırırıp kullanmadığın için elbetteki çalışmıyor.

    Yani nasıl dd.Yazdir satirini kullanarak fonksiyonunu çağırmışsın işini yapmış, dd.AlanHesabı fonksiyonunuda bu çağırdığın çağrıdan önce çağırırsan oda işini yapar

    • Yanıt Olarak İşaretleyen pcci 27 Ekim 2011 Perşembe 18:28
    27 Ekim 2011 Perşembe 18:14
    Yanıtlayıcı
  • Tamam arkadaşlar şimdi anladım.Biraz geç oldu ama :).Teşekkürler
    27 Ekim 2011 Perşembe 18:28