JavaScript'te Nesne Yönelimli Kodlama İçin Temel Kavramlar

JavaScript'te Nesne Yönelimli Kodlama İçin Temel Kavramlar

JavaScript, web geliştirme alanında en kullanışlı programlama dillerinden biridir Bu ders, JavaScript'te nesne yönelimli kodlama konusunda temel kavramları öğrenerek daha etkili kodlama becerileri kazanmanıza yardımcı olur Object, method, attribute ve constructor gibi temel unsurları kavrayarak JavaScript yeteneklerinizi daha da artırabilirsiniz Daha fazla bilgi ve detaylı öğrenme için bu kursa hemen katılın!

JavaScript'te Nesne Yönelimli Kodlama İçin Temel Kavramlar

JavaScript'te nesne yönelimli programlama (OOP), programlama dünyasında yaygın olarak kullanılan bir yaklaşımdır. Bu yaklaşım, kodu nesnelere dayandırır ve kodun daha organize ve okunaklı hale gelmesini sağlar. Bu makalede, nesne yönelimli programlama için kullanılan temel kavramları öğreneceksiniz.

Öncelikle, sınıflar ve nesneler kavramlarına değinmek gerekiyor. Sınıflar, bir nesnenin özelliklerini ve davranışlarını tanımlayan genel bir taslaktır. Bu özellikler ve davranışlar, sınıfın nesneleri tarafından kullanılabilir hale getirilir. Nesneler, sınıfların örneğidir ve bir sınıftan birden fazla nesne oluşturulabilir.

Her nesne, belirli özelliklere ve davranışlara sahiptir. Özellikler, nesneler tarafından taşınan verilerdir ve genellikle değişkenlerden oluşur. Tipli özellikler ise özelliklere bir veri tipi atanması anlamına gelir. Örneğin, bir kişinin yaşını tutacak bir özellik, sayısal bir değer olduğundan ona bir sayı veri tipi atanabilir.

Bir nesnenin özelliklerinin yanı sıra, nesnenin belirli işlemleri gerçekleştirmesi de gerekebilir. Bu işlemler, metotlar olarak bilinir ve bir nesnenin gerçekleştirdiği bir işlemi belirtir.

OOP için önemli bir kavram da miras (inheritance)dir. Miras, bir nesneye başka bir nesnenin özelliklerini ve davranışlarını aktırmak için kullanılır. Bu özellik sayesinde, bir nesnenin tekrar tekrar yazılması yerine, var olan bir nesnenin özellikleri ve davranışları başka bir nesneye aktarılabilir.

Bir diğer OOP kavramı ise çok biçimliliktir (polymorphism). Bu kavram, farklı koşullara yanıt veren bir nesnenin kullanılabilirliğidir. Nesneler, farklı durumlarda farklı şekillerde davranabilirler ve bu kavram sayesinde, kodun daha esnek hale gelmesi sağlanır.

En son olarak, kapsülleme (encapsulation) kavramından bahsedebiliriz. Kapsülleme, kontrol edilmesi gereken özelliklere ve metotlara sahip nesnelerin oluşturulmasına yardımcı olan bir OOP özelliğidir. Bu sayede, nesnelerin kullanımı sırasında hataların önüne geçilebilir ve kodun daha güvenli hale gelmesi sağlanabilir.

Özetlemek gerekirse, JavaScript'te nesne yönelimli programlama için sınıflar, nesneler, özellikler, metodlar, miras, çok biçimlilik ve kapsülleme temel kavramlardır. Bu kavramları öğrenerek, daha organize, okunaklı ve güvenli JavaScript kodları yazabilirsiniz.


Nesne Yönelimli Programlama (OOP) Nedir?

Nesne Yönelimli Programlama (OOP), programlama dünyasında yaygın olarak kullanılan bir yaklaşımdır. Bu yaklaşım, kodun nesnelere dayandırılmasını sağlar. OOP, birçok programlama dilinin temeli haline gelmiştir ve JavaScript'te de sıklıkla kullanılmaktadır.

JavaScript'te OOP, sınıflar ve nesneler aracılığıyla gerçekleştirilir. Sınıflar, nesnelerin özelliklerini ve davranışlarını tanımlayan genel bir taslaktır. Nesneler ise, sınıfların örneğidir ve her nesne kendine özgü bir özellik ve davranışlar sergileyebilir. Bu sayede, büyük ve karmaşık projelerde kodun daha düzenli ve anlaşılır olması sağlanır.

