ES6+ ile birlikte JavaScript sınıflarının tanımlanması daha kolay ve anlaşılır hale geldi Bu yenilikçi özellikle birlikte, daha düzenli, okunaklı ve karmaşık olmayan sınıflar oluşturabilirsiniz Öğrenmek için tıklayın!

ES6 sürümü JavaScript ile birlikte Class yapıları tanıtıldı ve nesne yönelimli programlama prensiplerine uygun kod yazmayı daha kolay hale getirdi. Artık, kodlama sürecinde sınıfları kullanarak daha temiz, daha düzenli ve daha anlaşılır bir kod yazabilirsiniz. Sınıflar, birkaç metot ve özelliklerin ayrı ayrı tanımlanması yerine daha kolay bir şekilde tüm özelliklerin tanımlandığı bir yapıdır.
Bu nedenle, kodlamada bir hata yaptığınızda, bu hatayı tespit etmek de daha kolay bir hal alır. Sınıf yapısı, özellikle büyük projelerde daha fazla verimlilik sağlar. Sınıfların bir özelliği de, bir sınıfın özelliklerini diğer sınıflarda da kullanabilmenizdir. Bu özellik, kod tekrarına önemli bir engel oluşturur.
Class Nedir?
Class, JavaScript'in ES6 sürümü ile birlikte gelen bir yapıdır. Bu yapı, nesne yönelimli programlama (OOP) prensiplerine uygun olarak kod yazmayı kolaylaştırır. ES6 ile birlikte gelen sınıf yapısı sayesinde, JavaScript kodlarımız daha düzenli ve anlaşılır bir hale gelir. Yeni bir sınıf oluşturmak için "class" anahtar kelimesini kullanırız ve bunu takip eden isim, sınıf adını belirler.
Sınıf yapısı, yazdığımız kodu daha az hata veren, daha anlaşılır ve sürdürülebilir bir yapıya dönüştürür. Bu yapı sayesinde, kodlarımızı daha kolay okuyabilir, bakımını daha rahat yapabilir ve projelerimizin ölçeklendirilmesi daha da kolaylaşır. Sınıfların, başka sınıflardan veya nesnelerden kalıtım alabildiği özelliği sayesinde, kod tekrarı da önlenebilir. Bu sayede, kodlarımızda daha az hata alır ve projenin geliştirilmesi için daha az zaman harcarız.
Sınıf yapısı, JavaScript programlama dilinde bir strateji olarak kullanılır. Bu yapı, karmaşık projelerde kontrolünün sağlanmasını kolaylaştırdığı gibi, kodların yeniden kullanılabilirliğini de artırır. Ayrıca, sınıflar, kod bloklarını daha düzenli ve anlaşılır hale getirerek are ve bakımını daha da kolaylaştırır. Sınıf yapısı sayesinde, JavaScript’in obje tabanlı yapısı OOP prensiplerine uygun hale gelir, kod yazımı daha az hataya ve daha kolay bir hale getirilir.
Class ve Function Farkı
ES6+ ile birlikte gelen Class yapısının fonksiyonlardan en büyük farkı daha düzenli ve anlaşılır bir yapısı olmasıdır. Class yapısı ile nesne yönelimli programlama prensipleri uygun olarak yazılmış kodlar, daha az hata ile çalışır ve daha kolay okunabilir.
Bir fonksiyon içinde birden fazla işlemi yapmak gerektiğinde kodlar karmaşıklığı arttırabilir ve okunaklılığı azaltabilir. Ancak Class yapısı kullanılarak yazılmış kodlar daha düzenli bir yapıya sahip olacağı için bu sorunların önüne geçebilirsiniz.
Bu yapı ile kodunuzdaki her bileşenin (değişkenler, fonksiyonlar vs.) kendine ait bir kapsama alanı olduğundan okunaklı ve anlaşılır bir yapı elde edilmesi sağlanır. Ayrıca Class yapısını kullanarak nesne yönelimli programlama yapmanız daha kolay ve hızlı hale gelir.
Sonuç olarak, Class yapısı kullanımı ile eski sürümlerdeki fonksiyon yapısında karşılaşılan okunaklılık ve düzenleme sorunlarından kurtulabilirsiniz. Daha etkili bir programlama yapısı oluşturarak, daha az hatayla kod yazabilirsiniz.
Constructor ve Değişkenler
JavaScript'te Class yapısının kullanımı ile daha temiz ve anlaşılır kodlar yazabilmekteyiz. Bir Class yapısı oluştururken, herhangi bir örneği oluşturulduğunda otomatik olarak çağrılan constructor fonksiyonunu tanımlamak oldukça önemlidir. Constructor fonksiyonu, sınıfın örneği oluşturulurken otomatik olarak çağrılır ve burada sınıf içinde kullanılacak değişkenler tanımlanır.
Örneğin, bir Araba Class'ı oluşturduğumuzda, renk, model ve marka gibi değişkenlerimizi constructor fonksiyonunda tanımlayabiliriz. Bu değişkenler, Class'ın her örneğinde kullanılabilir hale gelir ve Class içinde değişken tanımlama işlemini daha düzenli hale getirir. Ayrıca, constructor fonksiyonu sayesinde örneklerimiz oluşturulurken değişkenlerin başlangıç değerlerini de belirtebiliriz.
Kod | Açıklama |
---|---|
class Araba { constructor(marka, model, renk) { this.marka = marka; this.model = model; this.renk = renk; } } | Bir Araba Class'ı oluşturuldu ve constructor fonksiyonu içinde marka, model ve renk değişkenleri tanımlandı. |
let araba1 = new Araba("Mercedes", "C180", "Kırmızı"); console.log(araba1.marka); // Mercedes console.log(araba1.model); // C180 console.log(araba1.renk); // Kırmızı | Örnekte bir Araba Class'ı örneği oluşturuldu ve değişkenlerin başlangıç değerleri belirtildi. |
Kalıtım (Inheritance)
Class yapısı sayesinde, bir sınıfın özelliklerini diğer sınıflara aktararak, kod tekrarının önüne geçebiliriz. Bu sayede, bir sınıfın tekrarlanan özellikleri başka sınıflar içinde tekrar tanımlanmak zorunda kalmaz. Yani, bir sınıfın özelliklerini veya fonksiyonlarını, diğer sınıflarda yeniden tanımlamak yerine onu miras alabiliriz.
Miras aldığımız sınıfın özelliklerini veya fonksiyonlarını, üzerinde değişiklik yaparak veya kullanarak yeni özelliklere sahip bir sınıf oluşturabiliriz. Böylece hem kod tekrarını önler hem de daha sade ve anlaşılır bir kod yazmış oluruz.
Bunun için, miras alınacak sınıfın adını yazarak ve sonrasında 'extends' anahtar kelimesi ile yeni sınıfın adını yazarak miras alabiliriz. Örneğin:
class AnaSinif { constructor(ad, soyad){ this.ad = ad; this.soyad = soyad; } selamVer(){ console.log(`Merhaba, ben ${this.ad} ${this.soyad}`); } } class AltSinif extends AnaSinif{ constructor(ad, soyad, email){ super(ad, soyad); this.email = email; } emailGoster(){ console.log(`E-mail adresim: ${this.email}`); } } const altSinif = new AltSinif('Murat', 'Kaya', 'murat@mail.com'); altSinif.selamVer(); altSinif.emailGoster();
Yukarıdaki örnek kodda, 'AnaSinif' adında bir sınıf tanımlanıyor ve 'AltSinif' adında bir sınıf da bu sınıftan miras alıyor. 'AltSinif' sınıfında, yeni bir özellik olan 'email' de tanımlanıyor.
Not: Miras alınan sınıfın constructor fonksiyonuna erişmek veya üzerine yazmak istenirse, 'super' anahtar kelimesi kullanılabilir. 'super' anahtar kelimesi, miras alınan sınıftaki constructor fonksiyonuna erişmemizi sağlar.
Statik Metotlar
Statik metotlar, sınıfın örneği oluşmadan direkt olarak çağırabileceğimiz metotlardır. Yani bir nesneye ihtiyaç duymadan sınıf üzerinden kullanılabilirler. Genellikle araç kutularında sıkça kullanılan statik metotlar, bu kutuların kullanımını daha da kolaylaştırır.
Bir sınıfın statik metotlarına ulaşmak için "static" anahtar kelimesi kullanılır. Örneğin;
class Arabalar { constructor(marka, model, fiyat) { this.marka = marka; this.model = model; this.fiyat = fiyat; } //Statik bir metot static aciklama() { return "Arabalarımıza Hoşgeldiniz!"; } } //Sınıftan bir nesne oluşturmadan statik metottan yararlanabiliriz. console.log(Arabalar.aciklama()); //Çıktı: Arabalarımıza Hoşgeldiniz!
Bu örnekte, Arabalar sınıfında "aciklama" isimli bir statik metot tanımlanmıştır. Bu metoda, nesne oluşturmadan direkt olarak sınıf üzerinden erişebiliriz. Böylece, araç kutularında kullanılan bir özellik olan statik metotları anlamış olduk.
Getter ve Setter Metotları
Getter ve setter metotları, bir sınıf içinde tanımlı değişkenlere kolayca erişebilmemizi ve değişkenlere girdileri kontrol edebilmemizi sağlar. Getter metodu, bir değişkenin değerine erişmemizi, setter metodu ise bir değişkenin değerini atamamızı sağlar. Bu sayede değişkenlerin erişimi ve girdileri kontrol edilebilir.
Getter ve setter metotları, aynı zamanda incelikli konulara olan ihtiyacımızı karşılar. Örneğin, aldığımız bir girdiyi kontrol etmek veya girilen değere göre farklı bir değer atamak istediğimizde kullanılabilirler. Bu da, sınıfımızın daha güvenli bir şekilde çalışmasını sağlar.
Getter ve setter metotları, tablolar veya listeler gibi çeşitli veri yapılarında da kullanılabilir. Örneğin, bir dizi veri üzerinde işlemler yaparken bir get ve set metodu kullanarak verilere erişip değiştirebilirsiniz.
Overall, Getter ve setter metotları, sınıflar arasında bilgi aktarımı yaparken de oldukça kullanışlıdır. Bir sınıftan diğerine veri aktarmanın ve özellikleri yeniden kullanmanın en iyi yolu olduğu söylenebilir.
Sonuç
Yukarıda da belirtildiği gibi, ES6+ ile birlikte tanıtılan Class yapıları, nesne yönelimli programlama prensiplerine uygun olarak kod yazmamızı kolaylaştırır. Fonksiyonlara kıyasla daha düzenli ve anlaşılır bir yapıya sahip olan Class yapısı, JavaScript kodlarının daha okunaklı hale gelmesine yardımcı olur.
Bunun yanı sıra, Class yapısının en büyük avantajlarından biri, kalıtım (inheritance) özelliğidir. Bir sınıfın özelliklerini diğer sınıflara da aktarabildiğimiz için kod tekrarı yapmaktan kaçınabiliriz.
Ayrıca, Class yapısı ile birlikte kullanabileceğimiz getter ve setter metotları, sınıf içindeki değişkenlere kolayca erişip, girdileri kontrol edebiliriz. Statik metotlar ise sınıfın örneği oluşmadan bile kullanabildiğimiz metotlardır ve genellikle araç kutularında kullanılırlar.
İşte tüm bu özellikler ve daha fazlası sebebiyle, Class yapısı JavaScript kodlamasını daha kolay ve anlaşılır hale getirir. ES6+ ile birlikte Class yapısı, nesne yönelimli programlama prensiplerine uygun olarak daha düzenli ve anlaşılır kod yazmamızı sağlar.