Clear        


                
                    using _11_AbstractClasses._1_ProductAndStore;
using _11_AbstractClasses._2_Dersler;
using _11_AbstractClasses.Demos.Sekiller;
using System.Globalization;

namespace _11_AbstractClasses
{
    internal class Program
    {
        // Abstract Class'lar (soyut sınıflar) kalıtımda base (parent) class'ın başına abstract yazılarak bu sınıfın soyutlaştırılması ile
        // bu sınıf üzerinden obje new'lenmesinin engellenmesini sağlar.
        // Kalıtımda genelde base class'lar üzerinden obje new'lenmez çünkü esas new'lenerek kullanılacak objeler sub class tipinde objelerdir,
        // dolayısıyla base class initialize edilmeyecek şekilde soyutlaştırılarak sub class'lar için bir altyapı olarak hazırlanır.
        // Base class'ların, özellikle abstract olanların, adlarının sonuna Base kelimesi eklenir, örneğin RepoBase, KayitBase vb.



        static void Main(string[] args)
        {
            #region Abstract Class'lar (Product and Store)
            ProductAndStoreDemo.Calistir();
            #endregion



            #region Abstract Class'larda Virtual ve Abstract Kullanımı (Dersler)
            DerslerDemo.Calistir();
            #endregion



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