NESNEYE YÖNELİK PROGRAMLAMA. Yrd.Doç.Dr. Zeynep ORMAN ormanz@istanbul.edu.tr



Benzer belgeler
Tümleştirilmiş Süreçte (UP) Yazılım Projesi Aşamaları

YAZILIM MODELLEME VE TASARIM

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar

Unified Modeling Language

NESNE TABANLI PROGRAMLAMA Temel Kavramlar

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 5. Yrd.Doç.Dr.Hacer Karacan

Nesneye Dayalı Yazılım Geliştirme. Her iterasyon sonunda sistem istenene yaklaşır. Nesneye Dayalı Yazılım Geliştirme

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

NESNE TABANLI PROGRAMLAMA

NESNEYE YÖNELİK ÇÖZÜMLEME SÜRECİ

Tümleştirilmiş Yazılım Geliştirme Süreci (The Unified Process UP)

YAZILIM MODELLEME VE TASARIM

Yaz.Müh.Ders Notları #4 1

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

Kalıtım (Inheritance)

TÜMLEŞİK MODELLEME DİLİ. UML (Unified Modeling Language)

NESNEYE YÖNELİK PROGRAMLAMA. Yrd.Doç.Dr. Zeynep ORMAN

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Kullanım Durumu Diyagramları (Use-case Diyagramları)

NESNEYE YÖNELİK PROGRAMLAMA Unified Modelling Language (UML) Bütünleşik Modelleme Dili

Ders 8 Konu Özeti ve Problemler

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

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

SiSTEM ANALiZi ve TASARIMI

Sunum İçeriği. Programlamaya Giriş

Yazılım Gereksinimlerinin Görsel Çözümlemeleri: UML (UnifiedModeling Language) Birleştirilmiş Modelleme Dili

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

NESNE TABANLI PROGRAMLAMA

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

NESNEYE YÖNELİK TASARIM SÜRECİ

Algoritma ve Akış Diyagramları

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 8

BİL-141 Bilgisayar Programlama I (Java)

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Bölüm 2 Varlık-İlişki Veri Modeli: Araçlar ve Teknikler. Fundamentals, Design, and Implementation, 9/e

Bilgisayarda Programlama. Temel Kavramlar

YZM 2108 Yazılım Mimarisi ve Tasarımı

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

Algoritmalar ve Programlama. Algoritma

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

BİL-142 Bilgisayar Programlama II

YAZILIM MODELLEME VE TASARIM

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6. Yrd.Doç.Dr.Hacer Karacan

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

C++ Dersi: Nesne Tabanlı Programlama

Nesne Yönelimli Programlama

İLİŞKİSEL VERİTABANLARI

Eylül 2007 de v1.0 ı yayınlanan SysML sayesinde endüstri mühendislerinin de ihtiyacı karşılanmış oldu.

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

Programlama Dillerinde Kullanılan Veri Tipleri

Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması

Bilgisayar Mimarisi Nedir?

Klavyeden Basit Giriş/Çıkış İşlemleri

Çek-Senet Modülü Dizayn. Dökümanı. Turquaz Muhasebe. Versiyon 0.2. Önsel Armağan. 15 Eylül 04

KDV kısım numaraları Pos cihazındaki KDV departman numaralarına göre tanımlandıktan sonra F2-Kaydet butonu ile bu bölüm kayıt edilir.

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

HSancak Nesne Tabanlı Programlama I Ders Notları

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

ALGORİTMA VE PROGRAMLAMA II

Operatörlerin Aşırı Yüklenmesi

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama

BM208- Nesneye Dayalı Analiz ve Tasarım. Sunum 7

SINIF YAPISI ve NESNE YÖNELİMLİ PROGRAMLAMA NESNE YÖNELİMLİ PROGRAMLAMA

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

YZM 2108 Yazılım Mimarisi ve Tasarımı

Çözüm Bilgisayar. Çözüm SIRAMATİK

Ders 8: Metotlar. barisgokce.com

BTP 209 SİSTEM ANALİZİ VE TASARIMI

YZM 2105 Nesneye Yönelik Programlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

Algoritma ve Akış Diyagramları

24 Mart İlgili Modül/ler : Transfer. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

Evren Yazılım Donanım Mühendislik Bilgisayar İthalat İhracat Turizm Tic. San. Ltd. Şti. Saray Mah. Huriler Sok. Demirağa Apt. No:23/B Alanya/Antalya

