JavaScript ES6 Class Nedir?

Programlama dillerinde, sınıf (class) ve nesne (object) kavramları nesne yönelimli programlama (object-oriented programming - OOP) paradigmalarının temel öğeleridir.

Class(Sınıf), programlama dillerinde nesnelerin özelliklerini ve davranışlarını tanımlayan bir yapıdır. Sınıflar, bir veya daha fazla değişken (property) ve bu değişkenler üzerinde çalışan bir veya daha fazla metod (method) içerebilir. Sınıflar, nesnelerin şablonlarını oluşturmak için kullanılır. Örneğin, bir Araba sınıfı, arabanın özelliklerini (model, renk, yıl gibi) ve davranışlarını (hızlanma, durma, viraj alma gibi) tanımlayabilir.

Nesne, bir sınıfın örneğidir. Sınıfın tanımladığı özellikleri ve davranışları içerir. Nesneler, bir sınıfın şablonunu kullanarak oluşturulur. Örneğin, bir Araba nesnesi, Araba sınıfından türetilmiş ve Araba sınıfının tanımladığı özellikleri (modeli, rengi, yılı vb.) ve davranışları (hızlanma, durma, viraj alma vb.) içerir.

Nesne yönelimli programlama, programların daha modüler, esnek ve yeniden kullanılabilir olmasını sağlar. Sınıflar ve Nesneler, kodun daha iyi organizasyonu, bakımı ve geliştirilmesi için bir araç sağlarlar.

Sınıf ve Nesne kavramları, programcılara bir dizi fayda sağlar. Bunlardan bazıları şunlardır:

Modülerlik: Nesne yönelimli programlama, kodun modülerliğini artırır. Sınıflar, birlikte çalışan özellikleri ve davranışları içeren özelleştirilmiş veri tipleri olarak kullanılabilir. Bu, kodun daha organize edilmesine ve daha kolay anlaşılmasına olanak tanır.

Yeniden Kullanılabilirlik: Sınıflar, birlikte çalışan bir grup özellik ve davranışı içerir. Bu özellikler ve davranışlar, sınıfın herhangi bir nesnesinde kullanılabilir. Bu da kodun yeniden kullanılabilirliğini artırır ve zaman kazandırır.

Esneklik: Nesne yönelimli programlama, kodun esnekliğini artırır. Bir nesne, farklı durumlarda farklı özellikler ve davranışlar sergileyebilir. Bu da kodun daha dinamik hale gelmesini sağlar.

Veri Gizleme: Sınıflar, veri gizleme özelliği sağlar. Bu, sınıfın özelliklerine erişmek için sınıfın yöntemlerinin kullanılması gerektiği anlamına gelir. Bu, programcının özellikleri istemeden yanlışlıkla değiştirmesini önler ve kodun güvenliğini artırır.

Büyük Projelerde Yönetim: Büyük projelerde, nesne yönelimli programlama, kodun daha iyi yönetilmesine olanak tanır. Sınıflar ve Nesneler, kodun daha iyi organizasyonu, bakımı ve geliştirilmesi için bir araç sağlarlar. Bu da kodun daha kolay okunabilir, değiştirilebilir ve yeniden kullanılabilir olmasını sağlar.

Kodun Anlaşılabilirliği: Nesne yönelimli programlama, kodun daha anlaşılır hale gelmesini sağlar. Sınıflar, gerçek dünya nesnelerinin modellenmesine benzer şekilde tasarlanabilir. Bu, kodun daha kolay anlaşılmasına yardımcı olur ve programcıların gerçek dünya senaryolarına daha iyi uymasını sağlar.

Kodun Bakımı: Nesne yönelimli programlama, kodun daha kolay bakımını sağlar. Sınıflar ve Nesneler, kodun belirli bölümlerine odaklanmayı ve sadece bu bölümleri değiştirmeyi mümkün kılar. Bu, kodun yeniden kullanılabilirliğini artırır ve bakım işlemlerini kolaylaştırır.

