SlideShare a Scribd company logo
1 of 14
JavaScript ile OOP
JavaScript Nedir ?
JavaScript HTML kodlarının içine yazılır. Yazılan kodun bir JavaScript kodu
olduğu browser'a <script>...</script> etiketleri ile bildirilir.
Tıpkı HTML gibi, JavaScript kodları da yorumlanmak için bir browser'a
ihtiyaç duyarlar, yani sonuçta '.exe' uzantılı, bağımsız olarak çalışabilecek bir
dosya oluşmaz.
JavaScript bir olay halinde işler; olay JavaScript açısından ziyaretçinin bir
yere tıklaması, bir tuşa basması vs. olabilir[1].
OOP nedir ?
Adından da anlaşılacağı gibi nesne tabanlı bir programlama
tekniği diye tanımlayabiliriz. Daha açacak olursak; bizler programlarımızda
Kodlar yazarken bazı zamanlar oluyor ki aynı kodu başka bir yerde
kullanmamız gerekiyor ve üşenmeden tekrar yazıyorduk.
Artık böyle bir şey yok. Kodlarımızı sınıflar içerisinde yazarak daha
kullanışlı hale getiriyoruz[2].
Eğer kodları formumuza çift tıkladığımızda açılan sayfaya yazmıyor ve
parçalara bölüp ilgili class lar oluşturup oralardan nesnelerimizi çağırıyorsak
buna OOP (Object-Oriented Programming) denir. Genel
olarak 3 prensibi vardır ve bunlar ;
1- Encapsulation
2- Inheritance
3- Polymorphism [2]
 Encapsulation: obje hakkındaki bilgiler ve işlemler anlamına gelir. Metot ve
özellik olarak adlandırdığımız bu işlemler bir nesnenin niteliklerini ve
işlemlerini ortaya koyar. Örneğin bir öğrencinin numarası,adı,soyadı gibi.
 Inheritance: Bir objenin başka bir obje üzerine kurulmasıdır. Örneğin bir
öğrencinin numarasının, masasının, göz renginin olması ve bunlardan da
öğrencinin tam objesini etkilemesi gibi [2].
 Polymorphism: Belli bir işlemin (metodun) birçok obje tarafından
kullanılmasıdır[2].
 Bu yazımızda JavaScript ile oluşturduğumuz objenin private değişkenlerini
nasıl modifiye edeceğimizi öğreneceğiz.
 Öncelikle obje içerisinde nasıl private değişken tanımlanır ve nasıl bir
