NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

Nesne Yönelimli Programlama:
Nesne yönelimli programlama (NYP), (İngilizce: Object - Oriented Programming) özetle bir bilgisayar programlama yaklaşımıdır. Günümüzde pek çok çağdaş programlama dili tarafından desteklenmektedir.

NYP'dan önceki uygulamaların bakım maliyeti ve karmaşıklık ilişkisi
1960'lı yılların sonuna doğru ortaya çıkan bu yaklaşım, o dönemin yazılım dünyasında beliren bir bunalımın sonucudur. Yazılımların karmaşıklığı ve boyutları sürekli artıyor, ancak belli bir nitelik düzeyi korumak için gereken bakımın maliyeti zaman ve çaba olarak daha da hızlı artıyordu. NYP'yi bu soruna karşı bir çözüm haline getiren başlıca özelliği, yazılımda birimselliği (modularity) benimsemesidir. NYP ayrıca, bilgi gizleme (information hiding), veri soyutlama (data abstraction), çok biçimlilik (polymorphism) ve kalıtım (inheritance) gibi yazılımın bakımını ve aynı yazılım üzerinde birden fazla kişinin çalışmasını kolaylaştıran kavramları da yazılım literatürüne kazandırmıştır. Sağladığı bu avantajlardan dolayı, NYP günümüzde geniş çaplı yazılım projelerinde yaygın olarak kullanılmaktadır.

NYP'nin altında yatan birimselliğin ana fikri, her bilgisayar programının (izlence), etkileşim içerisinde olan birimler veya nesneler kümesinden oluştuğu varsayımıdır. Bu nesnelerin her biri, kendi içerisinde veri işleyebilir, ve diğer nesneler ile çift yönlü veri alışverişinde bulunabilir. Hâlbuki NYP'den önce var olan tek yaklaşımda (Yordamsal programlama), programlar sadece bir komut dizisi veya birer işlev (fonksiyon) kümesi olarak görülmektedirler.

Günümüzde çok çeşitli nesne tabanlı programlama dilleri olmasıyla beraber, en popüler diller sınıflar üzerine kurulmuşlardır (class-based). Bu dillerde nesneler sınıfların birer üyesidir ve nesnelerin tipini de bu sınıflar belirlerler.

En yaygın NYP dillerinden bazıları, Python, C++, Objective-C, Smalltalk, Delphi, Java, Swift, C#, Perl, Ruby ve PHP' dir.
Nesne yönelimli programlama dilleri yukarıda adı geçen tüm ögelere sahip olurken, Ada, JavaScript, Visual Basic gibi nesne tabanlı programlama dilleri birkaçından yoksundur, bu dillerin başlıca yoksunluğu kalıtıma sahip olmamalarıdır.

Nesneler ve sınıflar
NYP'yi destekleyen programlama dilleri genellikle tekrar kullanım ve genişletilebilirlik açısından, prototipler ve sınıflar şeklinde kod kalıtımına sahiptirler ve NYP deki nesneler kimi zaman gerçek dünyada bulunan şeylere karşılık gelebilir. Mesela bir grafik programı "kare", "üçgen" ve "yuvarlak" gibi nesnelere sahip olabilir. Bazen nesneler daha soyut şeyleride temsil edebilirler, mesela bir hesap makinesi programı logaritma almanızı ya da metreyi fite çevirmenizi sağlayacak nesnelere sahip olabilir. İşte bu bahsi geçen nesneler belli sınıflar altında bulunurlar, mesela "Kasım" adında bir nesne Aylar sınıfının bir üyesi olabilir ya da "Faktöriyel" olarak isimlendirilmiş bir nesne Fonksiyonlar sınıfında yer alıyor olabilir.

1. Soyutlama (Abstraction)
Soyutlama denilince, nesneyi bazı karakteristikleri olan ve bazı eylemleri gerçekleştirebilen bir veri tipi olarak genelleştirmek anlaşılmalıdır. Yeryüzü üzerinde bulunan her şey bir nesnedir. Bilgisayar yazılımı açısından nesne, bir varlığın temsil biçimidir. Örneğin; bina bir nesnedir. Binayı bilgisayar yazılımı içinde temsil etmek istersek, öncelikle bu nesnenin yani binanın ayırt edici
özelliklerini belirlemeliyiz.

Örneğin;
Bina yüksekliği
Dış yüzey rengi
Kat sayısı
Zemin alanı
Zemin boyutları
gibi özellikler, binayı temsil etmek için ilk akla gelen birkaç özelliktir. O halde nesnenin bilgisayarda temsilinde, özellikleri kilit rol oynamaktadır.

Nesnenin karakteristikleri, özellikler ve gerçekleştirebileceği eylemler de metot adını alır. Bu anlamda, soyutlaştırmanın sonucunda bir nesne;

Özellikleri (properties, member variables - Objective-C)
Metotları (methods) ile temsil edilebilir

Nesne Yönelimli Programlama Dilleri, soyutlamayı sınıf (Class) yapısı ile gerçekleştirirler. Sınıf yapısı içinde o nesneye ait özellikler ve metotlar tanımlanabilir.