Çoklu Programlama: Nesne yönelimli programlama, çoklu programlama işlemlerini kolaylaştırır. Sınıflar, birlikte çalışan bir grup özelliği ve davranışı içerir. Bu, programcıların farklı özelliklerdeki nesneleri oluşturarak, birlikte çalışan uygulamalar oluşturmasını kolaylaştırır.

Sonuç olarak, sınıf ve nesne kavramları, programcılara kodun modülerliğini artırma, yeniden kullanılabilirliğini artırma, esnekliği artırma, veri gizleme özelliği sağlama, büyük projelerde yönetimi kolaylaştırma, kodun anlaşılabilirliğini artırma, kodun bakımını kolaylaştırma ve çoklu programlama işlemlerini kolaylaştırma gibi birçok fayda sağlar. Bu nedenle, Nesne yönelimli programlama, günümüzde en yaygın olarak kullanılan programlama paradigmasıdır.

Nesnelere Gerçek Hayatdan örnek verelim.

Gerçek hayattan birçok örnek verilebilir. Burada bazı örnekler vermek istiyorum:

Araba: Arabalar, bir sınıf olarak tanımlanabilir. Her araba, marka, model, renk, hız, yakıt tüketimi gibi özelliklere sahiptir. Her araba, bu özelliklere sahip bir nesne olarak düşünülebilir.

Kitap: Kitaplar, bir sınıf olarak tanımlanabilir. Her kitap, yazar, yayınevi, sayfa sayısı, yayın tarihi gibi özelliklere sahiptir. Her kitap, bu özelliklere sahip bir nesne olarak düşünülebilir.

Öğrenci: Öğrenciler, bir sınıf olarak tanımlanabilir. Her öğrenci, adı, soyadı, okulu, sınıfı, notları gibi özelliklere sahiptir. Her öğrenci, bu özelliklere sahip bir nesne olarak düşünülebilir.

Banka Hesabı: Banka hesapları, bir sınıf olarak tanımlanabilir. Her banka hesabı, hesap sahibinin adı, hesap numarası, bakiye gibi özelliklere sahiptir. Her banka hesabı, bu özelliklere sahip bir nesne olarak düşünülebilir.

Telefon: Telefonlar, bir sınıf olarak tanımlanabilir. Her telefon, marka, model, işletim sistemi, bellek boyutu, kamera özellikleri gibi özelliklere sahiptir. Her telefon, bu özelliklere sahip bir nesne olarak düşünülebilir.

Bu örnekler, gerçek hayatta bulunan Nesnelerin sınıf ve nesne kavramlarının nasıl uygulanabileceği hakkında fikir vermektedir. Bu nesnelerin her biri, özelliklerinin ve davranışlarının bir sınıf tarafından tanımlandığı ve her nesnenin bu sınıfın özelliklerini taşıdığı bir nesne olarak düşünülebilir.

Es6 Class Nedir?

ES6 (ECMAScript 2015) sürümünden itibaren JavaScript, sınıf tabanlı bir nesne yönelimli programlama diline doğru büyük bir adım attı. ES6 sınıfları, JavaScript nesnelerini oluşturmak için bir şablon veya kalıp olarak hizmet eden bir yapıdır.

ES6 sınıfları, önceki sürümlerdeki JavaScript'te kullanılan prototip tabanlı sınıflandırma modeline dayanır, ancak daha okunaklı bir sözdizimi sunar. Bir sınıf, özelliklerini (değişkenlerini) ve davranışlarını (fonksiyonlarını) içeren bir yapıdır.

Sınıflar, diğer sınıflardan türetilen alt sınıflar oluşturmak için kullanılabilir. Bu, JavaScript nesne modelinin kalıtımını sağlar. ES6 sınıfları ayrıca constructor fonksiyonlarını ve örnek yöntemlerini de tanımlayabilirler.

Örneğin, aşağıdaki kod ES6 sınıfı örneğini gösterir:

	

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
  }
}

