NESNEYE YÖNELİK PROGRAMLAMA
Nesneye Yönelik
Yazılım Geliştirme Süreci
Özlem AYDIN
Trakya Üniversitesi
Bilgisayar Mühendisliği Bölümü
Yazılım geliştirme aşamaları
•
•
•
•
•
Analiz
Tasarım
Kodlama
Test
Bakım
Yazılım geliştirme aşamaları
Analiz
Tasarım
Kodlama
Sistem testi
Bakım
Analiz
• Yazılımın “ne yapacağı” bu aşamada belirlenir.
• Yazılacak programın hedefleri saptanır.
Tasarım
• Yazılımın “nasıl yapılacağı”na karar verilir.
İki aşamadan oluşur:
1. Programın mantıksal tasarımı yapılır.
2. Sonrasında ayrıntılı tasarımı gerçekleştirilir.
Kodlama
• Program yazılır.
• Kodlama sürecinde yazılan programın istenileni
karşılayıp karşılamadığı sürekli test edilir.
Test
• Elde edilen yazılımın sınama ve doğrulama
aşamasıdır.
• Yazılımın belirlenen gereksinimleri sağlayıp
sağlamadığı ve gerçekleştirimin beklentileri
karşılayıp karşılamadığı test edilir.
Bakım
• Yazılım kullanılmaya başlandıktan
yazılımın desteklenmesi aşamasıdır.
sonraki
• Yazılımdaki
eksikliklerin
ve
hataların
giderilmesi, performans iyileştirmesi vb. alt
aşamaları içerir.
Yazılım Geliştirmede Sorunlar
• Başarılı bir yazılım geliştirme:
▫ Zamana ihtiyaç duyar
▫ Zordur.
▫ Maliyeti yüksektir.
Yazılım Geliştirmede Zorluklar
• Yazılım boyutunun ve karmaşıklığının artması.
• Yazılımların yaşayan varlıklar olması ve sürekli
gelişmesi gerekliliği. Kullanıcıların ihtiyaçlarının
değişmesi, işin yapılış biçiminin değişmesi,
donanım yükseltmesi, yeni teknolojilerin
gelişmesi gibi nedenlerden dolayı yazılımlarda
değişiklik yapılması gerekebilir.
• Kullanıcı beklentilerinin üst düzeyde olması.
PROSEDÜREL ANALİZ-TASARIM
• Prosedürel programlama yaklaşımında,
▫ İlk
adım
programdan
beklenen
işlevselliği
belirlemektir. Yanıtlanması gereken, “Bu program ne
yapacak?” sorusudur.
▫ Ardından, istenileni gerçekleştirmesi için programın
atması gereken temel adımlar yüksek-düzeyli “pseudo”
kodlar ya da akış diyagramları yardımıyla belirlenir.
▫ Sonrasında, her temel adım daha küçük adımlara
bölünerek tasarım daha rafine hale getirilir.
• Bu yaklaşıma, prosedürel ayrıştırma (“procedural
decomposition”) denir.
NESNEYE YÖNELİK YAZILIM GELİŞTİRME AŞAMALARI
NESNEYE-YÖNELİK ANALİZ-TASARIM
• Nesneye-yönelik tasarım, prosedürel yaklaşımdan köklü
olarak ayrılır.
• Nesneye-yönelik yaklaşımda problem,
▫ İşlemlere yada veri yapılarına bölünmez;
▫ Birbirleriyle etkileşen bir nesneler sistemi olarak
analiz edilir.
• Ayrıca, prosedürel yaklaşım yukarıdan-aşağıya işleyen
bir analiz tekniği olmasına rağmen, nesneye yönelik
yaklaşım yukarıdan-aşağıya analiz ve aşağıdan-yukarıya
sentez tekniklerini birleştirir.
NESNEYE YÖNELİK PROGRAMLAMA
• Gerçek dünya nesnelerden oluşmaktadır. Bu
bakış açısıyla nesneye yönelik geliştirilecek bir
yazılımda çözülmek istenen problemi oluşturan
nesneler gerçek dünyadaki yapılarına uyumlu bir
şekilde bilgisayarda modellenir.
• Her nesne belli bir sorumluluğa göre tasarlanır.
• Nesneler iki kısımdan oluşur:
1. Nitelikler (özellikler)
2. Davranışlar (sorumluluklar)
NESNEYE-YÖNELİK TASARIM
• Nesneye-yönelik tasarım (“iterative” yani
tekrarlamalı olarak) şunların yapılmasını
gerektirir:
▫
▫
▫
▫
Sınıfların belirlenmesi,
Özelliklerin ve davranışların tespiti,
Sınıflar arası ilişkilerin bulunması ve
Sınıfların bir hiyerarşi içinde organize
edilmesi.
SINIFLARIN BELİRLENMESİ
• Nesneye-yönelik tasarımda ilk adım programın ihtiyaç
duyacağı sınıfların belirlenmesidir.
• Bunun için kullanılabilecek basit bir teknik,
▫ programdan beklenenin doğal dil ile betimlenmesi,
▫ betimleme içindeki isimlerin listelenmesi ve
▫ bu liste içinde sınıfların seçilmesidir.
• Sınıflar en kolay olarak fiziksel nesneleri modelleyen
programlar için belirlenir. Fakat, kavramsal nesneler yada
olaylar veya etkileşimler söz konusu olduğunda bu işlem daha
zor gerçekleştirilir.
• Ayrıca, problem modeli içindeki elemanlara karşılık gelen
sınıflar tespit edildikten sonra bu sınıfları gerçekleştirmek için
de yeni sınıflar tasarlamak gerekebilir.
Nesneye Yönelik Programlama Örnekleri
Verilen bazı program örneklerinde modellenebilecek
nesneler şunlar olabilir:
• İnsan kaynakları ile ilgili bir programda; memur,
işçi, müdür, genel müdür.
• Grafik programında; nokta, çizgi, çember, silindir.
• Matematiksel işlemler yapan programda; karmaşık
sayılar, matris.
• Kullanıcı arayüzü programında; pencere, menü,
çerçeve.
Nesneye yönelik programlama örneği
Nesne Örneği: Grafik Programındaki nokta
•
Düzlemdeki bir noktanın özellikleri; x-y koordinatlarıdır.
•
Davranışları ise, noktanın düzlemde yer değiştirmesi, renginin değişmesi,ekranda görünmesi ve
ekranda kaybolmasıdır.
•
Buna göre, örnek olarak düşünülen Nokta modeli şu bölümlerden oluşacaktır:
x ve y koordinatları için iki adet tamsayı değişken: x , y
Noktanın koordinatlarını değiştirerek düzlemde yer değiştirmesini etmesini sağlayan
fonksiyon: hareket
Noktanın ekranda görünmesini sağlayan bir fonksiyon: gorun
Noktanın ekrandan silinmesini sağlayan bir fonksiyon: kaybol
Model bir defa oluşturulduktan sonra, ana programda bu modelden bir çok nesne yaratılabilir.
Nokta nokta1, nokta2, nokta3;
:
nokta1.hareket(50,30);
nokta1.gorun();
ÖZELLİKLERİN VE DAVRANIŞLARIN TESPİTİ
• Bir kez sınıflar belirlendikten sonra ikinci adım, her sınıfa ait
sorumlulukların belirlenmesidir. Bir sınıfın sorumlulukları iki
alanda ortaya çıkar:
▫ Taşıması gereken bilgiler (“Sınıfa ait bir nesnenin neleri bileceği”) ve
▫ Sınıfa ait bir nesnenin neler yapabileceği yada bu nesneye neler
yapılabileceği.
• Her sınıf kendisini betimleyen bazı özelliklere sahiptir. Sınıfa ait bir
nesnenin özellik değerleri nesnenin içinde bulunduğu durumu
(“state”) belirler. Özellik değerleri hiç değişmeyeceği gibi sık sık da
değişebilir. Her nesne içinde bulunduğu durumu hatırlamak
zorundadır.
ÖZELLİKLERİN VE DAVRANIŞLARIN TESPİTİ
• Her sınıf, ayrıca, nesnelerin diğer nesnelerle
nasıl etkileştiğine ve bu etkileşim neticesinde
içinde bulundukları durumların nasıl değiştiğine
karşılık gelen davranışlara sahiptir.
SINIFLAR ARASI İLİŞKİLERİN BULUNMASI
• Bir önceki adımın hemen sonrasında, sınıfların birbirlerinin
özelliklerini nasıl kullanacağına karar vermek gelir. Sınıfların
bir kısmı yalıtılmış halde bulunabilirken, büyük bir çoğunluğu
diğerleriyle işbirliği ve bağımlılık ilişkisi içindedirler.
• Bir sınıf bir diğerine çeşitli şekillerde bağımlı olabilir:
▫ Diğer bir sınıfın eleman fonksiyonlarını kullanması gerekebilir;
▫ Diğer bir sınıf kendi içine gömülmüş olabilir;
▫ Sınıfın arayüzü bir diğer sınıfa bağımlı olabilir vs.
• Sınıflar arası ilişkileri belirlerken sınıfların davranışlarını
yerine getirirken, birbirlerinin bilgilerini ve davranışlarını
kullanıp kullanmadıklarına bakılır.
SINIFLARIN BİR HİYERARŞİ İÇİNDE ORGANİZE
EDİLMESİ
• Sınıf hiyerarşilerinin yaratılması, birinci adımın (sınıflarının
belirlenmesinin) devamı niteliğinde bir işlemdir; fakat, ikinci
ve üçüncü adımlarda edinilen bilgilere de gereksinim duyar.
Sınıfların özelliklerini ve davranışlarını tespit ederek,
aralarındaki benzerlik ve farkları daha iyi görürüz; ayrıca,
sınıflar arası ilişkileri bularak da hangi sınıfların diğerlerinin
işlevselliğine bağımlı olduğunu açığa çıkarırız.
• Bir sınıfın farklı kategorilerinin tespiti, bir hiyerarşi için
yeterli koşulu oluşturmaz. Gerekli koşul farklı kategorilere
farklı işlemlerin yapılacak olmasıdır.
UML
• Nesneye yönelik tasarım sona erdiğinde,
nesneye yönelik bir model ortaya çıkar. Bu
modellerin ifade edilmesi için çeşitli görsel
modelleme dilleri kullanılmaktadır.
• En bilinen görsel modelleme dili Unified
Modelling Language (UML)’dir.
• Tasarım aşaması sistemin çeşitli şekildeki
görünüşlerini gösteren UML diyagramları ile
biter.
Nesneye Yönelik Yaklaşımın Değerlendirilmesi
• Gerçek dünya nesnelerden oluştuğundan bu yaklaşım ile
sistemin daha gerçekçi bir modeli oluşturulabilir. Program
daha anlaşılır olur.
• Nesne modellerinin içindeki veriler sadece üye fonksiyonların
erişebileceği şekilde düzenlenebilirler. Veri saklama denilen
bu özellik sayesinde verilerin herhangi bir fonksiyon
tarafından bozulması önlenir.
• Programcılar kendi veri tiplerini yaratabilirler.
• Bir nesne modeli oluşturduktan sonra bu modeli çeşitli
şekillerde defalarca kullanmak mümkündür.
• Programları güncellemek daha kolaydır.
• Nesneye dayalı yöntem takım çalışmaları için uygundur.
Kaynaklar
• http://yilmazkilicaslan.trakya.edu.tr/teaching.html
• http://web.itu.edu.tr/~bkurt/Courses/bte521/mod01_2
spp.pdf
Download

Nesneye Yönelik Yazılım Geliştirme Süreci