OOP Tanımlar.

Slides:



Advertisements
Benzer bir sunumlar
Programlama-II (Java ile Bilgisayar Programlama)
Advertisements

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar
Yığınlama Sıralaması (Heap Sort)
C# - Metotlar.
Tuğba DEMİREL
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
JAVA EĞİTİMİ Serdar TÜRKEL
NESNEYE YÖNELİK PROGRAMLAMA KALITIM
METODLAR Program yazarken bazı durumlarda bir işi gerçekleştiren kod yapılarını tekrar tekrar yazmak durumunda kaldığımız olur. Bu kodları yeniden yazmak.
C Programlama Diline Giriş
Yazılım Mühendisliği Bölüm - 6 Gerçekleştirim
İSİM UZAYLARI (Name Space)
Javascript Oğuz İNAL.
Sarma (Encapsulation) / Kalitim (Inheritance) /Final Terimleri
NESNEYE DAYALI MODELLEME VE TASARIM
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
Nesne Tabanlı Programlama
NESNEYE YÖNELİK PROGRAMLAMANIN TEMEL İLKELERİ GENEL BİR BAKIŞ
Erişim Denetimi, Fonksiyon
NESNE TABANLI PROGRAMLAMA -METOTLAR-
Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar
ÜNİTE 2: KILASİK MANTIK KONU KAVRAM ÇEŞİTLERİ.
Nesneye Dayalı Programlama
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ DERLEYENLER: Ahmet Can ÇAKIL Ali Murat GARİPCAN Özgür AYDIN Şahin KARA KONTROL : Prof. Dr. Asaf VAROL KONU : KAPSÜLLEME.
METODLAR.
İSİM UZAYLARI (NAMESPACE)
NESNEYE DAYALI PROGRAMLAMA
Görsel Programlama Dr. Muhammet Balcılar
Nesneye Dayalı Programlama
NESNE YÖNELİMLİ PROGRAMLAMA
Metotlar.
METOTLAR.
DEĞİŞKENLER VE VERİ TİPLERİ
Önceki Dersi Hatırlama !!
Nesneye Yönelik Programlama (12. Sunu). İsim Uzayları (Namespaces) Sınıfınızda Deniz adında iki öğrenci olduğunu kabul ediniz. Böyle bir durumda bu öğrencileri.
Bilgisayar Programlama
NESNEYE-YÖNELİK PROGRAMLAMA
İŞLETİM SİSTEMLERİ İşletim sisteminin, kolay ve hızlı kullanım, kaynak verimliliği gibi kıstasların dışında, ortamında saklanan bilgilerin, gerekse izinsiz.
JAVA’DA DÖNGÜLER.
Kalıtım , Sınıf Asli Ergün.
Demet AYDIN METODLAR Demet AYDIN
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
Nesneye Dayalı Programlama
KALITIM Yılmaz Kılıçaslan.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Bilgi Teknolojisinin Temel Kavramları
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Bölüm 10: Program Ayrıştırma
BİLGİSAYAR programlama II
Genel Kavramlar Bölüm - 1. YAZILIM Bilgisayara işlemler yaptırabilmek ve karar verdirtebilmek için yazılan kalıplara denir. Yazılım, genel olarak donanım.
KALITIM(INHERITANCE) Öğr.Gör. Murat ASLANYÜREK. KALITIM KAVRAMINA GİRİŞ  Kalıtım, sınıflardan yeni sınıflar türetmeyi sağlar.  Türetilen yeni sınıflar,
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Ders 2 Kavram Öğrenmeyi Etkileyen Etmenler
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
C Programlama Dili Bilgisayar Mühendisliği.
Nesne Yönelimli Yaklaşım
Nesneye Dayalı Programlama Temel Kavramlar Hüseyin ESKİ.
FONKSİYONLAR.
Bütün dünyayı nesneler (object) ve nesneler arası ilişki olarak gören model kullanılarak yapılan programlama. Bu programlama tekniğine göre her nesne.
Bilgisayar Bilimi Problem Çözme Süreci-2.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Bilişim Teknolojileri Öğrt.
Bilgisayar Bilimi Problem Çözme Süreci-3.
MTM216 GÖRSEL PROGRAMLAMA
İLERİ VERİ TABANI UYGULAMALARI
Sunum transkripti:

OOP Tanımlar