let person1 = new Person("John", 30);
person1.sayHello(); // "Hello, my name is John and I'm 30 years old."

Yukarıdaki örnekte, "Person" adlı bir sınıf tanımlanmıştır. Bu sınıf, "name" ve "age" adlı iki özellik içerir ve "sayHello" adlı bir yöntem tanımlar. "Person" sınıfından bir örnek oluşturulur ve "sayHello" yöntemi çağrılır.

ES6 sınıfları, önceki sürümlerdeki JavaScript koduna göre daha açık ve kolay anlaşılır bir sözdizimi sunar. Bu nedenle, özellikle büyük ölçekli projelerde kodun okunabilirliğini artırmak için sıkça tercih edilirler.

ES6 sınıfları ayrıca "extends" anahtar kelimesini kullanarak diğer sınıflardan kalıtım yapabilirler. Bu, bir sınıfın diğer bir sınıftan özellikleri ve yöntemleri miras almasını sağlar.

Class Tanımı ve Constructor Kullanımı

Bir ES6 sınıfı, class anahtar kelimesi ile tanımlanır ve sınıfın özellikleri (propertileri) ve yöntemleri (methods) constructor ve diğer metotlar olarak sınıfın içinde tanımlanır. Ayrıca sınıfın kalıtım alabileceği diğer sınıfların belirtilmesi de mümkündür.

Örneğin, aşağıdaki kod ES6 sınıf tanımı ve constructor kullanımını gösterir:


class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}


let person1 = new Person('John', 25);
person1.sayHello(); // Hello, my name is John and I am 25 years old.

Yukarıdaki örnekte Person adında bir sınıf tanımlanmıştır. Sınıfın özellikleri constructor metodu içinde tanımlanır. Bu örnekte, name ve age özellikleri tanımlanmıştır ve this anahtar kelimesiyle sınıfın örneklerine erişilir.

Ayrıca Person sınıfında sayHello adında bir yöntem de tanımlanmıştır. Bu yöntem, sınıfın örneklerine ait olan bir fonksiyondur. Yöntem içinde this anahtar kelimesiyle sınıfın özelliklerine erişilir.

constructor metodu, sınıfın örnekleri oluşturulurken çağrılan bir fonksiyondur. Örneğin, yukarıdaki örnekte let person1 = new Person('John', 25); ifadesi, Person sınıfından bir örnek oluşturur ve constructor metodu bu örneği başlatmak için kullanılır. Yani, constructor metodu sınıfın özelliklerine başlangıç değerlerini atar.

Bir ES6 (ECMAScript 2015) sınıfında, yalnızca bir adet constructor fonksiyonu kullanılabilir. constructor fonksiyonu, sınıfın özelliklerine başlangıç değerleri atamak için kullanılır ve sınıfın örnekleri oluşturulduğunda otomatik olarak çağrılır.

Bir sınıf içinde birden fazla constructor fonksiyonu tanımlanamaz. Ayrıca, bir sınıfın alt sınıfları (subclass) da yalnızca bir tane constructor fonksiyonu içerebilir ve bu fonksiyonun ilk satırı, super anahtar kelimesini kullanarak üst sınıfın constructor fonksiyonunu çağırmalıdır.

Aşağıdaki örnekte, Person sınıfı bir constructor fonksiyonu içerir:


class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
}

Bu sınıfın özellikleri, name ve age, constructor fonksiyonunda tanımlanmıştır. Bu sayede, Person sınıfının örnekleri oluşturulduğunda, name ve age özelliklerine otomatik olarak başlangıç değerleri atanır.

Özetle, bir ES6 sınıfında yalnızca bir tane constructor fonksiyonu kullanılabilir. Bu fonksiyon, sınıfın özelliklerine başlangıç değerleri atamak için kullanılır ve sınıfın örnekleri oluşturulduğunda otomatik olarak çağrılır.

