Nesne Yönelimli Programlama

Benzer belgeler
BİL-141 Bilgisayar Programlama I (Java)

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 6

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

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 7

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

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

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

Nesne Yönelimli 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.

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

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

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

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

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

public static int Toplam int x, int y

Programlama Dillerinde Kullanılan Veri Tipleri

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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

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

BİL-141 Bilgisayar Programlama I (Java)

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

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

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;

Kalıtım (Inheritance)

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

NESNEYE YÖNELİK PROGRAMLAMA

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

7. HAFTA. Erişim Belirleyiciler

Ders 8 Konu Özeti ve Problemler

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.

Erişim konusunda iki taraf vardır:

Nesneye Yönelik Programlama (OOP) 7.Hafta

BMM3101 PROGRAMLAMA DİLLERİ

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

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

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

Nesne Yönelimli Programlama

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

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

YZM 2105 Nesneye Yönelik Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

Sunum İçeriği. Programlamaya Giriş

MOBIL UYGULAMA GELIŞTIRME

NESNE TABANLI PROGRAMLAMA

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

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

Nesneye Dayalı Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

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

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

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

Decorator Tasarım Şablonu

Java String İşlemleri

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

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

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

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ÖNELİMLİ PROGRAMLAMA HAFTA # 9

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

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

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

BİL-141 Bilgisayar Programlama I (Java)

Nesne Yönelimli Programlama ve Kalıtım

Java Dersi. Altuğ Bilgin Altıntaş

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

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

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

BTEP243 Ders 3. class Yazım Kuralı:

1 PROGRAMLAMAYA GİRİŞ

YZM 2105 Nesneye Yönelik Programlama

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

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

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

Lambda İfadeleri (Lambda Expressions)

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Sınıf (Class) Yapılarına Giriş

C# Metotlar ve Metot Tanımlama

Bir c sınıfının doğal sıralaması ile tutarlı olması (be consistent with equals) demek, c sınıfı içindeki her e1 ve e2 nesnesi için

D İ Z İ L E R A R R A Y S

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

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

Karşılaştırma İşlemleri ve Koşullu İfadeler

1. SINIFLAR Sınıf (Class) Mantığı

YZM 2105 Nesneye Yönelik 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:

Üst Düzey Programlama

Haz: Yrd.Doç.Dr. Yunus Emre Selçuk

Nesne Yönelimli Programlama

Kalıtım ( Inheritance ) BBS-515 Nesneye Yönelik Programlama

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

Üst Düzey Programlama

3. NESNE TABANLI PROGRAMLAMANIN PRENSİPLERİ

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 9. UYGULAMA

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

Nesneye Dayalı Programlama

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

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.

Java Programlamada Paket Yapısı Ve Import

Transkript:

Nesne Yönelimli Programlama Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu, M. Özbayoğlu, M. Erten, O. Ergin kitabı kullanılarak hazırlanmıştır.

Konular Giriş Alt Sınıflar Metot Tanımlarının Yeniden Yapılması Alt Sınıflarla Programlama Yaklaşımları Birden Fazla Seviyeli Kalıtım Soyut Sınıflar ve Arayüzler Dinamik Bağlama ve Çok Biçimlilik (Polymorphism)

Giriş Java dilinde bir sınıf daha sonra oluşturulacak sınıflarda kullanılabilir. Yeni oluşturulacak sınıfa değişkenleri ve metotları aktarılabilir. Bu şekilde özellik aktarımına kalıtım (inheritance) denir. Öncelikle temel sınıf oluşturulur daha sonra diğer sınıflar bu sınıftan türetilir. 3

Giriş Aşağıda temel bir sınıf olarak Tasit oluşturulmuştur. public class Tasit private String isim; public Tasit() isim = " "; public Tasit(String ilkisim) isim = ilkisim; public void setisim(string yeniisim) isim = yeniisim; public String getisim() return isim; 4

Giriş Tasit sınıfı - devam public void ciktiyaz() System.out.println("Isim: " + isim); public boolean ayniisim(tasit digertasit) return (this.isim.equalsignorecase(digertasit.isim)); 5

