Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Product product1 = new Product();

            product1.Id           = 1;
            product1.CategoryId   = 2;
            product1.ProductName  = "Masa"; // 101 nolu bellek adresinde
            product1.UnitPrice    = 500;
            product1.UnitsInStock = 3;

            // böyle de oluşturabiliriz
            Product product2 = new Product {
                Id = 2, CategoryId = 5, UnitsInStock = 5, ProductName = "Kalem", UnitPrice = 35
            };


            // genelde classların yanındaki değişkeni camel case versiyonu ile isimlendiririz
            // C#, Java'da Case Sensitive vardır (büyük küçük harf duyarlılığı)
            // PascalCase  //camelCase
            ProductManager productManager = new ProductManager();

            //          Stack               //       Heap
            // referans tip oluşturabilmek için, heap'te oluşturabilmek için new'leriz

            productManager.Add(product1);
            Console.WriteLine(product1.ProductName);



            //----------------------------------------Örnekli Anlatım void nedir------------------------------------------------------

            // productManager.Topla2(3, 6); // topladı ve 9 oldu ProductManager kısmında ekrana yazdırdı.

            // Peki neden return'e ihtiyaç var. Cevap basit sonucu başka bir yerde de kulllanabilmek için. void ile yap bitir dedik ve bitti. kullanamıyoruz.

            // int toplamaSonucu = productManager.Topla(3, 6);
            // Console.WriteLine(toplamaSonucu*2);

            // burada ise int veri tipinde toplamaSonucu adında bir değişkene aktarabildik (void'e aktaramayız)
            // böylece değişkeni console'da çağırabildik.



            //---------------------------------------Örnekli Anlatım referans-------------------------------------------------------

            // productManager.Add(product1);            // buraya 101 nolu bellek adresi yollanıyor
            // Console.WriteLine(product1.ProductName);

            // cevabım Masa idi
            // yanlış, ProductName değeri Kamera oldu. Neden?
            // diziler classlar, abstract class, interface referans tip
            // ref tiplerde her şey, atamalar referansın numarası ile yapılır ( yani bellekteki adresi ile)
            // 101 nolu bellek adresini ProductManager aldı ve Name'ini Kamera olarak değiştirdi
            // 101 nolu ProductName yani kamerayı ekrana yazdırdık


            // ProductManager kısmındaki örnekle alakalı kısım

            // int sayi = 100;
            // productManager.BirSeyYap(sayi);
            // Console.WriteLine(sayi);

            // ProductManager'a gidip sayıyı 99 ile değiştirelim ve ekrana yazdıralım. sayı sonucunu ne yazacaktır?
            // tahminim sayı 99 olmuştur. çünkü sayı üstteki tanımda sabit kalmıyor olmalı. çünkü referans tipi değil.
            // yanlış, sayı'nın değeri 100 olarak kalmış. Neden?
            // sayısal olanlar int, double, bool değer tip
            // diğer bölüm bağımsız, yani burada sayıya 100 değerini verdik ve buradaki console ekranına sayı kelimesinden tamamen kopup 100 olarak geçti
            // ancak referans tiplerde şöyle - 29. satıra bak
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //managerdan geldim

            Product product1 = new Product(); //101

            product1.Id           = 1;        //1 numaralı ürün..
            product1.CategoryId   = 2;        //2 numara mobilya kategorisi olsun..
            product1.ProductName  = "Masa";
            product1.UnitPrice    = 500;
            product1.UnitsInStock = 3;


            //manager classını yukardaki gibi yapabilirz.. Veyahut aşağıdaki gibi de yapabiliriz.. 2. ürünü farklı yolla yazalım (İstediğini kullan)

            Product product2 = new Product {
                Id = 2, CategoryId = 5, UnitsInStock = 5, ProductName = "Kalem", UnitPrice = 35
            };

            //elimizdeki bir ürünü eklemeyi simüle etmek istiyoruz.. Bunun için yazılmış bir classım var zaten: ProductManager..ProductManagerın Add metotunu kullanarak bu ekleme işlemini simüle etmek istiyoruz..
            //nasıl ki kullanıcıdan bilgileri alarak böyle bir class oluştruyosam aynı şekilde PrpducktManagerı kullanarak benim product1 i yada 2yi alıp kullanıcıya göndermem gerekiyor..

            //PascalCase    //camelCase
            ProductManager productManager = new ProductManager();       //ProductManager türünde productManager adında yeni bir ProductManager (string isim = "Nida" burada string türünde isim tanımladık ve o Nida.. Diğeri de bu mantık işte..)

            // yeni bir referans numarası almış productManger..

            productManager.Add(product1);                                       //burada parametreleri ekliyoruz..Add ekle demek ya unutma, toparlan.. uyuyosun şu anda bunu okurken, biliyorum.. ProductManagera geçtim, Add kısmını ekleyeeğim..
            Console.WriteLine(product1.ProductName);



            //---------------------------------------------------------KONU DIŞI ÖRNEKLER------------------------------------------------------------------------------------------------------------------
            //şimdi gönderdiğimiz yerde kamera yazsın diyodu product1 in ProductName i nedir? (defterdeki örneğede bak)
            //CEVAP: KAMERA..
            //NEDEN?
            //Geçen dersihatırla sayısal olan (int, double, bool..vs) veri tipleri için değer tip demiştik..
            //Ama dizi, class,abstract class, interface... vs referans tiptir..
            //Değer tiplerde atamalar tamamen değeri üzerinden olur ve bütün bağlantı kopar.. yani ben int sayi = 100; dediğimde BiseyYap fonksiyonuna int sayi yi yolladığımda aslında biz oraya sayının sadece değerini gönderiyoruz.. sayiyla o an bütün bağlantımız kopuyor..
            //Bu yüzden ben metot kısmında BiseyYap fonksiyonunda 100 değerini (int sayi) gönderdiğimde buradaki int sayi ya eşitleniyor.. yani sayi = 100 dedikten sonra sayi yazan her yere 100 yazabilirsin.. onun eki artık kalkıyor, açıklaması kalkıyor..
            //Ben orada sayi = 99 yaptım yani ordaki bağımsız olan ama değeri 100 olan sayiyi 99 yaptım.. bunun int sayi = 100; ile hiçbir alakası olmadığı için yazdırdığımda sonuç yine 100 çıkacaktır..

            //ama referans tiplerde atamalar referansın numarasıyla yani bellekteki adresiyle yapılır..
            //11. satırda new ile oluşturduğum değişkenin bellekteki adresi diyelim ki 101.. 101 numaralı bellek adresi üzerinden gidiyor yani bellekteki yerine referans vererek gidiyor.. bu yüzden ben oraya (satır 30) product ı yolladığımda 101 numaralı bellek adresini yolluyorum.. bellekteki fizziksel bir locasyonu yolluyorum..
            //Bu yüzden burda benim manger kısmında satır 9da yolladığım şey product 101 numaralı bellek adresi oluyor.. Dolayısıyla 18. satırı okursak; 101 numaralı bellekteki yerde bulunan productın name ini Kamera yap diyor..
            //bunlarda her şey referans numarası üzerinden gidiyor.. Şu anda 101 numaralı bellekteki product ın adı kamera oldu.. o yüzden ben program.cs de ben 31. satırdaki gibi 101. bellekteki veriyi okuduğumda Kamera yazacak..
            //Bu sebeple cevap Kamera


            //////!!!!!!!!!!!!!!!!!!!!!! REFERANS VE DEĞER TİP ÖRNEKLERİ ÇOK ÖNEMLİ!!!!!!!!!!!!!!!!!//////////////////
            //(sayısal örnek defterde..)

            //---------------------------------------------------------KONU DIŞI AÇIKLAMALAR DEVAM---------------------------------------------------------------------------------------------------------------

            //     productManager.Topla2(3, 6);    // (------2------) //yukarıda zaten productManager ı ProductManagerlaştırmıştık zaten.. (Ssatır 27) Bu şu demektir; ProductManager daki Topla2 yi çalıştır.. Sayılarım zaten 3 ve 6..
            //bu gider PM sayfasına ve sayı değerlerini yerine koyduktan sonra yazar.. Amacımda buydu, ulaştım..



            //     int toplamaSonucu = productManager.Topla(3, 6);   //(------1------)  //şimdi biz buradaki toplama değerini yani int toplamSonucu return etme sebebimiz bu değeri başka yerlerde de kullanmak istememdi

            //mesela 2 ile çarpalım dersek:
            //      Console.WriteLine(toplamaSonucu*2);      //Gitti hesapladı önce sonra geri geldi ekrana yazdırmak istiyorum, üzerinde çalışmak istiyorum.. onu baaşka şekilde veya yerde kullanmak istiyorum..
            //Bunun için returnları kullanıyoruz..
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            Product product1 = new Product();

            product1.Id           = 1;
            product1.CategoryId   = 2; // 1-> 2 numaranın arka planda mobilyaya karşılık geldiği varsayalım
            product1.ProductName  = "Masa";
            product1.UnitPrice    = 500;
            product1.UnitsInStock = 3;

            Product product2 = new Product {
                Id = 2, CategoryId = 5, UnitsInStock = 5, ProductName = "Kalem", UnitPrice = 35
            };

            // 2-> Yukarıdaki gibi yazılabildiği gibi, Bu şekilde de yazılabilir. Genel olarak bu şekilde yazılır.
            // 3-> Bunlar gerçek hayatta bir yerden alınır. Biz normal şartlarda bu şekilde yazmayız.

            // 4-> PascalCase  //camelCase
            ProductManager productManager = new ProductManager();

            // 5-> ProductManager türünde productManager anlamına geliyor.
            // 6-> İsimlendirme kuralları önemli!!!!!
            // 7-> Case sensitive, c# büyük küçük harf duyarlıdır.

            // 8-> ProductManager türündeki productManager yeni bri referans numarası almış ProductManager'dir.

            productManager.Add(product1); // 9-> Ekranda, ürün bilgilerini girdiğimi varsayalım ve ürün ekleme butonuna bastım.
                                          // 10-> Sadece, productManager.Add() demekle olmaz.
                                          // 11-> Ekleyeceğim ama ne ekleyeceğim.
                                          // 12-> Ne ekleyeceğim, aslında parametre ile göndereceğim şeydir.
                                          // 16-> product1 yazdığımda, ekleme işlemini gerçekleştirecek.
                                          // 17-> product türünde nesneyi gönderdim. ProductManager'de product isminde tutuyor olacak.

            Console.WriteLine(product1.ProductName);


            //***************************************************************************
            //***                                                                     ***
            //***    18-> int, double, bool.... Değer Tip                             ***
            //***    19-> Diziler, Cass, abstact class, interface... Referans Tip     ***
            //***                                                                     ***
            //***************************************************************************

            // 20-> Buraya gelsem desem ki
            //      int sayi=100;
            //      productManager.BiseyYap(sayi);
            //      Console.WriteLine(sayi);
            // 21-> Bu şekilde yazdığımda, BiseyYap fonksiyonunun içerisinde ben sayi'ye eşit olan değeri yolluyorum
            // 22-> Yani, sayi=100 olduğundan, 100 değerini yolluyorum. Bu kadar.
            // 23-> BiseyYap fonksiyonuna gittiğinde orada da BiseyYap(int sayi) parametresi olduğundan, burası yeni bir "sayi" olmuş oluyor.
            // 24-> buradaki sayi'den bağımsız. ve bu sayiyi bu fonksiyon içerisinde değiştirdiğimizde burayı etkilemiyor.
            // 25-> Dolayısıyla; ekrana sayi değerini yazdırmak istediğimde 100 olarak karşıma çıkmış oluyor

            // 26-> Ama ama, ProductManager productManager = new ProductManager();
            // 27->          productManager.Add(product1);
            // 28->          Console.WriteLine(product1.ProductName);
            // 29-> Gibi bir program yazdığımızda; Burası Referans Tip olmuş oluyor. Aslında Biz:
            // 30-> ProductManager productManager = new ProductManager(); bu satırda 101 gibi fiziksel bir odayı belirtiyoruz.
            // 31-> Bundan dolayı .Add işlemini yaptırdığımda o odaya gidiyor oradaki işlemi yapıyor, geliyor ve burada devam ediyor.
            // 32-> O odadaki işlemi değiştirdiği/ yaptığı için, burada ekrana yazdırma işlemimizde; (Mesela buradaki Masa'yı, fonks. içinde Kamera yaptık)
            // 33-> Odadaki değeri yazdırdığımız için, Masa değerini Kamera olarak değştirdiğimzden, Kamera İfadesini ekranda göreceğiz.
        }