ES6 sınıfları, önceki sürümlerdeki JavaScript koduna göre daha açık ve kolay anlaşılır bir sözdizimi sunar. Bu nedenle, özellikle büyük ölçekli projelerde kodun okunabilirliğini artırmak için sıkça tercih edilirler.

ES6 sınıfları ayrıca "extends" anahtar kelimesini kullanarak diğer sınıflardan kalıtım yapabilirler. Bu, bir sınıfın diğer bir sınıftan özellikleri ve yöntemleri miras almasını sağlar.

Aşağıdaki örnek, "Person" sınıfından türetilen bir "Student" sınıfını göstermektedir:


class Student extends Person {
  constructor(name, age, grade) {
    super(name, age);
    this.grade = grade;
  }

  study() {
    console.log(`${this.name} is studying.`);
  }
}

let student1 = new Student("Jane", 18, "12th");
student1.sayHello(); // "Hello, my name is Jane and I'm 18 years old."
student1.study(); // "Jane is studying."

Yukarıdaki örnekte, "Student" sınıfı, "Person" sınıfından türetilir. Bu sınıf, "name", "age" ve "grade" adlı üç özelliğe sahiptir ve "study" adlı bir yöntem tanımlar. "Student" sınıfından bir örnek oluşturulur ve hem "sayHello" hem de "study" yöntemleri çağrılır.

ES6 sınıfları, JavaScript nesne yönelimli programlama dilinde önemli bir adımdır ve büyük ölçekli projelerde kod okunabilirliğini artırmak için önemli bir araçtır.

ES6 sınıfları ayrıca, "getter" ve "setter" adı verilen özelliklere de sahip olabilirler. "Getter"lar, sınıfın özelliklerinin değerlerini almak için kullanılırken, "setter"lar, sınıfın özelliklerinin değerlerini ayarlamak için kullanılır.

Aşağıdaki örnek, "Person" sınıfına bir "getter" ve bir "setter" ekler:

	
class Person {
  constructor(name, age) {
    this.name = name;
    this._age = age;
  }

  get age() {
    return this._age;
  }

  set age(value) {
    if (value < 0 || value > 120) {
      console.log("Invalid age");
      return;
    }
    this._age = value;
  }

  sayHello() {
    console.log(`Hello, my name is ${this.name} and I'm ${this._age} years old.`);
  }
}

let person1 = new Person("John", 30);
person1.age = 40;
person1.sayHello(); // "Hello, my name is John and I'm 40 years old."

Yukarıdaki örnekte, "Person" sınıfına "age" adlı bir özellik eklenir. "age" özelliği, "age" adlı bir özel değişkene atılır ve bir "getter" ve bir "setter" tanımlanır. "setter", "age" özelliğinin değerinin sınırlandırılması için kullanılır. "sayHello" yöntemi, "age" özelliğinin değerini kullanan bir dize oluşturur.

ES6 sınıfları, JavaScript nesne yönelimli programlama dilinde önemli bir adımdır ve daha önceki sürümlerden farklı bir sözdizimi sunarak kod okunabilirliğini artırır. Sınıflar, nesne yönelimli programlamada temel bir yapıdır ve özellikleri, yöntemleri ve kalıtımı kullanarak kodun yeniden kullanılabilirliğini artırır.

ES6 sınıfları ayrıca, "static" yöntemler ve özellikler adı verilen bir başka özelliğe de sahip olabilirler. "Static" özellikler, sınıfın kendisiyle ilişkilendirilirken, "static" yöntemler, sınıfın örneği oluşturulmadan doğrudan sınıf üzerinde çağrılabilir.

Aşağıdaki örnek, "Math" sınıfının "PI" adlı bir "static" özelliğini ve "max" adlı bir "static" yöntemini göstermektedir:

	
class Math {
  static PI = 3.14159;

  static max(...numbers) {
    return Math.max(...numbers);
  }
}

console.log(Math.PI); // 3.14159
console.log(Math.max(1, 2, 3, 4, 5)); // 5