DARA PLUS PARAKENDE MODULU

ÇÖZÜM BİLGİSAYAR KOLAY RANDEVU RANDEVU WEB SERVİSLERİ YAZILIM FİRMALARI ENTEGRASYON KILAVUZU Sürüm: 1.0

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Özyineleme (Recursion)

Ders Notlarının Creative Commons lisansı Feza BUZLUCA ya aittir. Lisans:

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

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

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

RotamNet Ticari Programı Kısa Tanıtım Dökümanı

HSancak Nesne Tabanlı Programlama I Ders Notları

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama

Nesne Yönelimli Programlama

Veritabanı. Ders 2 VERİTABANI

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

İÜ AÇIK VE UZAKTAN EĞİTİM FAKÜLTESİ. Süreç İyileştirme Standardı

VERİ TABANI YÖNETİM SİSTEMLERİ Melih BÖLÜKBAŞI

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

YZM 2105 Nesneye Yönelik Programlama

Transkript:

NESNEYE YÖNELİK PROGRAMLAMA Yrd.Doç.Dr. Zeynep ORMAN ormanz@istanbul.edu.tr

Nesne Tabanlı Programlama Kavramları Nesne Tabanlı Programlama (OOP) tekniği, gerçek dünyadaki somut nesnelerin bir yazılımın sunduğu soyut modelde birer karşılığı olmasına dayanır. Bu karşılıklara da Nesne (object) denir. Nesne tabanlı programlama ile gerçek dünyadaki varlıklar ile bu varlıkların yer aldığı ilişkilerin bire bir modellenmesi ve bu modele göre kod yazılması mümkündür.

Nesne Tabanlı Programlama Kavramları Örneğin, Bir insanın sahip olabileceği iki varlık ve bu üçlünün yazılıma eşlenmesi

Nesne Tabanlı Programlama Kavramları Nesne tabanlı geliştirmede de diğer sistem geliştirme süreçlerinde olduğu gibi modelleme aynı zamanda bir sadeleştirmedir. Ne kadar sade modellerimiz olursa o kadar sade kodlarımız olur. Örneğin bir bordro programında insanların boy ve kilolarının önemi olmaz. Bazı durumlarda da aynı kişi tamamen aynı verilerden beslenen başka bir role sahip olabilir. Örneğin, sağlık sisteminde aynı veriler bir hastayı simgeleyecektir.

Örnek: (Personel Sadeleştirmesi - Bordro)

(Personel Sadeleştirmesi Sağlık)

Nesne Tabanlı Programlama Kavramları Bu sadeleştirmeler sonucunda işimize yarayan ve yazılım bakış açısından görülen veriler ve bu veriler üzerinde tanımlanmış işlemler içeren bir modele ulaşırız. Bu modele alan modeli (domain model) adı verilir. Bu modeli kullanarak benzer özellikleri olan birden fazla nesnenin üzerinde işlemler tanımlayabiliriz.

Nesne Tabanlı Programlama Kavramları Nesneye Yönelik programlamada üzerinde işlem yapılacak bu nesnelerin yaratılması ve tanınması gerekir. Nesnelerin programda nasıl yaratılacağı dilden dile farklılık gösterir (C++, Java). Ancak nesnenin yaratılması için nesnenin bir plana ihtiyacı vardır. Bu plana sınıf (class) denir

SINIF Bir sınıf, ortak özellikleri ve davranışları olan nesnelerin sözkonusu ortak özelliklerini ve ortak davranışlarını barındıran soyut bir kavramdır. Yani bir sınıf temel olarak bir tanımdır. Bir özellik ve davranış yığını sunar ve bu yığına topluca erişmemiz için bize birer isim verir. Bu ismi taşıyan nesneler bu yığındaki özellik ve davranışlara sahip olurlar. Bu ilişkiyi nesne sınıfa aittir (belongs to) diyerek açıklarız. ***Bir nesne bir sınıfta tanımlanan özellik ve davranışlara sahipse o sınıfa aittir.

NESNE Sınıf nesne ilişkisinde kullanılan önemli diğer bir kavramda bir nesnenin ait olduğu sınıfın bir örneği (instance) olmasıdır. Bir nesne, uygulama çalışırken bellekte ya da başka bir kayıt ortamında (dosya, veritabanı, vs) bulunan ve ait olduğu sınıfın tanımladığı davranış biçimlerine uyan bir örnektir.

