İçeriğe atla

Nesne (programlama)

Programlama dizisinde nesne-yönelimli programlamada, nesne, basit yapılı blok programları olarak kullanılan, işletim zamanı verilerinin saklanması için oluşturulmuş özel birimidir. Programın işlemlerde bir koleksiyon gibi veya programın bilgisayarda komutlar listesi gibi basitçe göründüğü geleneksel bakış açısının tersine, bu nesneler birbiri üzerinde rol oynar. Her nesne mesaj alımına, veriyi işlemeye ve diğer nesnelere veri aktarımına yatkındır. Her nesne farklı rollerde ve sorumluluklarda yer alan veya bağımsız küçük makineler olarak gözlemlenebilir.

Derin içerik olarak

Bilgisayar biliminin matematiksel dallarında, nesne terimi tam olarak, bütünüyle matematiksel bir anlamla, herhangi “şey” e karşılık olmak üzere kullanılır. Bu açıklama, soyut teori tartışmasında kullanışlıyken, gerçek hesaplama ve bilgi işlemeye yakın olan daha kesin branşların (programlama gibi) tartışmalarında ilkel veri türüne hizmet edebilecek kadar kesin değildir. Bundan dolayı nesneler, hala kavramsal olarak tek ve bağımsız varlıklardır, fakat genel olarak belli bir büyüklük ve belli bir konumdaki bilgisayarın bitişik blok hafızasına doğrudan uyar. Sonuç olarak bu hesaplama ve bilgilendirme işlemi, bilgisayar hafızasının bir şekli olması gerektiğindendir. Bu anlamda nesneler, kaynakları, değişkenleri ve isim bağlayıcı gibi kavramları kusursuzca tanımlamak ihtiyaçlı temel ilkelerdir. Bu, yazının geri kalanının, nesnenin soyut yorumu yerine somut yorumu üzerinde odaklanacak olmasının sebebidir. Buna rağmen bilgisayar hafızası bloğunun, bir düzey soyutlamada bitişik olarak ortaya çıkabileceği ve diğerinin üzerinde bitişik olmayarak ortaya çıkabileceğini göz önünde bulunduran önemli şey ise nesne gibi işlemden geçirdiği programa bitişik olarak ortaya çıkmasıdır. Bu da programın ilgili olduğu nesnenin, olabildiğince iç kaynaklardan bağımsız olması gerektiğini gösterir. Çünkü diğer şekilde bundan böyle bir ilkel olmayacaktır. Bir başka deyişle, nesnenin özel saklama koşulları, nesnenin alıcılarına açık olmamalıdır ve alıcı kodlarını değiştirmeden değişebilmelidir. Nesneler sadece bağlamları kendinden haberdar olduğunda varolur; bilgisayar hafızasının bir parçası, bir program örneği gibi işlemden geçirildiğinde ancak nesneyi tutar (örneğin belirli prosedürlerle ve/veya veri türü ile işbirliği kurma işlemini kullanarak saklamak). Böylece, bir nesnenin ömrü, nesne olarak işlemden geçtiğindeki zamandır. Nedeni, bilgisayar hafızasındaki fiziksel varlıklarını göz ardı edersek, hala kavramsal mevcudiyet oluşlarıdır.

Bir başka deyişle işlem sırasındaki hafıza boşluğunu işgal etmeyen soyut kavramlar, açıklamaya göre, nesne olmayanlardır. Ör: sınıf kümelerindeki tasarım modelleri, istatistiksel türden programlardaki veri türleri. Özellikle anlamlı veriler içeren nesneleri vurgulamak gerekirse, veri nesnesi terimi bazen nesneyi ima etmektedir.

Nesne-Yönelimli Programlamadaki Nesneler

Nesne-yönelimli programlamada (NYP), bir program örneği (Ör: bilgisayarda işlenen bir program) birbirini etkileyen dinamik küme olarak işler. (NYP) deki nesneler, belirli çeşit yazılımlar içermek üzere daha genel kavramları genişletirler, diğerleri arasındaki şeylere izin verenler;

  1. Nesne ile hatırlanan veriler olarak ifade edilen veri üyeleri
  2. Önceden tanımlanmış yollarla veri üyelerine erişme metotları