Yukarıdaki örnekte, "Math" sınıfına bir "static" özellik ve bir "static" yöntem eklenir. "PI" özelliği, sınıfın kendisiyle ilişkilendirilir ve doğrudan "Math.PI" olarak çağrılabilir. "max" yöntemi, sınıfın örneği oluşturulmadan doğrudan "Math.max()" olarak çağrılabilir.

ES6 sınıfları, JavaScript nesne yönelimli programlama dilinde önemli bir adımdır ve daha önceki sürümlerden farklı bir sözdizimi sunarak kod okunabilirliğini artırır. Sınıflar, nesne yönelimli programlamada temel bir yapıdır ve özellikleri, yöntemleri, kalıtımı ve "static" özellikleri ve yöntemleri kullanarak kodun yeniden kullanılabilirliğini artırır.

Extends(Kalıtım) Anahtar Kelimesi ve super Metodu ne işe yarar

extends anahtar kelimesi ve super metodu, JavaScript'te sınıf kalıtımını (inheritance) sağlamak için kullanılan özelliklerdir.

Sınıf kalıtımı, bir sınıfın diğer bir sınıftan özelliklerini ve yöntemlerini miras alarak kullanmasına olanak tanır. Bu, kod tekrarını azaltır ve daha düzenli ve okunaklı bir kod yazmanızı sağlar.

extends anahtar kelimesi, bir sınıfın diğer bir sınıftan miras almasını sağlar. Alt sınıf (subclass) olarak adlandırılan bu sınıf, üst sınıfın (superclass) özelliklerini ve yöntemlerini kullanabilir. Örneğin, aşağıdaki örnek, Vehicle sınıfından miras alınarak Car sınıfının oluşturulmasını gösterir:

	
class Vehicle {
  constructor(make, model, year) {
    this.make = make;
    this.model = model;
    this.year = year;
  }

  start() {
    console.log(`Starting the ${this.make} ${this.model}`);
  }

  stop() {
    console.log(`Stopping the ${this.make} ${this.model}`);
  }
}

class Car extends Vehicle {
  constructor(make, model, year, color) {
    super(make, model, year);
    this.color = color;
  }

  drive() {
    console.log(`Driving the ${this.color} ${this.make} ${this.model}`);
  }
}

Yukarıdaki örnekte, Car sınıfı, Vehicle sınıfından miras alınarak oluşturulur (extends Vehicle). Car sınıfı, Vehicle sınıfının make, model ve year özelliklerini ve start() ve stop() yöntemlerini kullanabilir.

super metodu ise, alt sınıfın üst sınıftan miras aldığı özelliklere ve yöntemlere erişmesini sağlar. Ayrıca, alt sınıfın kendi özelliklerini de tanımlamasına olanak tanır. super() metodu, alt sınıfın constructor() fonksiyonunun ilk satırında kullanılır ve üst sınıfın constructor() fonksiyonunu çağırır.

Yukarıdaki örnekte, Car sınıfının constructor()/ fonksiyonu, super(make, model, year) ifadesi ile Vehicle sınıfının constructor() fonksiyonunu çağırır. Böylece, Car sınıfı, make, model ve year özelliklerini miras alır.

super() metodu ayrıca, üst sınıfın yöntemlerine de erişimi sağlar. Örneğin, Car sınıfının start() yöntemi, super.start() ifadesi ile Vehicle sınıfının start()/ yöntemini çağırarak kullanılabilir.

Özetle, extends anahtar kelimesi, bir sınıfın diğer bir sınıftan miras almasını sağlar.

Bir ES6 (ECMAScript 2015) sınıfı, genellikle benzer işlevleri olan bir grup nesneyi modellemek için kullanılır. Bu sınıflar, özellikleri (properties) ve yöntemleri (methods) tanımlayarak sınıfın davranışını belirlerler.

