Ders-6 OOP Nesne

Bu ve bundan sonraki birkaç derste nesne kavramını kuramsal olarak ele alacağız. OOP de merkezde nesne kavramı olduğu için anlaşılması diğer kavramlardan daha önceliklidir. Bu dersteki ana konu sınıftan fiziksel olarak nesneyi nasıl oluşturup buna ram’e nasıl yerleştiryoruz olacaktır. Referansla nesne arasındaki ilişkiye kuramsal olarak bakacağız.

Nesne Nedir?

Nesne dediğimiz yapılanma canlı bir organizmadır. Anlamlı verileri bir bütün olarak barındıran bir organizmadır. İçerisinde birden fazla anlamlı ve birbirleriyle ilişkisel veriler tutan ve tuttuğu bu verilerle işlemler yapıp sonuçlar üretebilien fonksiyonellikler barındıran bir yapılanma, bir organizmadır nesne dediğimiz kavram. Bir olguya dair alakadar değerler bir araya geldiğinde ortaya nesne çıkıyor. Nesne bir olgunun karşılığıdır. Nesnelerde bir veridir. Yalnızca daha kompleks bir veridir. nesneleri modellememizi saglayan classlar ise Complex Typelar’dır. Nesnenin fıtratı class’dır. Programlamada nesne oluşturmak için class’dan başka şansımız yoktur. Gençay Yıldız’ın tamiriyle uzaya roketde göndersen sadece class ile nesne oluşturabiliyordun:).

Nesne Neden Kullanılır

Kodu daha hızlı geliştirebilmek, daha sistematik hale getirebilmek ve daha yönetilebilir kılmak için nesneler kullanılır.

Bir nesne oluşturabilmek için ‘new‘ operatörü kullanılır.

Söz Dizimi:

new ‘NesneyiTalepEttiğimizClassİsmi'();

Bu bir nesne oluşturma talebidir. Parantezin açıp kapatıyoruz. Yani bir method çağırıyoruz. Burada constructor methodunu çağırıyoruz.

Bu operasyon(new Type()) sonrasın ilgili class türündeki nesne ram’in Heap kısmına yerleştirilmiş olacaktır.

Daha öncedeki derslerde de bahsettiğimiz gibi hiçbir developer heap’e direkt erişim oradaki nesne direkt elde edemez.

Bizim bu nesneye erişip değişiklik yapmak istediğimiz zaman bunu stack bölümündeki referans ile halledebiliyoruz.

Stack bölümündeki referansı oluşturmak için:

Söz Dizimi:

‘ReferansTipi’ ‘DeğişkenAdı’ =

Bu kısım stack alanına yazılan bölümdür. Buradaki referans tipi nesneyi talep ettiğimiz class ismi ile aynı olmak zorundadır.

Bir bütün olarak ram’deki stack alanına referans parametresini ekleyerek heap alanınada nesneyi ekleyip stack alanındaki değişkenede heap’deki alanı referans etmek için;

Söz Dizimi:

Type x = new Type();

şeklinde kullanım ile gerçekleştirmiş oluyoruz.

Eğer referans tanımlanmazsa

new Type();

heap alanında nesne referansız şekilde oluşur bir daha kullanmamak üzere orada bırakılabilir..

Burada bir bilgi vermek istiyorum. Daha önce ‘=’ operatörü için assign yani atama operatörü demiştik. int a=5 diyerek bir atama gerçekleştiriyoruz ve ‘=’ operatörü bizim iiçin bir atama gerçekleştirmiş oluyor. Ancak yukarıda nesne oluştururken atama yapmış olmuyoruz. Burada referans etme durumu mevzu bahistir. ‘=’ operatörü bu kullanımda referans etme, işaretleme operatörü oluyor.

Target-Typed New Expressions (C# 9.0 ile hayatımıza girmiştir.)

C# 9.0 kullanabiliyor olmak için yapmış olduğumuz çalışma-proje en az .net 5.0 versiyonunda olmalıdır.

Nesne oluşum sürecinde, oluşturulacak olan nesne eğer ki direkt bir referans atılıyorsa eğer burada hangi nesnenin oluşturulduğu referans sayesinde bilinmektedir. Dolayısıyla ilgili nesnenin oluşturulması için

Type x = new Type();

semantiğinden ziyade

Type x = new();

şeklinde de oluşturmamızı sağlayan yeni özelliktir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir