İçeriğe atla

Objective-C

Objective-C
Paradigmasıyansıtıcı, sınıf tabanlı, nesne yönelimli
İlk çıkışı1983
TasarımcıBrad Cox ve Tom Love
GeliştiriciApple
Kararlı sürüm2.0 (26 Ekim 2007 (16 yıl önce) (2007-10-26))
Önemli uygulamalarıClang, GCC
EtkilendikleriC, Smalltalk
EtkiledikleriJava, Objective-J, TOM
İşletim sistemiÇapraz platform
Olağan dosya uzantıları.h, .m, .mm
Web sitesiApple Developer — Objective-C

Objective-C, C'nin üzerine yazılmış, yansımalı, nesne yönelimli bir programlama dilidir. ObjC, Objective C ve Obj-C olarak da anılır.

Günümüzde OpenStep standardı üzerine kurulu olan macOS ve GNUstep işletim sistemlerinde kullanılmaktadır. Objective-C'nin en yaygın olarak kullanıldığı alan Cocoa çatısının kullanıldığı yazılımlardır. Bu özel kütüphanelere erişime ihtiyaç duymayan bir Objective-C programı Objective-C derleyicisi içeren gcc ile derlenebilir.

1980'li yıllarda yazılım mühendisliğindeki genel eğilim yapısal programlamaya yönelikti. Bu yaklaşım sayesinde karmaşık problemler ufak parçalara bölünüp ufak parçaların çözülmesiyle büyük çözüme ulaşılıyordu. Fakat problemler büyüyüp daha da karmaşık hale gelmeye başlayınca bu yaklaşım yetersiz kalmaya başladı.

Bu noktada çoğu geliştirici nesne yönelimli programlamayı bir çözüm olarak görmeye başladı. Smalltalk tarafından öncülüğü yapılmış bu akım, programları fonksiyonel nesnelerin birleşimi olarak yorumlamaya dayalıydı. Smalltalk nesneye yönelik programlama ile zamanında yapısal programlamanın zayıf kaldığı noktaların çoğunda başarılıydı. Bu avantajdan dolayı zamanın en gelişmiş sistemleri Smalltalk ile yazılmıştı. Yalnız Smalltalk'ın en büyük sorunu bir sanal makine üzerinde çalışıyor olmasıydı. Bu gereksinimden dolayı ya çok bellek gerektiren sistemler gerektiriyordu ya da yavaş çalışmasını göze almak gerekiyordu.

Objective-C 1980'lerde Brad Cox tarafından Stepstone adlı şirkette geliştirildi. Cox'un takıldığı sorun yazılımlardaki bileşenlerin tekrar kullanılabilmesiydi. Bir başka deyişle, bir problem nesneye yönelik yöntemlerle parçalarına ayrılmış ve bu parçaların bazıları çalışır duruma getirilmiş ise, bu parçaları sorunsuzca başka çözümlerde de kullanmayı kolaylaştırmak lazımdı. Her ne kadar nesne yönelimli yazılım teorik olarak bunu öngörse de, zamanın araçları ile bunu başarmak emek isteyen bir işti. Cox hayal ettiği kolaylığı sağlamak için aslında bir iki ufak değişikliğin yeterli olacağını düşündü. Programlama dili her şeyden önce nesneleri esnek bir şekilde desteklemeli, kullanışlı ve zaman kazandıran kütüphanelerle gelmeli ve kod ve kaynakların ortamlar arası kullanımını kolaylaştırmalıydı.

Cox'un temel tasarımı 1986 yılında Nesne Yönelimli Programlama, Evrimsel bir yaklaşım (Object-oriented Programming, An Evolutionary Approach) adlı kitabında yayınlandı. Kitapta bileşenlerin yeniden kullanımı konusunun sadece programlama dilinden oluşmadığını vurgulamasına rağmen okuyucuların dikkatlerini sadece dile odaklamalarına, Objective-C'yi sunduğu önerilerden ayrı olarak algılamalarına engel olamadı.

Merhaba Dünya Kodu

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) 
{
    @autoreleasepool 
    {
        NSLog(@"Merhaba Dünya!");
    }
    return 0;
}

Ayrıca bakınız

İ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.

<span class="mw-page-title-main">Pascal (programlama dili)</span> yüksek seviyeli programlama dili

Pascal bilgisayar programlama dili pek çok öğrenciye bilgisayar programlamayı öğreten ve çeşitli versiyonları bugün hâlâ yaygın olarak kullanılmaya devam eden en önemli programlama dillerinden biridir. İlk Macintosh işletim sisteminin çoğu ve TeX Pascal ile yazılmıştır.

QuickBASIC, QBASIC ya da QB, Microsoft şirketi tarafından geliştirilmiş, Microsoft QuickBASIC isimli programlama dilinin belli özellikleri çıkarılarak sadeleştirilmiş halidir. MS-DOS işletim sisteminin belli sürümlerinin parçası olarak sunulmuştur. Adından da anlaşılacağı üzere, yapısal bir BASIC türevidir.

REXX programlama dili, IBM'in ürettiği, yorumlayıcı temelli bir betik programlama dilidir.

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.

Tasarım desenleri, tasarım kalıpları, tasarım örüntüleri veya tasarım şablonları, çok rastlanan, birbirine benzer sorunları çözmek için geliştirilmiş ve işlerliği kanıtlanmış genel çözüm önerileridir.

<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.

