Clear        


                
                    using _13_Polymorphism.Models.Bases;

namespace _13_Polymorphism.Models
{
    class PcOyunu : VideoOyunu // PcOyunu sub (child) class'ı VideoOyunu base (parent) class'ından miras alır,
                               // PcOyunu bir VideoOyunu'dur şeklinde de okunabilir (is-a relationship)
    {
        #region Properties
        /// <summary>
        /// Oyunun çalışabileceği işletim sistemleri.
        /// </summary>
        public string[] IsletimSistemleri { get; set; }

        /// <summary>
        /// Oyunun Steam'de olup olmaması.
        /// </summary>
        public bool SteamOyunuMu { get; set; }



        // 1. yöntem:
        //public string IsletimSistemleriGosterim // sadece IsletimSistemleri dizisine göre gösterim için kullanılacak, değer atanamayacak (set edilemeyecek)
        //{
        //    get
        //    {
        //        // işletim sistemlerini IsletimSistemleri dizisinde (koleksiyon) döngüyle turlayarak isletimSistemleri değişkenine
        //        // \n (new line) escape sequence'ı (escape character) ile ayırarak concatenate ediyoruz (art arda ekleme):
        //        string isletimSistemleri = string.Empty; // string isletimSistemleri = "";

        //        if (IsletimSistemleri is not null) // if (IsletimSistemleri != null)
        //        {
        //            foreach (var isletimSistemi in IsletimSistemleri)
        //            {
        //                isletimSistemleri += isletimSistemi + "\n";
        //            }

        //            // döngü bittikten sonra da en sondaki \n escape sequence'ını temizliyoruz:
        //            if (!string.IsNullOrEmpty(isletimSistemleri))
        //                isletimSistemleri = isletimSistemleri.Remove(isletimSistemleri.Length - 1);
        //        }

        //        // oluşturduğumuz isletimSistemleri değişkenini dönüyoruz
        //        return isletimSistemleri;
        //    }
        //}
        // 2. yöntem:
        public string IsletimSistemleriGosterim => string.Join("\n", IsletimSistemleri);



        public string SteamOyunuMuGosterim => SteamOyunuMu ? "Evet" : "Hayır"; // sadece getter (get methodu) için bu şekilde de yazılabilir,
                                                                               // sadece SteamOyunuMu özelliğine göre gösterim için kullanılacak (readonly: sadece okunur),
                                                                               // değer atanamayacak (set edilemeyecek)
        #endregion
    }
}