İçeriğe atla

Tasarım örüntüleri

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.

Yazılım tasarım desenleri

Yazılım tasarım örüntüleri, yazılım tasarımı sırasında sıkça karşılaşılan, birbirine benzer sorunları çözmek için geliştirilmiş ve işlerliği kanıtlanmış genel çözüm önerileridir. Genel olarak yazılım tasarım örüntüleri programlama dillerinden bağımsız olarak tanımlansalar da, nesneye yönelimli programlama dillerine uygun yazılım tasarım örüntüleri daha çok bilinir. Bu örüntüler, nesneler ve sınıflar arasındaki ilişkileri ve etkileşimleri gösterirler. Programcı bir tasarım örüntüsünü elindeki soruna bakarak özelleştirip kullanabilir.

Tarihçe

Tasarım örüntülerinin temelleri Mimar Christopher Alexander'ın 1970 sonlarında başlatığı çalışmalara dayanmaktadır. Alexander 1977'de Bir Desen Dili: Şehirler, Binalar, Yapılar (İngilizceA Pattern Language: Towns, Buildings, Construction, ISBN 0-19-501919-9), 1979'da Ebedî Yapım Yöntemi (İngilizceA Timeless Way of Building, ISBN 0-19-502402-8) kitaplarını yayınlamıştır. Bu kitaplarda tasarın örüntülerinin üst seviyesi örüntüleri içeren mimarî desen örneklerinin yanı sıra desenlerin nasıl belgeleneceği de konu edilmiştir.

1987'deki uluslararası Nesneye Yönelik Programlama, Sistemler, Diller ve Uygulamalar (İngilizceOOPSLA, Object Oriented Programming, Systems, Languages, and Applications) konferansına kadar desenlerle ilgili bir çalışma ortaya çıkmamış. Bu tarihten sonra ise Grady Booch, Richard Helm, Erich Gamma ve Kent Beck başta olmak üzere örüntülerle ilgili makale ve sunumlar yayınlamışlardır. 1994'te Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides tarafından yayınlanan Tasarım Örüntüleri: Tekrar kullanılabilir Nesneye Yönelik Yazılımın Temelleri (İngilizceDesign Patterns: Elements of Reusable Object-Oriented Software, ISBN 0-201-63361-2) tasarım örüntülerinin yazılımda kullanılmasında dönüm noktası olmuştur.

Dörtlü Çete (Gang of Four, kısaca GoF) yazılım tasarım desenleri

Yazılım tasarım örüntüleri 1994 tarihinde Tasarım Örüntüleri: Tekrar kullanılabilir Nesneye Yönelik Yazılımın Temelleri (İngilizceDesign Patterns: Elements of Reusable Object-Oriented Software, ISBN 0-201-63361-2) adıyla yayınlanan kitap ile yaygınlaşmaya başlamış. Kitabın yazarları Erich Gamma, Richard Helm, Ralph Johnson ve John Vlissides bilgisayar bilimleri çevresinde Dörtlü Çete olarak de bilinmektedir. Dörtlü Çete, isimi kitabın isminin uzun olmasından dolayı konuyla ilgili e-postalarda kısaltma yapılarak, yazarları kastederek, kitabın "Dörtlü Çetenin Kitabı" (İngilizceBook of GoF) olarak anılmasıyla ortaya çıkmıştır.

Tasarım desenleri sınıfları

Dörtlü Çete'nin Tasarım Örüntüleri kitabı (ISBN 0-201-63361-2) tasarım örüntülerini üç sınıfa ayırır, fakat bu sınıfları birbirinden ayıran keskin kriterler yoktur.

Davranış örüntüleri

Davranış örüntüleri işlevsel sorumlulukların nesneler arasında nasıl atanacağı ve yazılımın gerektirdiği çözüm yöntemlerinin nesnelerce nasıl kullanılacağı hakkında öneriler sunar. Davranış örüntüleri nesne ve sınıf kalıpları yanı sıra nesneler arasındaki iletişim ile ilgili örüntüler de sunar. Davranış örüntüleri tasarımcının nesneler arası iletişim ve iletişim yöntemlerine yoğunlaşmasını sağlar.

