5 Mayıs 2023 Cuma

OOP | Nesne Kavramı, new operatörü

Nesne Kavramı

🔹Nesne, birbiriyle bağlantılı değerlerin bir araya getirdiği anlamlı bir oluşumdur. Yazılımda bu değerler bir field'a dahil edilir, bu field üzerinde de işlem yapmayı sağlayan metot/property vb. yapılanmalar oluşturulur. 
🔹Nesne, class yapılanmalarından üretilen bir veridir. Nesne oluşturmak için class'a mutlaka ihtiyaç vardır. (int, struct yapılanması, abstract class -class olsa dahi abstract olduğundan- vb. nesne oluşturmaz.)
🔹Nesne, bir veya birden fazla değer taşıyabilen, anlamlı verileri bir bütün olarak barındıran ve bunlar üzerinde işlemler yapabildiğimiz kompleks bir değerdir. Nesnelerin modellenmesini sağlayan class'lar ise complex type'tır. 

✨Nesne olarak bir ülkenin vatandaşlarını ele alalım. Ad, soyad, kimlik numarası gibi ortak ve anlamlı değerler taşırlar. Ancak "araba" değerini bu nesneyle bağdaştıramayız, çünkü hem herkesin arabası yoktur hem de araba onları birer "nesne" olarak oluşturan ana unsurlardan değildir. Dolayısıyla bu örnekte "araba" anlamlı bir veri değildir. 

Örnek bir class yapılanması:
A adında bir property ve x fonksiyonu ile bir nesne modellemesi yapılmış. Buradan nesne oluşturmak, yani ram'in Heap alanında nesne üretmek için new operatörü kullanılır.


new Operatörü ile Nesne Üretimi

🔸C#'ta nesne üretimi için new operatörü kullanılır.

new Type( );

new yazdıktan sonra hangi class'tan -class bir türdür- nesne oluşturmak istiyorsak onu yazarız. Yani yukarıda Type ( ) yazılı yere nesnesini talep ettiğimiz class yazılır. ( ) parantezi ise constructor metottur, bu metot sayesinde nesne Heap'e atanır. MyClass üzerinden bir nesne oluşturacaksak MyClass nesnesini new keyword'ü ile talep ederiz, böylece Compiler new gördüğünde nesne oluşturulacağını algılar:

new MyClass( );

Bu nesne Heap'te oluşturuldu. Ancak Heap'e doğrudan erişemeyeceğimizi biliyoruz. Erişmek için Stack'te bir referans oluşturmalıyız. Referans verirken oluşturduğumuz nesnenin türüne sadık kalmalıyız (örn. MyClass ise referans da öyle olmalı).

MyClass x = new MyClass( );

Artık x üzerinden ilgili nesneye ulaşmak mümkün.

✨ " = " işareti burada olduğu gibi değer türlü değişkenlerde çalışıldığında "assign operator" anlamındadır.  Eşitlik değil atama (uzaktaki bir nesneyi işaretleme) bildirir. Aynı işaret referans türlü değişkenlerde kullanıldığında ise referans etme amacı taşır.


Target-Typed New Expressions (C# 9.0)

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

semantiği yerine bu şekilde kullanılır:

    Type x new( );

     
  • /ᐠ。‸。ᐟ\
  • *ᵖᵘʳʳ*

0 yorum:

Yorum Gönder