NESNEYE YÖNELİK PROGRAMLAMA Yrd.Doç.Dr. Zeynep ORMAN ormanz@istanbul.edu.tr KONULAR • Nesne Tabanlı Yazılım Geliştirme Sürecine Giriş • Nesne Tabanlı Programlama Kavramları • UML Nesne ve Sınıf Şemaları • Yazılım Geliştirme ve Proje Yönetimi • Çözümleme (System Analysis) ve Kullanım Durumları • • • • • (Use Case) Sınıf Düzeyinde Tasarım Nesneye Yönelik Programlama Dili (C++, Java) Sınıf ve Nesne Tanımlama Operatör Aşırı Yükleme (Operator Overloading) Kalıtım (Inheritance) ve (Çok biçimlilik) Polymorphism Kullanılacak Araçlar ve Diller • Microsoft Visual Studio (Visual C++) • UML için StarUML () • Java PROGRAMLAMA NEDİR? • Gerçek dünyadaki problemlerin çözümlerinin bilgisayarda tanımlanmasıdır. • • Yazılım geliştirme süreci kodlamadan önce problemi oluşturan varlıkların bilgisayarda ifade edilebilecek şekilde modellenmesi şeklinde başlar. Problem Çözme Adımları • Kısacası yazılım geliştirme aslında bir problem çözme aktivitesidir. Bir problemi çözmenin temel adımları yüzlerce yıldır aynıdır. • Bu adımlar, • Problemin saptanması ve ifade edilmesi • Problemin daha iyi anlaşılabilmesi için çevresinden soyutlanması (abstraction) • Problemi simgeleyen soyut bir kavramsal modelin oluşturulması • Bu modelin çözümlenmesi ve bu modelin sunduğu probleme bir çözüm getirilmesi • Getirilen çözümün orijinal problemi çözüp çözmediğinin denetlenmesi Analitik Düşünceye göre Problem Çözümü • Örnek: (Araba lastiği patlaması) • Problemin saptanması : Lastik patladı • Problemin çevresinden soyutlanması: Lastiği sökeriz • Problemin soyut çözümünün ifade edilmesi: Hasar bir yama ile kapatılabilir. • Soyut çözümün gerçek dünyada uygulanması: Acaba oldu mu? Soyutlama ve Modelleme • Buradan Soyutlama (Abstraction) ve Modelleme (Modelling) olarak iki önemli kavram ortaya çıkmaktadır. • Problemi çözerken, problem için önemsiz olan detayları kenara koyma ve böylece önemli kısımlara odaklanmak için soyutlamayı kullanırız. • Çözümler asla gerçek probleme göre getirilmez. Problemin önemli yönlerini simgeleyen bir modele göre çözüm geliştirilir. Soyutlamanın Avantajları • Modeller daha basit ve daha kolay anlaşılır yapıda olurlar. Bu şekilde modelleri oluşturmak ve modelleri temel alarak çalışmak daha kolay olur. • Modeller soyut oldukları için çözümlerin küçük boydaki bir modele (prototip) göre hazırlanıp bir pilot uygulamasının yapılması daha kolaydır. • Bu şekilde çözümlerin denenmesi daha hızlı ve daha düşük maliyetle yapılabilmektedir. Soyutlamada Dikkat Edilecek Yönler: • Bu avantajların yanında modelleme üzerinden çalışırken dikkat edilemesi gereken yönler de vardır: • Oluşturduğumuz modelin gerçek dünyayı iyi simgelediğinden emin olmak için doğrulanması (verification) gerekir. • Modelin yazılım geliştirme aşamalarında güncellenmesi gerekir. Yazılım kalitesi • Kullanıcı • Doğru • Hızlı • Sistem kaynaklarının kullanımı • Kolay kullanılabilir • Dökümantasyon (kullanım kılavuzu) • Güncellemeler • Geliştirici • Kaynak kod kolay okunur ve anlaşılabilir • Bağımsız modüller, birbiri arasındaki etkileşim ve iletişim az • Bakım kolaylığı • Yeterli sürede tamamlanması • Modüllerin yeni projelerde kullanılabilmesi • Geliştirme maliyeti • Dökümantasyon Yazılım kalitesi • Nesneye dayalı programlama yukarıdaki maddelerde belirtilen kalite kriterlerini sağlamak üzere ortaya konmuş bir yöntemdir. • Tasarım yapılırken ve bu tasarım C++ veya Java gibi bir nesneye yönelik programlama dili ile programa dönüştürülürken kalite kriterleri sürekli gözönünde bulundurulmalıdır. Yazılım Geliştirme Aşamaları C++ , Java Yazılım Geliştirme Aşamaları • Çözümleme (Analiz): Belirsizlik kalmayacak şekilde çözülmesi istenen problem anlaşılır ve yazılımın gerçekleştirilmesine yönelik hazırlıklar yapılır. • Tasarım: Bu aşamada amaç, gerçek dünyadaki problemin bilgisayarda temsil edilebilecek soyut bir modelinin oluşturulmasıdır. Çözümün hangi unsurlardan oluşacağı ve bu parçaların nasıl modelleneceği tamamiyle programlama yöntemine bağlıdır. Tasarım sonrası ortaya çıkacak model, yazılımın kalitesini doğrudan etkilediğinden bu aşamada doğru ve iyi bir çözümün oluşturulması çok önemlidir. Kodlamaya geçmeden önce kurulan modelin sağlamasının yapılması gerekir. Yazılım Geliştirme Aşamaları • Kodlama: Tasarım aşamasında oluşturulan model, bir programlama dili ile bilgisayara bu aşamada aktarılır. • Dökümantasyon: Yazılım projesinin her aşamasında yapılan işleri açıklayan dökümanlar hazırlamak gereklidir. • Test: En son aşamada programın olası giriş değerleri için nasıl davrandığı incelenir. Programsal Yaklaşımlar-1 • Yazılım sektöründe program geliştirme konusunda günümüze kadar birçok yaklaşım denenmiştir. • Bunların ilki programın baştan aşağıya sırası ile yazılıp çalıştırılmasıdır. Bu yaklaşımla BASIC dili kullanılarak birçok program yazılmıştır. • Burada sorun programın akışı sırasında değişik kısımlara “goto” deyimi ile atlanmasıdır. Program kodu bir kaç bin satır olunca, kodu okumak ve yönetmek gerçekten çok büyük sorun oluyordu. • Eleştiri: aynı işlevin tekrarı, modüler değil Programsal Yaklaşımlar-2 • İkinci yaklaşım ise prosedürel (yapısal) yaklaşımdır. • Bu yaklaşımda, gerçeklenmek istenen sistemin yapması gereken işler belirlenir. • Büyük boyutlu ve karmaşık işler, daha küçük ve basit işlevlere (fonksiyonlara) bölünerek gerçeklenir. Programsal Yaklaşımlar-2 • Programlarda birçok işin tekrar tekrar farklı değerleri kullanılarak yapıldığı fark edildi. • Örneğin, herhangi bir programda iki tarih arasında ne kadar gün olduğunu bulmak birçok kez gerekebilir. Bu durumda başlangıç ve bitiş tarihlerini alıp aradaki gün sayısını veren bir fonksiyon yazılabilir ve bu fonksiyon ihtiyaç duyulduğu yerde uygun parametrelerle çağrılıp istenen sonuç elde edilebilir. • Prosedürel yaklaşım Pascal ve C dillerinde uzun yıllar başarı ile kullanılmıştır. Programsal Yaklaşımlar-2 • Eleştiri: • Global değişkenlere, üzerinde işlem yapmaması gereken fonksiyonlar tarafından erişilebilir. • Değişkenlerin koruması yoktur. Değişkene, sadece belirli bazı fonksiyonlar tarafından erişimine olanak sağlayacak bir mekanizma yoktur. • Yeni bir veri yada veri yapısı eklendiğinde, bu veri üzerinde işlem yapan tüm fonksiyonlar yeniden, eklenen veriyi işleyecek şekilde güncellenmelidir Programsal Yaklaşımlar-3 • Her geçen gün programların daha karmaşık bir hal alması, program kodunun kurumsal uygulama projelerinde on binlerce satırı bulması ve yazılım geliştirme maliyetinin çok arttığını gören bilim adamları, programcılara yeni bir yaklaşımın kullanılabilineceğini öğrettiler. • Bu yaklaşımın ismi Nesne Yönelimli Programlama(Object Oriented Programming)dır. Neden Nesneye Yönelik • Veri birincil derecede öneme sahiptir. • Amaç veri ile bu veri üzerinde işlem yapan fonksiyonları bir araya getirerek yeni bir yapı oluşturmaktır : SINIF • Veriye erişmenin tek yolu SINIF fonksiyonlarını kullanmaktır. Bunun dışında veriye erişim engellenmiştir. • Bu şekilde veri gizlenerek yanlışlıkla değiştirilmesinin önüne geçilmiş olur. Paketleme ve Veri Gizleme • Veri ve bu veri üzerinde işlem yapan fonksiyonlar paketlenmiştir. Paketleme (encapsulation) ve veri gizleme (data hiding) nesneye dayalı programlamanın önemli iki kavramını oluşturmaktadır. • Veri işlenmek istenildiğinde, bu veri üzerinde hangi üye fonksiyonların işlem yaptığı tam ve kesin olarak bilindiği için fonksiyonların gerçeklenmesi, hata ayıklama, kodun güncellenmesi gibi Yazılım Yaşam Çevrimi adımları kolaylaşmaktadır. NESNE • Gerçek dünya nesnelerden oluşmaktadır. • Çözülmek istenen problemi oluşturan nesneler, gerçek dünyadaki yapılarına benzer bir şekilde bilgisayarda modellenmelidir. • Nesnelerin yapıları iki bölümden oluşmaktadır: 1. Özellikler (nitelikler ya da durum bilgileri), 2. Davranışlar (yetenekler) Nesneye Yönelik Tasarım • Tasarım yapılırken sistemin işlevi değil, sistemi oluşturan veriler esas alınır. Bu nedenle tasarım yapılırken sorulması gereken soru, • “Bu sistem ne iş yapar?” değil, “Bu sistem hangi nesnelerden oluşur?” olmalıdır. • Hangi unsurların nesne olarak modellenebilir: • İ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. 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 kaybolmasıdır. • Buna göre örnek olarak düşünülen Nokta modeli şu bölümlerden oluşacaktır: • x, 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 sağlayan fonksiyon: hareket • Noktanın ekranda görünmesini sağlayan bir fonksiyon: gorun • Noktanın ekranda silinmesini sağlayan bir fonksiyon: kaybol Nesne Örneği: Grafik programındaki nokta • 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; Bir Nesne Modeli Nesneye Dayalı bir Programın Yapısı Yöntemin Değerlendirilmesi • Gerçek dünya nesnelerden oluştuğundan bu yöntem 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 (data hiding) adı verilen bu özellik sayesinde verilerin herhangi bir fonksiyon tarafından bozulması önlenir. • Programcılar kendi veri tiplerini yaratabilirler. Yöntemin Değerlendirilmesi • Bir nesne modeli oluşturduktan sonra bu modeli çeşitli şekillerde defalarca kullanmak mümkündür.(reusability) • Programları güncellemek daha kolaydır. • Nesneye dayalı yöntem takım çalışmaları için de uygundur. Modelleme Dilleri • Yazılım geliştirmede kullanacağımız çeşitli modellerin ifade edilmesi için modelleme dillerine ihtiyaç duyarız. • Nesne tabanlı programlama ortaya çıkmadan önce Varlık İlişki diyagramları (ERD – Entity Relationship Diagrams) ve Veri Akış diyagramları (DFD – Data Flow Diagrams) modelleme araçları olarak kullanılmaktaydı. • Nesne tabanlı programlama ile birlikte yeni ihtiyaçlara gereksinim oldu ve 1990’lı yıllarda yazılım sektöründe bu amaçla 100’den fazla modelleme dili ortaya çıktı. Modelleme Dilleri • Bu durum birçok probleme yol açtı. • 1997 yılında farklı modelleme dillerinin güçlü yanları bir araya getirilerek tek bir dil yaratıldı. • Bu dil UML (Unified Modelling Language – Birleşik Modelleme Dili).
© Copyright 2024 Paperzz