Aynen yapısal örüntülerde olduğu gibi, davranış örüntüleri de ikiye ayrılır: sınıf davranış örüntüleri ve nesne davranış örüntüleri.

Sınıf davranış örüntüleri kalıtım kullanarak davranışların sınıflar arasında dağıtılmasını mümkün kılar. Nesne davranış örüntüleri ise nesne bileştirme yoluyla tek bir nesnenin kolayca sağlayamayacağı davranışların bir nesne grubu ile sağlanmasını mümkün kılar.

Birbiri ile bağlatılı olarak çalışan nesnelerin aynı çatı altında tutularak tek bir noktadan (yani ara bulucu tarafından) yönlendirilmesini mümkün kılar. Ara bulucuya bağlı olan nesneler, durum değişikliklerini ara bulucuya iletirler. Ara bulucu uygulamanın gerektirdiği düzenleme ve sıra ile ilgili nesnelerden isteklerde bulunur. Üst seviye kullanıcı nesneler ise sadece ara bulucu ile bağlantı kurarlar.

Bir nesnenin davranışını durumuna göre değiştirmesine olanak sağlar. Kullanıcı açısından, nesne sınıfını değiştiriyormuş izlenimi verir. Uygulamanın gerektirdiği doğrultuda yeni davranışlar eklenip çıkarılmasına olanak sağlar. Kullanıcı nesneler ise bu tür değişikliklerden etkilenmez.

Bir grup nesnenin, gözlemciler, gözlem altındaki bir nesnede olan değişimlerden otomatik olarak haberdar olmasına olanak sağlar. Gözlem altındaki nesne, kimler tarafından izlendiğinden bağımsız olarak işlevini sürdürür. Zaman içinde yeni gözlemcilerin katılımı ya da ayrılması mümkündür. Bu sayede uygulama zaman içinde davranış değiştirebilir.

  • Kalıp yordamı (İngilizcetemplate method pattern)

Bir yordamın çözüm kalıbı olarak kullanılmasına olanak sağlar. Kalıp üzerindeki bazı işlem adımları alt sınıflar tarafından işlenmesine olası kılar. Dolayısıyla ana kalıp değişmeksizin, bazı ara adımlar değişikliğe uğratılabilir. Kullanıcılar bu değişikliklerin farkında olmazlar.

Kullanıcı (nesnel) isteklerinin nesnelere dönüştürülerek işlenmesini olası kılar. Bu sayede farklı kullanıcıların istekleri nesnel kayıtlara dönüştürülerek kuyruk ya da kayıtlarda tutulabilir. Bu sayede yapılan işlemlerin geriye dönüştürülmesine de imkân verilir.

  • Sorumluluklar zinciri (İngilizcechain of responsibility pattern)

Bir kullanıcı (nesnel) isteğinin birden fazla nesne tarafından değerlendirilerek karşılanmaya çalışılmasına olanak sağlar. Kullanıcı, tek arayüz üzerinden isteğini iletir. İstek zincire bağlı nesneler tarafından sıra ile ele alınarak karşılanmaya çalışılır. İstek karşılanana dek zincir üzerinde bir nesneden diğerine aktarılır. Zaman içinde zincire yeni nesneler eklenmesi ya da çıkarılması mümkündür. Kullanıcı bu tür değişikliklerden arayüz sayesinde etkilenmez.

Aynı arayüz altında, aynı sorunu çözebilecek birçok çözüm yöntemi sınıfını saklayarak kullanıcı nesnelerin hangi yöntemin kullanıldığından haberdar olmaksızın isteklerinin sağlanmasını olanaklı kılar. Kullanıcı nesneler aynı türden nesnelerle çalıştıklarını var sayarken farklı davranış biçimleri ile karşılanırlar.

Yadigâr, uygulama yazılımı içerisinde önemli roller üstlenen nesnelerin durumlarını saklamak ve gerektiğinde nesneleri geçmişteki durumlarına geri döndürmek ya da hatırlatmak için kullanılır.