Sınıflar, birçok nesnenin sahip olabileceği ortak özellikleri ve yöntemleri gruplandırmak için kullanılabilir. Bu sayede kodun okunabilirliği ve bakımı kolaylaşır ve tekrarlanan kodların önüne geçilir.

Bir sınıfta kaç tane özellik veya yöntem kullanılacağı, sınıfın ihtiyacına bağlıdır. Bazı sınıflar sadece birkaç özellik veya yöntem içerebilirken, diğer sınıflar çok daha karmaşık olabilir.

Örneğin, aşağıdaki Car sınıfı, bir araba Nesnesinin temel özelliklerini ve yöntemlerini tanımlar:

	

class Car {
  constructor(make, model, year) {
    this.make = make;
    this.model = model;
    this.year = year;
  }

  start() {
    console.log(`Starting the ${this.make} ${this.model}`);
  }

  stop() {
    console.log(`Stopping the ${this.make} ${this.model}`);
  }
}

Yukarıdaki sınıf, bir arabanın marka, model ve yıl özelliklerini ve start() ve stop() yöntemlerini içerir. Bu sınıf, birçok farklı araba nesnesinin sahip olabileceği temel özellikleri ve davranışları tanımlar.

Sonuç olarak, bir sınıfın kaç özellik veya yöntem içereceği, o sınıfın ihtiyacına bağlıdır. Ancak, genellikle sınıfların sadece ihtiyaç duydukları özellikleri ve yöntemleri içermesi önerilir. Bu, kodun okunabilirliğini artırır ve gereksiz karmaşıklığı önler.

Es6 Class Inheritance Konusunu

ES6 sınıflarında inheritance (miras alma), bir sınıfın diğer bir sınıftan özelliklerini ve yöntemlerini alabilmesini ifade eder. Böylece, bir sınıfın başka bir sınıfın özelliklerini tekrar yazmak yerine onları kullanması mümkün hale gelir. Bu, kodun daha az tekrar etmesini ve daha sade ve okunaklı hale gelmesini sağlar.

ES6'da inheritance yapmak için extends anahtar kelimesi kullanılır. Örneğin, Animal adında bir üst sınıfımız varsa, bu sınıfın özelliklerini ve yöntemlerini kullanarak Dog adında bir alt sınıf oluşturmak isteyebiliriz:

  
class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  constructor(name) {
    super(name); // Üst sınıfın yapıcısını çağırır.
  }

  speak() {
    console.log(this.name + ' barks.');
  }
}

Bu örnekte, Dog sınıfı Animal sınıfından türetilmiştir (extends Animal). Dog sınıfı aynı zamanda Animal sınıfının tüm özelliklerini ve yöntemlerini miras almıştır. Dog sınıfının yapıcısı(constructor), super(name) ifadesi ile üst sınıfın yapıcısını(constructor) çağırmaktadır.

Ayrıca, Alt sınıfın yöntemlerinden biri üst sınıfın aynı yöntemiyle aynı isimde ve aynı parametrelerle tanımlanırsa, Alt sınıfın yöntemi üst sınıfın yöntemiyle ezilir (override). Örneğin, yukarıdaki örnekte Dog sınıfının speak yöntemi, Animal sınıfının speak yöntemini ezer.


const dog = new Dog('Rufus');
dog.speak(); // "Rufus barks."

Bu örnekte, Dog sınıfından bir örnek oluşturulur ve speak yöntemi çağrılır. Dog sınıfının speak yöntemi, Animal sınıfının speak yöntemini ezer ve "Rufus barks." metnini konsola yazdırır.

Inheritance, kod tekrarını önleyerek ve kodun daha sade ve okunaklı hale gelmesini sağlayarak yazılım geliştirme sürecini kolaylaştırır. ES6 sınıfları, inheritance'ı desteklediği için nesne yönelimli programlama (OOP) prensiplerini daha kolay uygulamanıza olanak tanır.

Es6 Class Encapsulation Konusu

