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



Benzer belgeler
public static int Toplam int x, int y

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

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Nesneye Dayalı Programlama

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.

Ders 8: Metotlar. barisgokce.com

BİL-141 Bilgisayar Programlama I (Java)

Nesne Yönelimli Programlama ve Kalıtım

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

Ders 8 Konu Özeti ve Problemler

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

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

Operator Aşırı Yükleme (Operator OverLoading)

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

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

Yazılım Kodlama ve İ simlendirme Standartları v1.0

YZM 2105 Nesneye Yönelik Programlama

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

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

Sunum İçeriği. Programlamaya Giriş

Şablon Türler (Generics)

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

YZM 2105 Nesneye Yönelik Programlama

11- FONKSİYONLAR (FUNCTIONS)

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

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

NESNEYE YÖNELİK PROGRAMLAMA

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

İç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.

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

Kalıtım (Inheritance)

Nesneye Dayalı Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

BMH-303 Nesneye Yönelik Programlama

Java Class Yapısında Finalize Metotunun Kullanımı

Lambda İfadeleri (Lambda Expressions)

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

CBÜ Teknoloji Fakültesi, Yazılım Mühendisliği. Nesneye Yönelik Programlama

Programlama Dilleri 3

BTEP243 Ders 3. class Yazım Kuralı:

Nesne Yönelimli Programlama

C# Metotlar ve Metot Tanımlama

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

Nesneye Dayalı Programlama

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