Kitlesel bir nesnenin (İngilizceaggragate object) altında bulunan nesnelere, nesnelerin nasıl temsil edildiklerine ya da gerçeklendiklerine bakılmaksızın, sırasıyla ulaşılmasını sağlar. Bu sayede farklı şekilde temsil edilen nesnelere tek bir arayüz üzerinden ulaşılabilir.

Karmaşık uygulamaların gereklerini yerine getirmek için tanımlanan sözde dili işleyecek bir yorumlayıcı kalıbıdır. Sözde dilin gramer kurallarını birer sınıf olarak tanımlayarak kolayca uygulanmasını sağlar. Gramer kuralları sınıflar olarak tanımlandığı için kolayca değiştirilerek geliştirilebilir.

Bileşik bir yapı üzerine yeni işlemler eklenmesine imkân verir. Ziyaretçi nesne bileşik yapı içindeki nesneleri tek tek ziyaret ederek gerekli bilgileri toplayıp işleyerek kullanıcıya sunar.

Oluşturma örüntüleri

Oluşturma örüntüleri, yazılım nesnelerinin (ya da başka bir deyişle sınıf örnekleri - İngilizceclass instances) nasıl oluşturulacağı hakkında öneriler sunar. Ana fikir, iyi bir yazılımın, içinde barındırdığı nesnelerin nasıl oluşturulduğundan bağımsız olarak tasarlanması gerektiğidir. Diğer bir deyişle nesnelerin nereden ve nasıl oluşturulduğu, ait oldukları yazılımın işleyişini etkilememeli; yeni özellikler eklenmesine ve değişikliklere karşı sorun oluşturmamalıdır.

Yazılım sistemleri geliştikçe nesnel bileşimler (İngilizceobject composition), sınıf kalıtımına (İngilizceclass inheritence) göre daha fazla önem kazanır. Bunun nedeni, yazılım sistemleri için basit temel davranış (İngilizcebehavior) şekillerinin tanımlanması üzerine kurulu tasarımların, sabit davranışlara dayalı tasarımlara göre daha esnek olmasındandır. Diğer bir deyişle, nesnelere davranışların bileşim olarak eklenmesi, daha sonra bu davranışların yazılımın gelişimine göre değiştirilmesine olanak sağlar. Bu durumda, geliştirilen yazılım için gereken temel davranış şekillerine dayalı bir tasarım, nesne arayüzleri (İngilizceinterface) değiştirmeden farklı ya da daha karmaşık davranışların kullanılabilmesini mümkün kılar.

Ancak nesnel bileşimler yoluyla temel davranışları sağlayan nesnelerin örneklenmesi, ana ya da kalıtım yoluyla davranış değişikliğine uğratılarak türetilmiş sınıflardan nesne oluşturmak daha zordur. Oluşturma örüntüleri bu zorlukları aşmak amacıyla kullanılabilecek yazılım örüntüleri içerir.

Oluşturma örüntüleri, hem hangi somut sınıfların (İngilizceconcrete class) nesne örneklemesinde kullanıldığını, hem de bu örneklerin nasıl oluşturulup bir araya getirildiğini yazılım sisteminden saklarlar.

Nesne oluşturma için kullanılan tek arayüz altında nesnenin nasıl oluşturulacağını kalıtım yoluyla alt sınıflara bırakarak, arayüzle nesne oluşturma işlevlerini birbirinden ayırır.

Karmaşık veya pahalı sınıflardan nesne oluştururken yeni nesnelerin baştan oluşturulması yerine mevcutlarından örnekleyerek oluşturulmasını sağlar. Bu sayede yeni nesneler kolayca ve kaynaklar gereksiz yere meşgul edilmeden oluştururlar.

  • Soyut fabrika (İngilizceabstract factory pattern)

Tek arayüz ile bir nesne ailesinin farklı platformlarda oluşturulmasını mümkün kılar. Bu sayede yazılım uygulaması farklı platformlara davranış değişikliğine uğramadan taşınabilir. Soyut fabrika kalıbı, tek arayüz altında hangi somut sınıfların kullanıldığını saklar.

Karmaşık bir nesne grubunun tek arayüz üzerinden gerektiğince parça parça oluşturulmasını sağlar. Kullanıcı nesne grubunu kullandıkça nesne grubu gereken yönde yapılanır. Kullanılmayan parçalar gereksiz yere oluşturularak kaynak harcamaz.

