BLM 426 YAZILIM MÜHENDİSLİĞİ BAHAR Yrd. Doç. Dr. Nesrin AYDIN ATASOY

Benzer belgeler
BLM 426 YAZILIM MÜHENDİSLİĞİ BAHAR Yrd. Doç. Dr. Nesrin AYDIN ATASOY

BLM 426 YAZILIM MÜHENDİSLİĞİ BAHAR Yrd. Doç. Dr. Nesrin AYDIN ATASOY

BLM 426 YAZILIM MÜHENDİSLİĞİ BAHAR Yrd. Doç. Dr. Nesrin AYDIN ATASOY

Algoritma Geliştirme ve Veri Yapıları 5 Rekürsif Algoritmalar. Mustafa Kemal Üniversitesi

BLM 426 YAZILIM MÜHENDİSLİĞİ BAHAR Yrd. Doç. Dr. Nesrin AYDIN ATASOY

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

KONU: KURUMSAL YÖNETİM İLKELER (KURUMSAL YÖNETİM TEBLİĞİ SERİ II NO:17.1)

Rapor Yazımı MÜDEK Öğrenci Değerlendiriciler Eğitim Çalıştayı 22 Kasım 2014, MÜDEK Ofisi, İstanbul

Rapor Yazımı. MÜDEK Program Değerlendiricileri Eğitim Çalıştayı 11 Ekim 2014, İstanbul

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

İndirilecek KDV Listesi Uygulaması

Veresiye Satışlarınız, Sonradan faturaya dönüştürülmek üzere İrsaliye olarak Transfer edilir.

T.C. SAKARYA ÜNİVERSİTESİ FEN EDEBİYAT FAKÜLTESİ MATEMATİK BÖLÜMÜ DIŞ PAYDAŞ ANKET FORMU

Uzaktan Eğitim. Web Tabanlı Kurumsal Eğitim

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

BLM 426 YAZILIM MÜHENDİSLİĞİ BAHAR Yrd. Doç. Dr. Nesrin AYDIN ATASOY

4. ÜRÜN GELİSTİRME İŞLEMİ

BİLGİSAYAR DESTEKLİ TASARIM FİNAL PROJE ÖDEVİ

BLG Sistem Analizi ve Tasarımı. Öğr. Grv. Aybike ŞİMŞEK

AB 7. ÇERÇEVE PROGRAMI İŞBİRLİĞİ ÖZEL PROGRAMI VE KAPASİTELER ÖZEL PROGRAMI PROJE TEKLİFİ DEĞERLENDİRME KRİTERLERİ. İçindekiler:

DİCLE NEHRİNDE TAŞINAN AYLIK SÜSPANSE-SEDİMENT MİKTARININ YAPAY SİNİR AĞLARI İLE BELİRLENMESİ

Yazılım Mühendisliği 1

ALTI SİGMA EĞİTİM PROGRAMLARI. Kara Kuşak Eğitimi

Kentsel Planlama ve Kentsel Altyapı İlişkisinde Yeni bir Dönem; Kentsel Dönüşüm

A. BİÇİME İLİŞKİN ANALİZ VE DEĞERLENDİRME

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

BMH-405 YAZILIM MÜHENDİSLİĞİ

İSTİHDAMI UZMANLARI İÇİN ARAÇLAR. Destekli iş istihdamı uzmanlarının yetkinlik profilii için kalite ve eğitici araçlar tasarlama

IBF, PIRI Group ve Jacobs & Associates Konsorsiyumu DEA REHBERİ

HANGİ DERSLER NASIL ÇALIŞILIR?

Hızlı Kullanım Kılavuzu. 1. Sistem Gereksinimleri. 2. Kurulum ve Etkinleştirme. Kurulum. Etkinleştirme

3.ve 4. SINIFLAR 5. SINIFLAR

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

KURUMSAL WEB TASARIM Proje Teklifi

HACETTEPE ÜNİVERSİTESİ

TEMEL TANIMLAR. Bir gemiyi tanımlamak için aşağıdaki bilgiler gereklidir: a) Geminin büyüklüğü b) Ana boyutlar c) Tekne form katsayıları

Göstericiler (Pointers)

T.C. MİMAR SİNAN GÜZEL SANATLAR ÜNİVERSİTESİ FEN EDEBİYAT FAKÜLTESİ İSTATİSTİK BÖLÜMÜ LİSANS DERS TANITIM FORMU

