‫Tekrar hoş geldiniz.
‫Bu videoda, özellikler, setter ve getter'lar ile devam edeceğiz.
‫Setter ve getter'ları incelediğimiz son videoda başladık ve şimdi aynı kodu kullanacağız
‫ve biraz genişleteceğiz.
‫Böylece, bir üye değişkenin değerini ayarlamak için setter'ları kullanabileceğimizi ve bunu nasıl ayarlamak istediğimizi kendi mantığımızla
‫uygulayabileceğimizi gördük.
‫Böylece diyebiliriz ki, tamam, eğer değeri ayarlamak istiyorsan, benim kurallarıma uymak zorunda, böylece
‫olması gereken kendi kurallarımızı tanımlayabiliriz.
‫Takip ettim.
‫Ve sonra da ayarlayabileceğimiz getter'larımız var.
‫Böylece, tamam, bu durumda size vereceğim değişkeni almak istiyorsanız, uzunluk, yükseklik ve genişliğin
‫çarpımının sonucunu söyleyebiliriz, böylece bunları istediğiniz gibi değiştirebilirsiniz.
‫Şimdi mülklere ve tüm bunların birbiriyle nasıl bağlantılı olduğuna bir göz atalım.
‫Şimdi bir özellik oluşturalım ve height adında bir public özellik oluşturacağım ve bu height, height
‫üye değişkenimi ayarlayacak.
‫Yani daha önce halka açıktı.
‫Şimdi bunu özel yapacağım, böylece yüksekliğe dışarıdan erişemeyeceğiz.
‫Yani burada, yüksekliği ayarlamak istersem, artık bunu yapamayacağım.
‫Şimdi bu hatayı alıyorum.
‫Tamam mı?
‫Şimdi yukarıdaki yüksekliğimize erişebilmek için yükseklik özelliğimizi kullanalım.
‫Peki bunu nasıl yapacağız?
‫Her şeyden önce, bu özelliği başlangıçta büyük H ile kullanıyoruz.
‫Genelde mülkleri bu şekilde kullanırsınız.
‫Bu bir konvansiyon ve C programlama.
‫Özellikler büyük harfle başlar ve şimdi burada getter'ımı oluşturabilirim ve yüksekliği
‫döndürebilirim ve setter'ımı oluşturabilirim.
‫Buradaki yüksekliği, örneğin atanan değer olacak şekilde ayarlayabilirim.
‫Şimdi, bu değer anahtar kelimesi nedir?
‫Burada yaptığımız şey, temelde daha önce yaptığımızla aynıdır; burada uzunluğu ayarlar ve uzunluğu
‫alırız.
‫Ama şimdi, tabiri caizse, geçidimiz mülk yüksekliğimiz.
‫Dolayısıyla, unutulmaz yüksekliğe erişmek veya yüksekliği değiştirmek istiyorsanız, bunu height özelliği aracılığıyla yapmanız gerekir.
‫Şimdi yapabileceğiniz şey, ayarladığınız değerin yüksekliğe ayarlanacağıdır.
‫Şimdi burada programımıza gittiğimizde yüksekliği ayarlamaya çalıştığımızda gerçekte nasıl görünüyor?
‫Üye değişkene doğrudan erişerek artık bunu yapamayız.
‫Ancak mülke erişirseniz, görebileceğiniz gibi, yükseklik burada mevcuttur ve burada görebileceğimiz bu
‫araç simgesidir.
‫Yani bu genellikle bir mülke erişmek istediğinizde sahip olduğunuz simgedir ve bunun çalıştığını görebilirsiniz.
‫Böylece yüksekliği şimdi ayarlayabiliriz ve bunu yaparsak, bu eşittir işaretinin arkasında veya bu eşittir
‫işaretinden sonra ne varsa, buradaki değer o olacaktır, bu değer ve yükseklik olarak ayarlanacaktır.
‫Dolayısıyla bu değer, bu uzunluk kümesini oluşturduğumuzda daha önce sahip olduğumuz uzunluk ile hemen hemen aynı şeydir.
‫Hemen hemen aynı konsept, ama biz bunu daha kısa bir şekilde yapıyoruz, değil mi?
‫Burada, bir setter'a sahip olmak isteseydik, tüm bu koda sahip olacağımızı görebilirsiniz.
‫Elbette bu koda burada ihtiyacımız yoktu.
‫Tamam mı?
‫Ama yine de, tüm bu kodlara sahiptik ve şimdi bu süper kısa koda sahibiz.
‫Bu da ayarlayıcı.
‫Tabii ki burada bunu da ayarlayabiliriz.
‫Şimdi, diyelim ki değer sıfırdan küçükse, yüksekliğimizi eksi değer olarak ayarlayacağız ve aksi takdirde yükseklik,
‫eşit değer olacak.
‫Şimdi programımıza gidelim ve yüksekliği eksi dört olarak ayarlayacağım.
‫Ve bunu daha önce uzun uzun söyledik çünkü bu hatayı daha önce yarattık.
‫Doğru.
‫Şimdi yüksekliği eksi dört olarak ayarlayalım ve kodumuzu çalıştıralım.
‫Ve bunun işe yaradığını göreceğiz.
‫Yani uzunluk için yükseklik, genişlik için beş.
‫Neden peki?
‫Değeri eksi dört olarak ayarlamamıza rağmen mi?
‫Bana ilettiğiniz yüksekliğin değeri negatifse, bunu çarpacağımı söylemiştik.
‫Yani değer sıfırdan küçükse, eksi bir ile çarpacağım.
‫Bu yüzden tekrar pozitif yapacağım.
‫Ve eğer pozitifse, o zaman sadece yapın veya değeri atayın.
‫Ya da sıfırsa da sorun değil.
‫Tamam.
‫Yani mülklerle yapabileceğimiz şey budur.
‫Şimdi, bu bir özelliğin uygulanmasıdır.
‫Elbette yapabileceğiniz şey, bir üye değişkene sahip olmadan sadece özelliği kullanmaktır.
‫Dolayısıyla, burada sahip olduğumuz bu üye değişkeni hiçbir şekilde gerekli olmayan bir şey olabilir.
‫Yani bunu bile atlayabiliriz.
‫Diyelim ki genişliği bir üye değişken olarak ayarlamak istemiyorum, bunu bir özellik olarak almak istiyorum.
‫Şimdi size bir mülk oluşturmanın başka bir yolunu göstereceğim.
‫Ve bu çok çok daha hızlı.
‫Yani sadece P, R, o, p kullanıyorsunuz ve sonra çift dokunuyorsunuz ve bu sizin için bu özelliği oluşturacaktır.
‫Şimdi sadece türü girebilirsiniz ve ben de diyeceğim ki, tamam, bu bir tamsayı olacak.
‫Sonra tekrar tab tuşuna basarsınız ve şimdi ona bir isim verebilirsiniz.
‫Bu yüzden buna genişlik diyeceğim.
‫Şimdi burada neler oluyor?
‫Bu, sadece C sharp tarafından anlaşılan bir koddur ve hatta bizim için otomatik olarak kimliğimizle oluşturulmuştur.
‫Doğru.
‫Sadece noktalı virgül al noktalı virgül koy diyor.
‫Yani bu sadece varsayılan bir getter ve varsayılan bir setter olacağı anlamına gelir, bu da sadece şu
‫anlama gelir, tamam, genişliğe erişmek istiyorsanız, bu özelliğin genişlik değişkenini kullanarak erişebilirsiniz.
‫Ve eğer ayarlamak istiyorsanız, sadece kullanabilirsiniz.
‫Peki bizim durumumuzda bu ne anlama geliyor?
‫Bu, artık sadece bir değer atayarak bu özelliğe erişebileceğimiz anlamına gelir.
‫Ve eğer yazmak istersek.
‫Yani ona erişmek istiyorsak, kutu nokta ile kutular.
‫ile.
‫Yani burada mülke doğrudan erişebiliriz.
‫Tamam.
‫İşte aradaki fark bu.
‫Yani içsel olarak biz yaratmışız gibi aynı şey.
‫O.
‫ile.
‫Bu üye değişkene tekrar sahip olarak buna geri dönelim.
‫Yani dahili olarak, bu public end'i şu şekilde oluşturmamla aynı şey ve şimdilik
‫bunu yorumlayacağım ve bir getter'ım var, böylece get genişliği döndürüyorum.
‫Ya da bu nokta ile.
‫Ve değerle başladıklarını söylediğim ayarlayıcı.
‫Tamam.
‫Yani bu gerçekten.
‫Bu.
‫Buradaki kod da aslında bununla aynı şey.
‫Ve dahili olarak, kodu derlediğinizde de olan şey budur.
‫Yani derleyici bunu otomatik olarak yapar.
‫Bizim için sadece şunu söylüyor: Tamam, bu kod satırına sahipseniz, dahili olarak burada sahip
‫olduğunuz bu kodmuş gibi davranacağım, sadece çok daha kısa ve bu kodu oluşturmak çok daha kolay.
‫Tamam.
‫Bu yüzden bunu yorumlayacağım çünkü buradaki kısa yaklaşımı gerçekten
‫seviyorum ve bunu şu şekilde yorumlayalım.
‫Ve artık bu üye değişkenine ihtiyacım yok.
‫Tamam.
‫Çünkü burada değişkeni hatırlamamız gerekiyordu çünkü genişliği ayarladım ve bu durumda üye değişken genişliğini
‫ayarladım.
‫Ben ayarlamadım.
‫Genişliğin kendisini ayarlayamıyorum.
‫Bunun yerine ben burada yazsaydım.
‫Ve şimdi bunu yaparsam, StackOverflow olarak yarattığım şeyle.
‫Bu yüzden sürekli bir şeyler ayarlamaya çalışıyorum ve burada sonsuz bir döngü olacak, ki bu iyi değil.
‫Bu yüzden buradaki örnek için değişkenleri hatırlamam gerekiyordu.
‫Tamam.
‫Ama içeride, şöyle ya da böyle davranacak.
‫Yani dahili olarak burada sahip olduğumuz kod gibi davranıyor.
‫Sadece bizim için çok daha kısa.
‫Tamam.
‫Şimdi size küçük bir meydan okuma.
‫Lütfen devam edin ve burada genişlikte yaptığımız gibi hacim için onu çevreleyen bir özellik oluşturun.
‫Tamam.
‫Yani hemen hemen buradaki örneğimizin aynısı, sadece genişliği değil sesi ayarlayacak.
‫Lütfen bunu deneyin.
‫Kendi mülkünüzü oluşturun, yazın.
‫Kısa yaklaşma yapmayın veya kısa bir yaklaşma kullanmayın.
‫Tamam.
‫Bunun anlamlı olması için, öncelikle birimimizi özel yapmamız gerekir ve ardından birimimiz için bir özellik oluşturabiliriz.
‫Yani büyük V harfi ile kamu int hacmi elde edilecek.
‫Ses seviyesini döndürün ve ardından ayarlayın.
‫Bu başlangıç hacmi şuna eşittir.
‫Değer.
‫Bu, birim için oluşturduğumuz özelliktir.
‫Umarım bunu yapabilmişsinizdir.
‫Elbette, bu hacimden tamamen kurtulabilir ve genişlikte yaptığımız gibi oluşturabilirdiniz.
‫Çok daha hızlı, ama sadece size bunun çok havalı olduğunu göstermek istedim.
‫Şimdi.
‫Buradaki önemli kısım, hacim değişkeni veya bu özellik hakkında düşünebilmemiz ve neden
‫veya hangi noktada değiştirmek veya almak mantıklı?
‫İkisini birden yapmak mantıklı mı?
‫Çünkü hacim, genişlik, yükseklik ve uzunluğa bağlı olarak hesaplanan bir şeydir.
‫Şimdi, ses seviyesini doğrudan ayarlamak mantıklı mı?
‫Şey, hayır, ben öyle derdim.
‫Bence ses seviyesini ayarlamak hiç mantıklı değil, bu yüzden tüm bu ayarlayıcıdan kurtulabiliriz ve sadece bir alıcıya
‫sahip olabiliriz.
‫Şimdi, ses seviyesinin kendisi, ses seviyesini asla ayarlamayız.
‫Her zaman hesaplıdır.
‫Yani sadece hacmi iade etmek mantıklı mı?
‫Aslında öyle değil, çünkü aslında bu noktada yapmamız gereken
‫şey, hacmin uzunluk, yükseklik ve genişliğin çarpımı olacağını hesaplamaktır.
‫Yani şimdi çok daha anlamlı.
‫Dolayısıyla hacimle birlikte geri döndüğümüz şey çok daha anlamlı.
‫Eğer birisi hacim almak istiyorsa, alacağı şey budur.
‫Şimdi, elbette, burada altta küçük bir hata veya artık ihtiyacımız olmayan bazı get volume yöntemleri oluşturduk.
‫Ve aynı zamanda burada, genişlik şu anda eriştiğimiz mülktür.
‫O olmayacak.
‫Artık değişkeni hatırlayın çünkü artık o yok.
‫Ve tabii ki CSS programımızda da artık her şeyi ayarlayabiliyoruz.
‫Böylece artık genişliğe doğrudan erişebiliriz ve volume üye değişkenine değil, volume özelliğine doğrudan
‫erişebiliriz.
‫Tamam.
‫Şimdi burada son bir adım atalım.
‫Bu da bir kurucu eklemektir.
‫Yani halka açık.
‫Kutu.
‫INT uzunluğu.
‫INT.
‫Yükseklik ve son.
‫Genişlik.
‫Şimdi bir kutu oluşturursak, tüm bu değerlere sahip olmak istiyorum ve kutu oluşturulduktan
‫sonra bana verilen uzunluk bu nokta uzunluğu olmalıdır.
‫Daha sonra verilen yükseklik, bu nokta yüksekliği olmalıdır.
‫Dolayısıyla, buna verilen yükseklik, üye değişkenimiz olan burada sahip olduğumuz yükseklik olmalıdır.
‫Genişliğimiz sonuncusu ve bu da mülk.
‫Bu yüzden bize verilen genişliğe ayarlıyoruz.
‫Şimdi, bu durumda, elbette bu anahtar kelimeyi atlayabilirsiniz.
‫Sadece genişlik diyebilirsiniz, çünkü bu sınıfın özelliğinden bahsettiğimiz de açıktır.
‫Yani burada bu anahtar kelimeye ihtiyacınız yok.
‫Şimdi, birisinin sorduğu önemli bir şey var ve bunu gerçekten açıklığa kavuşturmak istiyorum.
‫Yani bu nokta uzunluğu, eşit uzunluk işe yarar, ancak uzunluk bu nokta uzunluğuna eşittir mantıklı değildir.
‫Dolayısıyla, buradaki bu satır bir anlam ifade etmiyor çünkü uzunluk buradaki kısımdır, bu gerçekten sadece parametredir
‫ve bize verilen değerdir.
‫Dolayısıyla, bize verilen değeri ayarlamak istemiyoruz, ancak özelliğimizin veya üye değişkenimizin değerini
‫ayarlamak istiyoruz ve burada yaptığımız da bu.
‫Yani bu durumda, yaptığımız şey bu.
‫Üye değişkenimizin değerini ayarlıyoruz.
‫Pekala, şimdi bu kutuyu kullanalım.
‫Şimdi kutuları oluşturalım, çünkü artık tüm bunları yapmamıza gerek yok.
‫Artık değerleri doğrudan ayarlamamıza gerek yok, ancak bunları kutumuzun oluşturulmasında ayarlayabiliriz.
‫Bu yüzden sadece üç, dört ve beş değerlerini atayacağım.
‫Yani uzunluk üç.
‫Yükseklik ya da aslında yükseklik dört, genişlik beştir.
‫Ve şimdi bunu çalıştırırsak, bizim için genişliği ve hacmi görüntüleyecektir.
‫İşte bu kadar.
‫Beş cilt 60'tır.
‫Tamam.
‫İşe yarıyor gibi görünüyor.
‫Şimdi yapabileceğimiz şey, özelliğimize erişerek genişliği ayarlamaktır.
‫Diyelim ki şimdi genişliği on olarak ayarladık ve bu kodu tekrar çalıştırdık.
‫Ve bir kez daha bölme ile böylece verilen varsayılan değerin ve ardından belirlediğimiz yeni değerin yazdırıldığını
‫görebiliriz.
‫Bu yüzden genişliği on olarak ayarladık ve şimdi genişliği söylüyor ve genişliği buna göre hesaplıyor.
‫Yani üç kere, dört kere on, yirmide bir eder.
‫Bu yeni cilt.
‫Tamam.
‫Toplanıyor.
‫Yaptığımız şey, öncelikle bir grup üye değişken oluşturmaktı.
‫Bunları private yaptık, böylece bu sınıfın kendisi dışında hiç kimse bunlara doğrudan erişemez.
‫Dolayısıyla başka hiçbir sınıf bunlara doğrudan erişemez.
‫Bunlara yalnızca oluşturduğumuz özelliklerimiz veya setter ve getter'larımız aracılığıyla erişebilirler.
‫Böylece uzunluğu elde eden set uzunluğuna sahip oluruz.
‫Bu nedenle, herhangi biri uzunluk değişkenine erişmek isterse, set length ve get length kullanma yoluna gitmelidir.
‫Bu tamamen geçerli bir yaklaşımdır ve bunu göreceksiniz.
‫Ve evet, bu yaklaşımlarla takip edilmesini istediğiniz mantığı tanımlayabilirsiniz.
‫Örneğin birisi bir değişken ayarlamak ya da bir değişken almak isterse.
‫Şimdi bunu yapmanın başka bir yolu da doğrudan bir özellik kullanmaktır.
‫Yani bir özellik kullanıyorsanız, onu büyük harfle çağırmanız gerekir ve ardından
‫bir getter vb. uygulayabilirsiniz. ancak yalnızca getter'ı ya da yalnızca setter'ı uygulamaya da karar verebilirsiniz.
‫Elbette burada her ikisini de uygulamıyoruz.
‫Ayrıca ayarlayabilirsiniz.
‫Değerler doğrudan, böylece üye değişkenleri ayarlayabilirsiniz.
‫İşte burada yaptığımız şey buydu.
‫Tabiri caizse, burada en üstte oluşturduğumuz ve üye değişkenimiz olan yüksekliğimize özelliğimiz olan Yükseklik
‫adında bir ağ geçidi ekliyoruz.
‫Ya da doğrudan şu yolu izledik: Tamam, burada doğrudan çok basit bir otomatik uygulanan
‫özelliğe sahip olacağız ve bunun için ekstra bir üye değişkene ihtiyacımız yok.
‫Tüm bu değişkenlerin yalnızca özelliklere sahip olması için tüm yolu kullanabilirdik.
‫Yani bunu çok basit hale getirebilirdik.
‫Ama sadece üç özelliğe sahip olmak gibi.
‫Bu.
‫Tüm bunlardan kurtulmak ve sadece bir genel veya apr0p çift dokunuşa sahip olmak ve bu daha sonra uzunluk sadece ayarlanacak
‫ve daha sonra yükseklik ve benzeri için aynı şey olacaktır.
‫Ama ben sadece size tüm farklı yolları ve göreceğiniz tüm farklı yolları göstermek
‫istedim.
‫Ve çoğu zaman bir şey gördüğünüzde veya özellikleri kullandığınızda, onları çoğu zaman bu şekilde göreceksiniz.
‫Peki diğer uygulanan özellik ile en kolay ve en hızlı yol nedir?
‫Size gösterdiğim tüm farklı yaklaşımları kullanmanız gerekmeyecektir, bu gerçekten önemlidir.
‫Tüm farklı yapıları kullanmanız gerekmeyecektir, ancak bazı durumlarda setter'ı uygulamanız gerekecektir.
‫Bazı durumlarda belirli bir getter'ı uygulamanız gerekir ve artık bunu nasıl yapacağınızı biliyorsunuz.
‫Kısacası, herhangi bir sorunuz varsa, neden bu yaklaşıma ihtiyacınız olsun ki?
‫Bunlar sadece mülk değerlendiricilerinde ek bir mantık gerekmediğinde kullanılır.
‫Yani mülk tanımlarında ve evet.
‫Getiriciler ve ayarlayıcılar.