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.

Slides:



Advertisements
Benzer bir sunumlar
Değişkenler.
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
PHP ile Lab Örnekleri Lab Çalışması.
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
JAVASCRİPT VERİ TÜRLERİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Nesneye Yönelik Programlama
Nesneye Dayalı Programlama
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Visual Basic 6.0 Ders Notları
Karmaşık (İç içe) SELECT Sorguları
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ KONTROL : Prof. Dr. Asaf VAROL
Diziler Dizi, bellekte aynı isim altında toplanmış değişkenler kümesidir. Eğer ki aynı türden veriler grubunu bellekte tutmak gerekirse diziler kullanılır.
SQL de Değişken Tanımlama
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
BPR152 ALGORİTMA VE PROGRAMLAMA - II
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
TBF Genel Matematik I DERS – 3 : Limit ve Süreklilik
NESNEYE DAYALI MODELLEME VE TASARIM
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
Çerez(Cookie) Kullanımı Oturum Yönetimi
Dizi (ARRAY) Diziler grup halindeki değişkenler olarak tanımlanabilir. Dizi içersinde yüzlerce değişken olabilir. Dizi elemanları index adı verilen sıra.
NESNEYE YÖNELİK PROGRAMLAMA
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
NESNE TABANLI PROGRAMLAMA -METOTLAR-
4. HAFTA Mart 2010.
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 : LİSTELERE.
MANTIK BİLİMİNE GİRİŞ VE ÖNERMELER MANTIĞI Yılmaz KILIÇASLAN.
İnternet Programcılığı II
Nesneye Yönelik Programlama
KÜMELER.
Nesneye Dayalı Programlama
NESNE YÖNELİMLİ PROGRAMLAMA
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Diziler Dizi, bellekte aynı isim altında toplanmış değişkenler kümesidir. Eğer ki aynı türden veriler grubunu bellekte tutmak gerekirse diziler kullanılır.
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.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
JAVA’DA DÖNGÜLER.
Kalıtım , Sınıf Asli Ergün.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Nesneye Dayalı Programlama
JAVA’DA DİZİLER Dr.Galip AYDIN.
KALITIM Yılmaz Kılıçaslan.
Ders İçerik Sunusu Maltepe Üniversitesi
Python Aslı Ergün.
ÖNERMELER MANTIĞI Yılmaz KILIÇASLAN.
MANTIK BİLİMİNE GİRİŞ VE ÖNERMELER MANTIĞI Yılmaz KILIÇASLAN.
İKMAP İnternet 1 Ders Notu
Göğüşhan KILIÇ twitter.com/gogushan_kilic PHP’ye Giriş OLMAYA HAZIR MIYIZ?
ÖNERMELER MANTIĞI Yılmaz KILIÇASLAN. Önermeler Mantığı - Bağlaçlar Yalnızca doğruluk değerleri üzerinden fonksiyonel olarak tanımlanabilen bağlaçlar ve.
MANTIK BİLİMİNE GİRİŞ VE ÖNERMELER MANTIĞI Yılmaz KILIÇASLAN.
Göğüşhan KILIÇ twitter.com/gogushan_kilic PHP IF OLMAYA HAZIR MIYIZ?
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
YAPISAL PROGRAMLAMA KAVRAMI
BİLGİSAYAR programlama II
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,
PHP'de Program Denetimi
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.
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

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 VE KALITIM

Kapsülleme Genelde Class öğeleri(Property,Method), başka bir Class tarafından kullanılmak amacıyla yazılır. Bunun yanında bazı Class öğeleri de diğer öğelere yardımcı olmak amacıyla yazılır. Bu öğeler genellikle Class'ın iç işlerinde kullanılır. Belli bir Class'ı kullanan başka bir Class'ın, iç işlerde kullanılan bu öğeleri görmesi veya bilmesi gerekmez. Bu amaçla bazı property ve methodların, ait olduğu class dışından, erişimini sınırlama özelliğine encapsulation (kapsülleme) denir.

Kalıtım (inheritance) Kalıtım nesne tabanlı programlamanın temel öğelerinden biridir. Çünkü,kalıtım hiyerarşik sınıflandırma oluşturmayı sağlar. Birbiriyle bağlantılı bir grup elemanın ortak özelliklerinden oluşan bir sınıf oluşturulabilir. Bu sınıf daha sonra yeni değişiklikler yapılarak daha özel sınıflara kalıtım yoluyla aktarılır ve her sınıf kendisinde bulunan ek özellikleri buna aktarır. Böylece uygulamanın yeni baştan yazılmasına gerek kalmaz.

Kalıtım (inheritance) Nesne tabanlı programlamada kalıtım yoluyla aktarılan sınıf, temel sınıftır. Kalıtım işlemi yapılmış olan sınıf da oluşturulmuş (türetilmiş) sınıftır. Türetilmiş sınıf, temel sınıf tarafından tanımlanan tüm metot, özellik, operatör ve değişkenleri kalıtım yoluyla elde eder ve sadece kendisinde kullanılacak özellikleri, değişkenleri, metotları vb.yi kendisine ekler.