Nesne Tabanlı Programlama Kavramları Bir uygulama çalışırken bir sınıfa ait değişik sayılarda örnek (yani nesne) bulunabilir. Herhangi bir anda o sınıfa ait hiç nesne olmayabileceği gibi bir yada daha fazla sayıda nesne de olabilir. Bir nesne genelde yalnızca bir sınıfın örneğidir. (Ancak C++ gibi dillerde bir nesnenin birden fazla sınıfın örneği olmasına izin vardır ama tercih edilmez)

Örnek: (Nesnenin sınıfı örneklemesi)

Bir sınıftan birden fazla nesnenin bulunması

Nesne Tabanlı Programlama Kavramları Sınıflar ve nesnelerden bahsederken sürekli olarak nesnelerin özellikleri ve davranışlarından bahsederiz. Bir nesnenin özellikleri (attributes), o nesnenin içindeki veriler ve bu verilerin yapısını kapsar. Özellikler değişik seviyelerdeki soyutlamaları içerebilir. Yani bir nesnenin bir özelliği başka bir nesne olarak ifade edilebilir. Bu diğer nesne aynı sınıftan ya da farklı bir sınıftan olabilir. Örnek: Bir Ev sınıfı düşünün; komşu özelliği de bir başka Ev nesnesi olabilir.

Nesne Tabanlı Programlama Kavramları Bir nesne üzerindeki işlemler (operations) ile nesnenin davranışını (behavior) niteleriz. Davranış nesnenin sistemde kullanıldığı zaman yapacakları ve yapacaklarının sistemin durumu üzerinde yol açacağı değişikliklerden oluşur. Davranış sonunda değişime uğrayan sadece nesne olmak zorunda değildir. Çevresi de değişime uğrayabilir. Bazen davranış sonucu nesnenin kendisi hiç değişmezken çevresindeki diğer nesneler değişebilir.

Nesne Tabanlı Programlama Kavramları Örneğin, elimizde bir ütümüz olsun. Ütünün markası, modeli, rengi, çalıştığı elektrik voltajı, ne tür kumaşları ütüleyebildiği bu ütüye ait özelliklerdir (veri). Aynı zamanda ütümüzü ısıtabiliriz, ütüleme işinde kullanabiliriz ve soğumaya bırakabiliriz. Bunlar ise ütünün fonksiyonlarıdır (metot).

Nesne Tabanlı Programlama Kavramları Eğer ütü ile ilgili bir program yapmış olsak ve nesne tabanlı programlama tekniğini kullansak hemen bir ütü sınıfı (class) oluştururduk. Bu sınıfta ütüye ait bilgiler (veriler) ve ütü ile yapabileceğimiz işler (metot) bulunurdu. O zaman nesne tabanlı programlamada bir sınıfta, sınıfa ait veriler ve bu verileri işleyip bir takım faydalı sonuçlar üreten fonksiyonlar metotlar bulunur. Dahası, biz bir tane ütü sınıfı tasarlarsak bu sınıftan istediğimiz sayıda değişik ütüler (Object veya instance) yapabiliriz.

Nesne Tabanlı Programlama Kavramları Bir nesne üzerindeki kısıtlamalar (constraints), nesnenin uyması gereken kuralları simgeler. Bu kurallar genellikle nesnenin özellikleri ile ilgilidir. Nesnenin veri bütünlüğünün korunması için gereken şeylerdir. Bu kısıtlamalar sayesinde nesnenin özellikleri anlamlı olmaya devam eder. (Kısıtlamalar kötü bir şey olarak algılanmamalıdır.)

Nesne Tabanlı Programlama Kavramları Örneğin, bir araba için sürücünün iki ayağı olacağından, debriyaj, fren ve gaz pedallarından aynı anda en çok ikisine basılabilir. Bunu bir kural olarak tanımlarsak, Araba sınıfından nesneler için bir kısıtlama olacaktır.