OOP, programlama dünyasında büyük bir devrim yaratmıştır. Bu yaklaşım sayesinde, kodun daha esnek, bakımı kolay ve yeniden kullanılabilir hale gelmesi sağlanmıştır. JavaScript'te OOP kullanımı da oldukça yaygındır ve bu sayede geliştiriciler daha güçlü ve ölçeklenebilir projeler oluşturabilmektedirler.


Sınıflar ve Nesneler

Sınıflar, nesne yönelimli programlamada temel bir kavramdır. Genel bir taslak sağlayarak nesnelere özellikler ve davranışlar kazandırır. Sınıflar, daha önce belirlenmiş özelliklere ve metotlara sahiptir.

Nesneler, belirli bir sınıfın örneğidir ve sınıftan aldıkları özellikler ve davranışlarla benzersizdirler. Sınıfların ürettiği örneklere nesne denir. Her nesne farklı parametrelere sahip olabilir ve sınıfta tanımlanan özellikleri kullanarak işlevlerini gerçekleştirir.

JavaScript'te, sınıf tanımlamak için "class" anahtar kelimesini kullanabilirsiniz. Örneğin, "Person" adında bir sınıf tanımlayabilir ve bu sınıfın özelliklerini ve metotlarını belirleyebilirsiniz. "person" kelimesi sınıfın örneğini tanımlar ve nesneler person sınıfının özelliklerini ve davranışlarını miras alır.

Sınıf Nesne
Person person1
  person2

Bir sınıfın özellikleri ve davranışları, örneklenebilir bir nesneye miras olarak aktarılır. Bu sayede kodun tekrarlanması önlenir ve bir obje üzerinde yapılan değişiklikler diğer objeleri etkilemez.

  • Bir sınıfın özellikleri ve davranışları, örneklenebilir bir nesneye miras olarak aktarılır.
  • Bu sayede kodun tekrarlanması önlenir ve bir obje üzerinde yapılan değişiklikler diğer objeleri etkilemez.
  • Nesne yönelimli programlama, kodun esnekliğini artırır ve tekrar kullanılabilirliği arttırır.

JavaScript'te sınıflar ve nesnelerin kullanımı, kodun anlaşılabilirliğini artırır ve işlevleri daha düzenli hale getirir.


Nesne Oluşturma

Nesne yönelimli programlamada, sınıfların özellikleri ve davranışları tanımlandıktan sonra bu sınıflardan nesneler oluşturmak mümkündür. Nesne oluşturma işlemi için, new anahtar kelimesinin ardından oluşturulacak sınıfın adı kullanılır. Örneğin, yeni bir kullanıcı nesnesi oluşturmak için aşağıdaki gibi bir kod yazılabilir:

let kullanici = new Kullanici();

Bu kodda, Kullanici sınıfından yeni bir nesne oluşturulmaktadır ve bu nesne kullanici değişkenine atanmaktadır. Bu değişken artık, Kullanici sınıfının özelliklerine ve metodlarına erişim sağlamak için kullanılabilir.

Bir sınıftan birden fazla nesne oluşturulabilir. Bu durumda, her oluşturulan nesne farklı bir değişkene atanmalıdır. Örneğin:

let kullanici1 = new Kullanici();let kullanici2 = new Kullanici();

Bu kodda, Kullanici sınıfından iki ayrı nesne oluşturulmuştur. İlk nesne, kullanici1 değişkenine atanırken; ikinci nesne ise kullanici2 değişkenine atanmıştır. Bu şekilde her bir nesne, farklı değişkenler tarafından kullanılabilir hale gelir.

new

JavaScript'te nesne yönelimli programlama kullanırken, yeni bir nesne oluşturmak için new anahtar kelimesi kullanılır. Bu anahtar kelimesi, bir sınıftan bir örneğin oluşturulduğunu belirtir. Yeni bir nesne oluşturmak için, sınıfın adı ve parantez içinde sınıf kurucunun parametreleri kullanılır.

Örneğin, aşağıdaki kod satırı, Car sınıfından bir araba örneği oluşturacaktır:

var car1 = new Car("Siyah", "BMW", 2021);

Burada, Car sınıfından bir araba nesnesi olan car1 değişkeni tanımlanıyor. "Siyah", "BMW" ve 2021, Car sınıfının parametreleridir.

anahtar kelimesi ve o sınıfın adı kullanılır.

JavaScript'te nesne yönelimli programlama için bir nesne oluşturmak, new anahtar kelimesinin kullanılması ve o sınıfın adının belirtilmesi gerekmektedir. Nesneyi oluşturduktan sonra, nesnenin özelliklerini ve metodlarını kullanabilirsiniz.