Bir sınıftan sadece bir tane nesne oluşturulacak şekilde kısıtlama sağlar. Söz konusu nesneye uygulamanın her yerinden ulaşılabilir. Nesne ilk kez kullanılana dek oluşturulmayabilir.

Yapısal örüntüler

Yapısal örüntüler sınıfların ve nesnelerin birleştirilerek daha geniş yazılım yapılarının kurulmasına olanak sağlayan öneriler sunar. Sınıf yapı örüntüleri ve nesne yapı örüntüleri olmak üzere ikiye ayrılır.

Sınıf yapı örüntüleri kalıtım kullanarak sınıf arayüzlerini ya da uygulamaları bileştirerek yapıları genişletir. Nesne yapı örüntüleri ise nesnelerin birleştirilerek yeni işlevler kazanma yollarını gösterir.

Nesnelerin parça-bütün ilişkisi içinde ağaç yapısı ile bir araya getirilerek birleştirilmesine ve bu bileşiğe tek ara yüzden ulaşılmasına imkân verir. Bileşik yapı yeni nesneler eklenip çıkarılarak zamanla genişleyip daralabilir.

Karmaşık bir yapının bir arada tutularak tek bir arayüz üzerinden kullanımını mümkün kılar.

Bir nesneye, nesneyi değiştirmeden yeni sorumluluklar eklenmesini sağlar. Alt sınıflama yapmadan nesnelerin işlevlerinin geliştirilmesini mümkün kılar.

Hem arayüzün hem de somut uygulamanın birbirinden ayrılarak düzenlenmesine olanak sağlar. Arayüzün değişimi uygulamayı, uygulamanın değişimi arayüzü etkilemez. Her ikisi bağımsız olarak geliştirilebilir.

Çok sayıda benzer nesnenin oluşturulması yerine bir örnek nesneden görsel nesneler oluşturarak kalabalık bir imkân verir. Görsel nesnelerin durum değişkenleri nesnenin kendisi tarafından değil kullanıcı tarafından saklanır.

Farklı kaynaklardan gelen nesne ya da sınıfların arayüzlerini uyumlandırmak amacıyla kullanılır.

Karmaşık, pahalı ve oluşturulması güç nesneleri kullanmak için arayüz taklidini olası kılar. Kullanılacak olan nesnenin fiziksel yerini kullanıcıdan saklayacak şekilde yönlendirme yapılmasını sağlar.

Yazılım tasarım örüntülerine eleştiri

Bazı yazarlar, yazılım tasarım örüntülerinin sorunların çözümlerini olumsuz yönde etkilediği yönünde eleştirmektedir. Bazılarına göre de, yazılım örüntüleri programla dilinde veya metodolojisindeki kısıtlamaları ve sorunları göstermektedir ve örüntüyü tespit etmek son aşama olmamalıdır. Yeni programla dillerinde bu örüntüleri gerektirecek durumları engelleyecek çözümler dilin kendisinden sağlanmalıdır. Örneğin bu görüşün taraftarları nesne yönelimli programlamaya ait olarak bilinen kavramların, daha önceki programlama dillerinde tasarım örüntüsü olarak tavsiye edilen kavramlar olduklarını, ama nesne yönelimli dillerin çıkmasıyla bu kavramların dil içinde belirsiz bir şekilde kullanıldığını ve artık bir örüntü olmadıklarını savunmaktadırlar.

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

<span class="mw-page-title-main">Görüntü işleme</span>

Görüntü işleme isim ölçülmüş veya kaydedilmiş olan elektronik (dijital) görüntü verilerini, elektronik ortamda amaca uygun şekilde değiştirmeye yönelik yapılan bilgisayar çalışması.

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

DirectPlay, DirectX'in çok kullanıcı oyunlar başta olmak üzere birçok kişinin aynı anda birçok mesaj yolladığı ortamların yaratılmasını kolaylaştırmak için geliştirdiği bir iletişim protokolüdür. DirectPlay, sunucu-istemci (server-client) veya peer to peer tipi bir organizasyonda asenkron mesajlaşma, mesaj öncelikleri, paket birleştirme, kayıpsız gönderim veya paket şifreleme gibi olanaklar sunar ve DirectPlay Voice modülü sayesinde ses iletimini de mümkün kılar.