Nesne Tabanlı Programlama Kavramları Kısıtlamalara benzer diğer bir kavram da bir nesnenin uyması beklenen sözleşmesi (contract) dir. Sözleşme, nesnenin üzerindeki işlemler gerçekleştirilirken nasıl davranması gerektiği üzerine kurallardır. Kısıtlamalar ise nesnenin özelliklerinin her zaman uyması gereken kurallardır. Sözleşmelerin daha çok davranışa, kısıtlamaların ise veriye odaklı kurallar olduğunu söyleyebiliriz.

UML Sınıf ve Nesne Şemaları UML (Unified Modelling Language), nesne tabanlı sistemlerin modellenmesinde kullanılan bir modelleme dilidir. Sınıflar ve nesneler için çeşitli notasyonlar sunar. Bu notasyonlar grafik notasyonlardır. bir miktar metin katkısına da izin verirler. UML sınıf şeması 3 bölümlü bir dikdörtgenden oluşur: En üst bölüm sınıfın adını, Ortadaki bölüm özellikleri En son bölümde yöntemleri (metotları) gösterir.

UML Sınıf ve Nesne Şemaları Nokta no:nokta x: double y: double x = x 0 y = y 0 n1:nokta Nesne Şeması Sınıf Şeması x = x 1 y = y 1

UML Sınıf ve Nesne Şemaları Nesne şemalarında isimlerin altı çizili ve nesnenin özelliklerine değer atanması durumunda atama işareti (=) kullanılmıştır. UML de nesnelerin özelliklerinin tiplerini belirlemek mümkündür. Özelliğin adından sonra iki nokta üst üste işareti (:) ile ayrılarak tipinin adı belirtilir. Aynı tipten birden fazla özellik olsa bile her özelliğin tipi tek tek belirtilecektir. Örneğin, double

UML Sınıf ve Nesne Şemaları İyi bir sınıf tasarımı iyi bir modeldir ve iyi modellerde bulunması gereken özellikler şunlardır: gerçek dünyayı doğru ifade etmelidir. işlevi tasarımdan ayırmalıdır. bütün önemli özellikleri doğrudan sunmalıdır. Sınıfları tasarlarken karşımıza çıkan en önemli tasarım kriteri sade ve genel olması gerekliliğidir. Gereksiz özellikler olmamalıdır!! Ancak çoğu kez, bir sınıfın programlama diline bağlı olarak zenginleştirilmesi gerekebilir.

UML Sınıf ve Nesne Şemaları Örnek: Gelişen nokta sınıfı Nokta x: double y: double equals(o:object):boolean tostring():string Yöntemler (metotlar) Java da equals() ve tostring() yöntemleri oldukça kullanılan ve yararlı yöntemlerdir ve yazılmaları önerilir. Uygulama Java da yazılacaksa sınıfı genişletmek gerekir.

Nesne Tabanlı Programlama Kavramları- Devam Nesneye-yönelik programlamanın temel ilkeleri şunlardır: Soyutlama Saklama, Paketleme Kalıtım Çok biçimlilik SINIF SINIF HİYERARŞİSİ

Nesne Tabanlı Programlama Kavramları- Devam Nesneye-yönelik programlamanın temel kavramları, 1. büyük programlar yazmayı kolaylaştıran soyutlama ve programları değiştirmeyi ve korumayı kolaylaştıran saklama 2. kalıtım ve çok biçimliğe izin veren ve programları kolayca genişletilebilir kılan sınıf hiyerarşisidir. Herhangi bir programlama dilinde bu kavramları uygulayabilirsiniz; fakat, nesneye-yönelik programlama dilleri salt bu amaçla tasarlanmışlardır.

Soyutlama Soyutlama önemli özelliklere odaklanabilmek için ayrıntıları göz ardı etme sürecidir. Geleneksel olarak, bir programlama dili soyutlama yapmaya izin verdiği ölçüde yüksekdüzeyli (high-level) kabul edilir. C++ (ve diğer nesneye-yönelik programla dilleri) verilen bir işi C den daha soyut bir tarzda tanımlama imkanı verirken, C de Birleştirici Dillerden daha soyut bir ortam sunar.

Soyutlama Soyutlama, belirli bir bakış açısından, önemli özelliklere odaklanabilmek için ayrıntıları göz ardı etme sürecidir.