Ancak sınıf soyut bir yapıdır ve doğrudan kullanılamaz. O sınıftan üretilen örnekler sınıfa ait tüm özelliklere ve metotlara sahip olurlar. Bunlar program içinde doğrudan kullanılabilirler. Sınıftan üretilen her örnek, aynı özellik ve metotlara sahip olacak ancak özelliklerin değerleri doğal olarak farklı olabilecektir.

Örneğin, insanı bir nesne olarak düşünürsek ve insan sınıfı olarak soyutlarsak, ilk akla gelen özellikleri; boy, kilo, IQ ve EQ değerleri, eğitim düzeyi vb. gibi özellikler olur. Bu özelliklerin değerleri doğal olarak her insan için farklıdır. İnsan için ilk akla gelen eylemler (metotlar) ise; yürüme, okuma-yazma, konuşma, araç kullanma vb. gibi metotlardır.

2. Sarmalama / Paketleme (Encapsulation)
Paketlemenin anlamı; sınıfı oluşturan metot ve özelliklerin gerçekleştirme biçiminin, bu sınıfı kullanacak olan kullanıcılardan gizlenmiş olmasıdır.

NESNE = VERİ + METODLAR
Şeklinde ifade edilen bağıntı aslında Nesne Yönelimli Programlama'nın temelini açıklamaktadır. Veri (özellikler) ve veri üzerinde işlem yapan kod (metotlar) bir arada bulunur ve nesneyi oluşturur. Nesneyi tanımlayan sınıfın iç ayrıntıları, normal olarak programın artakalan kısmı için görünür değildir.

Bir nesne sınıfının gerçekleştirimini değiştirirsek, yani aynı sınıfı metot ve özellikleri aynı kalmak koşuluyla farklı bir programlama tekniğiyle oluşturursak, o sınıfın dış dünyaya olan arayüzü değişmediği sürece (metot ve özellikler aynı kaldığı sürece) bu sınıfı kullanan program kodlarınızda bir değişiklik yapmamıza gerek kalmayacaktır.

3. Miras Alma (Inheritance)
Nesneye yönelik programlamada, bir nesne, genellikle bir nesne sınıfına ait bir örnektir (instance).

Örneğin, Albert Einstein, insan sınıfının bir örneğidir. Bir nesne sınıfından alt sınıflar (subclasses) oluşturulabiliyorsa, türetme özelliği (derivation) var demektir. Örneğin insan sınıfı, canlı sınıfının bir alt sınıfıdır.

Kendisinden alt sınıf üretilen sınıfa, temel sınıf (base class) veya süper sınıf (super class) veya ana sınıf (parent class) adı verilir.

Subclass yerine child class terimi de kullanılmaktadır.

Alt sınıfın nesneleri, türetildikleri temel sınıfa ait özellikleri alıyorsa, burada miras alma (inheritance) özelliği vardır denir.

Bu anlamda, miras alma özellikli bir nesne yönelimli programlama dilinde, bir nesne sınıfından türetilen alt nesne sınıfına ait nesneler, üst sınıfın özelliklerini (properties) ve metodlarını (methods) aynen alırlar.

4. Çok Biçimlilik (Polymorphism)
Farklı nesnelerin, aynı mesaja (olaya ya da uyarıma) farklı şekillerde cevap verebilme yeteneğidir.

Her nesne sınıfı, kendi metotlarını paketlediği için ve bu metotlar programın kalan kısmı için gizli olduğundan, farklı sınıflar aynı isimde bazı metotlara sahip olabilirler.

Örneğin ŞEKİL adlı bir süper sınıfımız (super class) olsun. Bu sınıftan, DAİRE, KARE ve ÜÇGEN adlı 3 alt sınıf türettiğimizi varsayalım. Bu alt sınıfların her biri kendi örneklerini çizmek için ÇİZ adlı bir metoda sahip olabilir. Fakat, her bir alt sınıf için bu metot aynı olmasına karşın, bu metodu devreye sokmak için gönderilecek mesajdan sonra her alt sınıfa ait nesne farklı bir şekil (yani kendini, yani bir üçgen, daire veya kare) çizecektir.

Nesne Yönelimli Programlamanın sınıf türetebilme özelliği sayesinde, bir nesne hiyerarşisi oluşturma imkânı bulunnmaktadır.

Tanımlama: Çağrılıp çalıştırılabilen program parçası demektir. Temel özelliği kod parçasının başka bir program tarafından başka bir yerden çağrılmasıdır. Printf, scanf gibi komutlarda aslında bir alt programdır. Temel mantığını öğrenmek için ise dizilerin son konusu olan İki matrisin çarpımını yapan C programı konusunda akış şeması bölümünü incelersek bir sayfayı sığmadığını görürüz. Halbuki biz bunu fonksiyon kullanarak 3 bölüme ayırıp bir sayfayı tüm programın özellikleri yazmak yerine sadece 3 adet fonksiyon yazacaktık. Böylece akış şeması, algoritma ve programı parçalara bölücektik. Fonksiyon aynı zamanda Nesne yönelimli programlamanın temel yapıtaşlarından olup şirketlerin oluşturduğu yazılımlarda depertmanlar arası bölümlendirmede kullanılırlar.
     
 
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.