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

Benzer belgeler
Java Dersi. Altuğ Bilgin Altıntaş

Nesne Yönelimli Programlama

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

Erişim konusunda iki taraf vardır:

7. HAFTA. Erişim Belirleyiciler

Sınıfların Tekrardan Kullanılması. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1

Nesne Yönelimli Programlama

(Interface and Inner Classes)

İki Yöntem. Komposizyon (Composition) Kalıtım (Inheritance)

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

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

BİL-141 Bilgisayar Programlama I (Java)

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

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.

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 7

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

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

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

Java ve Yazılım Tasarımı ; Bölüm- 4 PAKET ERİŞİMLERİ

İÇİNDEKİLER VII İÇİNDEKİLER

HSancak Nesne Tabanlı Programlama I Ders Notları

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6

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

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

POLIMORFIZM. Java ve Yazılım Tasarımı ; Bölüm- 6. Örnek: PolimorfizmOrnekBir.java (yorum ekle)

Polimorfizm. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 1

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

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

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

BMÜ-112 Algoritma ve Programlama-II Inheritance (Kalıtım) Yrd. Doç. Dr. İlhan AYDIN

Ana sınıf içerisinde tanımlanmış bir yordam, ana sınıftan türeyen bir alt sınıfın içerisinde iptal edilebilir. ()

Nesne Yönelimli Programlama

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

Sunum İçeriği. Programlamaya Giriş

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

Ders 8 Konu Özeti ve Problemler

YZM 2105 Nesneye Yönelik Programlama

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

İş Parçacıkları (Threads)

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

(Interface and Inner Classes)

Nesneye Dayalı Programlama

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

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

C++ Dersi: Nesne Tabanlı Programlama

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

YZM 2105 Nesneye Yönelik Programlama

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

YZM 2105 Nesneye Yönelik Programlama

BTEP243 Ders 3. class Yazım Kuralı:

SINIFLARIN TEKRAR KULLANILMASI

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

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

Nesneye Dayalı Programlama

Başlangıç Durumuna Getirme ve Temizlik. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 3 1

BMM3101 PROGRAMLAMA DİLLERİ

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

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

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

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;

Decorator Tasarım Şablonu

Nesneye Yönelik Programlama (OOP) 7.Hafta

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

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:

Kalıtım (Inheritance)

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ

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

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.

Programlama Dillerinde Kullanılan Veri Tipleri

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

Java Programlamada Paket Yapısı Ve Import

Hata Ayıklamanın Ötesi... (Assertion) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 14 1

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

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

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

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

C# Metotlar ve Metot Tanımlama

JAVA DA GİRİŞ/ÇIKIŞ İŞLEMLERİ. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 1

Nesne Yönelimli Programlama ve Kalıtım

Java Nitelemleri. Bölüm 1

BİL-142 Bilgisayar Programlama II

C++ Dersi: Nesne Tabanlı Programlama

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Cahit GÜNGÖR Hacettepe Üniversitesi Bilişim Enstitüsü. Sorumluluk Zinciri. Kod Üretme (Code Generation)

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

public static int Toplam int x, int y

MOBIL UYGULAMA GELIŞTIRME

4.Hafta. this Anahtar Sözcüğü

Görsel Programlama-I (Visual Programming) 2.Hafta

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

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

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

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

NESNEYE YÖNELİK PROGRAMLAMA

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

Transkript:

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

Arayüz (Interface) Arayüzler, soyut sınıfların bir üst modeli gibi düşünülebilir. Arayüzler tamamen birleştirici bir rol oynamaları için tasarlanmışlardır. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 2

Arayüz (Interface) Arayüzlerin içerisindeki gövdesiz (soyut) yordamlar (methods) otomatik olarak public erişim belirleyicisine sahip olurlar. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 3

Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 4

Örnek BuyukIsYeri.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 5

