Clear        


                
                    // Class Properties (Class'larda Özellikler)

using _02_ClassProperties.Demos.Bilgisayarlar;

namespace _02_ClassProperties
{
    internal class Program
    {
        // class'larda public olmayan alanlar oluşturup getter ve setter methodları yazmak yerine getter ve setter'ları içeren property'leri (özellikleri) kullanmak daha uygundur.
        // bu örnekteki Araba class'ına başka dosyada olmasına rağmen aynı namespace (_02_ClassProperties) altında olduğu için direkt olarak ulaşılabilir.

        // Yeni bir class oluşturduğumuzda default olarak gelen class template'ına (şablon) public eklemek için:
        // C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class
        // klasörünü açıp Class.cs dosyasını edit'liyerek "class" başına "public" ekliyoruz.



        static void Main(string[] args)
        {
            Araba araba1 = new Araba(); // önce class'tan obje oluşturulup daha sonra özellikleri set edilebilir.
            araba1.Marka = "Mini"; // property'deki set bloğu çalışır.
            araba1.Model = "Cooper S";
            //araba1.Turu = Turler.Binek; // Araba class'ında Turu özelliğinin ilk değer ataması olduğundan burada atama yapmaya gerek yoktur.
            araba1.TrafigeCikisTarihi = DateTime.Parse("02.12.2022");
            araba1.BeygirGucu = 184;
            araba1.KapiSayisi = 3;
            araba1.MotorHacmi = 1600;
            string araba1Text = "";
            araba1Text += $"Marka: {araba1.Marka}\n"; // property'deki get bloğu çalışır
            araba1Text += $"Model: {araba1.Model}\n";
            araba1Text += $"Tür: {araba1.Turu} ({(int)araba1.Turu})\n";
            araba1Text += $"Trafiğe Çıkış Tarihi: {araba1.TrafigeCikisTarihi.ToShortDateString()}\n";
            araba1Text += $"Beygir Gücü: {araba1.BeygirGucu} Hp\n";
            araba1Text += $"Kapı Sayısı: {araba1.KapiSayisi} kapı\n";
            araba1Text += $"Motor Hacmi: {araba1.MotorHacmi} cm3";
            Console.WriteLine(araba1Text);



            Araba araba2 = new Araba() // veya class'tan obje oluşturulurken özellikleri set edilebilir.
            {
                Marka = "Fiat",
                Model = "Doblo",
                Turu = ArabaTipi.Ticari,
                TrafigeCikisTarihi = new DateTime(2023, 1, 1),
                BeygirGucu = 68,
                KapiSayisi = 5,
                MotorHacmi = 1300
            };
            Console.WriteLine($"Marka: {araba2.Marka}\nModel: {araba2.Model}\nTür: {araba2.Turu}\nTrafiğe Çıkış Tarihi: {araba2.TrafigeCikisTarihi.ToShortDateString()}\n" +
                $"Beygir Gücü: {araba2.BeygirGucu} Hp\nKapı Sayısı: {araba2.KapiSayisi} kapı\nMotor Hacmi: {araba2.MotorHacmi} cm3");



            #region Demos
            BilgisayarDemo.Calistir();
            #endregion
        }
    }
}