Örneğin, bir araba sınıfı oluşturalım ve bu sınıfta renk ve model özellikleriyle birlikte "start" ve "stop" adlı metodları tanımlayalım. Bu sınıftan bir nesne oluşturmak için, aşağıdaki örnek kodu kullanabilirsiniz:

Kod Örneği: let araba = new Araba("Kırmızı", "BMW");araba.start();araba.stop();

Bu örnekte, "araba" adlı bir nesne oluşturuluyor ve renk olarak "Kırmızı", model olarak "BMW" belirtiliyor. Daha sonra, "start" ve "stop" metodları bu nesne üzerinde kullanılıyor.


Özellikler (Properties)

JavaScript'te nesne yönelimli programlama, sınıflar ve nesneler kullanılarak kodun modülerleştirilmesini sağlar ve kodun daha kolay okunmasına ve bakımına olanak tanır. Özellikler (Properties), bir nesnenin taşıdığı verileri temsil eder. Bir özellik, bir nesnenin bir değere sahip olmasına izin verir ve bu değer, nesne tarafından taşınır.

Bir nesnenin özelliklerini tanımlamak için, özellik ismi ve değeri atanır. Özelliklerin değerleri, sabit veya değiştirilebilir olabilir. Bir özelliğin değerini güncellemek için nesneye erişmek ve özelliğin değerini değiştirme işlemi yapmak gerekir.

Özellikler genellikle tipli veya tiplsiz olarak tanımlanabilir. Tipli özellikler, özelliklere bir veri tipi atanması anlamına gelir. Örneğin, bir sayı özelliği oluşturmak için "number" veri tipi atanabilir. Bu, özelliğin değerinin yalnızca sayı olabileceği anlamına gelir. Bu, hatalı tiplerin atanmasını önler ve kodun daha güvenli hale gelmesini sağlar.

Bir nesnenin özelliklerini tanımlamak, bir sınıfta tanımlamayla benzerdir. Ancak, özellikler, bir nesnenin değerlerini taşıdığı için sınıflar arasında paylaşılamazlar. Örneğin, bir araba sınıfı, bir arabanın özelliklerini tanımlayabilir, ancak her arabanın farklı özelliklere sahip olabileceği anlamına gelir. Bu nedenle, her araba bir nesne olarak tanımlanır ve kendi özelliklerine sahip olur.


Tipli Özellikler (Typed Properties)

JavaScript'te, bir nesnenin özellikleri, herhangi bir veri tipini taşıyabilir. Ancak, bazen özelliklere sadece belirli bir veri tipine izin vermek isteyebilirsiniz. işte bu noktada tipli özellikler kullanılabilir.

Tipli özellikler, özelliklere bir veri tipi atanması anlamına gelir. Bir özellik, örneğin bir dize değil de, yalnızca bir sayı içerebilir.

Bir tipli özelliği tanımlamak için Özelliğin adı : Veri Tipi kullanılır. Örneğin:

Özellik Adı Veri Tipi
ad string
yas number

Bu örnekte özellik adı "ad" ve veri tipi "dize" olarak belirtilmiştir. Benzer şekilde, "yaş" özelliği number olarak belirtilmiştir.

Bu, bir nesnenin özellikleri üzerinde daha fazla kontrol sağlar ve programcılara hataları önleyip özellikleri daha doğru bir şekilde kullanmalarını sağlar.


Kısa Bir Örnek

Bu örnek, sınıfların ve nesnelerin nasıl kullanıldığını göstermektedir. Örneğimizde, bir Araba sınıfı oluşturma ve bu sınıftan birkaç araba nesnesi oluşturma işlemi yapacağız.

Araba Sınıfı Özellikleri
Özellik Tip Açıklama
Marka String Arabanın markası
Model String Arabanın modeli
Yıl Number Arabanın üretim yılı
Hız Number Arabanın hızı

Yukarıdaki tabloda, Araba sınıfının özellikleri ve veri tipleri belirtilmiştir. Şimdi Araba sınıfını oluşturalım:

class Araba {  constructor(marka, model, yil, hiz) {    this.marka = marka;    this.model = model;    this.yil = yil;    this.hiz = hiz;  }    hizlandir(hizArtisi) {    this.hiz += hizArtisi;  }    yavaslat(hizAzaltma) {    this.hiz -= hizAzaltma;  }}// Araba nesneleri oluşturmaconst arabalar = [];const araba1 = new Araba("BMW", "i8", 2020, 220);const araba2 = new Araba("Mercedes", "GLE 53", 2021, 250);const araba3 = new Araba("Audi", "RS7", 2022, 280);arabalar.push(araba1, araba2, araba3);

