Jump to content
  • entries
    8
  • comments
    0
  • views
    4,038

Nesne Yönelimli Tasarım - Object-Oriented Design (OOD)


Doğuhan ELMA

204 views

Object-Oriented Design (OOD) hedefleri, yazılım geliştirme sürecinde belirli bir dizi prensip ve yöntem kullanarak yazılımın yapısını ve işlevselliğini belirlemeyi içerir. OOD'nin temel hedefleri arasında şunlar bulunur:

Modülerlik: Yazılımın farklı parçaları veya modülleri birbirinden bağımsız olarak çalışmalı ve geliştirilmelidir. Bu, kodun daha kolay anlaşılmasını, test edilmesini ve bakımını sağlar.

Esneklik: Yazılımın gereksinimler değiştikçe veya yeni özellikler eklendikçe kolayca değiştirilebilmesi gerekmektedir. Bu, yazılımın ömrünü uzatır ve maliyetleri düşürür.

Yeniden kullanılabilirlik: Nesne yönelimli tasarım, kodun farklı projelerde yeniden kullanılmasını teşvik eder. Bu, geliştirme sürecini hızlandırır ve daha az hata olasılığı sağlar.

Güvenilirlik: Yazılımın düzgün ve beklenildiği gibi çalışması gerekmektedir. OOD, yazılımın güvenilirliğini artırmak için çeşitli teknikler ve yöntemler kullanır.

Anlaşılabilirlik: Yazılımın kodu, diğer geliştiriciler tarafından kolayca anlaşılabilmeli ve değiştirilebilmelidir. Bu, bakım sürecini kolaylaştırır ve hataları azaltır.

Verimlilik: Yazılımın performansı, hafıza kullanımı ve diğer kaynakları en iyi şekilde kullanmalıdır. OOD, bu hedeflere ulaşmak için çeşitli teknikler ve yöntemler kullanır.

Güvenlik: Yazılımın güvenli olması, verilerin korunması ve yetkisiz erişimin önlenmesi gerekmektedir. OOD, bu hedeflere ulaşmak için çeşitli teknikler ve yöntemler kullanır.

Bu hedeflere ulaşmak için, OOD genellikle sınıflar, nesneler, kalıtım, polimorfizm, soyutlama ve kapsülleme gibi kavramları kullanır. Bu kavramlar, yazılımın yapısını ve işlevselliğini belirlemeye yardımcı olur.

Robustness, bir sistem veya yazılımın beklenmeyen girdilere, hatalara veya yanıltıcı koşullara karşı dayanıklılığını ifade eder. Robust bir sistem, hatalı girdiler veya beklenmeyen durumlar karşısında çökmez; bunun yerine hataları uygun bir şekilde ele alır ve mümkün olduğunda normal işleyişine devam eder.

Robustness kavramı, genellikle aşağıdaki özelliklerle ilişkilendirilir:

Hata Toleransı: Robust bir sistem, hatalı veya beklenmeyen girdilere karşı toleranslıdır. Bu, sistemde bir hata oluştuğunda bile sistemin çalışmaya devam etmesi anlamına gelir.

Stabilite: Robust bir sistem, çeşitli koşullar altında stabil olmalıdır. Bu, sistemdeki küçük değişikliklerin büyük etkiler yaratmaması anlamına gelir.

Güvenilirlik: Robust bir sistem, beklenildiği gibi ve sürekli olarak doğru ve tutarlı sonuçlar vermelidir.

Kurtarma Yeteneği: Robust bir sistem, hatalardan veya beklenmeyen durumlardan kurtulma yeteneğine sahip olmalıdır. Bu, sistem çöktüğünde veya hata oluştuğunda sistemin kendini düzeltebilmesi veya hızlı bir şekilde yeniden başlatılabilmesi anlamına gelir.

Esneklik: Robust bir sistem, değişen gereksinimlere veya koşullara kolayca adapte olabilmelidir.

Robustness, genellikle yazılım testi ve hata ayıklama süreçlerinde önemli bir rol oynar. Yazılım geliştiriciler, genellikle bir sistemin robustness'ını artırmak için çeşitli teknikler ve yöntemler kullanır, örneğin hata ayıklama, hata işleme, test otomasyonu ve kod incelemeleri.

 

Adaptability, bir sistem veya yazılımın yeni gereksinimlere, değişen çevre koşullarına veya teknolojik değişikliklere kolayca uyum sağlama yeteneğini ifade eder. Adaptability, bir yazılımın ömrünü uzatır ve onu gelecekteki değişikliklere karşı daha dayanıklı hale getirir.

Adaptability kavramı genellikle aşağıdaki özelliklerle ilişkilendirilir:

Esneklik: Esnek bir sistem, değişen gereksinimlere veya koşullara kolayca adapte olabilir. Bu, sistemdeki bileşenlerin veya modüllerin değiştirilmesi veya yeniden düzenlenmesi anlamına gelebilir.

Ölçeklenebilirlik: Ölçeklenebilir bir sistem, iş yükü arttıkça veya azaldıkça performansını koruyabilir. Bu, daha fazla kullanıcıyı desteklemek veya daha büyük veri setlerini işlemek için sistem kaynaklarının artırılması anlamına gelebilir.

Portability: Taşınabilir bir sistem, farklı donanım veya yazılım ortamlarında çalışabilir. Bu, sistem kodunun farklı işletim sistemlerinde veya donanımlarda çalışacak şekilde değiştirilmesi anlamına gelebilir.

Yeniden kullanılabilirlik: Yeniden kullanılabilir bir sistem, bileşenlerinin veya modüllerinin farklı projelerde veya uygulamalarda yeniden kullanılmasına izin verir. Bu, geliştirme sürecini hızlandırır ve daha az hata olasılığı sağlar.

Maintainability: Bakımı kolay bir sistem, hataların düzeltilmesi, iyileştirmelerin yapılması veya yeni özelliklerin eklenmesi için kolayca değiştirilebilir.

Adaptability, yazılım geliştirme sürecinde önemli bir hedef olup, genellikle modüler tasarım, nesne yönelimli programlama ve yazılım mimarisi gibi teknikler ve yöntemler kullanılarak elde edilir.

 

Reusability, yazılım mühendisliğinde bir bileşenin, modülün, fonksiyonun veya prosedürün birden fazla bağlamda veya farklı projelerde kullanılabilme yeteneğini ifade eder. Reusability, yazılım geliştirme sürecini hızlandırabilir, maliyetleri azaltabilir ve yazılımın genel kalitesini artırabilir.

Reusability kavramı genellikle aşağıdaki özelliklerle ilişkilendirilir:

Modülerlik: Modüler bir sistem, bağımsız bileşenler veya modüllerden oluşur. Bu bileşenler, farklı projelerde veya uygulamalarda yeniden kullanılabilir.

Genelleştirme: Genelleştirilmiş bir bileşen, belirli bir görevi yerine getirmek yerine geniş bir dizi görevi yerine getirebilir. Bu, bileşenin farklı bağlamlarda veya farklı projelerde yeniden kullanılmasını sağlar.

Dokümantasyon: Yeniden kullanılabilir bir bileşen, başkaları tarafından anlaşılabilir ve kullanılabilir olmalıdır. Bu genellikle iyi bir dokümantasyon gerektirir.

Standartlar Uyumu: Yeniden kullanılabilir bir bileşen, genellikle belirli bir dizi standart veya protokole uygun olmalıdır. Bu, bileşenin farklı sistemlerde veya projelerde sorunsuz bir şekilde çalışmasını sağlar.

Bakım ve Güncelleme: Yeniden kullanılabilir bir bileşen, hataların düzeltilmesi veya yeni özelliklerin eklenmesi için kolayca bakımı yapılabilir ve güncellenebilir olmalıdır.

Reusability, genellikle nesne yönelimli programlama, fonksiyonel programlama ve bileşen tabanlı yazılım geliştirme gibi teknikler ve yöntemler kullanılarak elde edilir. Bu teknikler, yazılımın modüler ve genelleştirilmiş olmasını sağlar, böylece bileşenlerin veya modüllerin farklı projelerde veya uygulamalarda yeniden kullanılmasını kolaylaştırır.

 

Modularity, bir yazılımın bağımsız alt bölümler veya modüller halinde organize edilmesi prensibini ifade eder. Her modül, belirli bir işlevi yerine getirir ve genellikle diğer modüllerle belirli bir arayüz üzerinden etkileşim kurar. Modüler tasarım, yazılımın anlaşılabilirliğini, bakımını ve test edilebilirliğini artırır.

Modularity kavramı genellikle aşağıdaki özelliklerle ilişkilendirilir:

Bağımsızlık: Her modül, belirli bir işlevi yerine getirmek için bağımsız olarak çalışmalıdır. Bu, bir modülde yapılan değişikliklerin diğer modülleri etkilememesi anlamına gelir.

Yeniden Kullanılabilirlik: Modüler bir tasarım, modüllerin farklı projelerde veya uygulamalarda yeniden kullanılmasını kolaylaştırır. Bu, yazılım geliştirme sürecini hızlandırır ve daha az hata olasılığı sağlar.

Bakım ve Güncelleme: Modüler bir sistem, hataların düzeltilmesi veya yeni özelliklerin eklenmesi için kolayca bakımı yapılabilir ve güncellenebilir olmalıdır. Bir modülde yapılan değişikliklerin, diğer modülleri etkilememesi gerekmektedir.