PROSEDÜREL SOYUTLAMA İşlemlere ilişkin ayrıntıları göz ardı etmemize izin veren prosedürel soyutlama en yaygın soyutlama tarzıdır. Programlarda kişileştirilmiş kod kullanmak yerine, belirli görevleri gerçekleştirmek için standart fonksiyonların oluşturulması bir prosedürel soyutlamadır. Kendi fonksiyonlarınızı yazarak, programın yaptığı bir dizi işleme bir isim vermiş olursunuz.

PROSEDÜREL SOYUTLAMA Belirli bir dilde bir program yazarken programcı kendisini bu dilin sunmuş olduğu soyutlama düzeyiyle sınırlamak zorunda değildir. Birçok dil kullanıcı-tanımlı fonksiyonlar (rutinler, prosedürler) yardımıyla prosedürel soyutlama düzeyini daha yukarılara taşımaya izin verir. Prosedürel soyutlama ile kod tekrarlarından kurtulmak mümkündür.

Veri Soyutlaması Bir veri tipinin nasıl yapılandığının ayrıntılarını göz ardı etmemize izin veren soyutlama tarzına veri soyutlaması denir. Örneğin, bilgisayardaki her tür veri ikili sayılar olarak düşünülebilir. Fakat, birçok programcı ondalık sayılarla düşünmeyi tercih ettiği için, dillerin çoğu tam ve floating sayıları destekler. Basic dili karakter katarı (string) tipini bir veri soyutlaması olarak destekler. Diğer yandan, C dili string soyutlamasını doğrudan desteklemez. Bu dilde stringler ardışık bellek hücrelerini işgal eden bir dizi karakter olarak tanımlanmıştır.

Veri Soyutlaması Prosedürel soyutlama kapasitelerinin aksine, birçok dil yeni veri soyutlaması düzeyleri yaratmak konusunda sınırlı destek sağlarlar. C kullanıcı tanımlı veri tiplerini structure lar ve typedef ler aracılığıyla destekler. C dili, içsel olarak birbirlerine bağlı olmalarına rağmen, prosedürel soyutlamayı ve veri soyutlamasını iki ayrı teknik olarak sunar. Bu tekniklerin birleştiği noktada nesne-tabanlı ya da nesneye-yönelik programlama yaklaşımı doğar.

Saklama, Paketleme (Encapsulation) Saklama (Paketleme), soyutlamayı desteklemek ya da güçlendirmek için bir sınıfın iç yapısının gizlenmesidir. Bu şekilde veriler fonksiyonlarla gizlenebilir. Nesnenin içindeki kod, veri veya her ikisi bu nesneye private (özel) veya public (genel) olabilir.

Saklama, Paketleme (Encapsulation) Private kod ve veriler, sadece o nesneye ait bileşenler tarafından bilinebilir ve erişilebilir. Programda nesneye ait olmayan bileşenler, bu private kod ve verilere erişemez. Kod ve verilerimiz public ise, belirli bir nesnenin içinde tanımlansalar da programın diğer parçaları tarafından erişilebilirler. Nesnelere ait public elemanları, private elemanlara denetlenebilir şekilde erişebilmek amacıyla kullanırız.

Sınıf Hiyerarşisi Nesneye-yönelik programlamanın, prosedürel programlamada bulunmayan, bir özelliği, tip hiyerarşisi tanımlayabilme yeteneğidir. Nesneye-yönelik programlama, bir sınıfın başka bir sınıfın alt-tipi olarak tanımlanmasına; sınıflar arası benzerlikleri bir ortak üst-sınıf altında toplamaya izin verir. Birkaç sınıf için ortak bir üst-sınıf tanımlama da bir tür soyutlamadır. Sınıfların ortaklaşa taşıdıkları bazı yönler üzerinde odaklaşıp diğerlerini göz ardı etmeye izin verir.

Sınıf Hiyerarşisi Aslan, kaplan, ayı ve inek türünün üstsınıfı ne olabilir?

KALITIM (MİRAS ALMA) - Inheritance Kalıtım, bir sınıfa ait özellikler ve işlemlerin yeni bir sınıfa birebir aktarılmasıdır. Yeni sınıf eski sınıfın özellikleri ve işlemlerine sahip olmasına ek olarak kendisi de özellikler ve işlemler tanımlayabilir.

KALITIM (MİRAS ALMA) - Inheritance Kalıtım yolu ile eldeki sınıflardan yeni sınıflar türetilir. Türeyen sınıflar türedikleri sınıfın özelliklerini kalıtım yoluyla devralırlar ve kendisi de yeni özellikler tanımlayabilir. Türetme ile sınıflar arasında hiyerarşik bir yapı kurulabilir.

