Soyut veri tipleri ve kapsülleme kavramları

Slides:



Advertisements
Benzer bir sunumlar
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
Advertisements

T.C. ORDU VALİLİĞİ İlköğretim Müfettişleri Başkanlığı TAM ÖĞRENME MODELİ TAM ÖĞRENME MODELİ.
Bilimsel bilgi Diğer bilgi türlerinden farklı
YEDEKLEME NEDIR? Gülşen Güler. YEDEKLEME NEDIR? Yedekleme, en genel anlamıyla, bir bilgisayar sistemini işlevsel kılan temel birimlerin, üzerinde çalışan.
KIYMETLİ EVRAK HUKUKU Doç. Dr. Mustafa ÇEKER
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
Bağlama ve Kapsam Kavramları
ARAYÜZLER(INTERFACE) Öğr.Gör. Murat ASLANYÜREK. ARAYÜZ KAVRAMINA GİRİŞ  Arayüzler, soyut sınıflara benzer. Ancak yapı olarak bazı yönleriyle farklılıklar.
ÇOK BOYUTLU SİNYAL İŞLEME
YÖNLENDİRME. Yönlendirme ● Statik ● Dinamik ● Kaynakta yönlendirme ● Hop by hop yönlendirme.
Bölüm 2 C Dilinin Temelleri
Pazarlama İlkeleri.
İndeksi Niçin Kullanırız?
FONKSİYONLAR.
Proje Dosyası - Belgeleme - Raporlama
Algoritma ve Programlamaya Giriş
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
DENEYSEL TERTİPLER VE PAZAR DENEMESİ
ANKARA ÜNİVERSİTESİ SAĞLIK BİLİMLERİ FAKÜLTESİ SOSYAL HİZMET BÖLÜMÜ
Ünite 8: Olasılığa Giriş ve Temel Olasılık Hesaplamaları
Nesneye Dayalı Kavramlar Uygulama 1
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
YÖNETİM- ÖRGÜT TEORİLERİ MODERN EKOL- SİSTEM TEORİSİ
BİLGİSAYAR ÇEŞİTLERİ.
“Bilgi”’nin Gösterimi “Bilgi” İnsan veya Makina Yorumlama Öngörme
Bölüm 6: Araştırma Evreni ve Örnekleme
GELECEK PİYASASI İŞLEMLERİ
STORAGE BÜŞRA KARADENİZ
Nesneye Dayalı Kavramlar Uygulama 2
KÜMELER HAZIRLAYAN : SELİM ACAR
PHP ile Nesneye Yönelik Programlama
3.hafta METODLAR.
Bölüm 7 İfadeler ve atamalar.
Bölüm1 İlk Bilgiler.
NİŞANTAŞI ÜNİVERSİTESİ
MİKROİŞLEMCİLER VE MİKROBİLGİSAYARLAR
MADDEYİ TANIYALIM.
Nesneye Dayalı Programlama 1
Komut düzeyi kontrol yapıları
Nesne yönelimli programlama desteği
NİŞANTAŞI ÜNİVERSİTESİ
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Evren-Örneklem, Örnekleme Yöntemleri 2
Test Puanlarının Yorumlanması: Standart Puanlar
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Koşullu Durumlar.
Nesneye Dayalı Programlama 1
Tezin Olası Bölümleri.
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
İşlemciler.
DAHİLİ SINIFLAR(INNER CLASSES)
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Veri ve Türleri Araştırma amacına uygun gözlenen ve kaydedilen değişken ya da değişkenlere veri denir. Olgusal Veriler Yargısal Veriler.
MTM216 GÖRSEL PROGRAMLAMA
14. EKİPLE ÖĞRETİM İKİ KAFA TEK KAFADAN DAHA İYİDİR ( Two heads are better than one) ingiliz atasözü.
Boğaziçi Üniversitesi Network Araştırma Laboratuvarı (NETLAB)
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
RASTGELE DEĞİŞKENLER Herhangi bir özellik bakımından birimlerin almış oldukları farklı değerlere değişken denir. Rastgele değişken ise tanım aralığında.
Bilimsel Araştırma Yöntemleri
NİŞANTAŞI ÜNİVERSİTESİ
2. HAFTA BİLİMSEL ARAŞTIRMA YAKLAŞIMLARI
2. HAFTA Bilimsel Araştırma Temel Kavramlar.
I. Hafta Dil Nedir? Dilin Kökeni
Sunum transkripti:

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

11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli soyut veri tipleri Kapsülleme yapıları İsim kapsülleri Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Soyutlama kavramı Soyutlama, bir varlığın sadece en önemli özelliklerini barındıran görüntü veya temsil şeklidir. Programlamada ve bilgisayar bilimlerinde temel önemi vardır Hemen hemen tüm dillerde altrpogramalar aracılığı ile süreç soyutlaması (process abstraction) mevcuttur. 1980 sonrası tasarlanan hemen hemen tüm dillerde veri soyutlaması (data abstraction) desteği vardır. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Veri soyutlamasına giriş Soyut veri tipi (SVT) aşağıdaki özellikleri taşıyan kullanıcı-tanımlı veri tipidir Tip nesnelerinin temsiliyeti ve tip üzerinde mümkün olan işlemler bir sentaktik ünitede tanımlıdır Nesnelerin temsiliyeti program ünitelerinden saklıdır ve nesneler üzerinde sadece tip tanımında verilen işlemler uygulanabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Veri soyutlamanın avantajları Birinci şartın avantajları Programın düzenli olması, değiştirilebilirlik (veri yapısı ile ilgili herşey ayni yerde olduğu için), ve parça parça derleme İkinci şartın avantajları Veri temsiliyeti saklı olduğu için kullanıcı kodu direkt olarak bu temsiliyete bağlı olamaz, dolayısı ile temsiliyet kullanıcı kodunu etkilemeden değişebilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