Paralel Geliştirme: Modüler bir tasarım, farklı ekiplerin veya bireylerin aynı anda farklı modülleri geliştirmesine olanak sağlar. Bu, yazılım geliştirme sürecini hızlandırır.

Test Edilebilirlik: Modüler bir sistem, her modülün bağımsız olarak test edilmesini kolaylaştırır. Bu, hataların daha hızlı ve etkili bir şekilde bulunmasını ve düzeltilmesini sağlar.

Modularity, genellikle nesne yönelimli programlama, bileşen tabanlı yazılım geliştirme ve mikro hizmetler gibi teknikler ve yöntemler kullanılarak elde edilir. Bu teknikler, yazılımın belirli bir dizi modül veya bileşen halinde organize edilmesini sağlar.

 

Abstraction, yazılım mühendisliği ve bilgisayar bilimlerinde karmaşık bir sistem veya işlemi basitleştirme ve genelleştirme prensibini ifade eder. Abstraction, geliştiricilerin karmaşık sistemleri daha anlaşılabilir ve yönetilebilir hale getirmesine yardımcı olur.

Abstraction kavramı genellikle aşağıdaki özelliklerle ilişkilendirilir:

Detayların Gizlenmesi: Abstraction, bir sistem veya işlemin karmaşık detaylarını gizler ve sadece önemli veya yüksek seviye özelliklerini sunar. Bu, geliştiricilerin karmaşık sistemleri daha kolay anlamasını ve yönetmesini sağlar.

Genelleştirme: Abstraction, belirli bir işlemi veya sistem özelliğini genelleştirir. Bu, aynı işlemi veya özelliği farklı bağlamlarda veya farklı sistemlerde kullanmayı kolaylaştırır.

Yeniden Kullanılabilirlik: Abstraction, kodun yeniden kullanılabilirliğini artırır. Genelleştirilmiş bir işlem veya özellik, farklı projelerde veya uygulamalarda yeniden kullanılabilir.

Modülerlik: Abstraction, bir sistem veya işlemi bağımsız modüllere veya bileşenlere ayırır. Bu, kodun daha kolay yönetilmesini ve test edilmesini sağlar.

Abstraction, genellikle nesne yönelimli programlama, fonksiyonel programlama ve yazılım mimarisi gibi teknikler ve yöntemler kullanılarak elde edilir. Bu teknikler, karmaşık sistemlerin veya işlemlerin daha anlaşılabilir ve yönetilebilir hale getirilmesine yardımcı olur. Örneğin, bir "Araba" sınıfı, bir arabanın karmaşık detaylarını (motor, tekerlekler, frenler vb.) gizleyebilir ve sadece önemli özelliklerini (renk, model, hız vb.) sunabilir. Bu, geliştiricilerin araba nesneleriyle daha kolay çalışmasını sağlar.

 

Encapsulation, nesne yönelimli programlama (OOP) prensiplerinden biridir ve bir nesnenin iç durumunu ve işlevselliğini dış dünyadan gizleme sürecini ifade eder. Bu, nesnenin iç durumunun sadece belirlenmiş bir arayüz aracılığıyla değiştirilebilmesini sağlar.

Encapsulation kavramı genellikle aşağıdaki özelliklerle ilişkilendirilir:

Veri Gizleme: Encapsulation, bir nesnenin iç durumunu veya verilerini dış dünyadan gizler. Bu, verilerin yanlışlıkla veya kasıtlı olarak değiştirilmesini önler.

İşlevsellik Gizleme: Encapsulation, bir nesnenin belirli işlevlerini veya yöntemlerini dış dünyadan gizler. Bu, nesnenin nasıl çalıştığına dair karmaşık detayları gizler ve sadece belirli bir arayüzü sunar.

Arayüzler: Encapsulation, bir nesnenin iç durumunu veya işlevselliğini değiştirmek için belirli bir arayüz sağlar. Bu arayüz, genellikle bir dizi halka açık yöntem veya özellikten oluşur.

Veri Bütünlüğü: Encapsulation, veri bütünlüğünü korumaya yardımcı olur. Bir nesnenin iç durumu, sadece belirlenmiş bir arayüz aracılığıyla ve belirli kurallara uygun olarak değiştirilebilir.

Encapsulation, genellikle sınıflar ve nesneler kullanılarak uygulanır. Bir sınıf, iç durumunu ve işlevselliğini gizler ve sadece belirli bir arayüzü sunar. Bu arayüz, genellikle bir dizi halka açık yöntem veya özellikten oluşur. Bu yöntemler, nesnenin iç durumunu değiştirmek veya nesnenin işlevselliğini kullanmak için kullanılır. Bu, nesnenin nasıl çalıştığına dair karmaşık detayları gizler ve kodun daha anlaşılabilir ve yönetilebilir olmasını sağlar.

 

 

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...