Konular Giriş Alt Sınıflar Metot Tanımlarının Yeniden Yapılması Alt Sınıflarla Programlama Yaklaşımları Birden Fazla Seviyeli Kalıtım Soyut Sınıflar ve Arayüzler Dinamik Bağlama ve Çok Biçimlilik (Polymorphism)

Alt Sınıflar Bir sınıf kullanılarak yeni sınıflar oluşturulabilir. Tasit sınıfı kullanılarak Otomobil sınıfı oluşturulmuştur. public class Otomobil extends Tasit private int plakano; public Otomobil() super(); plakano = 0; public Otomobil(String marka, int plakanumarasi) super(marka); plakano = plakanumarasi; 7

Alt Sınıflar Otomobil sınıfı - devam public void reset(string yenimarka, int yeniplakanumarasi) setisim(yenimarka); plakano = yeniplakanumarasi; public int getotomobilplakasi() return plakano; public void setplakanumarasi(int yeniplakanumarasi) plakano = yeniplakanumarasi; 8

Alt Sınıflar Otomobil sınıfı - devam public void ciktiyaz() System.out.println("Marka: " + getisim()); System.out.println("Plaka Numarasi: " + plakano); public boolean equals(otomobil digerotomobil) return (this.ayniisim(digerotomobil) && (this.plakano == digerotomobil.plakano)); 9

Alt Sınıflar Otomobil sınıfı içindeki public class Otomobil extends Tasit satırı ile Tasit sınıfının özelliklerini kullanan Otomobil adında yeni bir sınıf türetilmiştir. Bu tanımdan sonra Otomobil c = new Otomobil; tanımı yapıldığında, c.setisim( Fiat ); geçerli bir tanım olacaktır. 10

Alt Sınıflar Aşağıdaki örnekte Tasit ve Otomobil sınıflarının kullanımı görülmektedir. public class KalitimDemo public static void main(string[] args) Otomobil c = new Otomobil(); c.setisim("fiat"); c.setplakanumarasi(1234); c.ciktiyaz(); Çıktı: Marka: Fiat Plaka Numarası: 1234 11

Konular Giriş Alt Sınıflar Metot Tanımlarının Yeniden Yapılması Alt Sınıflarla Programlama Yaklaşımları Birden Fazla Seviyeli Kalıtım Soyut Sınıflar ve Arayüzler Dinamik Bağlama ve Çok Biçimlilik (Polymorphism)

Metot Tanımlarının Yeniden Yapılması Eğer hem temel sınıf hemde türetilen sınıfta aynı metot oluşturulmuşsa alt sınıf nesneleri kendi sınıflarına ait metodu kullanır. Önceki örnekte hem Tasit sınıfı hemde Otomobil sınıfı ciktiyaz() isimli metoda sahiptir. Her nesne kandi sınıfına ait metodu kullanır. Bir metot alt sınıfta tanımlanırken içeriği ve başlık kısmındaki parametereler istenildiği gibi değiştirilebilir. Bu yaklaşım, aynı isimle çok sayıda metot oluşturmaya yarayan metot fazladan yüklemeden farklıdır. 13

Metot Tanımlarının Yeniden Yapılması Eğer bir metodun alt sınıflarda değiştirilmesi istenmiyorsa aşağıdaki gibi tanımlanmalıdır. public final void metotadi() Türetilmiş sınıflardan temel sınıflarda private olan üyeye erişim engellenmiştir. Alt sınıfta oluşturulan yeni bir metot, temel sınıfta private tanımlanmış olan bir üyeye erişemez. 14

Konular Giriş Alt Sınıflar Metot Tanımlarının Yeniden Yapılması Alt Sınıflarla Programlama Yaklaşımları Birden Fazla Seviyeli Kalıtım Soyut Sınıflar ve Arayüzler Dinamik Bağlama ve Çok Biçimlilik (Polymorphism)