SVTler için dil gereksinimleri Tip tanımını kapsülleme için bir sentaktik birim Tip isimlerini ve altprogram başlıklarını kullanıcıya gösteren, ama tanımları saklayan bir yöntem Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Dil örneği: C++ Class (sınıf) kapsülleme aracıdır Sınıfta tanımlı fonksiyonlar (metodlar) sınıfın tüm örnekleri için geçerlidir Sınıfta tanımlı veri üyeleri (data members) her örneğin içinde ayrı ayrı mevcuttur Örnekler statik, yığıt-dinamik veya yığın- dinamik olabilirler Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Dil örneği: C++ ... Bilgi saklama Private (gizli varlıklar için) Public (arayüz varlıkları için) Protected (alt sınıflardan görülebilmesi gereken, ama dışarıdan görülememesi gereken varlıklar için) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Dil örneği: C++ ... Yapıcılar (constructors): Örneklerin veri elemanlarını (data members) ilklemeye yarar (nesneleri yaratmazlar) Nesnenin bir kısmı yığın-dinamik ise hafızadan yer de alabilirler Nesne ilklemesinde kullanılmak üzere parametre alabilirler Örnek yaratıldığında otomatik olarak çağrılırlar İsimleri sınıf isni ile ayni Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Dil örneği: C++ ... Yokediciler (destructors) Örnek yokedilmeden hemen önce çağrılan metod (genellikle sadece yığından alınan hafızayı geri vermek için) Örneğin ömrü bittiğine otomatik olarak çağrılırlar İsimleri: ön tarafına ~ konmuş sınıf ismi Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Dil örneği: C++ ... Friend (dost) fonksiyonlar / Friend (dost) sınıflar – seçici olarak gizli ksımları dışarıya göstermeye yarar. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

C++ dilinde bir örnek class stack { private: int *stackPtr, maxLen, topPtr; public: stack() { // a constructor stackPtr = new int [100]; maxLen = 99; topPtr = -1; }; ~stack () {delete [] stackPtr;}; void push (int num) {…}; void pop () {…}; int top () {…}; int empty () {…}; } Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Parametreli soyut veri tipleri Değişik tiplerde veri barındırabilen soyut veri tipleri tasarlamaya yarar Başka bir adı: jenerik sınıflar C++, Ada, Java, ve C# dillerinde parametreli soyut veri tipi desteği vardır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

C++ dilinde parametreli soyut veri tipi Yiığıt elemanı tipi sınıfı template aracılığı ile parametreli hale getirilebilir template <class Type> class stack { private: Type *stackPtr; const int maxLen; int topPtr; public: stack() { stackPtr = new Type[100]; maxLen = 99; topPtr = -1; } … } Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Kapsülleme yapıları Büyük programların iki özel ihtiyacı var: Alt programlara ayırma haricinde bir düzen kurabilme Kısmi derleme (partial compilation) yöntemi (tüm programın değil, daha ufak birimlerin derlenebilmesi) Çözüm: biribiri ile ilgili altprogramların ayrı olarak derlenebilen birimlerde toplanması (derleme birimleri) Böyle birimlere kapsüller denir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

İçiçe altprogramlar Altprogramları, onları kullanan altprogramların içinde tanımlamak sureti ile organize etmek Destekleyen dillerin bazıları: Pascal, Ada, Fortran 95, Python, Ruby Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

C dilinde kapsülleme Bir veya daha çok altprogram içeren dosyalar ayrı olarak derlenebilir Arayüz header dosyasına konur Dışarıdan görülmesi istenmeyen fonksiyon ve değişkenlerin önüne static sözcüğü konur #include önişlemci komutu: header dosyalarını programa dahil etmek için kullanılır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

C++ dilinde kapsülleme C’ye benzer Sınıflar, kapsülleme için ek bir olanak sağlar. Birbiri ile alakalı fonksiyonlar sınıf çatısı altında toplanabilir. Ortak global veri sınıf değişkenlerinde saklanabilir. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Ada Paketleri Paketlerde isenilen sayıda veri ve altprogram deklarasonu olabilir Paketler ayrı ayrı derlenebilir Paketlerin spesifikasyon ve implementasyon kısımları ayrı dosyalardadır ve kendi başlarına derlenebilirler Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

İsimle kapsülleme Çok sayıdaki global ismi (değişken, fonksiyon adı vs.) mantıki gruplara bölme yöntemi İsimlendirerek kapsülleme (naming encapsulation) programdaki değişkenler, fonksiyonlar vs. için için yeni bir etki alanı yaratır C++ / C# isim uzayları (namespaces) Her kütüphane kendi isim uzayında olabilir Dışarıldan kullanılacak değişkenler ve fonksiyonların önüne isim uzayının adı yazılmalıdır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

İsimle kapsülleme... Java Paketleri Paketler de isim uzayı yaratabilir Paketlerde birden çok sınıf tanımı olabilir Paket kullanıcııları ya paket adı ile birlikte isimleri verirler, ya da import deklarasyonu kullanirlar Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ

Özet Soyut veri tipleri (SVT) kavramı ve bu kavramın yeni dillerin tasarımında kullanılması önemli bir dönüm noktası idi SVTlerin iki önemli özelliği: veriyi ilgili işlemleri ile birlikte paketleme ve bilgi saklama ADA paketler vasıtası ile SVTlerin gerçeklenmesine destek verir C++, C# ve Java’da SVT desteği sınıflar aracılığı iledir Ada, C++, Java, ve C# dillerinde paramereli SVTler mümkündür C++, C#, Java, Ada dillerinde isim kapsüllemesi mümkündür Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