Bazı nesne durumlarında, verinin iyi açıklanmış halinin her zaman hatırda kalacağını garanti etmek için (sınıf sabitliği zorunlu olacak), bir nesne veri üyelerine, üyeler metodu aracılığı ile ulaşılabilir. Bazı diller, veri üyeleri ve metotları arasında ayrım yapmamaktadır. Her nesnenin bir sınıftan üretildiği bir dilde, nesne o sınıfın bir örneğidir. Her nesnenin bir türü varsa, aynı sınıftan iki nesnenin veri türleri de birbirinin aynısı olacaktır. Bir sınıfa örnek vermek bazen sınıfa örnek oluşturma anlamına gelir. Nesneye gerçek hayattan bir örnek olarak “köpeğim” verilebilir, türe (bir sınıfa) örnek olarak “köpek” verilir ki bu da “hayvanlar” sınıfının alt sınıfıdır. Çok biçimli nesne durumunda, türünün bazı ayrıntıları seçenekli olarak göz ardı edilir, örneğin bir “köpek” nesnesi “hayvan” olarak bakıldığında bir fonksiyon olarak kullanılabilir. Bu durumda bir “kedi” de olabilir çünkü o da “hayvan” sınıfına aittir. “hayvan” olarak ulaşıldığında, bazı üyeler “köpek” veya “kedi” olarak kullanılmaz sayılır, “kuyruk” olarak saymak gibi, çünkü tüm hayvanlar kuyruğa sahip değildir.

Bir hayalet, kaynağı olmayan bir nesnedir. Bu yüzden programda hiçbir şey sunmaz, sonrasında çöp toplayıcı hafızayı boş olarak işaretler, buna rağmen nesne, veri üzerine yazılıncaya kadar tutar.

Nesneleri karakterize eden üç özellik;

  1. Kimlik: nesneyi diğer nesnelerden ayırt edici özelliktir.
  2. Durum: nesnede saklanan veriyi tanımlar.
  3. Davranış: nesnenin kullanabileceği, nesne arabirimindeki metotları tanımlar.

Nesnenin içerdiği özelleşmiş çeşitler için bazı terimler;

  • Yalnız nesne: Programın ömrü boyunca sınıfına tek örnek olabilecek nesnedir.
  • İzleç (İşlevsel nesne): Daha çok fonksiyon gibi davranan (fonksiyona C/C++ pointerı gibi) tek yöntemli nesne (C++ da, bu metot işlem operatörü “operator( )”).
  • Sabit nesne: Üretim zamanında sabit bir durumla kurulmuş bir nesne ve sonrasında değişmeyen nesnedir.
  • Birinci sınıf nesne: Sınırlama olmadan kullanılan nesnedir.
  • Konteyner nesne: Diğer nesneleri içerebilecek nesnedir.
  • Üretimlik nesne: Amacı diğer nesneleri üretmek olan nesnedir.
  • Meta nesne: Başka nesnelerden üretilebilen nesnedir (sınıfla kıyasla önemsiz bir nesnedir).
  • Prototip: Kopyalama yoluyla diğer nesnelerden üretilen özelleşmiş metanesnedir.
  • Yüce nesne: Çok bilen veya çok yapan nesnedir. Yüce nesne, örneği olmayana örnektir.
  • Anti nesneler: Genellikle büyük olan, öne ve arkaya bilişimsel yer değiştirerek paralel yaklaşan, zor problemleri çözen ve kavramsallaşmada kullanışlı bilişimsel istiarelerdir.

Dış bağlantılar

Kaynakça

İngilizce Vikipedi - Object (computer science) maddesi.

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

<span class="mw-page-title-main">RAM</span> herhangi bir sırada okunabilen ve değiştirilebilen bir tür geçici veri deposu

