NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

OOP'de bir object(nesne) oluşturabilmek için öncelikle o objectin modellenmesi, tanımlanması gerekir.
Bir ob0---------------jenin modelini/tanımını oluşturabilmek için class yapısı kullanılır. Model(class) --> Object
Sınıf(class) kodu inşa ettiğimiz yerdir. İçinde field property indexer metodlar barındırır.
Sınıfdan artık üretip çalıştırdığımız ise object denir. Kısaca Class modeldir, içinde property ve mothod gibi alanları barındırır, object ise classın bir instance'ını oluşturup bu property ve metodu artık kullanmaktır.

--Class'lar referans türdür. class A (){} diyoruz sonra A nesneB = new() dediğimiz zaman nesneB'nin türü A'dır.


----- OOP --- 4 ANA PRENSİBİ

ENCAPSULATION - KAPSÜLLEME
Nesnelerimizin field'larını kontrollü bir şekilde dışarıya açılmasıdır. Nesnelerimizi başkalarının yanlış kullanımlarından korumak için kontrolsüz değişime kapatmaktır.
Metod veya Property ile uygulayabiliriz.

Method
class MyClass içersinde int a; değişkenini tanımlarız(default'da private'dır) aynı class içersinde public int AGet(){ return this.a; } diyerek a'ya AGet metodu üzerinden ulaşırız bu metod için de bir
kontrol yapmak istersek yaparız. Burada a'ya direk ulaşmak yerine metod üzerinden ulaştığımız için bir koruma/kontrol sağlamış olduk. değer atamak/yollamak istediğimizde de public void ASet(int value){ this.a = value;} diyerek de kontrollü/korumalı değer atama örneğinide verebiliriz. Tabi bu method yaklaşımı eskide kaldı böyle yapılabilir ama günümüzde property ile yaparız.

Property
Yukarıda ki gibi int aa; değişkeninin büyük harf ile başlayan public int Aa{ get{ return aa;} set{aa=value;} } diyerek kapsüllemiş oluyoruz. value değeri tanımlanmıyor set'ten ötürü direk gelen değerdir.
kullanıldığı yerde atama parken tetiklenirse atama yapılan değeri alır. Bu kapsüllemede de get set blokları arasında istediğimiz uygun işlemleri yaparak koruma/kontrol sağlarız.




INHERITANCE - KALITIM
Üretilen nesneler farklı nesnelere özelliklerini aktarabilmekte ve böylece hiyerarşik bir düzenleme yapılabilmektedir. Bu aktarıma kalıtım denir.
Aynı aile grubundan gelen nesneler(Entity'ler) yada yatayda eşit seviyede olan tüm olguların(repository'ler) benzer özelliklerini tekrar tekrar yazmak(tanımlamak) yerine bir üst sınıfta tanımlanması ve bu
özellikleri üst sınıftan kalıtımsal olarak almasını sağlamaktır.
base/parent class -> Kalıtım veren class/sınıftır. Derived/Child class -> Kalıtım alan class/sınıftır.


ABSTRACTİON - SOYUTLAMA
Bir sınıfa veya metoda temel görevlerin tanımlanması, detayların ise tanımlanmaması demektir.
interface ve abstract sınıflarla yapıyoruz. Update işlemi var ne aldığını ve ne döndüğünü belirttiğimizde, onu kullanıyoruz onun içini doldurma işlemini sonraya bırakabilir ayrım soyutlama yapmış oluruz.

-Abstract class ortak özellikli sınıflara base-tavan class özelliği üstlenir. new'lenemez. metod içi boş ve dolu bulundurabilir. Bir class'a bir tane kalıtım verebilir. normal class mirasından farkı abstract işaretlenen özellikleri ya override(için boş yazılır ise) edilecek yada direkt kullanılacak. sealed işaretlenemez çünkü miras vermesi gerekiyor.


POLYMORPHISM - ÇOK BİÇİMLİLİK






IQueryable - IEnumurable Farkı
IQueryable sorgu veritabanına gönderilir istenilen değer getirilir, IEnumurable ise önce datayı komple getirir belleğe alır sonra işlem yapılır. Take(10) örneği

Tip Kontrolleri
typeof() -> Derleme zamanında tipi belirler. Parametre alır. veya Tipi verir tabi köken olarak Console.Log(typeof(int)); => Int32 yada System.Int32 // Console.WriteLine(typeof(TextWriter)); => System.IO.TextWriter
GetType() -> Sınıfın tipini verir... A a = new A(); a.GetType();=> A

lenght ve count() Arasındaki Fark
lenght dizi nesnesinin property'sidir, boyutunu verir. count ise ArrayList için boyutu (uzunluğu) verir.

Erişim Belirteçleri (Access Modifier)
Public(Genel) -> Her yerden erişilebilir, bir kısıtlama yoktur.
Private(Gizli) -> Sadece kendi class'ı içinde erişim vardır. Default erişim belirleyicidir.
Protected(Korunumlu) -> Yazıldığı class ve o sınıftan türetilen sınıflar içersinden erişilebilir.
Internal(İçsel) -> Aynı program içersinden erişilebilir.
Protected Internal -> Tanımlandığı class ve ondan türüyen sınıflardan erişilebilir, türeyen sınıfın farklı bir projede olması sorun teşkil etmez.

Değer ve Referans Tipler
Değişkenler bellekte tutulur. Referans(string,object, diziler) tipler ram'in HEAP, değer(int,bool,decimal,char,float) tipler ram'in STACK bölgelerinde tutulur. Değer tipte değişken kopyalanırken saklanan değer kopyalanır,
referans tipte ise adresi yollanır. Bu nedenle referans tipde 1. değişkenin değeri değiştiğinde 2. değişkeninde değeri değişir. Burada hatırlamamız gereken durum; değer tipin maks kapladığı yer aşağı yukarı bellidir. Birde
dizi veya listeyi düşünelim bir iki eleman değilde binlerce eleman var olabilir. Değer tipte ki gibi bu datayı/değeri kopyalar isek çok fazla maliyet anlamına gelmektedir. Bu nedenle referans adresi tutulur.

out ve ref Anahtar Kelimeleri ve Farkları
Değer türleri metoda referans tip olarak geçmek için kullanılırlar. Nasıl ki değer tip bir yere değerinin kopyasını veriyor. Ama referans tipte ise değerin(dizi,lsite,obje vs) bellekte ki adresi veriliyor ve sonradan yapılan değişiklik
bütün adreslerde görülebiliyor. Bunu metodda değer tipe uygulamamızı sağlıyor.
ref anahtar kelimesi =>
static void Main(string[] args)
{
int a = 3;
Console.WriteLine(a); çıktı = 3
RefMethod(ref a);
Console.WriteLine(a); çıktı = 8 Burada referans tipte ki gibi a değişkenine direkt müdahele değilde metod üzerinden metodunda geri dönüşü olmadan 5 değerini eklemiş oluyoruz.
}
static void RefMethod(ref int sayi)
{
sayi = sayi + 5;
}
Yukarıda ki örnekde a değişkeninin ilke değeri (int a = 3;) olmasaydı yani int a; şeklinde tanımlansaydı ref bize kızacaktı. Bu nedenle değer tipli değişkene ilk değer ataması yapmadan
kullanmak istiyor isek ref yerine out yazarak devam etmeliyiz

Garbage Collector
Her nesne oluştuğunda bellekte kendisine yer ayrılır. B nesnenin farklı sebeplerden dolayı kullanım süresi dolduğunda ise bunu bellekten kaldırma işini üstlenen mekanizmadır.



































     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.