ActiveX, Microsoft'un Microsoft Windows platformları için geliştirdiği bir nesne bileşeni modelidir (COM). Yazılım tabanlı olan ActiveX teknolojisi Internet Explorer eklentisi ve web sayfalarına iliştirilmiş ActiveX tabanlı uygulama olarak çalışır.

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.

<span class="mw-page-title-main">Adobe Fireworks</span> bitmap ve vektörel grafik editörü programı

Adobe Fireworks ya da eski ismiyle Macromedia Fireworks, bit eşlem ve vektörel grafik editörü programıdır. Başlangıçta Macromedia xRes'in parçaları kullanılarak geliştirilen yazılım, 2005'te Adobe tarafından satın alınmıştır. Yazılım, hızlı web prototipleri ve uygulama ara yüzleri oluşturarak web tasarımcılara yardımcı olmaktadır. Slice ve hotspot ekleme özellikleri vardır. Diğer Adobe ürünleri Adobe Dreamweaver ve Adobe Flash ile entegre tasarlanmıştır. Adobe Creative Suite ile birlikte ya da tek başına satın alınabilmektedir. En son 2012 yılında geliştirilen programın yerini artık Adobe Illustrator ve Adobe Photoshop almıştır.

XAML, genişletilebilir uygulama biçimlendirme dili. Microsoft'un uygulama arayüzlerinin oluşturulmasını sağlayan tanımlama dili. XAML, geliştiricilerin XML kullanarak tüm .NET kullanıcı arayüz elemanlarının çizimlerini kontrol edebilmelerini sağlar. Her XAML etiketi (tag), özellikleri XML attributeleriyle kontrol edilen bir .NET Framework sınıfına birebir karşılık gelir.

<span class="mw-page-title-main">Kullanıcı arayüzü</span> bir kullanıcının bir makineyle etkileşime girdiği ve makineyi kontrol ettiği araçlar

Kullanıcı arayüzü ya da kullanıcı arabirimi, insanların bir makine, cihaz, bilgisayar programı ya da karmaşık aletlerle etkileşimini sağlayan yöntemlerin bileşkesine verilen addır.

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

<span class="mw-page-title-main">Kalıtım (programlama)</span>

Kalıtım, bir sınıfın üst sınıftan miras almasına denir. Pratikte karışıklıklara sebep olduğundan kimi programlama dilleri, ancak tekli kalıtıma izin verirler. Bu dillerde çoklu kalıtım yerine interface denilen nesnelerden faydalanılarak çoklu kalıtımın verdiği özellikler, yan etkileri olmaksızın kullanılabilmektedir. Çoklu kalıtıma izin veren programlama dillerindeyse doğrudan bir sınıfın birden fazla sınıftan miras alması mümkündür..

Bilgisayar programlamada dinamik iletim, altyordam çağrılarının ilişkin altyordam başlangıç adresine dinamik olarak bağlanmasıdır. Bir diğer deyişle, dinamik iletim program metnindeki bir çağrı ile işletilen altyordamın programın çalışması sırasında birbirine bağlanması durumudur. Geri çağrı ve çokbiçimliliğin realize edilmesinde kullanılan bu bağlama yöntemi, yordamsal programlama dillerinde altyordam göstericileriyle gerçekleştirilirken, nesne yönelimli dillerde kalıtlama ve gerçekleştirme ilişkilerinin kullanılmasıyla otomatikman sağlanır. Altyordamların birinci sınıf dil öğesi olarak ele alındığı fonksiyonel programlama dillerinde ise, aynı işlevsellik altyordamların argüman olarak geçirilmesi ile sağlanabilir.

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.

<span class="mw-page-title-main">Windows Aero</span> Windows Vista ile günümüze gelen bir görsel tema arayüzü