class Mudur implements Calisan { public void calis() { // iptal etti (override) System.out.println("Mudur Calisiyor"); } } Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 6

Arayüz(Interface) ve Soyut sınıflar(abstract classes) interface Hayvan { public void avlan() ; } abstract class Kedi implements Hayvan { } Bu örnek derlenir mi? Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 7

Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 8

Örnek Karisim2.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 9

Arayüz(Interface) ile çoklu kalıtım(multiple inheritance) Java Programlama dili çoklu kalıtımı (multiple inheritance) desteklemez. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 10

Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 11

Örnek - Hatalı Spor.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 12

Sebep Sporcu s = new SportmenMehmet(); // yukari cevirim s.calis(); //?? Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 13

Arayüz (Interface) ile çoklu kalıtıma destek Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 14

Örnek SportmenMehmet belki hem BuzPatenci hem de Basketbolcu olamayabilir ama bunlara ait özellikleri alabilir. Spor2.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 15

Arayüzlerin kalıtım (inheritance) yoluyla genişletilmesi Bir arayüz başka bir arayüzünden türetilebilir. Böylece arayüzler kalıtım yoluyla genişletilmiş olur. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 16

Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 17

Yakından bakılırsı interface Avlanabilme extends DahaHizliKosabilme,Kosabilme { //.. } Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 18

Örnek Jaguar.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 19

Çakışmalar Arayüzlerin içerisinde dönüş tipleri haricinde herşeyleri aynı olan gövdesiz (soyut) yordamlar varsa bu durum beklenmedik sorunlara yol açabilir. Cakisma.java (derlemeye çalışılırsa...) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 20

public void hesapla(); // A1 arayüzüne ait public int hesapla(); // A3 arayüzüne ait Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 21

Arayüzün(Interface) içerisinde alan tanımlama Arayüzlerin içerisinde gövdesiz (soyut) yordamlarındışında alanlar da bulunabilir. Bu alanlar, diğer uygulamalarda sabit olarak kullanılabilir. Arayüzün içerisinde tanımlanan bir alan (ilkel tipteveyasınıf tipinde olsun) otomatik olarak hem public erişim belirleyicisine hem de final ve static özelliğine sahip olur. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 22

Örnek AyBul.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 23

Arayüzün içerisinde tanımlanmış alanlara ilk değerlerinin verilmesi Arayüzlerin içerisinde tanımlanmış alanların ilk değerleri, çalışma anında (runtime) da verilebilir. Test.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 24

Genel Bakış Arayüzler (interface) ve soyut (abstract) sınıfların bizlere sağlamak istedigi fayda nedir? Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 25

Genel Bakış Aslında ulaşılmak istenen amaç çoklu yukarı çevirimdir (upcasting). GenelBakis.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 26

Yakından bakarsak class A extends Soyut1 implements Arayuz1, Arayuz2 { } //... Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 27

Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 28

Soyut1 soyut_1 = new A(); Arayuz1 arayuz_1 = (Arayuz1) soyut_1; // tip degisimi Arayuz2 arayuz_2 = (Arayuz2) soyut_1; // tip degisimi Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 29

Veya Soyut1 soyut_1 = new A(); Arayuz1 arayuz_1 = new A(); Arayuz2 arayuz_2 = new A(); Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 30

Dahili Sınıflar (Inner Classes) Dahili üye sınıflar Yerel sınıflar (Local classes) İsimsiz sınıflar (Anonymous classes) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 31

Dahili Üye Sınıflar class CevreliyiciSinif { class DahiliSinif { } //... } //... Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 32

Örnek Hesaplama.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 33

Dahili Üye Sınıflar ve Erişim Dahili üye sınıflara public friendly protected private erişim belirleyicileri atanabilir. Hesaplama1.java Hesaplama2Kullan.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 34

Türetilebilen Dahili Üye Sınıflar Dahili üye sınıflar, aynı normal sınıflar gibi başka sınıflardan türetilebilirler. Böylece çoklu kalıtım desteğinin bir benzerini (güvenli), Java programlama dilinde de bulabiliriz. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 35

Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 36

Örnek YarisArabasi.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 37

Yerel Sınıflar (Local Classes) Yerel sınıflar Yapılandırıcıların (constructor) Sınıf yordamlarının (statik yordam) Nesne yordamlarının Statik alanlara toplu değer vermek için kullandığımız statik bloğun Statik olmayan alanlara toplu değer vermek için kullandığımız bloğun içerisinde tanımlanabilir. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 38

Yerel Sınıflar public class Sinif { public void yordam() { public class YerelSinif { //... } } } Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 39

Yerel sınıflara ait ilk özellikler Yerel sınıflar tanımlandıkları yordamın veya bloğun dışından erişilemezler. Yerel sınıflar başka sınıflardan türetilebilir veya arayüzlere (interface) erişebilir. Yerel sınıfların yapılandırıcıları olabilir. Hesaplama6.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 40

Yerel Sınıflara Ait İlk Özellikler - Devam Yerel sınıflar, içinde bulundukları yordamın sadece final olan değişkenlerine ulaşabilirler. Yerel sınıflar, statik veya statik olmayan yordamların içerisinde tanımlanabilirler. Yerel sınıflar, private, protected ve public erişim belirleyicisine sahip olamazlar sadece friendly erişim belirleyicisine sahip olabilirler. Yerel sınıflar, statik olarak tanımlanamaz. Hesaplama7.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 41

İsimsiz Sınıflar (Anonymous Classes) Diğer dahili sınıf çeşitlerinde olduğu gibi, isimsiz sınıflar direk extends ve implements anahtar kelimelerini kullanarak diğer sınıflardan türetilemez ve arayüzlere erişemez. İsimsiz sınıfların herhangi bir ismi olmadığı için yapılandırıcısı da (constructor) olamaz. Hesaplama8.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 42

Yakından bir bakış return new Toplayici() { public int hesaplamayap() { // final olan yerel degiskenlere ulasabilir. return a + b ; } }; // noktali virgül sart Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 43

Neden Dahili sınıflar? Arayüzler ile çoklu kalıtım (multiple inheritance) desteğini kısmen bulabiliyorduk ama bu tam değildi. Dahili sınıfların var olmasındaki neden çoklu kalıtıma tam desteği sağlamaktır. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 44

Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 45

Örnek TuretilmisSinif.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 46

Sorular... Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 47