Programlama dilleri programlamaya yaklaşım açısından 4 gruba ayrılabilir: Prosedür yönelimli diller (örn. Fortran, Pascal) Nesne yönelimli diller (örn. C++, C#, Java) Mantık yönelimli diller (örn. Prolog) Görev yönelimli diller Nesneye-yönelik yaklaşımda, bir program birbiriyle etkileşim halinde olan bir nesneler sistemini tanımlar. Nesne yönelimli programlama yazılım karmaşıklığına çözüm getirmek için ortaya çıkmıştır.

Nesne Nesne, kendine has özellikleri olan ve özelliklere bağlı olarak belirli bir durumda bulunarak çeşitli tutumlar sergileyen somut ya da soyut varlıklardır. Bu tanım, “somut” kısmıyla gerçek yaşamdaki nesneler için de geçerlidir. Ancak gerçek yaşamda ”nesne” olarak nitelendirmediğimiz işlem, sipariş, talep gibi kavramlar programlama ortamında nesne olarak tanımlanabilirler. Bu da tanımın “soyut” diye ifade ettiği bölümü oluşturur.

Nesne Her nesnenin bir durumu vardır. Durumla ifade edilmek istenen şey, nesnenin özelliklerinin belirli bir andaki değerlerinin tümüdür. Özellikler nesnenin karakteristiğini, kalitesini, vasıflarını belirtir. Örneğin bir masanın metal, ahşap ya da cam oluşu o masanın özelliklerinden biridir ve masayı nitelendirir.  Bir masanın yükseklik, en, boy, biçim, ağırlık, malzeme türü gibi birçok niteliği olabilir.

Nesne Tutum, nesnelerin kendilerine gelen mesajlara verdikleri cevaplar ve etkilere gösterdikleri tepkilerden oluşur. Tutum o nesnenin "yapabileceklerinin/davranışlarının” görünür olanlarıdır. Tutumlar programlama dillerinde kendilerini metotlar ve olaylar (events) olarak gösterir.

Nesne Kimlik (identity), nesneyi diğer örneklerinden ayıran özelliğidir. Bir nesnenin tüm örnekleri aynı şablondan oluştuklarından aynı özelliklere sahiptirler. Ancak bu özelliklerden bir tanesi, alacağı değerler bakımından örneği diğerlerinden ayırabilir olmalıdır. Böylece o sınıftan oluşturulmuş nesnelerin birbirlerinden ayırıcı birer kimlikleri oluşturulabilir.

Nesneye-yönelik programlamanın temel kavramları, büyük programlar yazmayı kolaylaştıran soyutlama, programları değiştirmeyi ve korumayı kolaylaştıran saklama ve Kalıtım ve çok biçimliliğe izin veren ve programları kolayca genişletilebilir kılan sınıf hiyerarşisi’dir. Bu kavramlar yazılımın bakımını kolaylaştırmakta ve birden çok kişinin aynı yazılım üzerinde çalışabilmesini kolaylaştırmaktadır.

Soyutlama(Abstraction) Nesnenin önemli karakteristiklerine odaklanabilmek için detayların göz ardı edilmesidir. Nesnenin uygulama için gerekli olan özelliklerinin kodlanarak, diğer özelliklerinin kodlanmaması uygulamaya dahil edilmemesi anlamına gelir. Örneğin bir otopark yazılımda aracın plaka bilgisi, giriş/çıkış saatleri önemlidir. Eğer marka/modele göre ücretlendirme yapmıyorsanız, bu bilgilerin sınıfa/nesneye dahil edilmesine gerek yoktur. Ayrıca aracın şase numarası, motor hacmi, motor numarası gibi büyüklükler de soyutlamanın dışında bırakılmalıdır.

Soyutlama(Abstraction) İşlemlere ilişkin ayrıntıların göz ardı edilmesini sağlayan en yaygın soyutlama tarzı prosedürel soyutlamadır . Kod tekrarından kurtarır Programda belirli bir işi gerçekleştirmek için standart fonksiyonların oluşturulmasını sağlar. Programcı kendi fonksiyonlarını oluşturabilir

Soyutlama(Abstraction) Bir veri tipinin nasıl yapılandığının ayrıntılarının göz ardı edilmesine izin veren soyutlama tarzı da veri soyutlamasıdır. Ö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. C kullanıcı tanımlı veri tiplerini “structure”lar ve “typedef”ler aracılığıyla destekler.

Metot Bir nesnenin yapabileceklerini, o nesnenin metotları belirler. Dışarıdan erişilebilir bir arayüze sahip olan ve fonksiyon olarak tanımlanan isimlendirilmiş kod blokları, nesnenin metotlarıdır. Metotlar parametreli ya da parametresiz olarak tasarlanabilirler. Parametresiz bir metot, sadece ismi çağırılarak kullanılabiliyorken, parametreli bir metodu çağırmak için, metodun beklediği parametreleri uygun şekilde yollamak gerekir. Bazı metotlar çağırıldıklarında sadece tanımlanmış belirli bir işlevi yerine getirirler. Bazı metotlarsa kendilerini çağıran nesneye geri yönde bir mesaj yollarlar.

Kapsülleme Kapsülleme sadece bilginin yani nesnenin özelliklerinin değerlerinin saklanması değil, aynı zamanda hangi metotlarının erişilebilir olup olmayacağının da belirlenebilmesi anlamına gelmektedir.

Kapsülleme Sarmalama”, soyutlamayı desteklemek yada güçlendirmek için bir sınıfın iç yapısının gizlenmesidir. Bilgi saklama ya da koruma olarak da bilinen kapsülleme, nesnenin yaptığı işler ve durumuyla ilgili bilgilerin ve işlevsel karmaşıklığının gizlenmesini sağlar. İki temel amacı vardır: bilgi saklama ve karmaşıklığı gizleme.

Kapsülleme Kapsüllemenin sonucu olarak, her sınıf için dışarıya açılacak metotlarının bir şekilde bildirilmesi gerekir. Sınıfın arabirimi (interface) olarak tanımlanabilecek olan bu tanımlamayla, diğer nesnelerin bu nesne üzerinden hangi metotlara ulaşabileceği tanımlanmış olur. Birçok programlama dilinde, arabirimlerin hangi seviyelerden (sadece o sınıfın dahil olduğu proje, ya da herkes tarafından gibi) erişilebilir olduğu belirlenebilmektedir.

Private-Public tanımlama Nesnenin içindeki kod, veri veya her ikisi bu nesneye private (özel) veya public (genel) olabilir. Private kod ve veriler, sadece o nesneye ait bileşenler tarafından bilinebilir ve erişilebilir. Programında nesneye ait olmayan bileşenleri 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.

Kalıtım Kalıtım en basit tanımıyla, bir sınıfın belirli özellik ve tutumlarını bir üst sınıftan alarak, kendisi için farklı olan özellik ve tutumları ayrıca uyguluyor olmasıdır. Bu tanımdaki bir üst sınıf ilişkisi, genel sınıflandırma mantığı içinde bir hiyerarşiyi ifade eder.

Kalıtım Bunu bir örnekle anlatacak olursak, bir kedi, üst sınıf olarak “kedigiller”e aittir. Bunun da üzerinde etoburlara, memelilere, omurgalılara ve en üstte hayvanlar sınıfına dahildir. Kedi, en üstteki “hayvan” sınıfından başlayarak her bir alt sınıfta bir takım özellikleri özelleşerek, en sonunda kendi sınıfına ait özelliklere sahip olur.

Kalıtım Programlama açısından kalıtım, sınıfın özelliklerinin üst sınıflara ait genel olanları yeniden kodlamaya gerek duymaksızın, üst sınıflardan devralması anlamına gelmektedir. Böylece genel özellikler ve tutumlar üst sınıflardan (parent) gelirken, yazılımcı sadece sınıfa ait olan durum ve tutumları programlar. Bu durumda belirli durum ve tutumları miras alınan sınıfa ebeveyn (parent) ya da süper (super) sınıf denir. Üst sınıfın bir alt sınıfı yani mirasçısı olarak tanımlanan yeni sınıfa da alt sınıf (subclass) adı verilir.

Çok Biçimlilik Çok biçimlilik, nesnelerin kendi türlerinin dışında farklı türler olarak da temsil edilmelerini sağlar. Ancak bu alt-sınıf/üst-sınıf ilişkisiyle sınırlıdır. Yani belirli bir üst sınıftan türetilmiş olan bir sınıf, her ne kadar kendi özel tutum ve durumlarına sahip olsa da,  üst sınıfından bir nesneymiş gibi de davranabilirler.

Sınıf Hiyerarşisi 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 Nesneye-yönelik programlama, prosedürel soyutlama ve veri soyutlamasını sınıflar biçiminde birleştirir. Sınıf, bir nesnenin özelliklerini ve davranışlarını tanımlayan şablondur; nesnenin kodlanmış halidir ve geliştirme zamanıyla ilgilidir. Kullanılan programlama diline bağlı olarak farklılık gösterse de, nesnenin durumunu taşıyacak olan özelliklerin neler olacağı, hangi veri tiplerinde oldukları; nesnenin tutumunu belirleyecek olan olayların ve metotların isimleri, alacakları parametreler ve çağırıldıklarında ne yapacakları sınıf içinde kodlanarak tanımlanır.