Rastgele erişimli hafıza veya rastgele erişimli bellek mikroişlemcili sistemlerde kullanılan, genellikle çalışma verileriyle birlikte makine kodunu depolamak için kullanılan herhangi bir sırada okunabilen ve değiştirilebilen bir tür geçici veri deposudur. Buna karşın diğer hafıza aygıtları saklama ortamındaki verilere önceden belirlenen bir sırada ulaşabilmektedir, çünkü mekanik tasarımları ancak buna izin vermektedir.

Yapısal programlama, programlama dilleri kullanılarak yazılan, mantıksal bütünlük gösteren bloklara (bölümlere) bölünebilirler. Bu yolla uzun ve karmaşık programların, bloklara ayırarak daha kolay biçimde yazılabilmesi mümkün olmaktadır.

<span class="mw-page-title-main">Nesne yönelimli programlama</span> nesne kavramına dayalı programlama paradigması

Nesne yönelimli programlama veya kısaca NYP, Her işlevin nesneler olarak soyutlandığı bir programlama yaklaşımıdır. NYP destekleyen programlama dilleri yüksek seviye diller olarak adlandırılır.

Veri yapısı, bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılan yapı.

Nesne Yönelimli Çözümleme ve Tasarım, bir sistemin/sistem modülleri setinin/organizasyonun/işletme biriminin gereksinimlerinin çözümlenmesinde ve uygun bir çözümün tasarımında nesne ile modelleme tekniklerini kullanır. Modern nesne yönelimli çözümleme ve tasarım yöntemlerinin çoğu, gereksinim, tasarım, uygulama, test ve dağıtım süreçleri boyunca kullanım senaryoları üzerine kuruludur. Kullanım Senaryoları, nesne yönelimli programlama ile birlikte ortaya çıkmış olmasına rağmen yordamsal programlanan sistemlerde de işe yaramaktadır.

Veri türü, bilgisayar programlamasının tür sisteminde veriyi açıklamak üzere kurulmuştur. İlkel türleri de içeren programlama dillerindeki verinin ortak türleri, tuple'ler, kayıtlar, cebirsel veri türleri, soyut veri türleri, referans türleri, sınıflar ve işlev türleridir. Bir veri türü, temsil etmeyi, yorumlamayı ve algoritmaları veya bilgisayar belleğini veya diğer yapılarını tanımlar. Tür sistemi, veri türü bilgisini, veriyi kullanan veya veriye erişen bilgisayar programlarının doğruluğunu kontrol etmek amaçlı kullanır.

Cephe yönelimli programlama veya ilgiye yönelik programlama, çapraz kesim işlerini bölerek modülerliği artırmayı amaçlayan bir programlama yaklaşımıdır. Bütün programlama yaklaşımlarında kodlar uzadıkça, kodların anlaşılabilirliği çok düşmekte, bazen de içinden çıkılmaz bir hal almaktadır. Programlamanın varlığıyla birlikte bu sorun da hep var olmuştur. Bu sorunla savaşabilmek için sürekli çalışmalar devam etmektedir, bu süreçte ortaya çıkan önemli bir programlama yaklaşımı da Cephe Yönelimli Programlamadır.

Bilgisayar bilimlerinde soyutlama, daha çok nesne yönelimli programlama ile ön plana çıkar. Nesne tanımlanırken verinin kulanılması veya veriye erişilmesi için gerekli detayların azaltılması işlemidir.

<span class="mw-page-title-main">Sınıf (programlama)</span> nesne yönelimli programlamada, bir nesnenin nasıl çalıştığını belirten bir tanım

Sınıf, nesne yönelimli programlama dillerinde nesnelerin özelliklerini, davranışlarını ve başlangıç durumlarını tanımlamak için kullanılan şablonlara verilen addır. Bir sınıftan türetilmiş bir nesne ise o sınıfın örneği olarak tanımlanır. Sınıflar genelde şahıs, yer ya da bir nesnenin ismini temsil ederler. Sınıflar metotları ile nesnelerin davranışlarını, değişkenleri ile ise nesnelerin durumlarını kapsül ederler. Sınıflar hem veri yapısına hem de bir ara yüze sahiptirler. Sınıflar ile nasıl etkileşime girileceği bu ara yüzler sayesinde sağlanır. Örneğin bir sınıf şablonu ile renk özelliğine, tekerleklere ve sür metoduna sahip olan bir araba temsil edebilir.