Windows Aero, Windows Vista ile Windows 8 arasında bulunan bir görsel tema arayüzüdür. Windows Vista, Windows 7, Windows 8'de bulunan bu arayüz, donanım hızlandırmasından yararlanarak işlemciye daha az yük bindirir. Pencere kenarlıklarını şeffaf yapan Aero Glass özelliği ve pencereler arası 3D geçiş yapmayı sağlayan Aero Flip 3D özelliği Windows 8 kararlı sürümü ile kaldırılmıştır. Aero arabiriminde yapılan değişiklikler, görünüm, düzen ve uygulamalarda talimatların ve diğer metinlerin deyimini ve tonlamasını yansıtan arayüz yönergelerindeki değişikliklerle birlikte yeni bir görünümün dahil edilmesi de dahil olmak üzere Windows arabiriminin birçok öğesini etkiledi.

Yazılım test etmede, test otomasyonu önceden tahmin edilmiş sonuçlarla gerçek sonuçların karşılaştırılması ve testlerin koşulmasını kontrol etmek için(test edilmiş yazılımdan farklı olan) belirli yazılımın kullanılmasıdır. Test otomasyonu tekrar eden fakat çoktan test etme süreçlerinde yer almış gerekli testlerin otomatikleştirebilir veya manuel olarak koşulmasının zor olacağı testleri de içerebilir. Test otomasyonları sürekli paket dağıtımı veya sürekli test etme için kritik öneme sahiptir.

<span class="mw-page-title-main">Metro (tasarım dili)</span> Microsoft tarafından geliştirilen tasarım dili

Microsoft Windows için önceki arayüz için Windows Aero, sonraki arayüz için Akıcı Tasarım Sistemi sayfasına bakın.

<span class="mw-page-title-main">Windows NT mimarisi</span>

Microsoft tarafından üretilen ve satılan bir işletim sistemi satırı olan Windows NT'nin mimarisi, kullanıcı modu ve çekirdek modu olmak üzere iki ana bileşenden oluşan katmanlı bir tasarımdır. Tek işlemcili ve simetrik çok işlemcili (SMP) tabanlı bilgisayarlarla çalışmak üzere tasarlanmış, önleyici, yeniden gelen bir işletim sistemidir. Giriş/çıkış isteklerini işlemek için, I / O istek paketlerini (IRP'ler) ve zaman uyumsuz G / Ç'yi kullanan paket odaklı G / Ç kullanırlar. Windows XP'den başlayarak, Microsoft Windows'un 64 bit sürümleri hazırlanmaya başladı; Bundan önce, bu işletim sistemleri yalnızca 32-bit sürümlerde mevcuttu.

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

Windows API ya da WinAPI, Microsoft'un Microsoft Windows işletim sistemlerinde bulunan çekirdek uygulama programlama arayüzü kümesidir (API). Windows API adı, genellikle kendi adlarıyla atıfta bulunulan birçok farklı platform uygulamasına atıfta bulunur. Neredeyse tüm Windows programları Windows API ile etkileşime girer. Windows NT işletim sistemi satırlarında, az sayıda Native API'yi kullanır.

Microsoft Windows uygulama programlamasında, OLE Otomasyonu, Microsoft tarafından oluşturulan süreçler arası bir iletişim mekanizmasıdır. Başlangıçta Visual Basic olan komut dosyası dilleri tarafından kullanılması amaçlanan Bileşen Nesne Modeli'nin (COM) bir alt kümesine dayanmaktadır, ancak şimdi Windows'ta birkaç dil tarafından kullanılmaktadır. IDispatch arabirimini uygulamak için tüm otomasyon nesneleri gereklidir. Otomasyon denetleyicileri adı verilen uygulamaların, diğer uygulamalar tarafından dışa aktarılan paylaşılan otomasyon nesnelerine erişebildiği ve bunları değiştirebildiği bir altyapı sağlamaktadır. Uygulamaların birbirini kontrol etmesi için daha eski bir mekanizma olan Dinamik Veri Değişimi'nin (DDE) yerini almaktadır. DDE'de olduğu gibi, OLE Otomasyonunda otomasyon denetleyicisi "istemci"dir ve otomasyon nesnelerini dışa aktaran uygulama "sunucu"dur.