Bunu bir örnekle gösterelim: class Oyun: def __init__(self): self.enerji = 50 self.para = 100 self.fabrika = 4 self.isci = 10 def goster(self): print ("enerji:", self.enerji) print ("para:", self.para) print ("fabrika:", self.fabrika) print ("işçi:", self.isci)

def fabrikakur(self,miktar): if self.enerji > 3 and self.para > 10: self.fabrika = miktar + self.fabrika self.enerji = self.enerji – miktar*3 self.para = self.para – miktar*10 print (miktar, "adet fabrika kurdunuz! Tebrikler!“) else: print ("Yeni fabrika kuramazsınız. Çünkü yeterli enerjiniz/paranız yok!“) macera = Oyun()

Sınıfı örnekleyip çalıştırıyoruz

Şimdi miras alabileceğimiz bir sınıfımız var ve özelliklerini aktaracağımız yeni bir sınıf tanımlayalım Bunun için sınıfımızı şöyle tanımlamamız gerekiyor: Class Rakip(Oyun): Böylelikle daha en başta tanımladığımız “Oyun” adlı sınıfı, bu yeni oluşturduğumuz “Rakip” adlı sınıfa miras verdik (Rakip inherits from Oyun) Dolayısıyla “Rakip” adlı sınıf “Oyun” adlı sınıfın bütün özelliklerine sahip olmuş oldu.

Oyun sınıfının birer fonksiyonu olan “goster”i ve “fabrikakur” u “Rakip” sınıfı içinden de çalıştırabiliriz. Üstelik Rakip içinde bu değişkenleri tekrar tanımlamak zorunda kalmadan. Programa aşağıdaki kodları ekleyip test edelim. class Rakip(Oyun): pass rakp=Rakip()

Türetilmiş sınıfın özelliklerine ek olarak bir de “puan” adlı bir niteliği olmasını istiyorsak aşağıdaki gibi bir yol izleriz. Önce şöyle deneyelim: Class Rakip(Oyun): def __init__(self): self.puan = 0 Bu kodları çalıştırdığımızda hata alırız. Çünkü burada yeni bir “__init__” fonksiyonu tanımladığımız için, bu yeni fonksiyon kendini Oyun sınıfının __init__ fonksiyonunun üzerine yazıyor. Dolayısıyla Oyun sınıfından miras aldığımız bütün nitelikleri kaybediyoruz. Nitelik Ekleme:

Bunu önlemek için şöyle bir şey yapmamız gerekir: class Rakip(Oyun): def __init__(self): Oyun.__init__(self) self.puan = 0 Burada “Oyun.__init__(self)” ifadesiyle “Oyun” adlı sınıfın “__init__” fonksiyonu içinde yer alan bütün nitelikleri, “Rakip” adlı sınıfın __init__ fonksiyonu içine kopyalıyoruz. Böylece “self.puan” değişkenini tanımlarken, “enerji, para, vb.” niteliklerin kaybolmasını engelliyoruz. Kodlarımızın son halini topluca görelim ve çalıştıralım

Yukarıda “Rakip” sınıfı için “puan” adlı yeni bir nitelik tanımlamıştık. Bu nitelik sadece “Rakip” tarafından kullanılabiliyordu, Oyuncu tarafından değil. Aynı şekilde, yeni bir nitelik belirlemek yerine, istersek var olan bir niteliği iptal de edebiliriz. Diyelim ki Oyuncu’nun oyuna başlarken “fabrika”ları olsun istiyoruz, ama Rakip’in oyun başlangıcında fabrikası olsun istemiyoruz. Bunu şöyle yapabiliriz: class Rakip(Oyun): def __init__(self): Oyun.__init__(self) del self.fabrika self.puan = 0

Gördüğünüz gibi “Rakip” sınıfı için “__init__” fonksiyonunu tanımlarken “fabrika” niteliğini “del” komutuyla siliyoruz. Bu silme işlemi sadece “Rakip” sınıfı için geçerli oluyor. Bu işlem öteki sınıfları etkilemiyor. Bunu şöyle de ifade edebiliriz: “del komutu yardımıyla fabrika adlı değişkene Rakip adlı bölgeden erişilmesini engelliyoruz.” Dolayısıyla bu değişiklik sadece o “bölgeyi” etkiliyor. Öteki sınıflar ve daha sonra oluşturulacak yeni sınıflar bu işlemden etkilenmez. Yani aslında “del” komutuyla herhangi bir şeyi sildiğimiz yok! sadece “erişimi engelliyoruz”.

KAYNAKÇA MIT OpenCourseWare Introduction to Computer Science and Programming, Fall