davranış sergiler ona bakalım. Tanımladığımız değişkenlerden biri objemizin
property si olacak diğeri ise objemiz içerisinde local değişken olarak
tanımlanacak[3].
function Ninja()
{
var ad = "Çağatay";
this.ad = "Anıl";
console.log(ad)
console.log(this.ad)
}
Ninja isimli objemdeki değişkenlerden “Çağatay” tanımlanan
lokal değişken “Anıl” ise objeye bağlı property. Aynı isimle
tanımlanmamasına rağmen değişken ve property ayrı
yerlerde saklanmaktadır. Böylelikle bu yöntemi kullanarak aynı
isimle iki değişken tanımlanabilinir. Ekrandaki objeden
instance aldığımızda veya tetiklediğimizde ekrana sırayla
“Çağatay” ve “Anıl” yazacaktır [3].
function Ninja()
{
this.ad = "Çağatay";
console.log(ad)
}
Mevcut objenin içerisinde tanımlanan property i yakalamaya çalışılıyor. Bu durumda
eğer objeden instance alınırsa console ekranından “Uncaught ReferenceError: ad is
not defined” şeklinde bir mesaj alınacaktır. Bu da mevcut instance durumunda
değişkenlerin ayrı saklandığının göstergesi. Fakat Ninja objesini tetiklenirse (Örneğin
bir butonun onclick event yardımıyla tetiklendiğini düşünelim veya kod bloğuna
Ninja(); satırını eklersek) ekrana “Çağatay” yazdığını görüelecektir.
Burada fonksiyonumuz this.ad property sini bir değişken olarak algılamakta.
Böylelikle Mevcut tetiklemelerle obje içerisinde bulunan property ler değişken olarak
kullanılabilir [3].
Gelelim aynı tetiklemeyle dışarıdaki global değişkenleri modifiye etmeye;
var ad = "anıl"
function Ninja()
{
this.ad = "Çağatay";
}
Ninja();
console.log(ad)
Bu kod satırı çalıştığında ekrana “Çağatay” yazacaktır.
Yani Ninja objesinin tetiklenmesi ile içerideki property
değişken olarak okunacak ve yukarıdaki değişkeni
değiştirecektir. Eğer objeyi bir fonksiyon olarak
kullanmak yerine instance alırsak ekrana mevcut
değişken “Anıl” yazacaktır. Büyük javascript projelerinde
bu durum bazı kod karmaşalarına yol açabilmektedir. Bu
durumu engellemek için “this instanceof” anahtar
kelimesini kullanılır.
var ad = "anıl"
function Ninja()
{
if (!(this instanceof Ninja)) return new
Ninja();
this.ad = "Çağatay";
}
Ninja();
console.log(ad)
Yandaki kod satırı görüldüğü üzere eğer obje
tetiklemesi instance alınmadan gerçekleşiyorsa
objeden instance almakta böylelikle içerideki
“Çağatay” değişkenini property olarak tanımaktadır.
Bu şekilde kod bloğu çalıştığında ekrana “Anıl”
yazacaktır. Bu yöntemle objenin ne şekilde
tetiklendiğini obje içerisinde rahatlıkla kontrol
edebiliyor ve ona göre işlemlerimizi
gerçekleştirilebiliyoruz. [3].
•private variables are declared with the 'var' keyword inside the object, and can only be accessed by
private functions and privileged methods.
•private functions are declared inline inside the object's constructor var functionName=function(){...})
•privileged methods are declared with this.methodName=function(){...} and may invoked by code external
to the object.
•public properties are declared with this.variableName and may be read/written from outside the object.
•public methods are defined by Classname.prototype.methodName = function(){...} and may be called from
outside the object.
•prototype properties are defined by Classname.prototype.propertyName = someValue
•static properties are defined by Classname.propertyName = someValue
Kaynaklar :
[1]http://cagatayyildiz.com/javascript-ile-oop-6/
[2]http://ibrahim-ozdemir.blogcu.com/nesne-yonelimli-programlama-object-
oriented-programming-nedir/6544819
[3]http://www.abecem.net/web/javascript-nedir.html
TEŞEKKÜRLER…

More Related Content

Viewers also liked

фейсбук
фейсбукфейсбук
фейсбукMarina
 
блог
блогблог
блогMarina
 
SmartTrans Investor Presentation - October 2014
SmartTrans Investor Presentation - October 2014SmartTrans Investor Presentation - October 2014
SmartTrans Investor Presentation - October 2014SmartTrans Holdings
 
THE DETERMINATION OF PHENOLIC COMPOUNDS IN DIFFERENT MENTHA L. SPECIES CULTIV...
THE DETERMINATION OF PHENOLIC COMPOUNDS IN DIFFERENT MENTHA L. SPECIES CULTIV...THE DETERMINATION OF PHENOLIC COMPOUNDS IN DIFFERENT MENTHA L. SPECIES CULTIV...
THE DETERMINATION OF PHENOLIC COMPOUNDS IN DIFFERENT MENTHA L. SPECIES CULTIV...Attila Szkukalek
 
Acetone gas sensors based on graphene zn fe2o4 composite prepared
Acetone gas sensors based on graphene zn fe2o4 composite preparedAcetone gas sensors based on graphene zn fe2o4 composite prepared
Acetone gas sensors based on graphene zn fe2o4 composite preparedUğur Acar
 
Mobile phones display's properties
Mobile phones display's propertiesMobile phones display's properties
Mobile phones display's propertiesUğur Acar
 

Viewers also liked (10)

Bryan carr agm 14
Bryan carr agm 14Bryan carr agm 14
Bryan carr agm 14
 
фейсбук
фейсбукфейсбук
фейсбук
 
блог
блогблог
блог
 
Results of agm 14
Results of agm 14Results of agm 14
Results of agm 14
 
Investor update feb 2015
Investor update feb 2015Investor update feb 2015
Investor update feb 2015
 
Sma half yearly
Sma half yearlySma half yearly
Sma half yearly
 
SmartTrans Investor Presentation - October 2014
SmartTrans Investor Presentation - October 2014SmartTrans Investor Presentation - October 2014
SmartTrans Investor Presentation - October 2014
 