ES6 sınıflarında encapsulation (kapsülleme), sınıfın özelliklerinin ve yöntemlerinin sadece sınıfın kendisi tarafından erişilebilir olmasını ifade eder. Bu, sınıfın dışındaki diğer kodların sınıfın iç özelliklerine ve yöntemlerine doğrudan erişimini engeller ve böylece kodun daha güvenli ve yönetilebilir hale gelmesini sağlar.

ES6'da encapsulation, özellikleri ve yöntemleri private, protected ve public anahtar kelimeleri kullanarak tanımlanır. private özellikler ve yöntemler sadece sınıfın kendisi tarafından erişilebilirken, protected özellikler ve yöntemler sınıfın kendisi ve türetilmiş sınıflar tarafından erişilebilir. public özellikler ve yöntemler ise herkes tarafından erişilebilir.

Örneğin, aşağıdaki Person sınıfı name özelliği için private, sayHello yöntemi için protected ve introduce yöntemi için public erişim düzeylerini kullanarak encapsulation yapmaktadır:

  
class Person {
  #name; // private özellik

  constructor(name) {
    this.#name = name;
  }

  #sayHello() { // protected yöntem
    console.log(`Hello, my name is ${this.#name}.`);
  }

  introduce() { // public yöntem
    this.#sayHello();
    console.log("Nice to meet you!");
  }
}

Bu örnekte, Person sınıfının #name özelliği private olarak tanımlanmıştır, bu nedenle sınıfın dışındaki kodların doğrudan bu özelliğe erişimi engellenmiştir. #sayHello yöntemi protected olarak tanımlanmıştır, bu nedenle sınıfın kendisi ve türetilmiş sınıflar tarafından erişilebilir. introduce yöntemi ise public olarak tanımlanmıştır, bu nedenle herkes tarafından erişilebilir.

Özelliklerin ve yöntemlerin erişim düzeylerini belirlemek, kodun daha güvenli ve yönetilebilir hale gelmesini sağlar. Ancak, bu sadece bir kısıtlama mekanizmasıdır ve kodun tamamen güvenli olmasını sağlamaz. Bu nedenle, kodunuzda ayrıca diğer güvenlik önlemlerini de almanız önemlidir.

Encapsulation, sadece sınıfın iç özellikleri ve yöntemleri için değil, aynı zamanda sınıfın dışındaki diğer kodların sınıfın iç özellikleri ve yöntemleri üzerindeki etkisini de azaltır. Bu, sınıfın iç yapısını değiştirmeden özelliklerin veya yöntemlerin nasıl kullanılacağına veya nasıl çalıştığına dair kodda yapılan değişikliklerden etkilenmemesini sağlar.

Encapsulation, ayrıca sınıfın dışında olan kodların sınıfın iç özelliklerine ve yöntemlerine erişmesini önlediği için, sınıfın iç yapısıyla ilgili detayları saklamasına olanak tanır. Bu, sınıfın tasarımını ve kodun anlaşılabilirliğini iyileştirebilir ve kodun bakımını kolaylaştırabilir.

ES6 sınıflarında encapsulation, özellikler ve yöntemler için erişim düzeylerini belirleme yoluyla sağlanır. Ancak, ES6'da özellikler ve yöntemler için henüz resmi bir private anahtar kelimesi yoktur. Bunun yerine, # işareti kullanılarak bir özelliğin veya yöntemin private olduğu belirtilir. # işaretli özellikler ve yöntemler, sınıfın dışındaki kodların doğrudan erişimini engeller.

Sonuç olarak, encapsulation ES6 sınıflarında önemli bir kavramdır ve kodun daha güvenli, yönetilebilir ve anlaşılır olmasını sağlar. ES6'da, özellikler ve yöntemler için erişim düzeylerini belirleyerek encapsulation sağlayabilirsiniz.

Es6 Class Abstraction Konusunu