DC/DC gerilim çeviriciler güç kaynakları başta olmak üzere çok yoğun bir şekilde kullanılan devrelerdir.

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

KÖTÜ ŞARTLARDAKİ ÇOCUK İŞÇİLİĞİNİN YASAKLANMASI VE ORTADAN KALDIRILMASINA İLİŞKİN 182 SAYILI ACİL ÖNLEMLER SÖZLEŞMESİ

İnsan Kaynakları Yönetimine İş Süreçleri Yaklaşımı

MÜDEK Değerlendirme Ölçütleri

BEACON İŞARETÇİLERİ KULLANILARAK GERÇEKLEŞTİRİLEN ÖĞRENCİ YOKLAMA SİSTEMİ

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Bilgi Benim İşim Gönüllü Kitabı

YZM 2116 Veri Yapıları

DESTEK DOKÜMANI E-BĐLDĐRGE UYGULAMASI

Kanal Veri Kartı Eleman Bilgileri Ekranı Kullanım Kılavuzu

KONU: 2018 GLOBAL HİLE VE SUİSTİMAL RAPORU SAYI:

MÜDEK Değerlendirmesi Evre ve Aşamaları. MÜDEK Program Değerlendirici Eğitim Çalıştayı Ekim 2017, İstanbul

Algoritma, Akış Şeması ve Örnek Program Kodu Uygulamaları Ünite-9

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

3. Kalite Güvence Sisteminin Genel Yapısı ve Gözden Geçirilmesine İlişkin Değerlendirme

BTU 100 BİLGİSAYAR OKURYAZARLIĞI Veri Tabanı Uygulamaları I

MÜDEK Değerlendirme Ölçütleri

Yazılım Mühendisliği Proje Ödevi

Bilim inanca değil akla, öznel gözlemlere değil deney ve nesnel gözlemlere dayanır.

MODÜL 15: ÖNYARGI VE AYRIMCILIK

Güvenli İnternet Teknolojileri Kol. Şti. Teknik Servis Hizmetleri ve Bakım Anlaşmaları Tanıtım

ENERJİ SİSTEMLERİNDE KESME YÖNTEMİ İLE GÜVENİLİRLİK ANALIZI

Değerlendirme erlendirme Süreci: S

Gazi Üniversitesi Teknoloji Fakültesi Endüstriyel Tasarım Mühendisliği Bölüm Tanıtımı

DAVRANIŞ KURALLARI VE ETİK DEĞERLER Tekel Karşıtı ve Rekabet İlkeleri

HSancak Nesne Tabanlı Programlama I Ders Notları

MÜDEK Değerlendirme Ölçütleri. 31 Mayıs 2014 Mövenpick Hotel, Ankara