Alt Sınıflarla Programlama Yaklaşımları Önceki örnekte super anahtar kelimesi kullanılmıştır. public Otomobil(String marka, int plakanumarasi) super(marka); plakano = plakanumarasi; super(marka) komutu Tasit sınıfında bulunan public Tasit(String ilkisim) nesne kurucusunu çağırır. Eğer, Tasit()ilkIsim; şeklinde kullanılsaydı hatalı sonuç oluşacaktır. super() komutu ilk komut olmalıdır. 16

Alt Sınıflarla Programlama Yaklaşımları Bir alt sınıf içindeki bir metodun çağırılması için this anahtar kelimesi kullanılmalıdır. public Otomobil(String ilkisim) this( Fiat, 1234); Bu durumda Otomobil sınıfındaki public Otomobil(String marka, int plakanumarasi) metodu çağırılmış olur. Bir alt sınıf içinde temel sınıfın metodu super.ciktiyaz(); şeklinde çağırılabilir. 17

Alt Sınıflarla Programlama Yaklaşımları Önceki örnekte çiktiyaz() metodu aşağıdaki gibi yapılandırılabilir. public ciktiyaz() super.ciktiyaz(); System.out.println( Plaka Numarası: + plakano); Bu durumda önce Tasit sınıfındaki ciktiyaz() metodu çalışacak ardından Otomobil sınıfındaki işlemler yapılacaktır. 18

Konular Giriş Alt Sınıflar Metot Tanımlarının Yeniden Yapılması Alt Sınıflarla Programlama Yaklaşımları Birden Fazla Seviyeli Kalıtım Soyut Sınıflar ve Arayüzler Dinamik Bağlama ve Çok Biçimlilik (Polymorphism)

Birden Fazla Seviyeli Kalıtım Otomobil sınıfından bir alt sınıfı olarak Sedan adlı bir sınıf oluşturulmuş olsun. Yeni oluşturulan Sedan alt sınıfı hem Otomobil sınıfının hemde Tasit sınıfının metotlarını kullanabilecektir. 20

Birden Fazla Seviyeli Kalıtım Örnek - Sedan - devam public class Sedan extends Otomobil private int fiyat; public Sedan() super(); fiyat = 10000; public Sedan(String marka, int plakano, int ilkfiyat) super(marka, plakano); setfiyat(ilkfiyat); 21

Birden Fazla Seviyeli Kalıtım Örnek - Sedan - devam public void reset(string yenimarka,int yeniplakano,int yenifiyat) reset(yenimarka,yeniplakano); setfiyat(yenifiyat); public getfiyat() return fiyat; setfiyat(int yenifiyat) fiyat = yenifiyat; 22

Birden Fazla Seviyeli Kalıtım Örnek - Sedan - devam public void ciktiyaz() super.ciktiyaz(); System.out.println("otomobil fiyati " + fiyat); public boolean equals(sedan digersedan) return(super.equals(digersedan)&&(this.fiyat == digersedan.fiyat)); 23

Birden Fazla Seviyeli Kalıtım Aşağıdaki nesne kurucusu 3 değişken almaktadır. Metot içerisinde, Otomobil ana sınıfına ait nesne kurucusu iki parametreyle çağırılmaktadır. public Sedan(String marka, int plakano, int ilkfiyat) super(marka, plakano); setfiyat(ilkfiyat); Sedan sınıfı içindeki reset() metodu 3 parametreye sahiptir ve kendi içinden Otomobil sınıfı içindeki ik parametreye sahip reset() metodunu çağırmaktadır. public void reset(string yenimarka,int yeniplakano,int yenifiyat) reset(yenimarka,yeniplakano); setfiyat(yenifiyat); 24

Birden Fazla Seviyeli Kalıtım Örnek KalitimDemo public class KalitimDemo2 public static void main(string[] args) Sedan c = new Sedan("Toyota", 1234, 10000); c.ciktiyaz(); Çıktı: Marka: Toyota Plaka Numarası: 1234 Otomobil fiyati 10000 25