THE DETERMINATION OF PHENOLIC COMPOUNDS IN DIFFERENT MENTHA L. SPECIES CULTIV...
THE DETERMINATION OF PHENOLIC COMPOUNDS IN DIFFERENT MENTHA L. SPECIES CULTIV...THE DETERMINATION OF PHENOLIC COMPOUNDS IN DIFFERENT MENTHA L. SPECIES CULTIV...
THE DETERMINATION OF PHENOLIC COMPOUNDS IN DIFFERENT MENTHA L. SPECIES CULTIV...
 
Acetone gas sensors based on graphene zn fe2o4 composite prepared
Acetone gas sensors based on graphene zn fe2o4 composite preparedAcetone gas sensors based on graphene zn fe2o4 composite prepared
Acetone gas sensors based on graphene zn fe2o4 composite prepared
 
Mobile phones display's properties
Mobile phones display's propertiesMobile phones display's properties
Mobile phones display's properties
 

Similar to Javascript Programming with OOP

Introduction to Android Programming
Introduction to Android ProgrammingIntroduction to Android Programming
Introduction to Android ProgrammingAnıl Sözeri
 
Ileri seviye javascript by Azer Koculu
Ileri seviye javascript by Azer KoculuIleri seviye javascript by Azer Koculu
Ileri seviye javascript by Azer Koculumustafa sarac
 
Angular JS ve Node JS Güvenliği
Angular JS ve Node JS GüvenliğiAngular JS ve Node JS Güvenliği
Angular JS ve Node JS GüvenliğiBGA Cyber Security
 
İleri Seviye Programlama 2
İleri Seviye Programlama 2İleri Seviye Programlama 2
İleri Seviye Programlama 2Caner Bovatekin
 

Similar to Javascript Programming with OOP (6)

Flashlightoverlay
FlashlightoverlayFlashlightoverlay
Flashlightoverlay
 
Bileşke Türler
Bileşke TürlerBileşke Türler
Bileşke Türler
 
Introduction to Android Programming
Introduction to Android ProgrammingIntroduction to Android Programming
Introduction to Android Programming
 
Ileri seviye javascript by Azer Koculu
Ileri seviye javascript by Azer KoculuIleri seviye javascript by Azer Koculu
Ileri seviye javascript by Azer Koculu
 
Angular JS ve Node JS Güvenliği
Angular JS ve Node JS GüvenliğiAngular JS ve Node JS Güvenliği
Angular JS ve Node JS Güvenliği
 
İleri Seviye Programlama 2
İleri Seviye Programlama 2İleri Seviye Programlama 2
İleri Seviye Programlama 2
 