Abstraction, bir sınıfın detaylarını gizleyerek sınıfın kullanımını ve anlaşılmasını kolaylaştıran bir programlama prensibidir. Bu prensip, sınıfın iç yapısına dair detayları saklayarak, sınıfın yalnızca kullanıcının ihtiyaç duyduğu özellikleri ve yöntemleri sunmasına olanak tanır. Bu, kodun anlaşılırlığını ve bakımını kolaylaştırır.

ES6 sınıflarında, abstraction, bir sınıfın kullanıcıya sunduğu özellikler ve yöntemler üzerinden gerçekleştirilir. Bu, sınıfın iç yapısına dair detayları gizleyerek, kullanıcının sınıfı kullanmasını kolaylaştırır. Bu prensibe göre, kullanıcı yalnızca sınıfın public olarak tanımlanmış özelliklerine ve yöntemlerine erişebilir ve sınıfın iç yapısına dair detaylar saklanır.

ES6 sınıflarında, bir özelliği veya yöntemi public yapmak için, sınıfın içinde tanımlanır ve dışarıdan erişilebilir hale getirilir. Bununla birlikte, bir özelliği veya yöntemi private yapmak için,# işareti ile işaretlenir ve sadece sınıfın içinde erişilebilir hale getirilir. Bu şekilde, kullanıcının yalnızca sınıfın public olarak tanımlanmış özelliklerine ve yöntemlerine erişebilmesi sağlanır ve sınıfın iç yapısına dair detaylar gizlenir.

Özetle, ES6 sınıflarında abstraction, sınıfın kullanıcıya sunduğu public özellikler ve yöntemler üzerinden gerçekleştirilir. Bu prensip, sınıfın kullanımını ve anlaşılmasını kolaylaştırarak, kodun anlaşılırlığını ve bakımını iyileştirir.

Es6 Class Polymorphism Konusunu

Polymorphism, farklı nesnelerin aynı yöntemi farklı şekillerde uygulayabilmesi anlamına gelen bir programlama prensibidir. Bu prensip, nesnelerin farklı tipleriyle çalışırken aynı yöntemi çağırarak kodun yeniden kullanılabilirliğini artırır ve kodun daha az tekrarlanmasını sağlar.

ES6 sınıflarında, polymorphism, inheritance ve overriding yöntemleriyle gerçekleştirilir. Inheritance, bir sınıfın diğer bir sınıftan özelliklerini ve yöntemlerini miras almasıdır. Bu, bir sınıfın diğer bir sınıftan türetilerek yeni bir sınıf yaratılmasına olanak tanır.

Overriding, bir alt sınıfın bir üst sınıfın yöntemini değiştirmesi veya üzerine yazmasıdır. Bu, alt sınıfın aynı yöntemi farklı şekillerde uygulamasına olanak tanır ve böylece aynı yöntemi kullanarak farklı işlemler gerçekleştirilebilir.

Polymorphism, bu inheritance ve overriding özelliklerini kullanarak, farklı nesne tipleriyle çalışırken aynı yöntemi çağırmak anlamına gelir. Bu, kodun yeniden kullanılabilirliğini artırır ve kodun daha az tekrarlanmasını sağlar.

Örneğin, bir sınıfın calculateArea adında bir yöntemi olsun ve bu yöntem bir dairenin veya bir karenin alanını hesaplayabilir. Bu yöntemi farklı şekillerde uygulayan iki alt sınıf, Circle ve Square oluşturulabilir. Bu sayede, calculateArea yöntemi çağrılırken, farklı sınıf türlerinden nesnelerle çalışılıyor olsa bile, aynı yöntem kullanılabilir.

ES6 sınıflarında polymorphism, inheritance ve overriding özellikleriyle gerçekleştirilir ve farklı nesne tipleriyle çalışırken aynı yöntemi çağırmaya olanak tanır. Bu, kodun yeniden kullanılabilirliğini artırır ve kodun daha az tekrarlanmasını sağlar.

Not: Javascript Classları anlamayanlar PHP Dökümanlara baksın PHP yapısı ile hemen hemen aynıdır.

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

6003

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.