Kapsülleme nesne yönelimli programlamada herhangi bir nesnenin metotlarını, verilerini ve değiskenlerini diğer nesnelerden saklayarak ve bunlara erişimini sınırlandırarak yanlış kullanımlardan koruyan bir konsepttir. Bir nesne üzerinde hem veri soyutlama, hem de kontrol soyutlaması yapılıyor ise buna sarma adı verilir. Çoğu programlama dilleri kapsüllemeyi aşağıda sıraladığımız üç bilgi erişim belirteçleri ile desteklerler.

Programlama paradigmaları, programlama dillerini özelliklerine göre sınıflandırmanın bir yoludur. Diller birden fazla paradigma içinde sınıflandırılabilir.

<span class="mw-page-title-main">Java sanal makinesi</span>

Java Sanal Makinesi (JSM), Java platformunun nesne modülü formatı olan class uzantılı sınıf dosyalarının belleğe yüklenip çalıştırılması için gereken hizmetleri sunan bir sistem programıdır ve temel görevinin sınıf dosyalarını yorumlamak olduğu söylenebilir. Ancak, JSM'ni salt bir yorumlayıcı olarak görmek büyük haksızlık olur. Zira, yorumlama ile birlikte JSM'nin şu görevleri de vardır.

Nesne yönelimli programlama dillerinde arayüz, değişik sınıflardan nesnelerin kategorize edilmesini sağlayan bir soyut tür çeşitidir. Tanımlanmakta olan kategorinin birbirleriyle alakasız sınıfları ortak bir çatı altında toplaması nedeniyle, arayüz tanımları, soyut sınıfların aksine, listeledikleri iletilerin gerçekleştirim ayrıntısı olan herhangi bir bilgi içeremezler. Dolayısıyla, bir arayüz tanımı iletilere karşılık gelen bir altyordam gövdesi veya altalan tanımı içeremez. Bir başka açıdan bakarsak, arayüz tanımında yer alan programlama öğelerinin zaman içinde değişme olasılığı düşük öğeler olması gerekir. Buna göre, arayüz tanımları gerçekleştirimci ile kullanıcının paylaştığı ve sabit olma özelliği bulunan altyordam imzaları ile simgesel sabit tanımlarını barındırabilir.

Soyut sınıf, nesne yönelimli programlamada nesnesi yaratılamayan sınıflara denir. Nesne yaratılamamasının nedeni, sınıfın kullanıcı arayüzünde yer alan bir veya daha çok sayıdaki iletinin gerçekleştirilmemesidir.

Seed7 Thomas Mertes tarafından geliştirilmiş olan genişletilebilir ve genel amaçlı bir programlama dilidir. Sözdizim kuralları açısından C'ye ve Pascal'a çok benzer.

Bilgisayar yazılımında veri erişim katmanı, tutarlı bir depoda saklanan veriye basitçe erişim sağlayan bir bilgisayar programı katmanıdır, bu tutarlı depoya varlık-ilişki veritabanı örneği verilebilir. Bu yapı ismi Microsoft.ASP.NET ortamlarında yaygın bir şekilde kullanılır.

<span class="mw-page-title-main">Kristen Nygaard</span> Norveçli bilgisayar bilimcisi, programlama dili tasarımcısı ve siyasetçi

Kristen Nygaard Norveçli bir bilgisayar bilimcisi, programlama dili öncüsü ve politikacıydı. Uluslararası alanda Nygaard, 1960'larda Ole-Johan Dahl ile nesne yönelimli programlamanın ve Simula programlama dilinin ortak mucidi olarak kabul edilmektedir. Nygaard ve Dahl, bilgisayar bilimine yaptıkları katkılardan dolayı 2001 A. M. Turing Ödülü'nü, 2002 yılında IEEE John von Neumann Madalyası'nı kazanmıştır.

Small Basic, Microsoft'un geliştirdiği ve yayımladığı bir programlama dilidir.