o Kullanım: Sesli çağrı, kısa mesaj ve SMS için % 43 (% 25 özel iletişim vergisi ve % 18

Domintell Home Technology ile Neleri Yaparsınız?

IESEC. Özel Eğitim ve Yenilikçi Güçlendirme Yoluyla İstihdam ve Standartların Artırılması

OKÜ İçerik Yönetim Sistemi. Proje Amacı; OKÜ web sitelerinin içeriklerinin etkin yönetimi ve sunumu.

İlgiye Yönelik Yaklaşımla Yazılım Geliştirme Software Development with Aspect Oriented Approach

DEFTER BEYAN YARDIM KILAVUZU

K O Ç Ü N İ V E R S İ T E S İ G Ö Ç A R A Ş T I R M A L A R I P R O G R A M I. M i R e K o c

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

MERKEZİ KAYIT KURULUŞU A.Ş. MERKEZİ KAYDİ SİSTEM İŞ VE BİLİŞİM UYGULAMA İLKE VE KURALLARI YÖNERGESİ A. GENEL İLKELER

TÜRKİYE TENİS FEDERASYONU DOĞU KULÜPLERİ ARASI TENİS LİGİ TALİMATI. İlk Yayın Tarihi Değişiklik Tarihi Talimat Seri Numarası

SÜREÇ İYİLEŞTİRME-II

T.C. NEVŞEHİR ÜNİVERSİTESİ SOSYAL BİLİMLER ENSTİTÜSÜ MÜDÜRLÜĞÜ EĞİTİM-ÖĞRETİM YILI İLANI

EYLÜL 2012 EXCEL Enformatik Bölümü

FM561 Optoelektronik. Işığın Modülasyonu

EYLÜL 2012 WINDOWS 7. Enformatik Bölümü

MÜDEK Değerlendirmesi Evre ve Aşamaları. MÜDEK Eğitim Çalıştayı 13 Mayıs 2017, İstanbul

BÖLÜM 4 YAPISAL ANALİZ (KAFESLER-ÇERÇEVELER-MAKİNALAR)

PAZARLAMA ARAŞTIRMA SÜRECİ

MÜŞTERİ İSTEK-ÖNERİ-MEMNUNİYET- ŞİKAYET YÖNETİM SÜRECİ PROSEDÜRÜ

31 Mayıs 2014 Mövenpick Hotel, Ankara

Rehberlik ve Psikolojik Danışma Hizmetlerinin Amaçları

Pointer Kavramı. Veri Yapıları

İLAÇ KULLANIM BİLGİLERİNİ (PROSPEKTÜS) MUTLAKA OKUYUN

ÜNİVERSİTEYE YOLCULUK TERCİH YAPIYORUM /2017

Bilgi Benim İşim Gönüllü Kitabı

KAMU İÇ DENETİM PLANI ve PROGRAMI HAZIRLAMA REHBERİ

YENİ TÜRK TİCARET KANUNU NUN GETİRDİKLERİ

Çizelge 1. Yeraltısuyu beslenim sıcaklığı ve yükseltisi tahmininde kullanılan yöntemlerin karşılaştırılması

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

DAVRANIŞ KURALLARI VE ETİK DEĞERLER TEKEL KARŞITI & REKABET İLKELERİ

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

İÇERİK MERKEZİ KAYDİ SİSTEM KULLANICI KLAVUZU

MÜDEK Değerlendirmesi Evre ve Aşamaları. MÜDEK Eğitim Çalıştayı 12 Mayıs 2018, İstanbul

DESTEK DOKÜMANI. 1 Ocak 2010 tarihinden itibaran banka hesap numarası yerine IBAN numarası kullanılacaktır.

Transkript:

BLM 426 YAZILIM MÜHENDİSLİĞİ BAHAR 2017 Yrd. Dç. Dr. Nesrin AYDIN ATASOY 7. HAFTA: YAZILIM TASARIMI NESNEYE YÖNELİK TASARIM Nesneye yönelik çözümleme ve tasarım günümüz yazılım geliştirme rtamlarının en yaygın kavramlarından biridir. Çğu zaman büyük bir kurtarıcı larak algılanmasına rağmen gerçekte böyle bir kurtarıcı bulunmamaktadır. Nesneye yönelim, daha geleneksel lan işlevsel çözümleme ve veri akış yöntemlerine göre daha değişik bir yaklaşım gerektirmektedir. Nesneye yönelik çözümleme ile nesneye yönelik tasarım arasında kesin bir ayrım yapmak bazen mümkün değildir. Temel larak, çözümleme bir sınıflandırma etkinliği larak değerlendirilebilir. Bu aşamada prblem çözümü için kullanılacak nesnelerin ait lacağı sınıfların belirlenmesi için çalışma yapılır. Tasarım aşamasında ise sınıflardan luşturulan nesneler ve nların aralarındaki ilişkiler tanımlanır. Nesneye yönelik tasarım en basit şekliyle, işlemlerden çk nesne kullanan bir düşünceye dayanır. Bu düşünceyi destekleyen prgramlama dilleri de prgramı nesne adı verilen küçük parçalara bölebilmeyi sağlayan özel yapılara sahiptir. Nesnenin içyapısında durum bilgileri ve ara yüz larak tanımlanan işlemler, yani yrdamlar kümesi bulunur. Bu işlemlerle durum bilgisi üzerinde değişiklik yapılabilir. Nesneye yönelik tasarımın gerçekleştirilebilmesi için mutlaka nesneye yönelik bir prgramlama dili kullanılması zrunlu değildir; ancak nesneye yönelik tasarımın tüm özelliklerden yarar sağlayabilmek, bu yararı özellikle kdlamada görebilmek için nesneye yönelik bir dil seçilmelidir. Eğer bu sağlanamazsa, nesneye dayalı bir dil ile veya hale getirilmiş yapılarla desteklenen bir dil kullanılmalıdır. Tasarımcılar artık prblemleri önceden tanımlanmış veri ve denetim yapıları kullanarak çözmek zrunda değillerdir. Nesneye yönelim ile kendi tasarladığı syut veri yapılarım ve işlevsel kapsamayı kullanarak gerçek dünya prblemlerini çözebilir duruma gelmişlerdir. Bu amaçla kullanılan temel syutlama birimi de nesnedir.

Diğer tasarım yöntemleri gibi nesneye yönelik tasarım yöntemi de bir dizi tanım, gösterim şekli ve yrdam kullanmaktadır. Bunlar, kullanılan araç veya dile göre küçük farklılıklar gösterseler de temelde aynıdırlar. En önemli rtak özellik lan nesne gerçek dünyadaki varlıkların yazım alanına uyarlanmasında kullanılır. Her nesnenin bir ara yüzü, bir veri yapısı ve bir dizi işlemi vardır. Arayüz Genel veriler Özel veriler İşlemler Nesne adı Öznitelik-1 Öznitelik-n Öznitelik-1 Öznitelik-n Yrdam-1 Yrdam-n Öğrenci Okul n,ad syadı,bölüm,nt rtalaması Önceki işaretçi,snraki işaretçi Değiştir,göster,yazdır,ders listele Nesneler birbirleriyle ilişkili veri ve işlemleri bir arada tutarak kapsama (encapsula- tin) ve iyi tanımlanmış bir arayüz ile mdülerlik (mdularity) ilkelerini desteklerler. Nesnenin genel kısmı herkese açık ve paylaşılır verileri içerirken özel kısmında yalnızca kendisi tarafından kullanılan veriler bulunur. Böylelikle de Bilgi Gizleme (infrmatın hiding) ilkesi desteklenmiş lur. Nesneye yönelik tasarımın aşamalarına geçmeden önce nesneye yönelimin temel özelliklerine değinmekte yarar vardır. TEMEL ÖZELLİKLER Nesneye yönelik tasarım yönteminin en temel özellikleri şunlardır:

Şekil 1. Nesne özellikleri Kapsama (encapsulatin) Bir veri yapısı ve nun üzerinde işlem yapan bir grup yrdamın iyi tanımlanmış bir arayüzü lan, erişimi ve kullanımı klay bir yapı içine knmasına kapsama denir. Şekil 1(a) da görüldüğü gibi yrdamlar ve özelliklerden luşmaktadır. Nesneye yönelik tasarımda bu yapı nesnedir ve gönderilen İletilerle arzu edilen işi yapması sağlanır. Her nesne belirli bir veri grubunu ve işlevleri kapsar; farklı veriler farklı nesnelerde yer alır. Sınıfların ve nlardan luşturulan nesnelerin adları kapsamlarını en iyi tanımlayacak şekilde seçilir.

Sınıf (class) Nesneye yönelik prgramlamanın önemli özelliklerinden biri lan sınıf, kapsamayı sağlayan bir gruplandırma yapısıdır. İçeriğinde hem veriler hem de işlemler bulunur. Sınıf kendisinden luşturulacak nesneler için bir şabln görevi görür. Çkşekilcilik (plymrphism) Çkşekillilik bir ismin birbirleriyle bağlantılı fakat aslında değişik lan birden fazla amaç için kullanılmasıdır. Çkşekilliliğin amacı, bir tek ismi genel bir işlevler kümesini tanımlamada kullanmaktır. Hangi işlevin gerçekleşeceği üzerinde işlem yapılacak veri tipi tarafından belirlenir. Kalıtım (inheritance) Kalıtım, bir hiyerarşik şeklinde, bir sınıftan veri ve işlemlerin tekrar kullanım amacıyla devralmasıdır. Durağan kalıtımda devralınan kd derleyici tarafından türetilmiş nesneye kpyalanır. Dinamik kalıtımda ise, sistem en uygun aktif yöntemi yürütme sırasında seçer ve devralınan kısımla ilgili bir görevcik başlatır. Durağan kalıtım bellek kullanımı dışında ldukça etkin ve güvenlidir. İsteğe bağlı dinamik kalıtımda ise işlemler ve veriler rtak bir yerde tutulur, gerektiğinde bu kd dinamik larak bağlanır. Tekrar kullanımı en yükseğe çıkarabilmek için birden fazla sınıfın temel sınıf lduğu çklu kalıtım (multiple inheritance) rtaya çıkmaktadır. Bu özelliklerin tamamının tasarım sırasında dikkate alınması gerçekleştirimde kullanılacak prgramlama diline bağlıdır. Bazı diller kapsamayı desteklerken sınıf yapısını desteklemezler; bazıları da kalıtımı desteklemezler. Bu nedenle, nesneye yönelik tasarımdan yararlanabilmek için tasarım aşaması sırasında hangi dilin kullanılacağına karar verilmelidir. TİPLER VE SINIFLAR Tip kavramı önceleri belirli bir tpluluğun genel özelliklerini temsil etmek üzere küme luşturmada kullanılmıştır. Örneğin, integer tipi tüm tamsayılar kümesini temsil etmiş, bu kümenin elemanları üzerinde de çeşitli işlemler yapılabilmiştir. Küme içinde altküme adı verilen gruplar da luşturulabilir. Bu altkümeleri temsil eden tipler alttip (subtype) adını alırlar. Örneğin, tamsayılar, gerçel sayıların bir altkümesi lduğundan, C'deki int tipi flat tipinin alttipidir. C ve C++ dillerinde kullanılan unsigned int ve unsigned char gibi tipler de aslında birer altkümedir. İlk zamanlardaki sayısal hesaplamalar mühendislik ve matematik uygulama alanlarına yönelik lduğundan, hesaplarda kullanılan nesneler ve tipler, günün gereksinimlerine göre, kullanılan dilin

değişkenlerine ve tiplerine karşı düşmekteydi. Fakat prgramlama dilleri gerçek dünyayı makine dünyasına yansıtmak için bir takım yaklaşımlar ve sınırlamalar yapmak zrundadır. Örneğin, sayı kümeleri gerçek anlamda sınırsız değildirler; gösterilebilecek en büyük ve en küçük sayı değerleri kullanılan bilgisayar dnanımının sözcük uzunluğuna ve uygulanan sayı biçimlerine bağlıdır. Bu nedenle int ve flat tipleri makinede farklı şekillerde işlem görürler. Nesneye yönelimin yapı taşı lan sınıflar da tiplerin taşıdığı özellikleri taşırlar. Bunlara ek larak, kullanıcının kendi isteklerine uygun tipler luşturulması, bunlar üzerinde kendi istediği yrdamlarını tanımlayabilmesi ve sınıfları birbirlerine çevirme işlevleri kazandırması mümkündür. Bir tipi diğerine çevirme işlemi bazı durumlara göre değişebilir. İyi bir nesneye yönelik tasarımda, uygulama alanında (applicatin dmain) tipler, çözüm alanında (slutın dmain) da sınıflar kullanılır. Uygulama alanında rtaya knan varlıklar (entity) nesnelerle, tipler de sınıflarla gösterilir. Uygulama alanı varlıklarına örnek larak bir banka sisteminin işlem, para, hesap ve tmatik makinelerini, bir haberleşme sistemine ait telefnları, knuşmaları, hatları ve anahtarlarma kutularını verebiliriz. Bu varlıkları genelleştirerek tip haline dönüştürür ve bireylere ait varlıklar yerine genel larak işlemlerden, hesaplardan, telefnlardan bahsedebiliriz. Uygulama alanına ait bu kavramlar yazılımın gerçekleştirildiği çözüm alanında tiplerin sınıflara, varlıkların da nesnelere dönüştürülmesinde kullanılırlar. Varlıkların ve bunların birbirleriyle lan ilişkilerinin belirlenmesinde yapılacak bir hata daha snraki gelişmeleri aksatacak byutta srunlar luşturabilir. Bu srunlar özellikle alttip ilişkileri bulunduğunda üst düzeye çıkar. Bu nedenle uygulama alanındaki çözümlemelerin iyi yapılmasına, varlıkların ve ilişkilerin en dğru şekilde belirlenmesine çalışılmalıdır. NESNEYE YÖNELİK TASARIM AŞAMALARI Nesneye yönelik tasarımı; nesneye yönelik lmayan prgramlama dilleri için ve nesneye yönelik diller için lmak üzere iki şekilde incelemekte yarar vardır: Nesneye Yönelik Olmayan Diller İçin Tasarım Nesneler çözümleme aşamasında genel larak belirlendikten snra tasarım tanımlaması yapılır. Bu amaçla nesnelerin iki türlü tanımlaması labilir: İletişim tanımlaması, nesnenin ara yüzünü, alabileceği iletileri ve aldığı bir iletiyle ne gibi bir işlem yapacağını anlatır. Genellikle iletinin adım ve her bir ileti için yapılacak işlemleri anlatan bir liste şeklindedir. Çk sayıda ileti içeren büyük sistemler için iletilerin gruplanması mümkündür.

Gerçekleştirim tanımlaması, iletiyi aldıktan snra nesnenin yürüteceği yrdamın ayrıntılarını, nesnenin genel ve özel kısımlarının yapısını içerir. Veri tipleri ve yrdamlar ya tanımlanır ya da başka yerde tanımlanmış lanlara ilgi yapılır. Tasarım aşamasında çeşitli araçlar ve yöntemler kullanılabilir. En dğru ve en iyiye ulaşan birden fazla yl labileceğinden, tasarım, hala bir sanat lma niteliğini krur. Aşağıda belirtilen tasarım basamaklarını kılavuz larak kullanarak ilerlemek başarılı bir snuç verir: İsterler çözümlemesi aşamasında; Prblem tanımlanarak kapsam belirlenir. Prblemin yazılım ile çözülecek kısmı metinsel bir şekilde anlatılır. Nesneler ve öznitelikleri belirlenir. Nesnelere uygulanacak işlemler belirlenir. Nesneler ve işlemler arasındaki ilişki rtaya knur ve arayüzler luşturulur. Gerçekleştirim için uygun bir prgramlama dili seçilmesine gayret edilir ve tasarımda kullanılacak yönteme karar verilir. Tasarım aşamasına geçildiğinde, çözümleme sırasında yapılanlar gözden geçirilir, syut veri sınıfları, varsa sınıflar, yrdam ve ileti özellikleri ile diğer ayrıntılar göz önüne alınarak iyileştirme yapılır. Nesnelerin öznitelikleri larak nesne içinde kullanılacak veri tipleri ve veri yapıları tanımlanır. Nesneye Yönelik Diller İçin Tasarım Nesneye yönelik bir prgramlama dili kullanmak için yapılacak tasarım nesneye yönelimin tüm özelliklerini raya çıkaracaktır. Nesneye yönelik bir prgramlama dilinin en büyük özelliği sınıf yapısıdır. Sınıfların kullanılmasıyla yapılacak bir tasarımın adımları şunlardır: Çözümleme sırasında belirlenen nesneler için veri syutlaması yapılacak sınıflar tanımlanır. Genelde, İsterler Belirtimi belgesinde yer alan her fiziksel nesne bir sınıfa karşılık düşer. Syutlama sağlayan her sınıf için öznitelikler birer değişken (instance variable) haline getirilir. Bunun için çözümleme sırasında belirlenmiş lan öznitelikler kullanılır; herbiri birer sınıf değişkeni, diğer bir deyişle snııf üyesi (class member) larak tanımlanır. Her nesne üzerinde uygulanacak işlemler birer sınıf yrdamı haline dönüştürülürler. Nesneler arasındaki iletişim tanımlanır. Bu amaçla, iletiler alındığında çağrılacak yrdamlar belirlenir. Uygun lan yerlerde kalıtım kullanılır. Eğer yukarıdan aşağıya dğru bir kapsama süreci izleniyrsa, kalıtım, sınıfların tanımlanması anında, aşağıdan yukarı bir süreç izleniyrsa öznitelik, işlem ve iletişimin tanımlanmasından snra uygulanır. Amaç, labildiğince yüksek düzeyde tekrar kullanımı sağlamaktır.

Tasarım bir senaryya göre kağıt üzerinde sınanır. Tatmin edici bir başarım sağlaması, yeterli bir hata hşgörüsüne sahip lması gibi durumlar gözden geçirilir ve tüm ileti alış-veriş seçenekleri denenir. Bu aşamaların bir çevrim şeklinde tekrarlanabileceği, hatta bir kısmının paralel larak yürütülebileceği dikkate alınmalıdır. Bundan snra ayrıntılı tasarım adımına geçilir ve işlemlerin yrdamsal ayrıntıları tanımlanır. Bunun için sözde kd kullanımı gibi bir yöntem izlenebilir. Nesneye Yönelimde Nitelik Ölçütleri Nesneye yönelimin en büyük özelliği sınıflardır. Herbiri syut bir tip tanımlayan bu sınıflardan nesneler üretilir. Sınıf yrdamları, yani mettlar, nesnenin içyapısına erişmek için kullanılır. Bir sınıfın sahip lduğu yrdamların sayısı ve her bir yrdamın karmaşıklığı bir metrik larak kullanılabilmektedir. Bu şekilde sınıfı geliştirmek ve bakımını yapabilmek için yaklaşık ne kadar zaman ve emek gerektiği knusunda bir kestirimde bulunulabilir. Sınıfların kalıtım yluyla devraldıkları yrdamlar bu metriğin değerini arttırıcı, nitelikte lduğundan dikkatli bir çözümleme yapılması gereklidir. Bir sınıfın gelen bir çağrı sırasında işlem yaparken kendi içinde kaç adet yrdamı çağırdığı da bir metrik larak kullanılır. Buna bir de başka sınıfların yrdamlarının çağrılma sayısı eklenebilir. Eğer bu sayı çk artarsa sınıfı test etmek ve hatalarını düzeltebilmek çk zrlaşır. Sınıf yanıtları için en kötü larak değerlendirilen sayı dikkate alınarak rtalama bir test süresi belirlenebilir. Bu nedenle bu metrik kullanılabilirlik ve test edilebilirlik yanında sistem tasarımının da bir ölçütüdür. Nesneye yönelik sistem tasarımının önemli bir özelliği de kalıtımdır. Kalıtım ile temel sınıfların tekrar kullanımı mümkün lmakta, türetilen sınıflarda temel sınıfın veri ve yrdamları kullanılabildiği için karmaşıklık azalmaktadır. Ancak, fazlaca kalıtım kullanılması ile tasarım ve bakım güçleşmektedir. Kalıtımın derecesini belirlemek için iki metrik kullanılır: Kalıtım hiyerarşisini derinliği ve genişliği. Kalıtımın derinlik ağacı Kalıtım hiyerarşinin luşturduğu ağacının tepesinden sınıfın bulunduğu yere kadar lan düzey sayısıdır. Bu sayı ne kadar büyük lursa sınıfın kalıtımla devraldığı yrdam ve veri sayısı da kadar artmış lur. Bu da davranışını belirlemede bir miktar karmaşaya neden lur. Devralman yrdam sayısı da bazen bir ölçüt larak kullanılır.

Nesneye Yönelik Tasarım İlkeleri Nesneye yönelik tasarımda genel larak aşağıdaki önerilerimizin dikkate alınması iyi bir yazılım rtaya çıkarmak için atılmış önemli bir adım lacaktır: Prbleme çözüm labilecek fikirler smut bir şekilde ve gerçek yaşamdakine uygun bir gösterimle ifade edilmelidir. Yazılım yapısının bu fikirleri açıkça göstermesi sağlanmalıdır. Sistemin tasarımı yapılırken sistemin ne yaptığı değil, ne üzerinde, ne gibi işlem yaptığı göz önünde bulundurulmalıdır. Bir şey apayrı bir fikir larak değerlendiriliyrsa nu bir sınıf haline getirmek uygun lacaktır. Bir şey apayrı bir varlık larak değerlendiriliyrsa nu belirli bir sınıfa ait nesne haline getirmek uygundur. Eğer iki sınıf arasında önemli ölçüde rtak yanlar varsa bu rtak özellikler bir temel sınıf içinde tplanmalıdır. Eğer bir sınıf birkaç nesneyi üzerinde tutan saklayıcı bir özellik gösteriyrsa nu kalıp (template) yapmak yararlı lur (dil uygun lduğu takdirde). Evrensel veri ve yrdam kullanılmamalıdır. Bu tür gereksinimler yine sınıflarla karşılanmalıdır. Bir başka nesnenin iç verilerine dğrudan erişmeye çalışılmamak, bunun yerine nesnenin yrdamları kullanılmalıdır. Tasarım ve gerçekleştirim bu ilke üzerine dayanmalıdır. Bir yazılımı veri yapıları ve bunlarla işlem yapan yrdamların luşturduğu bir grup larak değil de sınıflar ve nesnelerle gösterilen birbirleriyle ilişki halindeki kavramlar larak düşünmeye çalışmak daha lumlu snuç verir. VERİYE YÖNELİK TASARIM Veriye yönelik ya da diğer adıyla veri yapılarına yönelik tasarımda veriyle ilgili işlemler fazla dikkate alınmadığı için veri akış diyagramı kullanılmasına gerek yktur; nun yerine veri yapılarının ve yrdamların tanımlamaları yapılır. Tasarım, veri akışından çk bilgi yapısına dayandırılır. Bu yöntem daha çk, giriş ve çıkışın dsyalar şeklinde lduğu iş dünyası uygulamalarında, veri yapılarının yğun bir şekilde kullanıldığı işletim sistemi geliştirmede, endüstriyel üretime ilişkin veri yapılarının üretildiği bilgisayar destekli tasarım ve üretim sistemlerinde kullanılır. Tasarım sırasında genellikle aşağıdaki işler gerçekleştirilir: Veri yapılarının özellikleri değerlendirilir.

Verilerin saklama, arama ve erişim yöntemleri, veri yapılarına ait temel gösterim şekilleriyle tanımlanır. Veri yapıları yazılımın denetim hiyerarşisi içindeki yerine göre uyarlanır. Gerekirse yazılım hiyerarşisi veri yapıları dikkate alınarak yalınlaştırılır. Bundan snraki yazılımın genel tasarımı yrdamsal tanımlama şeklinde yapılır. Tasarım Kalıpları Yazılım mühendisliğinde en yaygın ve etkin yöntemlerden biri lan nesneye yönelik çözümleme ve tasarım yeni bir knunun dğmasına neden lmuştur: Tasarım kalıpları ya da diğer çevirilerle tasarım örüntüleri veya tasarım desenleri. Tasarım kalıpları, elde edilen deneyimlerin, çıkarılan derslerin ve en iyi snuçların belgelendirilmesiyle luşmuş mdern mimarilerle prblem çözme disiplinleridir. Aslında, teknljiye daklanmak yerine, güvenilir ve sağlıklı bir mimariye dayalı tasarım yapılarak belgelendirilmesi için bir kültür luşturma ilkesine dayanır. Kalıp Tanımı ve Özellikleri Tasarım kalıpları çözümleyicinin, tasarımcının ve kdlayıcının aynı dili knuşmalarını sağlayarak iletişimi klaylaştırır. Bir tasarım kalıbı belirli bir bağlam içindeki bir prblemi ve nun çözümünü kapsayan bir kuraldır. Genelde yazılım geliştirme sırasında karşılaşılan tekrarlanan prblemlere tekrar kullanılabilir çözümler üretmeyi amaçlar. Kalıpların algritmalar gibi belirli kuralları vardır. Ancak, algritmalar ve bunlara bağlı larak veri yapıları genellikle sıralama, arama gibi küçük çaplı bilgi işleme prblemlerini çözmede kullanılırlar. Kalıplar ise daha geniş etkileri lan ve mimariye yönelik knularla ilgilenir ve bu düzeydeki prblemlere çözüm getirir. Öte yandan, çatılar (framewrks) genellikle yürütülebilir kd şeklinde lup bir ya da birden fazla kalıp çözümlerinin gerçekleştirilmesinden luşur. Kalıpların rtak özellikleri arasında şunlar vardır: Deneyimlerle rtaya çıkmışlardır. Daha büyük prblemleri çözmek için beraberce kullanılabilirler. Çeşitli syutlama düzeylerinde bulunurlar. Yapısal bir biçimde yazılırlar. Tekrar kullanılabilir öğelerdir. En iyi uygulamalar ile tasarımlar arasında bir tür iletişim sağlarlar. Yine de her çözüm, algritma, pratik uygulama veya deneyim mutlaka bir kalıp luşturmaz. Gerçekten bir kalıp labilmesi için hiç değilse üç farklı sistemde tekrarlanan bir prbleme çözüm lması gereklidir. İyi bir kalıbın özellikleri arasında da şunları sayabiliriz: Yalnızca bir takım ilke ve stratejilerden luşmaz, belirli bir prbleme belirli bir çözüm sağlar. Çözümleri kayıt altına alarak herhangi bir şüpheye yer bırakmaz.

Kalıp yalnızca mdülleri değil, daha alt düzeydeki yapı ve düzenekleri de tanımlar. İnsanlara kullanım klaylığı ve yarar sağlar. Gerçek dünyadaki bir prbleme uyarlanabilecek şekilde kullanışlıdır. Kullanılmıştır ve bu şekilde belgelendirilmiştir. Bir kalıp çeşitli Öğelerden luşmaktadır. Genel larak, bir kalıpta bulunması gerekli öğeler şunlardır: KAYNAKLAR 1. Yazılım Mühendisliği; M. Erhan Sarıdğan.