Paralel hesaplama ya da Koşut hesaplama, aynı görevin, sonuçları daha hızlı elde etmek için çoklu işlemcilerde eş zamanlı olarak işletilmesidir. Bu fikir, problemlerin çözümünün ufak görev parçalarına bölünmesi ve bunların eş zamanlı olarak koordine edilmesine dayanır. Paralel hesaplama ile performans artar, büyük sorunlar daha az sürede çözülür ve bilimdeki gelişmeler paralel hesaplamaya gereksinim duyar.

Nesne tabanlı programlama dili, nesne kullanımını destekleyen ve kapsülleme ilkesine uyan programlama dillerini tanımlar. Ancak nesne tabanlı programlama dilleri, kalıtım gibi nesne yönelimli programlama dillerine özel özellikleri taşımazlar. Bu durumda nesne tabanlı programlama dilleri nesne yönelimli programlama dillerinin altkümesini oluşturur.

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.

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.

<span class="mw-page-title-main">FLTK</span>

FLTK, Bill Spitzak tarafından C++ ile geliştirilmiş çapraz platform GUI kütüphanesidir. GNU LGPL ile özgür olarak dağıtılıp kullanılabilir. OpenGL ile üç boyutlu programlama yeteneklerini kullanır. Fakat genel GUI programlamasına da uygun olarak geliştirilmiştir. C++ ile geliştirildiğinden birincil programlama tercihi de bu yöndedir. Fakat zaman içerisinde Lua, Python, Ruby gibi nesne yönelimli diller içinde uygun hale getirilmiştir.

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">Mesaj</span> söz ya da yazıyla gönderilen ve belli bir anlamı olan haber

Mesaj ya da ileti, alıcıların bazılarına alıcı veya grup tarafından tüketilmek üzere kaynak tarafından tasarlanan bir iletişim ayrık birimidir. Bir mesaj kurye, telgraf, güvercini ve elektronik otobüs dahil olmak üzere çeşitli yollarla, tarafından teslim edilebilir. Terim başlangıçta Kısa Mesaj Servisi (SMS) kullanılarak gönderilen mesajlara atıfta bulunuyordu. Multimedya Mesajlaşma Hizmeti (MMS) ve Zengin İletişim Hizmetlerini (RCS) kullanan multimedya mesajlarını içerecek şekilde alfasayısal metnin ötesine geçmiştir.

Cocoa, masaüstü işletim sistemi macOS için Apple'ın yerel nesne yönelimli programlama ve uygulama programlama arayüzüdür (API).

Carbon, Macintosh bilgisayarları çalıştıran işletim sistemi olan Mac OS X için Apple'ın C tabanlı uygulama programlama arayüzlerinden (API) biridir. Carbon, Mac OS 8 ve Mac OS 9 işletim sistemlerinde çalışan programlar için iyi bir geriye dönük uyumluluk sağlamıştır. Geliştiriciler, “klasik” Mac OS ve Macintosh işletim sistemleri yazılımlarını OS X platformuna taşımak için uygulamayı azami çaba harcayarak çok az bir çaba ile kullanabilirler. OpenStep'te ortaya çıkan tamamen farklı Cocoa API sistemidir.

Objective-J, [ Cappuccino web] geliştirme çerçevesinin bir parçası olarak geliştirilmiş bir programlama dilidir. Sözdizimi Objective-C sözdizimi ile hemen hemen aynıdır ve JavaScript ile Objective-C'nin C programlama diliyle aynı ilişkiyi paylaşır: katı, ancak küçük bir üst küme olmak; geleneksel kalıtım ve Smalltalk / Objective-C tarzı dinamik gönderim ekleniyor. Prototip tabanlı bir dil olan Pure JavaScript zaten nesne yönelimi ve miras kavramına sahiptir, ancak Objective-J JavaScript'e sınıf tabanlı programlama kullanımını ekler.Objective-J ile yazılmış programların, bir web tarayıcısının JavaScript sanal makinesi tarafından çalıştırılmadan önce önceden işlenmesi gerekir. Bu adım, çalışma zamanında web tarayıcısında veya Objective-J programlarını saf JavaScript koduna çeviren bir derleyici tarafından gerçekleşebilir. Objective-J derleyicisi JavaScript dilinde yazılmıştır; Sonuç olarak, Objective-J programlarını dağıtmak için bir web tarayıcısı eklentisi gerekmez. Objective-J, Node.js üzerinde derlenebilir ve çalıştırılabilir.

<span class="mw-page-title-main">Kent Beck</span> Amerikalı yazılımcı

Kent Beck Amerikalı bir yazılım mühendisi ve ekstrem programlamanın yaratıcısıdır. işbirlikçi ve yinelemeli bir tasarım süreci için katı biçimsel belirtimlerden kaçınan bir yazılım geliştirme metodolojisi. Beck, Agile Manifesto'nun 17 orijinal imzacısından biriydi. Extreme ve Agile yöntemler, Beck'in belki de önde gelen savunucusu olduğu Test Odaklı Geliştirme (TDD) ile yakından ilişkilidir.

Bilgisayar biliminde zorunlu programlama ya da emperatif programlama, programın durumunu değiştiren ifadeler kullanan yazılımın programlama paradigması'dır. Doğal dillerdeki zorunlu kipin komutları ifade etmesi gibi, zorunlu program da bilgisayar'ın gerçekleştireceği komutlardan oluşur. Zorunlu programlama, beklenen sonuçlarının üst düzey tanımlarından ziyade programın nasıl adım adım çalıştığını açıklamaya odaklanır.