Üye İşlevleri – SEO Hizmeti Sunma – SEO Hizmeti – SEO Hizmeti Ücretleri – SEO Hizmeti Yaptırma
Üye İşlevleri
Önceki örnekteki yapıcı, bir üye işlev örneğidir; nesnenin bir örneğinde çağrılan bir kod parçasıdır. Yapıcılar, yalnızca new ile bir nesne örneği oluşturulduğunda otomatik olarak çağrılabilir.
Değerleri almak için iki üye işlevi çağırmak zorunda olmak her zaman uygun olmayabilir, bu nedenle tek bir işlev çağrısıyla her iki değeri de elde edebilmek güzel olurdu. Bununla birlikte, yalnızca bir dönüş değeri vardır. Çözümlerden biri, üye işleve iletilen parametrelerin değerlerini değiştirebilmeniz için referans (veya ref) parametrelerini kullanmaktır.
Bu kodda parametreler, işlev çağrısında olduğu gibi ref anahtar sözcüğü kullanılarak bildirilmiştir. Bu kod çalışması gerekir; ancak derlendiğinde, x ve y ref parametreleri için başlatılmamış değerlerin kullanıldığını söyleyen bir hata mesajı üretir.
Bu, değişkenlerin, değerleri ayarlanmadan işleve geçirildiği ve derleyicinin başlatılmamış değişkenlerin değerlerinin açığa çıkmasına izin vermeyeceği anlamına gelir. Bunu aşmanın iki yolu var. İlki, değişkenleri bildirildiklerinde başlatmaktır.
Kod şimdi derlenir, ancak değişkenler yalnızca GetPoint() çağrısında üzerine yazılmak üzere sıfır olarak başlatılır. C# için başka bir seçenek de GetPoint() işlevinin tanımını bir ref parametresi yerine bir out parametresi kullanacak şekilde değiştirmektir.
Bazen aynı işi yapan ancak farklı parametreler alan iki fonksiyona sahip olmak faydalı olabilir. Bu, özellikle yeni bir örnek oluşturmanın birkaç yolu olduğunda yapıcılar için yaygındır.
Sınıfın iki yapıcısı vardır: biri x ve y değerleri ile çağrılabilen ve diğeri başka bir nokta ile çağrılabilen. Main() işlevi her iki yapıcıyı da kullanır: biri x ve y değerinden bir örnek oluşturmak için, diğeri ise zaten var olan bir örnekten bir örnek oluşturmak içindir.
Aşırı yüklenmiş bir işlev çağrıldığında, derleyici, çağrıdaki parametreleri işlev için bildirilen parametrelerle eşleştirerek uygun işlevi seçer.
Mühendis, bu senaryo için temel sınıf olarak görev yapacak. Özel alan adını ve korumalı alan billingRate’i içerir. korumalı değiştirici, özel ile aynı erişimi verir; ancak, bu sınıftan türetilen sınıfların da alana erişimi vardır. Bu nedenle Protected, bu sınıftan türetilen sınıflara bir alana erişim vermek için kullanılır.
Korumalı erişim, diğer sınıfların sınıfın dahili uygulamasına bağlı olmasına izin verir ve bu nedenle yalnızca gerektiğinde verilmelidir. Örnekte, türetilmiş sınıflar ona erişebileceğinden billingRate üyesi yeniden adlandırılamaz. Korunan bir özelliği kullanmak genellikle daha iyi bir tasarım seçimidir.
Mühendis sınıfı ayrıca, yapılan çalışma saatlerine göre ücreti hesaplamak için kullanılabilecek bir üye işlevine sahiptir. CivilEngineer sınıfı, Engineer’dan türetildiği için, sınıfın tüm veri üyelerini devralır (ancak özel olduğu için üye adına erişilemez) ve ayrıca CalculateCharge() üye işlevini de devralır.
Yapıcılar miras alınamaz, bu nedenle CivilEngineer için ayrı bir tane yazılır. Kurucunun yapacak özel bir şeyi yoktur, bu nedenle temel sözdizimini kullanarak oluşturucuyu Mühendis için çağırır. Temel sınıf oluşturucuya yapılan çağrıyı atlarsanız, derleyici temel sınıf oluşturucuyu hiçbir parametre olmadan çağırır.
CivilEngineer’ın ücretleri hesaplamak için farklı bir yolu vardır; minimum ücret bir saatlik süre içindir, yani CalculateCharge()’ın yeni bir sürümü var.
C Nesne Yönelimli PROGRAMLAMA örnekleri
Nesne Yönelimli C PROGRAMLAMA Kılavuzu PDF
Nesneye yönelik programlama özellikleri
C Konuları
C nesne tabanlı programlama Kitap
C ile Web programlama
C pdf Türkçe
Dev-C++
Mühendis Dizileri
Bu, yalnızca birkaç çalışanın olduğu ilk yıllarda iyi çalışır. Şirket büyüdükçe, bir dizi mühendisle uğraşmak daha kolaydır. CivilEngineer, Engineer’dan türetildiği için, bir Engineer tipi dizisi her iki tipi de tutabilir. Bu örnek, mühendisleri bir diziye yerleştiren farklı bir Main() işlevine sahiptir.
İnşaat Mühendisliği, Mühendis’ten türetildiği için, bir İnşaat Mühendisi örneği, bir Mühendis örneğinin gerekli olduğu her yerde kullanılabilir.
Mühendisler diziye yerleştirildiğinde, ikinci mühendisin bir Mühendis değil, gerçekten bir İnşaat Mühendisi olduğu gerçeği kayboldu. Dizi bir Engineer dizisi olduğundan, CalculateCharge() çağrıldığında, Engineer’ın sürümü çağrılır.
İhtiyaç duyulan şey, bir mühendisin tipini doğru bir şekilde tanımlamanın bir yoludur. Bunu, Engineer sınıfında onun ne tür olduğunu gösteren bir alana sahip olarak yapabilirsiniz. Mühendisin türünü belirtmek için sınıfları bir enum alanıyla yeniden yazmak aşağıdaki örneği verir.
Tip alanına bakarak, Engineer’daki fonksiyonlar nesnenin gerçek tipini belirleyebilir ve uygun fonksiyonu çağırabilir.
Ne yazık ki, temel sınıf artık çok daha karmaşık hale geldi; Bir sınıfın türünü önemseyen her işlev için, olası tüm türleri kontrol eden ve doğru işlevi çağıran bir kod vardır. Bu çok fazla ekstra kod ve 50 çeşit mühendis olsaydı savunulamaz olurdu.
Daha da kötüsü, temel sınıfın çalışması için tüm türetilmiş sınıfların adlarını bilmesi gerekir. Kod sahibinin yeni bir mühendis için destek eklemesi gerekiyorsa, temel sınıf değiştirilmelidir. Temel sınıfa erişimi olmayan bir kullanıcının yeni bir mühendis türü eklemesi gerekirse, bu hiç çalışmaz.
Sanal İşlevler
Bunun temiz bir şekilde çalışmasını sağlamak için nesne yönelimli diller, bir işlevin sanal olarak belirtilmesine izin verir. Sanal, bir üye işleve çağrı yapıldığında, derleyicinin nesnenin gerçek türüne (yalnızca referansın türüne değil) bakması ve bu türe göre uygun işlevi çağırması gerektiği anlamına gelir.
CalculateCharge() ve TypeName() işlevleri artık temel sınıfta virtual anahtar sözcüğüyle bildiriliyor ve temel sınıfın bilmesi gereken tek şey bu. İstenirse, türetilmiş her sınıfın CalculateCharge() ve TypeName()’i geçersiz kılabileceğini bilmek dışında türetilmiş türler hakkında herhangi bir bilgiye ihtiyacı yoktur.
Türetilmiş sınıfta, işlevler geçersiz kılma anahtar sözcüğüyle bildirilir; bu, temel sınıfta bildirilen işlevle aynı işlev oldukları anlamına gelir. geçersiz kılma anahtar sözcüğü eksikse, derleyici işlevin temel sınıfın işleviyle ilgisiz olduğunu varsayar ve sanal gönderme çalışmaz.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)