KALITIM Bir sınıf hiyerarşisi tanımlamanın 2 pratik faydası vardır: Türetilmiş sınıf üst-sınıfın kodunu paylaşabilir (Kod Kalıtımı) Türetilmiş sınıf üst-sınıfın arayüzünü paylaşabilir (Arayüz Kalıtımı)

KOD KALITIMI Eğer yeni bir sınıf tanımlıyorsanız ve mevcut bir sınıfın işlevselliğinden yararlanmak istiyorsanız, yeni sınıfınızı mevcut sınıftan türetirsiniz. Bu durumda kalıtım mekanizmaları size mevcut kodu yeniden kullanma imkanı sağlar. Örnek: Veri Girişi Formlarının tasarlanması.

ARAYÜZ KALITIMI Bir diğer kalıtım stratejisi, türetilmiş sınıfın üstsınıfının eleman fonksiyonlarının yalnızca isimlerini kalıtım yoluyla almasıdır. Türetilmiş sınıf bu fonksiyonlar için kendi kodunu kullanır. Arayüz kalıtımının temel faydası çokbiçimliliğe izin vermesidir. Örnek: Farklı veri tiplerindeki form girişleri ayrı ayrı alınır.

ÇOK BİÇİMLİLİK (Polymorphism) Genel anlamı ile bir adın birbiriyle alakalı fakat teknik açıdan farklı iki veya daha fazla amaç için kullanılabilmesi yeteneğidir. NYP de ise oluşturulan nesnelerin gerektiğinde başka bir nesne gibi davranabilmesine denir. Çok biçimlilikle programdaki her nesne kendi davranışını değiştirmeden, kalıtım hiyerarşisine göre farklı biçimlerde görülebilir.

Bir Çok Biçimlilik Örneği Örneğin C dilinde, mutlak değer bulma işlemi için üç farklı fonksiyon tanımlıdır: abs(), labs() ve fabs(). Fakat çok biçimliliği destekleyen C++'da bu fonksiyonlar, abs() gibi tek bir isimle adlandırılırlar. Fonksiyonu çağırmak için kullanılan veri tipi, gerçekte hangi fonksiyonun çalışacağını belirler. Böylece bir fonksiyon adının birkaç farklı amaç için kullanılması mümkündür. Buna fonksiyonların aşırı yüklenmesi denir.

Bir Çok Biçimlilik Örneği

UML DİYAGRAMLARI Kullanım Senaryoları ve Kullanım Durum Diyagramları (Use Case Diagrams)

Kullanım Durumlarının Tanımı Kullanım durumları, sistemin kullanıcılara sunacağı bir hizmetin senaryo şeklinde anlatımıdır. Sistem gereksinimlerinin anlaşılmasını ve ifade edilmesini sağlayan bir yöntemdir. Senaryo, anlamlı bir sonuca (amaca) ulaşmak için aktör ile sistem arasında gerçekleşen olayların belli bir zinciridir. Bir sistemin çalışması sırasında birden fazla senaryo gerçekleşebilir Olası tüm senaryolar, kullanım durumlarını (use case) oluştururlar.

Kullanım Senaryoları Yazılım dünyasındaki önemli isimleri kullanım senaryoları ile ilgili orijinal tanımları aşağıda verilmiştir: (Jacobson, Booch &Rumbaugh, 1999): Bir Kullanım Senaryosu, bir sistemin gerçekleştirdiği ve belirli bir aktör için gözlemlenebilir bir sonuç ortaya çıkaran ve çeşitli varyasyonlar içeren eylemler serisini ifade eder." (Cockburn, 2000): Bir Kullanım Senaryosu, tasarlama aşamasındaki bir sistem ve harici aktörler arasında belirli bir hedefe yönelik gelişen olası etkileşim serilerinin koleksiyonudur."

Senaryo 1 - a

Senaryo 1 - b

Senaryo 1 - c

Senaryo 1 - d

Senaryo 1 - e

Senaryo 2 - a

Senaryo 2 - b

Senaryo 2 - c

Senaryo 2 - d

Aktör

