‫Tekrar hoş geldiniz.
‫Bu videoda size özellikleri göstermek ve özelliklerin nasıl çalıştığını öğretmek istiyorum.
‫Tek bir video çok uzun olacağı için ve geçmişte mülkler hakkında bir video hazırladım ve göründüğü kadarıyla biraz
‫fazla kafa karıştırıcıydı.
‫Parçalayıp yeniden kaydetmeye karar verdim çünkü göründüğü kadar iyi değildi.
‫Dolayısıyla, tamamen kafa karıştırıcı olan başka bir video bulursanız, bu size hiç yardımcı olmaz.
‫O zaman lütfen bana haber verin çünkü bu kursun piyasadaki en iyi kurs olmasını istiyorum.
‫Tamam.
‫Yapmamız gereken şey, öncelikle yeni bir sınıf oluşturmaktır.
‫Şimdi project'e gidelim ve yeni bir sınıf ekleyelim, çünkü size özelliklerin temellerini öğretmek istiyorum
‫çünkü bunlar çok kullanacağımız önemli bir özellik ya da önemli bir kavram.
‫Bu nedenle, konunun tüm boyutlarını anlamanız gerçekten çok önemli.
‫Yeni bir sınıf oluşturarak başlıyoruz ve ben bu sınıfa box adını vereceğim.
‫Tamam mı?
‫Bu yüzden çok basit bir sınıf olun.
‫Yani bu kutu sınıfı sadece belirli miktarda değişkene sahip bir sınıf olacak.
‫Tamam.
‫Örneğin, kutunun hacmini uzunluğuna, yüksekliğine ve genişliğine bağlı olarak hesaplamak istiyoruz.
‫Tamam.
‫Şimdi bu değişkenleri oluşturalım ve şimdilik bunları herkese açık hale getireceğim.
‫Tamam mı?
‫Bunu genel uzunluk yapacağım, sonra bir tane daha ve bu da yükseklik olacak ve sonra genişliğe
‫ihtiyacımız var.
‫Ve son olarak, ses seviyesine de sahip olmak istiyorum.
‫Yani hacim bu kutunun nihai sonucu olacaktır.
‫Tamam.
‫Şimdi bir sürü değişkenim var.
‫Şimdi, bu değişkenler basit değişkenler değildir.
‫Bunlar aslında üye değişkenlerdir, yani sınıf düzeyinde, bu durumda sınıf kutusunun
‫değişkenleridir.
‫Dolayısıyla, tabiri caizse, kutunun tüm görünümü veya kutunun tüm yapısı üzerinde doğrudan bir etkiye sahiptirler.
‫Tamam.
‫Ve üye değişkenleri farklı bir şekilde ve hatta daha güvenli olan farklı bir yapıda nasıl kullanabileceğimizi
‫göreceğiz.
‫Çünkü buradaki sorun halka açık olmaları, dolayısıyla güvenli olmamaları.
‫Bunu nasıl düzeltebileceğimizi göreceğiz.
‫Öncelikle burada yeni bir yöntem oluşturalım.
‫Ve buna sadece display info diyeceğim, çünkü arkasındaki fikir sadece uzunluğu, genişliği,
‫yüksekliği gösterecek ve sonra hacmi hesaplayacak ve bize hacmin ne kadar büyük olduğunu söyleyecektir.
‫Tamam.
‫Sadece kısa ve doğru bir açıklama yazacağım.
‫Bu yüzden CW çift sekmesini giriyorum, bu da benim için bu konsol sağ satır ifadesini oluşturuyor.
‫Ve burada sadece uzunluk ilk giriş olacak ve yükseklik ikinci giriş olacak gibi bir
‫şey söyleyeceğim.
‫Ben de bu şekilde kullanıyorum ve bu üçüncü giriş.
‫Yani hacim ve ardından dördüncü giriş var.
‫Pekala, bu benim tüm sağ satır ifadem ve ardından kullanmak istediğim değişkenler uzunluk, yükseklik.
‫ile.
‫Ve hacim.
‫Şimdi, hacim uzunluk, yükseklik ve genişliğe dayalı olarak hesaplamam gereken bir şey.
‫Ben de bunu yapacağım.
‫Hacmin, uzunluk ile yüksekliğin çarpımının genişlik ile çarpımı olduğunu söyleyeceğim.
‫Bunu yapmak bu hacmi oluşturur veya hacmi hesaplar çünkü hacim buradaki hesaplamanın sonucudur.
‫Uzunluk, zaman, yan zamanlar, genişlik, hacim olacak.
‫Tamam.
‫Şimdi biraz daha okunabilir olması için satırlara bölmeme izin verin.
‫Tamam.
‫Şimdi bu yöntemle bilgi görüntüleyebiliyoruz.
‫Şimdi devam edip bu dosyayı kaydedelim ve program anahtarlarımıza gidelim.
‫Burada bu sınıfı kullanacağız.
‫Bu sınıftan bir nesne oluşturacağız.
‫Nesneleri nasıl yaratırız?
‫Pekala.
‫Bu yüzden yeni bir nesne oluşturuyorum.
‫Buna bir kutu diyeceğim ve yeni bir kutu olacak.
‫Bir sınıfın nesnesini veya bir sınıfın örneğini bu şekilde oluşturursunuz.
‫Bu yüzden bu box sınıfının bir örneğini oluşturuyorum.
‫Yani hemen hemen box türünde bir değişken ve box bizim kendi yarattığımız şey.
‫Şimdi yapabileceğim şey, değerleri atamaktır, böylece devam
‫edebilir ve diyebilirim ki, tamam, uzunluk üç olacak, sonra yükseklik dört olacak ve genişlik beş olacak, bunun gibi bir şey.
‫Tabii ki, bunun doğru kod olması için burada da bir eşittir işaretine ihtiyacım var.
‫Şimdi, yapabileceğim şey sadece devam etmek ve kutu noktasını çağırmak.
‫Ekran bilgisi.
‫Bu çok güzel.
‫Artık burada bu parlak çizgi ifadesine ihtiyacım yok.
‫Şimdi bu dosyayı kaydedebilir ve çalıştırabilirim.
‫Şimdi bu dosyayı çalıştıralım ve bize konsolda bilgi gösterecektir.
‫Böylece uzunluk serbest, yükseklik dört ve genişlik beş olduğuna göre hacim 60'tır.
‫Tamam.
‫Yani işe yaradı.
‫Bu harika.
‫Böylece bu ekran bilgisi işe yaradı ve sadece istediğimiz ayrıntıları gösterdi.
‫Şimdi yapabileceğimiz şey, değerleri ya da kutu sınıfımızın üye değişkenlerinin değerlerini
‫değiştirmektir.
‫Ve bunu yapabiliyoruz çünkü bunlar halka açık.
‫Değil mi?
‫Yani bu halka açık.
‫Bu halka açık.
‫Bu da halka açık.
‫Yani hepsi halka açık.
‫Şimdi, bu çok güvensiz bir koddur çünkü bu noktada, tamamen herkese açık olan üye etiketleri yazarsanız, herkes bunları herhangi
‫bir noktada değiştirebilir.
‫Böylece bir nesne oluşturabilen herkes ya da bir kutu nesnesi oluşturabilen
‫her sınıf, kutunun bu örneğinin tüm değerlerini değiştirebilecektir.
‫Yani bu kutuya erişimi olan herkes artık bunu değiştirebilir.
‫Bu da pek çok soruna yol açabilecek bir şeydir.
‫Yolun ilerisine gittiğinizde, programlama yaptığınızda, bir ekip oluşturduğunuzda, bunu bu şekilde yapmak gerçekten külfetli
‫hale gelebilir.
‫Yani daha iyi yollar var.
‫Bunu uygulamanın daha temiz yolları vardır çünkü belki uzunluğun ayarlanabilir olmasını istemezsiniz, belki de uzunluğun belirli
‫bir değere sahip olmasını istersiniz.
‫Kimse ayarlayamaz.
‫O zaman şunu yapabilirsiniz.
‫Sözlü erler.
‫Bu yüzden üye değişkenim uzunluk özel olacak ve ona varsayılan değer olarak üç atayacağım.
‫Artık oluşturduğum her kutuda üçün uzunluğu için bir değer olacak.
‫Dolayısıyla her kutunun uzunluğu üç inç veya metre ya da kullandığınız ölçüt her neyse o olacaktır.
‫Bu yüzden artık uzunluk atayamıyorum.
‫Gördüğünüz gibi, burada bir hata alıyorum.
‫Kutu uzunluğuna koruma seviyesi nedeniyle erişilemez.
‫Bu yüzden özel hale getirerek koruma seviyesini artırdık.
‫Bu yüzden artık ayarlayamıyoruz.
‫Peki bunu nasıl değiştirebiliriz?
‫Yapamayız.
‫Böyle olduğumuzdan değil.
‫Bu yüzden bir şeyler uygulamamız gerekiyor.
‫Kutunun uzunluğunu değiştirmek için alternatif bir yol uygulamamız gerekiyor.
‫Tamam.
‫Bunu yapmak için yapabileceğimiz şey setter ve getter adı verilen bir şeyi uygulamaktır.
‫Yani bu durumda, artık kutunun uzunluğuna bile erişemiyoruz.
‫Diyelim ki uzunluğu yazmak istiyorum.
‫Bu yüzden sağ satır kutu uzunluğunu konsol haline getirmek istiyorum ve ardından kutu nokta uzunluğuna erişeceğim.
‫Gördüğünüz gibi, kimliğim bana değişkeni bile göstermiyor.
‫Kutu nokta uzunluğuna erişemiyorum, bu yüzden değiştiremiyorum.
‫Ama ben de okuyamıyorum.
‫Tamam.
‫Bu yüzden ne alabiliyorum ne de ayarlayabiliyorum.
‫Yani bu ayarlama ve bu da değişkeni alma işlemidir.
‫Bunlar çok önemli ayarlama ve alma terimleridir, çünkü şimdi yapabileceğimiz şey, kutu sınıfımızda değişken
‫uzunluğunu ayarlamamıza veya almamıza izin verecek yöntemler oluşturabiliriz.
‫O zaman bunu yapalım.
‫Hadi bir tane yaratalım.
‫Sutter bu kadar aleni.
‫Voit set uzunluğu.
‫Yani bu değişken uzunluğu ayarlayacaktır.
‫Şimdi, neye ayarlayacak?
‫Burada bir değişkene veya parametreye ihtiyacı var.
‫Burada ayarlayabileceği bir değere ihtiyacı vardır.
‫Yani öyle olacak.
‫Burada bir tamsayıya ihtiyacım var ve buna sadece uzunluk diyeceğim.
‫Böylece uzunluğu ayarlayacaktır.
‫Şimdi uzunluğu ayarlayacağım, eşit uzunlukta.
‫Şimdi, bu kafa karıştırıcı ve aynı zamanda yanlış.
‫Yani burada bir uyarı alıyorum.
‫Burada bir hata bile almayın, çünkü gördüğünüz gibi renkler farklı, değil mi?
‫Yani bu renk ve bu renk biraz farklıdır.
‫Bu çok açık bir renk ve bu da daha koyu bir mavi renk.
‫Peki burada neler oluyor?
‫Çünkü burada aynı kelimeyi kullanıyoruz.
‫Burada uzunluk kullanıyoruz.
‫Burada, burada ve burada da uzunluk kullanıyoruz.
‫Yani buradaki uzunluk aslında şudur ya da üstte bu uzunlukta olmalıdır.
‫Eğer bunu doğru bir şekilde yapmak istiyorsam, bu anahtar kelimeyi kullanabilirim.
‫Bunu yaparak, tamam, uzunluğu değiştirmek istiyorum, diyorum.
‫Parçalar.
‫Kutu adı verilen bu sınıftan.
‫Bu yüzden bu nesnenin uzunluğunu değiştirmek istiyorum.
‫Yani bu durumda, kutu sınıfından oluşturulan nesnenin.
‫Pekala, ne kadar uzun olursa olsun bana bir görev verilecek.
‫Yani set length çağrıldığında geçen uzunluk ne olursa olsun.
‫Bu yöntem olacaktır.
‫Buradaki değişken, kutumun özel üye değişkeni olan uzunluğa ayarlanacaktır.
‫Bu çok önemli çünkü şimdi yapabileceğim şey, bunu yaparak kutunun uzunluğunu
‫değiştirmek.
‫Set uzunluğu.
‫Ayrıca uzunluğu örneğin üç olarak ayarlayabilirim ve şimdi kodu tekrar çalıştırabilirim ve mükemmel bir şekilde çalışacaktır.
‫Bir bakalım.
‫Tamam.
‫İşte buradayız.
‫Uzunluk serbesttir.
‫Yükseklik dörttür ve bu böyle devam eder.
‫Tamam.
‫Şimdi diyelim ki varsayılan değer olduğu için üç olmasını istemiyorum.
‫Şimdi, diyelim ki uzunluğu dört olarak almak istiyorum ve şimdi bunun çalıştığını ve hacmin de ayarlandığını
‫görebiliriz.
‫Yani hesaplama için bile işe yaradı.
‫Yani bu harika.
‫Şimdi bir sınıfın üye değişkeni olan bir değişkeni ayarlayabiliriz.
‫Yani bu önemli.
‫Farklı bir sınıftan bahsediyoruz.
‫Aynı sınıfta değil.
‫Şimdi yapabileceğimiz şey, özel olduğu için bu uzunluğa erişmeyi deneyebiliriz, değil mi?
‫Peki buna nasıl erişebilirim?
‫Çünkü belki de bu değişkene burada bir yerde gerçekten ihtiyacım vardır.
‫Uzunluğa erişmek istiyorum ama yapamıyorum.
‫Yani uygulayabileceğim şey getter adı verilen bir şey.
‫Bu yüzden halka açık olsun.
‫Ve bu durumda türün, döndürmek istediğim değişkenle aynı türde olması gerekir.
‫Ve bu durumda, bu uzunluğun değerini döndürmek istiyorum veya uzunluğun kendisini döndürmek istiyorum, değil
‫mi?
‫Yani int türündedir.
‫Dolayısıyla bu yöntem için bir int türü döndürmem gerekiyor.
‫Yani bu get uzunluğu olacak ve bu aynı zamanda adı kullanmak için bir gelenektir, büyük G ile get ve ardından almak
‫istediğiniz değişkenin adı.
‫Ve bu durumda değişken uzunluğunu almak istiyorum ve şimdi sadece uzunluğu döndürüyorsunuz.
‫Şimdi, daha kesin olmak için, bu nokta uzunluğunu döndürmek için, elbette sadece uzunluğu yazabilirsiniz,
‫ancak bunu eklediğinizde, burada üye değişkenden bahsettiğimiz tamamen açıktır.
‫Yani bu sınıfın en üst seviyesindeki değişkenden bahsediyoruz.
‫Yani herhangi bir yöntemin içinde değil ya da bu şekilde erişemezsiniz bile.
‫Ancak burada söz konusu olan belirli bir uzunluktur.
‫Yani üzerine tıkladığımda kimliğimin otomatik olarak işaretlendiğini görebilirsiniz.
‫Ayrıca altta bu uzunluğu da işaretliyor.
‫Şimdi bu public yöntemi kullanarak get length kullanarak uzunluğu alabilirim.
‫Halka açık olması da önemli çünkü halka açık olmasaydı erişemezdim.
‫Bu durumda, kutuyu tekrar kaydediyorum ve şimdi bu get length yöntemini çağırarak uzunluğu alıyorum
‫ve şimdi aniden tekrar çalışıyor.
‫Şimdi devam edebilirim ve elbette buraya da doğru şekilde yazabilirim ve tekrar çalıştıralım.
‫Ve kutu uzunluğu olduğunu söyleyecektir.
‫Ve bu durumda, dört.
‫Tamam.
‫Yani bu sadece mülkler için bir hazırlıktır, ancak önemli bir kavramdır.
‫Setters ve getters, bu da oldukça sık göreceğiniz bir şey.
‫Yani bu tamamen iyi bir yaklaşım, ancak çok daha kolay ve hızlı yaklaşımlar var.
‫Yani bu, bunu yapmanın sadece bir yolu.
‫Ancak size bunu daha da hızlı hale getirmenin ve aynı tür korumaya sahip olmanın iki hatta üç başka
‫yolunu göstereceğim.
‫Çünkü burada yaptığımız şeye kapsülleme deniyor.
‫Böylece uzunluğumuzun eksenini kapsüllemiş oluyoruz.
‫Wikipedia'nın tanımına göre kapsülleme, verilerin bu veriler üzerinde çalışan yöntemlerle birlikte
‫inşa edilmesi veya bir nesnenin bazı bileşenlerine doğrudan erişimin kısıtlanması anlamına gelir.
‫Biz de tam olarak bunu yapıyoruz.
‫Nesneler oluşturabileceğimiz bir nesnenin veya sınıf kutumuzun bir parçası olan uzunluk adlı bu bileşene
‫erişimi kısıtlıyoruz.
‫Tamam.
‫Ve bu setter ve getter'ları da yine onları ayarlamak için oluşturuyoruz.
‫Şimdi, işin güzel yanı, nasıl kapsüllemek istediğinizi tanımlayabilmenizdir.
‫Bu durumda, her ikisini de halka açık hale getirdim.
‫Peki ya bunların herkese açık olmasını istemiyorsam?
‫Ya böyle olmasını istiyorsam?
‫Uygun değil.
‫Diyelim ki kimsenin kutumun uzunluğunu ayarlayabilmesini istemiyorum.
‫Yani yapabileceğim şey, bunu özel yapmak.
‫Yani şimdi sadece.
‫Kutumuzdan veya kutunun kendisinden miras alan sınıflar uzunluğu dışarıdan ayarlayabilecektir.
‫Artık uzunluğu ayarlayamayacağız.
‫Yani burada uzunluğu ayarlamak, bu kod satırı artık çalışmıyor çünkü karar verdim, tamam, eğer herhangi
‫biri uzunluğu ayarlamak isterse, sadece sınıfın kendisi veya miras alan sınıflar olsun ama benim dışımdaki sınıflar olmasın
‫istedim.
‫Bu, buradan doğrudan değiştirebileceğiniz bir şeydir.
‫Şöyle de diyebilirsiniz, tamam, uzunluğun buranın dışına çıkmasına bile izin verilmeyecektir.
‫Tamam.
‫Ama şimdi güzel olan şey, devam edip bunları ayarlayabilmeniz.
‫Diyelim ki birisi hacmi almak istiyor.
‫Ve şimdi bu noktada, henüz ses seviyesini ayarlamadık.
‫Bunun yerine ne yapabiliriz, devam edebilir ve public int, get volume diyebiliriz.
‫Ve şimdi herhangi biri hacmi almak isterse, sadece hacmi iade etmeyeceğiz, ancak yapacağımız
‫şey geri dönmek olacaktır.
‫Bu nokta uzunluğu bu nokta yüksekliği ile çarpılır ve bu nokta genişliği ile çarpılır.
‫Dolayısıyla, herhangi biri hacmi almak isterse, hacmi doğrudan alamayacaktır.
‫Dolayısıyla bu değişkene, bu hacim değişkenine doğrudan erişemezler, ancak aslında hesaplamanın
‫sonucunu alırlar.
‫Şimdi bunu kaydedersem ve bunun yerine devam edersem ve burada get volume'u kullanırsam, box volume'dur ve şimdi kutunun
‫hacmini gösterecektir.
‫Diyelim ki kutular, hacim 60.
‫Şimdi genel olarak bu setter ve getter'larla yaptığımız şey, üye değişkene doğrudan değişkene
‫erişim vermememizdir, ancak yalnızca değişkeni ayarlayabilen bir yönteme erişim veririz ve bu değeri nasıl ileteceğimize
‫kendimiz karar verebiliriz, bu nedenle bu durumda get volume ile değeri nasıl vereceğimize karar verdik, tamam, size hacmin kendisini vermek
‫istemiyoruz, ancak size bir hesaplamanın sonucunu vermek istiyoruz.
‫Ya da diyebiliriz ki, tamam, eğer birisi hacmi almak isterse, hacim çarpı iki ya da bunun gibi
‫bir şey olacak diyeceğiz.
‫Ya da herhangi biri uzunluğu ayarlamak isterse ve bu olumsuz bir şeyse.
‫Diyelim ki bunu tekrar public yaptık, public void, set length, ve şimdi length olup olmadığını iki kez kontrol ediyoruz.
‫Sıfırdan küçüktür.
‫Bir hata atacağız, yeni bir istisna boyutu atacağız ya da bu, bir uzunluk sıfırdan büyük olmalıdır.
‫Tamam.
‫Dolayısıyla, uzunluk sıfırdan küçükse, bir istisna atarız ve bu da programımızı çökertir.
‫Yani bu satır asla yürütülmeyecektir.
‫Şimdi şunu deneyelim.
‫Programımıza gidelim ve kutu uzunluğumuzu negatif bir değere ayarlayalım.
‫Eksi dört olarak ayarlayalım.
‫Şimdi tekrar çalıştırdığımızda bir istisna elde ettiğimizi göreceğiz.
‫Yani programımız çöküyor ve burada şöyle bir istisna alıyoruz.
‫Sistem istisna uzunluğu sıfırdan büyük olmalıdır.
‫Gördüğünüz gibi, istisna fırlatarak kendi istisnalarımızı fırlatabiliriz.
‫Hatta istisnaların ne söylemesi gerektiğini ve bunun anlamlı olması gerektiğini bile söyleyebiliriz.
‫Yararlı ve hatanın ne olduğunu açıkça ortaya koyan bir şey olmalıdır.
‫Bu durumda, uzunluğu sıfırdan küçük bir değere ayarladığımız için bir hata oluşturduk.
‫Tamam.
‫İşte bu setter ve getter'ların gücü, çünkü merak edebilirsiniz, neden bu setter'lara ve getter'lara ihtiyacım
‫olsun ki?
‫Sadece setter ve getter'larım varsa neden uzunluğa doğrudan erişemiyorum?
‫Artık görüyorsunuz, neyin ayarlanacağına ve neyin unutulacağına aktif olarak karar verebilirsiniz.
‫Birisi bu değişkene erişmeye ve onu değiştirmeye ya da sadece geri almaya çalışırsa.
‫Tamam.
‫Yani bu tahmin ettiğimden çok daha uzun sürdü ve bu videoyu yapmayı planlıyordum.
‫Ama gerçekten her şeyi açıklığa kavuşturmak istedim çünkü bu, bir sonraki konsept
‫olan mülkler için önemli bir basamak olacak.
‫Şimdi tüm bunları nasıl özetleyebileceğimizi veya özellikleri kullanarak çok daha kısa hale getirebileceğimizi göreceksiniz.
‫Bu yüzden, özelliklerin nasıl kullanılacağını ve bu videoda öğrendiklerimizle nasıl ilişkili olduklarını kontrol
‫edeceğimiz bir sonraki videoya gidelim derim.
‫Umarım mantıklı gelmiştir.
‫Herhangi bir sorunuz varsa, lütfen bana bildirin.
‫Ve evet, kurs tartışmalarına bir yorum yazmanız yeterli.
‫Bu arada, geri bildirimde bulunan herkese çok teşekkür ederim çünkü kursu daha iyi hale getirmeme gerçekten yardımcı
‫oluyor.
‫Eğer bu kursu sadece pasif bir şekilde izliyorsanız, hiç sorun değil.
‫Ancak geri bildirimleriniz için gerçekten minnettarım, yapıcı oluyor ve bir şeyin hangi noktada net olmadığını anlamama
‫gerçekten yardımcı oluyor.
‫Çünkü sadece, tamam, bu video tamamen çöp derseniz, o zaman, tamam, beşinci dakikada A kavramını
‫anlamadım ya da başka bir şey derseniz, o zaman sorunun ne olduğunu çok daha iyi anlıyorum demek kadar yararlı
‫olmayacaktır.
‫Tekrar teşekkürler ve bir sonraki videoda görüşmek üzere.