Konular Giriş Alt Sınıflar Metot Tanımlarının Yeniden Yapılması Alt Sınıflarla Programlama Yaklaşımları Birden Fazla Seviyeli Kalıtım Soyut Sınıflar ve Arayüzler Dinamik Bağlama ve Çok Biçimlilik (Polymorphism)

Soyut Sınıflar ve Arayüzler Soyut sınıflar kendileri kullanılmak için değil sadece kendisinden türetilecek alt sınıflarda kullanılmak üzere tanımlanırlar. public abstract class SınıfAdı Arayüzler ise tüm sınıflar tarafından kullanılabilirler. public interface Arayuz public int test(); public void ciktiyaz(); Arayüz tanımında metot isimlerinden sonra ; kullanılır. 27

Soyut Sınıflar ve Arayüzler Örnek - ArayuzSedan public class ArayuzSedan extends Otomobil implements Arayuz private int fiyat; public ArayuzSedan() super(); fiyat = 10000; public ArayuzSedan(String Marka, int plakano, int ilkfiyat) super(marka, plakano); setfiyat(ilkfiyat); 28

Soyut Sınıflar ve Arayüzler Örnek - ArayuzSedan - devam public int test() System.out.println("Su anda arayuz icindeki test"); System.out.println("metodu yerine yazilan metot calisiyor"); return (222); public void reset(string yenimarka, int yeniplakano, int yenifiyat) reset (yenimarka,yeniplakano); setfiyat(yenifiyat); public void setfiyat(int yenifiyat) fiyat = yenifiyat; 29

Soyut Sınıflar ve Arayüzler Örnek - ArayuzSedan - devam public int getfiyat() return fiyat; public void ciktiyaz() super.ciktiyaz(); System.out.println("otomobil fiyati " + fiyat); public boolean equals(arayuzsedan digersedan) return(super.equals(digersedan)&&(this.fiyat ==digersedan.fiyat)); 30

Soyut Sınıflar ve Arayüzler Örnek - ArayuzSedan - devam - Program public class ArayuzDemo public static void main(string [] args) Arayuz c = new arayuzsedan( Toyota, 1234, 10000); int a = c.test(); c.ciktiyaz(); Çıktı: Su anda arayuz icindeki test metodu yerine yazilan metot calisiyor Marka: Toyota Plaka Numarası: 1234 Otomobil fiyati 10000 31

Konular Giriş Alt Sınıflar Metot Tanımlarının Yeniden Yapılması Alt Sınıflarla Programlama Yaklaşımları Birden Fazla Seviyeli Kalıtım Soyut Sınıflar ve Arayüzler Dinamik Bağlama ve Çok Biçimlilik (Polymorphism)

Dinamik Bağlama ve Çok Biçimlilik (Polymorphism) Bir metodun aynı isimle farklı parametrelerle çağırılmasına çok biçimlilik (polymorphism) denir. Örnek class Personel public void calis(); System.out.println( Bu is yerinde farkli insanlar calisir ); class Sekreter extends Pesonel public void calis() System.out.println( Sekreter kadrolardan birisidir ); 33

Dinamik Bağlama ve Çok Biçimlilik (Polymorphism) Örnek - devam class Ogretmen extends Pesonel public void calis() System.out.println( Ayrica hocalar da vardir ); public class CokBicimlilikDemo public static void main(string [] args) Personel kisi = new Personel(); Sekreter s = new Sekreter(); Ogretmen m = new Ogretmen(); isyap(kisi); isyap(s); isyap(m); 34

Dinamik Bağlama ve Çok Biçimlilik (Polymorphism) Örnek - devam public static void isyap(personel kisi) kisi.calis(); Programda isyap() metodu farklı parametrelerle kullanılabilmektedir. Hangi parametrelerle çağırılırsa ilgili metot çağırılarak işlem yapılmaktadır. Çıktı: Bu is yerinde farkli insanlar calisir Sekreter kadrolardan birisidir Ayrica hocalar da vardir 35