Yukarıdaki kodda Araba sınıfını oluşturduk ve constructor() fonksiyonu ile Araba nesnelerinin özelliklerini belirledik. Ayrıca hizlandir() ve yavaslat() fonksiyonları ile Araba nesnelerinin hızını arttırıp azaltabiliriz. Daha sonra, new anahtar kelimesi ile Araba sınıfından arabalar nesneleri oluşturduk ve bunları bir dizi içine ekledik.

  • araba1: BMW i8, 2020, 220 km/sa
  • araba2: Mercedes GLE 53, 2021, 250 km/sa
  • araba3: Audi RS7, 2022, 280 km/sa

Yukarıdaki listede ise oluşturduğumuz Araba nesnelerinin özellikleri belirtilmiştir. Artık arabalar dizisindeki Araba nesnelerini kullanarak işlemler yapabiliriz.


Metodlar (Methods)

Metodlar (Methods) bir nesnenin gerçekleştirdiği bir işlemi belirtir. Sınıflar, nesnelerin özelliklerini ve davranışlarını içeren bir şablondur. Bu davranışlar, sınıfların içinde bulunan metodlar aracılığıyla gerçekleştirilir. Bir nesnenin bir metodu çağırması, nesnenin bu metoda sahip olduğu anlamına gelir.

JavaScript metodları, diğer programlama dillerinde olduğu gibi fonksiyonlar olarak kullanılır. Metodlar, bir JavaScript sınıfının prototype özellikleri olarak belirlenir. Metotlar bir objeye ait özellikler olarak eklenir. Nesnelerin metodları, sınıfın metodlarına göre değişebilir.

Örneğin, bir Araba sınıfı düşünelim. Bu sınıfın start() adında bir metodu olsun. start() metodu, arabanın motorunu çalıştıracak bir görevi gerçekleştirir. Car sınıfından oluşturulacak bir araba, start() metodunu çağırarak arabanın motorunu çalıştırabilir.

Metod Adı Açıklama
toString() Nesnenin string temsilini verir.
valueOf() Nesne değerini döndürür.
hasOwnProperty() Nesnenin belirtilen özelliğinin doğrudan nesnenin bir özelliği olup olmadığını belirler.

Yukarıdaki örnekte, toString(), valueOf() ve hasOwnProperty() metotları, JavaScript nesnelerinin genel olarak sahip olduğu metodlardır.

Metodlar, JavaScript'te nesne yönelimli programlama için önemli bir bileşendir. Sınıflar ve nesnelerin birçok özelliği metodlar aracılığıyla gerçekleştirilir. Bu sebeple, bu temel kavramların tam bir anlayışına sahip olmak, JavaScript'te iyi bir yazılımcı olmak için önemlidir.


Miras (Inheritance)

Miras (Inheritance), nesne yönelimli programlama (OOP) için önemli bir kavramdır. Bir sınıf, diğer bir sınıftan özelliklerini ve davranışlarını devralabilir. Bu şekilde, bir sınıfın tüm özelliklerini ve davranışlarını diğer bir sınıf veya alt sınıf kullanabilir.

Örneğin, bir araç sınıfı oluşturduğunuzu ve bu sınıfın özelliklerinin örneğin hız ve güç olduğunu varsayalım. Daha sonra, bir araba sınıfı oluşturduğunuzu ve bu sınıfın araç sınıfından özellikleri devraldığını düşünelim. Araba sınıfı, aracın hızı ve gücüne ek olarak, birçok diğer özellikleri de içerebilir. Bu yöntem, kodun daha özlü olmasına ve benzer sınıfların birden fazla kez tanımlanmasına gerek kalmamasına yardımcı olur.

Mirasın avantajlarından biri, özellik veya davranışın tek bir yerden yapılandırılabilmesidir. Bu, kodun daha düzenli ve daha az tekrar eden hale gelmesine olanak tanır. Çocuk sınıfların ana sınıftan aldığı özelliklerin veya davranışların yeniden yazılabileceği veya değiştirilebileceği de unutulmamalıdır.

Miras, nesne yönelimli programlamanın temel yapısını oluşturan önemli bir prensiptir. Bu, OOP tabanlı programların daha okunaklı, ölçeklenebilir ve yönetilebilir olmasına yardımcı olur.


Çok Biçimlilik (Polymorphism)