3. Bölüm Soyut Sınıflar (Abstract Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

Operatörlerin Aşırı Yüklenmesi

PAKET ERİŞİMLERİ SINIFLARIN YENİDEN KULLANIMI. BMU-112 Algoritma ve Programlama-II Yrd. Doç.Dr. İlhan AYDIN

Programlama Dilleri 3

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

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

YZM 2105 Nesneye Yönelik Programlama

BİL-142 Bilgisayar Programlama II

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

C# Console Uygulamaları ifelse Yapıları 2

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Java String İşlemleri

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

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Bölüm 12. Nesne yönelimli programlama desteği

7. HAFTA. Erişim Belirleyiciler

YZM 2105 Nesneye Yönelik Programlama

BİL-141 Bilgisayar Programlama I (Java)

YZM 2105 Nesneye Yönelik Programlama

Nesne Yönelimli Programlamaya Giriş - 2. Cem Ahmet MERCAN 16/04/2009

MOBIL UYGULAMA GELIŞTIRME

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Decorator Tasarım Şablonu

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

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

3. NESNE TABANLI PROGRAMLAMANIN PRENSİPLERİ

BĠLĠġĠM TEKNOLOJĠLERĠ

BMM3101 PROGRAMLAMA DİLLERİ

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

BİL132 Bilgisayar Programlama II

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

Business Delegate Tasarım Şablonu KurumsalJava.com

BOĞAZİÇİ ÜNİVERSİTESİ UNVAN DEĞİŞİKLİĞİ SINAVI PROGRAMCI

Veritabanı İşlemleri

/*int sayi1, sayi2,toplam=0;

Intercepting Filter Tasarım Şablonu KurumsalJava.com

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

C++ Dersi: Nesne Tabanlı Programlama

// hataları işaret eden referans

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Java Dersi. Altuğ Bilgin Altıntaş

Transkript:

abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance alınamayan ama miras veren sınıflarlardır. İçinde abstract metotlar bulunur ama bu metotların içi boştur ve bu metotlar override edilmek zorundadır, aksi halde derleyici hata verir. Abstract aslında bir yandan da virtual demektir, virtualda override zorunluğu yok iken abstract için bu zorunluluk vardır, aralarındaki fark budur. Eğer bir class içinde abstract metot kullanılacak ise bu classın da abstract olarak bildirilmesi gerekmektedir. Örneğin, base class içindeki bir metotta iş kurallarını uygulamıyorsak ama o metotun alt sınıflarda mutlaka olması gerekiyor ise ve iş kurallarını türeyen sınıflara bırakmak gerekiyor ise abstract yapmamız gerekir. Örneğin her bankanın para yatırma, para çekme vs gibi işlemleri her işlem içinde farklı farklı özelliklere sahiptir. Bir base class içinde abstract metot oluşturulur ve alt sınıflarda -türeyen sınıflarda- bu metotun ilgili özellikler tanımlanarak işlevi belirtilir. Tabi bu esnada türeyen sınıflarda mu method mutlaka override edilir. Abstract class içinde normal metotlar olabilir. Instance alınamaz ama referanslar oluşturabilir. Örneğin Sınıf diye bir class olsun. Bu class dan şu şekilde instance alınamaz. Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; Sınıf sınıf1; Özet metotlar private olarak tanımlanamazlar çünkü private olursa kendisinden türeyecek olan diğer sınıflar bu özet metodu devre dışı bırakamaz. 1 Bu başlık altındaki yazılar http://www.ismailgursoy.com.tr/ internet adresinden alınmıştır.

Görüldüğü gibi abstract sınıfından türemiş olan alt sınıflardaki aynı adı taşıyan metotlar override edilmiştir, aksi halde program derlenmez. Abstract classlardan nesne tanımlanamaz, yani instance alınamaz. Abstract sınıflar, abstract metotlar içerebilirler. Abstract metot tanımlanan bir class mutlaka abstract class olarak tanımlanmalıdır. Abstract classlar sealed anahtar sözcüğü ile ifade edilemezler, çünkü sealed ilgili sınıftan türetme yapılmasını engeller. Abstract bir classdan türeyen sınıflar base class içindeki bütün abstract metotları override ederek uygulamak zorundadır, yani metotun gerçek iş yapacak gövdeleri bu derived classlar içinde tanımlanır. Bütün abstract classlar aslında virtualdır. Static metotlar abstract olarak tanımlanamazlar. Abstract metot tanımlamasında override ve virtual sözcükleri kullanılmaz.

interface Kavramı 2 Öncelikle interface, Türkçe anlamı Arayüz olan, ve diğer classlara Rehberlik görevi üstlenen bir yapımızdır. Yaptığı iş sadece diğer classlara yön göstermektir. Bu yüzden Interface tanımları içerisinde kesinlikle kod bloğu bulunmaz. Interface yapılar sadece tanımlamalardan ibarettir, içerisinde hiçbir yapıcı metod bulunmamalıdır. Interface i diğer classlardan ayıran birçok özellik vardır. Ama en önemlisi: Bir class sadece bir classtan türetebilirken, bir class birden çok Interface ten türetilebilir. Yani, bir class a birden çok Interface ile rehberlik edebiliriz. public interface IBasliklar string Isim; string AnaBaslik; string AltBaslik; string Yazdir; public interface IUzunluk string En; string Boy; string Kalinlik; string Yazdir; Class oluştururken nasıl class parametresi kullanıyorsak, interface oluştururken de interface anahtar sözcüğünü kullanırız. Oluşturduğumuz interface isimlerinin, I ile başladığına dikkat çekerim. Bu bize kalıtım aldığımız class ta, kalıtım alınan şeyin bir interface olduğunu gösterir. interface oluştururken dikkat edeceğimiz maddeler aşağıda ki gibidir: interface ler yukarda bahsettiğim gibi Rehber görevi görürler. Yani içerisine herhangi bir kod parçası ekleyemeyiz. Sadece tanımlama yaparız. Bir interface in tüm üyeleri public kabul edilir. private, protected, static gibi tanımlanamazlar. Üyeleri public olarak ta tanımlayamayız, çünkü zaten hepsi public olarak tanımlanmış kabul edilir. Aksi halde hata alırız. Bir arayüzü, başka bir arayüzden türetebiliriz, fakat bir class tan yada struct dan türetemeyiz. interface leri miras alan sınıflar, içerisinde tanımlanan tüm metodları Implemente etmek zorundadır. Şimdi, Samsung adında bir classımız olsun ve yukarda tanımlanan interfacelerden IBasliklar arayüzünü miras alsın. 2 Bu başlık altındaki yazılar http://www.mshowto.org/c ile interface kullanimi arayuz nedir nasil kullanilirornek anlatimli.html internet adresinden alınmıştır.

Abstract classlarda gördüğümüz gibi karşımıza tüm metodları otomatik implement edecek seçenek çıkmaktadır. Fakat burda iki seçeneğimiz var, farklarını hemen açıklayalım. İlk seçeneğimiz zaten normal olanıdır, yani interface içerisinde ne kadar metod var ise implement edecektir. 2. Seçeneğimizde, Explictly keywordu vardır, Explictly: açıkça, bariz bir şekilde anlamına gelir ve bu şekilde implement edeceğimiz metodların hangi Interface ten türetildiği belirtilmektedir. Bu Explictly nin kullanım amacı da budur, yani karmaşıklığı önler. Implement işlemini Explictly olarak kullanma durumumuz, birden fazla Interface ten miras aldığımız zamanlar, aynı metod ismi 2 Interface lerde de olabilir. Bu karışıklığı önlemek için metod isimlerinin başına Interface isimleri gelmektedir. Örneğin yukarda tanımladığımız 2 Interface de Yazdır() metodu bulunmaktadır. 1 tane implement edilmiş public Yazdır() metodu varsa sorun olmaz, uygulama hata vermez. Ama ya 2 Yazdır() metodu da farklı işlemler yapıyorsa? O zaman aşağıdaki gibi tanımlarız. string IBasliklar.Yazdir return IBaslik Yazdır Metodu ; string IUzunluk.Yazdir return IUzunluk Yazdır Metodu ; Ve kod tarafında da aşağıdaki gibi çağırırız: Samsung S3 new Samsung; IBasliklar Baslik IBasliklarS3; IUzunluk Uzunluk IUzunlukS3; Baslik.Yazdir; Uzunluk.Yazdir; Evet, şimdi genel örneğimize geçelim, Samsung Classını hem IBasliklar, hemde IUzunluk Interface lerinden miras aldırtalım, metodları implement edelim. ( Yazdır() metodlarımız explictly olarak implemente edilecek) public class Samsung:IBasliklar,IUzunluk public string Isim return Model :Galaxy S3 ; public string AnaBaslik return Teknoloji ; public string AltBaslik return Telefon ; #endregion #region IUzunluk Members public string En return 70,6 mm ; public string Boy

return 136,6 mm ; public string Kalinlik return 8,6 mm ; public string IBasliklar.Yazdir return IBaslik Yazdır Metodu ; public string IUzunluk.Yazdir return IUzunluk Yazdır Metodu ; Bir Class, birden fazla Interface den kalıtım aldırılacak ise, Interface ler aralarına, konulur. (aşağıdaki gibi) class Samsung:IBasliklar,IUzunluk Ve Samsung adlı Class ımızı kullanarak verileri getirelim. static void Mainstring args Samsung S3 new Samsung; IBasliklar Baslik IBasliklarS3; IUzunluk Uzunluk IUzunlukS3; Console.WriteLineS3.Isim; Console.WriteLine Ana Başlık : S3.AnaBaslik; Console.WriteLine Alt Başlık : S3.AltBaslik; Console.WriteLineBaslik.Yazdir; Console.WriteLine; Console.WriteLine En : S3.En; Console.WriteLine Boy : S3.Boy; Console.WriteLine Kalınlık : S3.Kalinlik; Console.WriteLineUzunluk.Yazdir; Aldığımız sonuç aşağıdaki gibidir.