NESNEYE YÖNELİK PROGRAMLAMA 25 Eylül 2012
Kaynaklar Wrox, Beginning C Sharp 3.0 An Introduction to Object Oriented Programming, 2008 Christian Gross, Beginning C# 2008 From Novice to Professional, SECOND EDITION, 2008
Nesne Yönelimli Programlama (Object-Oriented Programming) Bilgisayar programının, nesneler ve aralarındaki ilişkiler biçiminde yapılandırılmasıdır. Nesneler, sınıf denilen kalıplar kullanılarak oluşturulur. Bazı dillerde her şey bir nesnedir. Bunlara tam nesne yönelimli diller denir. Diğerlerinde ise nesneler kullanılabilmesine rağmen, her şey bir nesne değildir. C# birinci gruba girerken, C++ ise ikinci gruptadır.
İYİ YAZILIMIN ÖZELLİKLERİ Doğruluk (Correctness) Bir yazılımı yazmaya başlamadan önce yazılımdan beklenenlerin belirlenmesi gerekir. Yazılım ortaya çıktıktan sonra bu belirlenen özellikleri tam olarak sağlamalıdır. Dayanıklılık (Robustness) Program iyi yönde bile olsa kendinden beklenmeyen işlemler yapmamalıdır. Programcı hataları yüzünden kesintiye uğramaması için önlemler alınmalıdır.
İYİ YAZILIMIN ÖZELLİKLERİ Genişleyebilme (Extendibility), İleri aşamalarda verilen görevlerin değiştirilmesi veya yenilerinin ilave edilmesi kolay olmalıdır. Bunun için: basit tasarımlar yaparak karmaşık tasarımlardan kaçınmak gerekir (Design simplicity). Tekrar kullanma (Reusability), bir proje içinde kullanılan elemanların yeni bir projede kullanılabilmesini eklemek gerekir.
İYİ YAZILIMIN ÖZELLİKLERİ Uygunluk (Compatibility), farklı bilgisayar sistemlerinde aynı ortak özelliklere sahip olunması. Bunun için çeşitli standartları kabul etmek gerekir (veri tipleri, dosya yapısı, ara yüz, vs.) Kaynakların kullanımı (Efficiency), bilgisayar kaynaklarını (işlemci, RAM, vs.) en iyi şekilde kullanmak gerekir.
İYİ YAZILIMIN ÖZELLİKLERİ Taşınabilirlik (Portability),bir yazılım ürününün geliştirildiği bilgisayar ortamlarından farklı bilgisayar ortamlarına taşınarak çalıştırılması gerekebilir. Bu iki şekilde olabilir. - Kaynak taşımalı (Source Compatible), - taşınma, derlenme,çalıştırma. - Hedef taşımalı (Binary Compatible), - taşınma, çalıştırma. Kontrol edilebilirlik (Verifiability), bir yazılımın hatalı durumlar ile karşılaşması halinde programın devam etmesine engel olan ve hatta programı çalıştırmayan hatalar ortaya çıktığında kullanıcıya ve programcıya hatanın ne olduğu konusunda yeterli bilginin verilmesi.
İYİ YAZILIMIN ÖZELLİKLERİ • Bütünlük (Integrity),- istenmeyen erişimler ve değiştirmeler karşısında program, data, doküman gibi yazılım bileşenlerinin korunması. • Kolay kullanım (Ease of use), - yazılım ürününü kullanan kişinin ürünü kolayca öğrenmesi, kullanabilmesi, sonuçlarını yorumlayabilmesi, hatalarını düzelterek işlerini fazla bir zahmete girmeden yapabilmesi. • Beraber Çalışma (Interoperability), bu durumda iki program ardı ardına çalışma dışında bir birleri ile veri alış verişinde bulunabilmelidirler.
MODÜLER YAPININ ŞARTLARI Parçalanabilirlik (Modular Decomposability), bir problemi alt parçalara ayırarak yazmak. Birleştirilebilirlik (Modular Compos ability), bir birinden habersizce oluşturulan modüllerin bir araya getirilerek bütünü meydana getirdiklerinde eksik veya yetersiz modüllerin olmaması. Anlaşılabilirlik (Modular Understandability), farklı kişiler tarafından yazılsa bile, okunduğunda programın anlaşılabilmesi.
MODÜLER YAPININ ŞARTLARI Koruma (Modular Protection) – bir modülün çalışma şekline ve datalarına diğer bir modülün izin verilenin dışında müdahale etmemesi. Süreklilik (Modular Continuity) - problemin tanımındaki küçük değişiklikler bir yada daha fazla parçanın değişmesine neden olurken program mimarisi olarak anılan modüller arasındaki ara yüzün (örneğin fonksiyon prototipleri) bozulmaması gerekir. Şimdi de nesneye dayalı programlamanın özellikleri inceleyelim.
Yazılım Geliştirme Evreleri Analiz Tasarım Kodlama Engtegrasyon
Analiz Ne yapacağız? Gereklilikler Problem sahası
Tasarım Nasıl yapacağız? Genel / mantıksal tasarım Soyut düşün! Ayrıntılı / fiziksel tasarım Somuta dönüştür!
Kodlama Programı yazmaya bilgisayar başında başlama! Azar azar kodla – sık sık test et! İlk önce, ilk derleme hatasını düzelt!
Entegrasyon Birleştirilebilir ve sınanmış kod parçaları elde eder etmez, bunları birleştir! Her birleştirme sonrasında, mutlaka test yap!
Yapısal Programlama Uzun ve karmaşık programların, bloklara ayrılarak daha kolay biçimde yazılabilmesini mümkün kılar. Küçük kod parçacıkları seviyesinde yapısal programlama hiyerarşik program akışı yapılarını tavsiye eder. Bu yapılar pek çok modern dilde kolayca elde edilebilen, “while”, “repeat”, “for” gibi yapılardır. Bu teknik ile programcılar büyük kod parçalarını daha kısa ve dolayısıyla anlaşılırlığı yüksek alt yordamlar halinde yazarlar. Genel olarak programlarda çok az genel (global) değişken kullanılır. Genel değişkenler yerine alt yordamlar yerel değişkenler kullanırlar ve değişkenlerini adres ve değer ile gönderirler.
PROSEDÜREL TASARIM Yapısal programlama yaklaşımında, ilk tasarım 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 yada 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.