Çok biçimlilik, nesne yönelimli programlama paradigmasının önemli bir özelliğidir. Bu kavram, aynı sınıftan türetilen nesnelerin, farklı şekillerde davranması gerektiği durumlarda kullanılır. Çok biçimliliğin amacı, nesnelerin farklı durumlara uygun şekilde davranabilmesini sağlamaktır.

Örneğin, bir araba nesnesi farklı hız limitlerine ve farklı yollar koşullarına göre hareket edebilmelidir. Bu durumda, çok biçimliliği kullanarak bir araba nesnesini farklı şekillerde davranacak şekilde tasarlayabiliriz. Bu sayede, aynı sınıftan türetilen nesneler farklı koşullara cevap verebilirler.

Çok biçimlilik, nesne yönelimli programlamanın temel prensiplerinden biridir ve birçok programlama dilinde bulunur. Bu özellik, programların daha esnek ve özelleştirilebilir olmasını sağlar. Programcılar, aynı sınıftan türetilen nesneleri farklı şekillerde davranacak şekilde tasarlayarak, kodlarının daha okunaklı ve yeniden kullanılabilir hale gelmesini sağlayabilirler.

Çok biçimlilik, nesne yönelimli programlamanın diğer prensipleriyle birlikte kullanıldığında, programların daha güçlü, daha esnek ve daha özelleştirilebilir hale gelmesini sağlar. Bu nedenle, programcılar tarafından sıkça kullanılan bir özelliktir ve birçok programlama dilinde standart bir özellik olarak bulunur.


Kapsülleme (Encapsulation)

Kapsülleme, nesne yönelimli programlama (OOP) için bir önemli bir özelliktir. Bu özellik, devreye sokulduğunda bir nesneyi koruma altına alır. Bu durum, o nesnenin özelliklerine ve metodlarına erişimi kontrol altına alır. Bu sayede, programcılar sadece özellikleri ve metodları belirli şekilde kullanılabilen nesneler oluşturabilirler.

Kapsülleme, bir nesnenin iç işleyişini gizlemeye yardımcı olur. Böylece, kullanıcılar sadece nesnenin belirtilen özelliklerine ve metodlarına erişebilirler. Bu da programcıların kodlarını daha da güvenli, okunaklı ve anlaşılır hale getirir.

Aşağıdaki tablo, kapsüllemenin faydalarını göstermektedir:

Kapsüllemenin Faydaları Açıklama
Güvenlik Nesnelerin özelliklerine ve metodlarına sadece belirli koşullar altında erişilebilir.
Anlaşılır Kodlama Kapsülleme, kodlamayı daha anlaşılır ve daha az karışık hale getirir.
Bakımı Kolay Ek özellikler ve işlevselliğin eklenebilmesi için nesnelerin iç yapısının yeniden yapılandırılması gerekli değildir.

Bu yüzden, nesne yönelimli programlama (OOP) ile kodlamaya başlamadan önce, kapsülleme gibi temel kavramları öğrenmek önemlidir. Bu sayede, kodlamayı daha etkili, güvenli, okunaklı ve anlaşılır hale getirebilirsiniz.


Sonuç

Yapılan açıklamalar doğrultusunda, JavaScript'te nesne yönelimli programlama için temel kavramlar sınıflar, nesneler, özellikler, metodlar, miras, çok biçimlilik ve kapsüllemedir. Sınıflar, nesnelerin özelliklerini ve davranışlarını tanımlayan genel bir taslaktır. Nesneler ise sınıfların örneğidir ve özellikler nesnenin taşıdığı verileri ifade eder. Metotlar nesnenin gerçekleştirdiği bir işlemi belirtirken, miras bir nesne için başka bir nesnenin özelliklerini ve davranışlarını aktarmak için kullanılır. Çok biçimlilik ise farklı koşullara yanıt veren bir nesnenin kullanılabilirliğini ifade eder. Kapsülleme ise kontrol edilmesi gereken özelliklere ve metotlara sahip nesnelerin oluşturulmasına yardımcı olan bir OOP özelliğidir.

Bu temel kavramların kullanımı, JavaScript kodlarının daha düzenli ve anlaşılır olmasını sağlayacak, mantıklı bir yapılandırmaya imkân verecektir. Bu durum, yazılım geliştirme sürecinde hem hız hem de kalite açısından önemli bir avantaj sağlayacaktır. Dolayısıyla, nesne yönelimli programlama konusunda bilgi sahibi olmak, bir yazılım geliştiricisi için şarttır. Bu nedenle, JavaScript öğrenenlerin, nesne yönelimli programlama konusunda yeterli bir bilgi birikimine sahip olmaları ve bu konuda bilinçli bir şekilde ilerlemeleri gerekmektedir.