Birincil Aktör ve Sistemin Sınırları Üzerinde çalıştığımız sistemi hangi düzeyde incelediğimize ve sınırlarını ne şekilde çizdiğimize bağlı olarak birincil aktörler değişiklik gösterir. Kullanım senaryolarını yazarken sistemin sınırlarını doğru olarak belirlemek, nelerin dışarıda nelerin içeride olacağına doğru karar vermek gerekir.

Birincil Aktör ve Sistemin Sınırları

Birincil Aktör ve Sistemin Sınırları

Birincil Aktör ve Sistemin Sınırları

Birincil Aktör ve Sistemin Sınırları

Kullanım Senaryolarının Yazılması İhtiyaçların ve istenen özelliklerin listelenmesi şeklinde DEĞİL. Sistem kara kutu olarak ele alınır. Sistemin iç yapısı görülmez, sistemin dışarıya (aktörlere) karşı sorumlulukları ifade edilir. Aktörler ile sistem arasındaki etkileşim etken cümleler ile ifade edilir. "Ne yapar?" sorusu cevaplanır, "Nasıl yapar?" değil.

Kullanım Senaryolarının Yazılması Sistemin sorumluluklarını nasıl yerine getireceği daha sonra gelinecek olan tasarım aşamasında ele alınacak bir problemdir. Kullanım senaryolarını yazdığımız şimdiki aşamada ise sadece istekler anlaşılmaya çalışılıyor. Sistemin bitmiş hali hayal edilerek bu sistem çalıştığında oluşabilecek senaryolar yazılır.

Kullanım Senaryolarında Yer Alan Bölümler Her kullanım senaryoları grubunun (use case) bir adı ve numarası vardır. İsimden sonra şağıdaki bölümler gelir.

Önsöz (Preface) Bölümü

Önsöz (Preface) Bölümü Birincil aktör, destek aktörü ve diğer aktörlerin belirlenmesi sistemin sınırlarını çizer. Kullanım senaryoları ilgililerin (aktörlerin) tüm beklentilerini karşılayan tüm olayları ve sadece onları içerir. Tüm ilgililerin ve beklentilerin ilk başta belirlenmesi önemlidir. Aksi durumda senaryolarda bazı durumlar unutulabilir ve bu eksiklik ancak ileriki aşamalarda anlaşılabilir.

Ana Başarılı Senaryo (Temel Akış) Bölümü

Ana Başarılı Senaryo (Temel Akış) Bölümü

Uzantılar (Alternatif Akışlar) Bölümü

Uzantılar (Alternatif Akışlar) Bölümü

Diğer Bölümler Sıra Dışı Durumlar Bölümü (Exceptions) : Sistemde hatalar oluştuğunda yapılacaklar sıralanır. Bazı tasarımcılar bu bölümdeki olayları da uzantılar bölümünde ele alırlar. Özel İstekler Bölümü (Special Requirements) : İşlevler ile ilgili olmayan istekler bu bölümde belirtilir. Bu istekler genellikle hız, güvenilirlik, rahat kullanım gibi kalite kriterlerine yöneliktir. Teknolojik Beklentiler Bölümü : Kullanıcıların ön gördükleri donanım özellikleri burada sıralanır. Örneğin giriş/çıkış işlemlerinin hangi cihazlar ile yapılması istendiği bu bölüme yazılır.

ÖRNEK Senaryo Grubu (Use Case) SG1: Satış İşlemleri Konu: Market Sistemi Birincil Aktör: Kasa Görevlisi İlgililer (Aktörler) ve Beklentileri (Stakeholders and Interests): Kasa Görevlisi: Bilgilerin doğru ve hızlı girilmesi, toplamın doğru hesaplanması, para üstünün doğru hesaplanması Satış Elemanı: Komisyonun doğru hesaplanması ve kayıt edilmesi Müdür: Yetkili işlemleri (kasa görevlisinin yapamadığı) kolaylıkla yapabilmek

ÖRNEK İlgililer (Aktörler) ve Beklentileri (Stakeholders and Interests): Vergi Dairesi: Vergilerin doğru hesaplanabilmesi ve toplanabilmesi Kredi Kartı Asıllama Merkezi: Ödeme bilgilerinin doğru formatta gelmesi ve asıllama bilgilerinin kayıt edilmesi