Javascript Programming with OOP

  • 2. JavaScript Nedir ? JavaScript HTML kodlarının içine yazılır. Yazılan kodun bir JavaScript kodu olduğu browser'a <script>...</script> etiketleri ile bildirilir. Tıpkı HTML gibi, JavaScript kodları da yorumlanmak için bir browser'a ihtiyaç duyarlar, yani sonuçta '.exe' uzantılı, bağımsız olarak çalışabilecek bir dosya oluşmaz. JavaScript bir olay halinde işler; olay JavaScript açısından ziyaretçinin bir yere tıklaması, bir tuşa basması vs. olabilir[1].
  • 3. OOP nedir ? Adından da anlaşılacağı gibi nesne tabanlı bir programlama tekniği diye tanımlayabiliriz. Daha açacak olursak; bizler programlarımızda Kodlar yazarken bazı zamanlar oluyor ki aynı kodu başka bir yerde kullanmamız gerekiyor ve üşenmeden tekrar yazıyorduk. Artık böyle bir şey yok. Kodlarımızı sınıflar içerisinde yazarak daha kullanışlı hale getiriyoruz[2].
  • 4. Eğer kodları formumuza çift tıkladığımızda açılan sayfaya yazmıyor ve parçalara bölüp ilgili class lar oluşturup oralardan nesnelerimizi çağırıyorsak buna OOP (Object-Oriented Programming) denir. Genel olarak 3 prensibi vardır ve bunlar ; 1- Encapsulation 2- Inheritance 3- Polymorphism [2]
  • 5.  Encapsulation: obje hakkındaki bilgiler ve işlemler anlamına gelir. Metot ve özellik olarak adlandırdığımız bu işlemler bir nesnenin niteliklerini ve işlemlerini ortaya koyar. Örneğin bir öğrencinin numarası,adı,soyadı gibi.  Inheritance: Bir objenin başka bir obje üzerine kurulmasıdır. Örneğin bir öğrencinin numarasının, masasının, göz renginin olması ve bunlardan da öğrencinin tam objesini etkilemesi gibi [2].
  • 6.  Polymorphism: Belli bir işlemin (metodun) birçok obje tarafından kullanılmasıdır[2].
  • 7.  Bu yazımızda JavaScript ile oluşturduğumuz objenin private değişkenlerini nasıl modifiye edeceğimizi öğreneceğiz.  Öncelikle obje içerisinde nasıl private değişken tanımlanır ve nasıl bir davranış sergiler ona bakalım. Tanımladığımız değişkenlerden biri objemizin property si olacak diğeri ise objemiz içerisinde local değişken olarak tanımlanacak[3].
  • 8. function Ninja() { var ad = "Çağatay"; this.ad = "Anıl"; console.log(ad) console.log(this.ad) } Ninja isimli objemdeki değişkenlerden “Çağatay” tanımlanan lokal değişken “Anıl” ise objeye bağlı property. Aynı isimle tanımlanmamasına rağmen değişken ve property ayrı yerlerde saklanmaktadır. Böylelikle bu yöntemi kullanarak aynı isimle iki değişken tanımlanabilinir. Ekrandaki objeden instance aldığımızda veya tetiklediğimizde ekrana sırayla “Çağatay” ve “Anıl” yazacaktır [3].
  • 9. function Ninja() { this.ad = "Çağatay"; console.log(ad) } Mevcut objenin içerisinde tanımlanan property i yakalamaya çalışılıyor. Bu durumda eğer objeden instance alınırsa console ekranından “Uncaught ReferenceError: ad is not defined” şeklinde bir mesaj alınacaktır. Bu da mevcut instance durumunda değişkenlerin ayrı saklandığının göstergesi. Fakat Ninja objesini tetiklenirse (Örneğin bir butonun onclick event yardımıyla tetiklendiğini düşünelim veya kod bloğuna Ninja(); satırını eklersek) ekrana “Çağatay” yazdığını görüelecektir. Burada fonksiyonumuz this.ad property sini bir değişken olarak algılamakta. Böylelikle Mevcut tetiklemelerle obje içerisinde bulunan property ler değişken olarak kullanılabilir [3].
  • 10. Gelelim aynı tetiklemeyle dışarıdaki global değişkenleri modifiye etmeye; var ad = "anıl" function Ninja() { this.ad = "Çağatay"; } Ninja(); console.log(ad) Bu kod satırı çalıştığında ekrana “Çağatay” yazacaktır. Yani Ninja objesinin tetiklenmesi ile içerideki property değişken olarak okunacak ve yukarıdaki değişkeni değiştirecektir. Eğer objeyi bir fonksiyon olarak kullanmak yerine instance alırsak ekrana mevcut değişken “Anıl” yazacaktır. Büyük javascript projelerinde bu durum bazı kod karmaşalarına yol açabilmektedir. Bu durumu engellemek için “this instanceof” anahtar kelimesini kullanılır.
  • 11. var ad = "anıl" function Ninja() { if (!(this instanceof Ninja)) return new Ninja(); this.ad = "Çağatay"; } Ninja(); console.log(ad) Yandaki kod satırı görüldüğü üzere eğer obje tetiklemesi instance alınmadan gerçekleşiyorsa objeden instance almakta böylelikle içerideki “Çağatay” değişkenini property olarak tanımaktadır. Bu şekilde kod bloğu çalıştığında ekrana “Anıl” yazacaktır. Bu yöntemle objenin ne şekilde tetiklendiğini obje içerisinde rahatlıkla kontrol edebiliyor ve ona göre işlemlerimizi gerçekleştirilebiliyoruz. [3].
  • 12. •private variables are declared with the 'var' keyword inside the object, and can only be accessed by private functions and privileged methods. •private functions are declared inline inside the object's constructor var functionName=function(){...}) •privileged methods are declared with this.methodName=function(){...} and may invoked by code external to the object. •public properties are declared with this.variableName and may be read/written from outside the object. •public methods are defined by Classname.prototype.methodName = function(){...} and may be called from outside the object. •prototype properties are defined by Classname.prototype.propertyName = someValue •static properties are defined by Classname.propertyName = someValue