ÖRNEK Ön Koşullar (Preconditions): Kasa görevlisi sisteme giriş yapmıştır. Son Koşullar (Postconditions): Satış bilgileri kayıt edilmiştir. Vergi doğru olarak hesaplanmıştır. Muhasebe ve envanter kayıtları güncellenmiştir. Komisyon kayıt edilmiştir. Fatura oluşturulmuştur. Kredi kartı onayı kayıt edilmiştir.

ÖRNEK Ana Başarılı Senaryo (Doğal Akış)

ÖRNEK Ana Başarılı Senaryo (Doğal Akış)

ÖRNEK Uzantılar (Alternatif Akışlar): *a. Herhangi bir anda müdür yetkili bir işlem yapmak ister ve şifresini girer: 1.Sistem müdür-yetkisi konumuna geçer. 2.Müdür yetkili bir işlem gerçekleştirir. Örneğin satışı iptal eder, bir ürünün fiyatını indirir vs. 3.Müdür sistemden çıkar. 4.Sistem normal konuma (kasa görevlisi yetkisi) geçer.

ÖRNEK Uzantılar (Alternatif Akışlar): *b. Herhangi bir anda sistemde bir hata oluşur: Bu durumlarda bilgilerin kayıt edilmesi ve sistemin kaldığı yerden devam edebilmesi istenir. 1. Kasa görevlisi sistemi yeniden başlatır, sisteme giriş yapar ve sistemin önceki durumdan devam etmesini ister. 2. Sistem önceki durumu oluşturur. 2a. Sistem önceki durumu oluştururken anormallik sezer. 1. Sistem hata uyarısı verir, hatayı kayıt eder ve temiz (başlangıç) duruma geçer. 2. Kasa görevlisi yeni bir satış başlatır.

ÖRNEK Uzantılar (Alternatif Akışlar): 3a. Geçersiz bir ürün kodu (Sistemde bulunamadı): 1. Sistem hata uyarısı verir, ürünü reddeder. 2. Kasa görevlisi hataya tepki verir: 2a. Ürünün üstünde okunabilir bir kod vardır: 1. Kasa görevlisi kodu sisteme elle (manual) girer. 2. Sistem ürünün tanıtıcı bilgisini ve fiyatını gösterir. 2b. Ürünün üstünde kod yoktur, ama fiyatı yazılıdır: 1. Kasa görevlisi müdürden yetkili bir işlem yapmasını ister. 2. Müdür şifresini girer. 3. Kasa görevlisi fiyatı elle girer.

ÖRNEK Uzantılar (Alternatif Akışlar): 3b. Aynı üründen bir taneden fazla alınmıştır (5 şişe içecek): 1. Kasa görevlisi ürün kodunu ve adetini sisteme girer. 3-6a. Müşteri kasa görevlisine bir ürünü almaktan vazgeçtiğini söyler: 1. Kasa görevlisi satıştan çıkarılacak ürünün kodunu sisteme girer. 2. Sistem ürünü satıştan çıkarır ve geçerli toplamı gösterir. 3-6b. Müşteri alışverişten vazgeçtiğini söyler: 1. Kasa görevlisi satışı iptal eder.

ÖRNEK 5. Müşteri indirim hakkı olduğunu söyler (müşteri kartına sahiptir): 1. Kasa görevlisi müşteri kodunu sisteme girer. 2. Sistem indirimi uygular ve yeni toplamı gösterir. 7a. Nakit ödeme: 1. Kasa görevlisi ödenen nakit miktarı sisteme girer. 2. Sistem para üstünü gösterir ve para çekmecesini açar. 3. Kasa görevlisi müşteriden ödemeyi alır ve para üstünü verir. 4. Sistem nakit ödemeyi kayıt eder. 7b. Kredi kartı ile ödeme: 1.... 7c. Çek ile ödeme: 1.

ÖRNEK Özel İstekler (Special Requirements): Düz kare monitör. Yazılar 1 metre uzaklıktan okunabilmeli. Kredi kartı sorgulamasının cevabı en geç 30 saniyede gelmeli....

ÖRNEK Teknolojik Beklentiler (Technology Variations List): *a. Müdür kendisini sisteme bir kart okutarak ya da tuş takımından şifresini girerek tanıtır. 3a. Ürün kodları bir barkod okuyucu ile veya tuş takımından elle girilebilir. 7b. Kredi kartı bilgiler kart okuyucu ile veya tuş takımından elle girilebilir....