YZM 2105 Nesneye Yönelik Programlama

Benzer belgeler
YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

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

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

BTEP243 Ders 3. class Yazım Kuralı:

ALGORİTMA VE PROGRAMLAMA II

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

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II

NESNEYE YÖNELİK PROGRAMLAMA

YZM 2105 Nesneye Yönelik Programlama

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

C++ Dersi: Nesne Tabanlı Programlama

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA II

Sunum İçeriği. Programlamaya Giriş

YZM 2105 Nesneye Yönelik Programlama

BİL-141 Bilgisayar Programlama I (Java)

ALGORİTMA VE PROGRAMLAMA II

YZM 2105 Nesneye Yönelik Programlama

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Kurucu Fonksiyonlar (Constructors)

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

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

YZM 2105 Nesneye Yönelik Programlama

C#(Sharp) Programlama Dili

ALGORİTMA VE PROGRAMLAMA II

HSancak Nesne Tabanlı Programlama I Ders Notları

BMH-303 Nesneye Yönelik Programlama

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

ALGORİTMA VE PROGRAMLAMA II

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

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

MOBİL UYGULAMA GELİŞTİRME

Nesneye Yönelik Programlama (OOP) 7.Hafta

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Dr. Fatih AY Tel: fatihay@fatihay.net

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

Nesneye Dayalı Programlama Laboratuvarı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Nesneye Dayalı Programlama

ALGORİTMA VE PROGRAMLAMA I

Genel Programlama II

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

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.

public static int Toplam int x, int y

NESNEYE YÖNELİK PROGRAMLAMA

ALGORİTMA VE PROGRAMLAMA I

C# Metotlar ve Metot Tanımlama

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER METOTLAR

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

YZM 2116 Veri Yapıları

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

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

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

Ders 8: Metotlar. barisgokce.com

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

ALGORİTMA VE PROGRAMLAMA I

Kalıtım (Inheritance)

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

YZM 2116 Veri Yapıları

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;

BİL-142 Bilgisayar Programlama II

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

ALGORİTMA VE PROGRAMLAMA I

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

Nesne Tabanlı Programlama

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

C++ Dersi: Nesne Tabanlı Programlama

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

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

ALGORİTMA VE PROGRAMLAMA I

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

YZM 3215 İleri Web Programlama

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

YZM 3215 İleri Web Programlama

YZM 2116 Veri Yapıları

HSancak Nesne Tabanlı Programlama I Ders Notları

YZM 2105 Nesneye Yönelik Programlama

Diziler (Arrays) Çok Boyutlu Diziler

Veri Tipleri Aşağıdaki programdaki 5 hatayı bulunuz.

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Bölüm 10 Statik ve Anlık Öğeler

YZM 3215 İleri Web Programlama

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

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

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

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

MOBIL UYGULAMA GELIŞTIRME

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

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

YZM 2116 Veri Yapıları

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Transkript:

YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1

BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu bölümde; this Referansı, Kurucu Metotlar Kurucu Metotların Aşırı Yüklenmesi Nesne Başlatıcıları Yıkıcı Metotlar ile ilgili konular anlatılacaktır. 2

this Referansı 3

this Referansı Bir sınıf yaratıldığında, sınıfın kaynak kodunun bir kopyası bilgisayarın hafızasında (memory) saklanmaktadır. Bununla birlikte, er ya da geç bu sınıftan defalarca nesne oluşturulacaktır. Her yeni nesne oluşturduğunuzda, nesnenin her üye değişkeni için bellekte saklama alanı sağlanır. this referansı ile sınıfın o anki nesnesine ulaşabilirsiniz. 4

this Referansı (devam ) this referansı kodda karışıklığı engellemek için de kullanılabilir. Örneğin: Sınıfın bir üyesi veya özelliği ile sınıfın metoduna aktarılan parametrenin aynı isimde olması durumunda karışıklığı önlemek için this referansı kullanılabilir. 5

Örnek 1: Kitap Sınıfında this Referansının Kullanılması Sizden Kitap isimli bir sınıf oluşturmanız istenmektedir. Bu sınıf decimal veri türünde, read-only ve public olan Fiyat ve VergiTutari özelliklerine sahiptir. Yine decimal türündeki VERGIORANI özelliği ise private olup aynı zamanda sabittir ve değeri 0.18 dir. Sınıfın FiyatveVergiHesapla() metodu bulunmakta ve bu metot Fiyat isimli değişkeni parametre olarak almaktadır. Metot ilk olarak; Fiyat özelliğine parametreyi atayacak daha sonra VergiTutarini hesaplayacaktır. Kitap +Fiyat: decimal {Read-Only} +VergiTutari: decimal {Read-Only} -VERGIORANI: decimal +FiyatveVergiHesapla(decimal Fiyat) 6

Örnek 1: Kitap Sınıfında this Referansının Kullanılması Direk olarak Fiyat = Fiyat eşitliğini kullanırsa derleyici uyarı verir. Bunun gibi ve buna benzer karışıklıkları önlemek için this referansı kullanılır. this.fiyat = Fiyat eşitliğinin sol tarafındaki fiyat değişkeni sınıfın özelliği olduğunu belirtmektedir. Sağındaki Fiyat değişkeni ise bu metoda 7 aktarılan fiyat parametresidir.

Kurucu / Yapıcı Metotlar Kurucular, Yapıcılar (Constructors) 8

Kurucu Metotlar Herhangi bir sınıftan bir nesne yarattığınızda aşağıdaki gibi bir ifade kullanılır: Isci isc = new Isci(); Aslında bu ifadede Isci() adında C# ın sağladığı bir metodu çağırılmaktadır. Kurucu metotlar (Constructor) bir nesnenin oluşmasını sağlayan metotlardır. Bir sınıf için yazmamış olsanız bile, yarattığınız sınıflar için otomatik olarak parametre almayan public bir kurucu metot sağlanır. 9

Kurucu Metotlar (devam ) Parametresi olmayan kurucu metotlara sınıfın varsayılan kurucu metodu (default constructor) denir. Otomatik olarak yaratılan Isci() kurucu metodu, isc adında Isci sınıfından bir nesne oluşturur ve devamında Isci nin başlangıç değerlerinin atanmasını sağlar. 10

Kurucu Metotlar (devam ) Sınıfın üye değişkenleri varsayılan olarak: Sayısal fieldlar için 0 değeri, Karakter fieldları için \0 değeri, Boolean field lar için false değeri, String ya da diğer referans tipli nesne fieldlarına NULL değeri atanmaktadır. 11

Kurucu Metotlar (devam ) Isci nesnesinin üyelerinin ve özelliklerinin başlangıç değerlerinin varsayılan değerler olması istenmiyorsa veya Isci sınıfından bir nesne yaratılırken ek işlemler yapmak istediğinizde varsayılan kurucu metot yerine kendi kurucu metodunuzu oluşturabilirsiniz. Sınıfın kurucu metotları sınıf ile aynı isme sahip olmak zorundadır. Kurucu metotların geri dönüş türleri yoktur. (int, float veya void olarak tanımlanmazlar) 12

Örnek 2: Isci Sınıfının Kurucu Metodunu Yaratmak Maas özelliğine sahip bir Isci sınıfı yaratınız. Bu sınıfın kurucu metodunu yaratıp, sınıftan yaratılan Isci nesnelerinin Maas özelliğinin varsayılan değerinin 891.00 olmasını sağlayınız. Form üzerinde Isci sınıfından bir nesne yaratarak Maas özelliğinin değerini ekranda gösteriniz. DEBUG işlemi gerçekleştiriniz. +Maas: decimal Isci <<Constructor>>+Isci() 13

Örnek 2: Isci Sınıfının Kurucu Metodunu Yaratmak (Devam...) Yaratılan nesnelerin Maas özellikleri varsayılan olarak 891 lira olur. 14

Kurucu Metotlar (devam ) Kurucu metotların içerisine herhangi bir ifade yazılabilir.(örn.: Aritmetik işlem yapılabilir ya da bir fonksiyon çağırılabilir) Ancak, kurucu metotların genel kullanım amacı, üyelerin ve özelliklerin başlangıç değerlerini atamaktır. Varsayılan kurucu metodu ile atanan başlangıç değeri, nesnenin varsayılan değeri olarak adlandırılır. 15

Kurucu Metotlara Parametre Geçirmek Kurucu metotlar, parametre de alabilirler. Aktarılan parametrelerin değerlerini kullanarak Yaratılan nesnenin özelliklerinin ya da üyelerinin değerlerini her bir nesne için ayarlamak mümkündür. 16

Örnek 3: Isci Sınıfının Kurucu Metoduna Parametre Geçirmek Isci sınıfının kurucu metoduna geçirilen cocuk parametresine bağlı olarak AsgariGecimIndirimi ücretini aşağıdaki tabloya göre hesaplayınız. DEBUG işlemi gerçekleştiriniz. Çocuk Sayısı Asgari Geçim İndirimi Çocuk Yok 80,33 1 ve Üzeri Çocuk 104,42 Isci +KimlikNo: long +AsgariGecimIndirimi: decimal {Read-Only} +CocukSayisi: short {Read-Only} <<Constructor>>+Isci(short cocuk) 17

Örnek 3: Isci Sınıfının Kurucu Metoduna Parametre Geçirmek (Devam...) 18

Kurucu Metotların Aşırı Yüklenmesi C# da yaratılan sınıflar için otomatik olarak bir kurucu metot oluşturulmaktadır. Sınıf için yeni bir kurucu metot yarattığınızda C# ın otomatik olarak yarattığı kurucu metot erişilemez olur. Fakat otomatik yaratılan kurucu metodun aynısı tanımlanabilir. Hatta: bir sınıf için farklı parametrelerle istediğiniz kadar (anlam kargaşasına neden olmayacak şekilde) kurucu metot oluşturabilirsiniz. C# ın diğer metotları gibi, kurucu metotları da aşırı yüklenebilir. 19

Örnek 4: Dortgen Sınıfının Kurucu Metotlarının Aşırı Yüklenmesi UML diagramında görüldüğü gibi bir Dortgen sınıfı tanımlamanız istenmektedir. Dortgen sınıfının farklı parametreler alan iki adet kurucu metodu bulunmaktadır. Dortgen +Uzunluk: int {Read-Only} +Genislik: int {Read-Only} <<Constructor>>+Dortgen(int u, int g) <<Constructor>>+Dortgen(int tekuzunluk) 20

Örnek 4: Dortgen Sınıfının Kurucu Metotlarının Aşırı Yüklenmesi (devam ) 21

Örnek 4: Dortgen Sınıfının Kurucu Metotlarının Aşırı Yüklenmesi (devam ) İki parametreli kurucu metot çalışır Tek parametreli kurucu metot çalışır 22

Nesne Başlatıcıları (Object Initializers) 23

Nesne Başlatıcılarını Kullanmak Nesne başlatıcısı, bir sınıftan nesne yaratırken o nesnenin yaratılması sırasında erişilebilir üyelerine veya özelliklerine değer atanmasına izin verir. Örnek: Parametresiz bir kurucu metot içeren ve KimlikNumarasi adında public bir property içeren bir sınıfta, aşağıdaki ifadede olduğu gibi nesne başlatıcısı (object initializers) kullanılabilir: Isci isc = new Isci { KimlikNo = 104 }; 24

Nesne Başlatıcılarını Kullanmak Örnekteki ifadede 104 değeri Isci sınıfından yaratılmış olan isc nesnesinin KimlikNo property sine değer olarak atanmıştır. Değer atama küme parantezleri içerisinde yapılmıştır. Bu ifade çalıştırıldığında, İlk olarak sınıfın varsayılan kurucu metodu çalışır, sonra Nesne başlatıcısı ile KimlikNo property sine değer ataması yapılır. 25

Örnek 5: Isci Sınıfından Nesne Başlatıcılarını Kullanarak Nesne Yaratma KimlikNo ve Maas özelliklerine sahip, Maas özelliğine 983 başlangıç değerini atayan bir varsayılan kurucu metodu içeren bir Isci yaratınız. Öncelikle kurucu metottaki ifadelerin mi yoksa nesne başlatıcısındaki ifadelerin mi uygulandığını tespit ediniz. +KimlikNo: int +Maas: decimal +Mesaj: string <<Constructor>>+Isci() Isci 26

Örnek 5: Isci Sınıfından Nesne Başlatıcılarını Kullanarak Nesne Yaratma 27

Nesne Başlatıcılarını Kullanmak Isci isc = new Isci {KimlikNo = 100, Maas = 1000}; Bu ifade aşağıdaki birer birer değer ataması yapılan ifadeler ile aynı işlemi yapmaktadır: Isci isc = new Isci(); isc.kimlikno = 100; isc.maas = 1000; 28

Örnek 6: Kutu Sınıfından Nesne Başlatıcılarını Kullanarak Nesne Yaratma Yukseklik, Genislik ve Derinlik property lerine sahip Kutu adında sınıfı tanımlayınız. Kutu sınıfının kurucu metodunda nesne yaratılırken Yukseklik, Genislik ve Derinlik property lerinin varsayılan değerinin 1 olmasını sağlayınız. Sonrasında nesne başlatıcılarını kullanarak 3 adet Kutu nesnesi yaratınız ve nesneleri KutuOlcuGoster() metodu ile ekrana yazdırınız. +Yukseklik: int +Genislik: int +Derinlik: int Kutu <<Constructor>>+Kutu() +KutuOlcuGoster(int kutuno): string 29

Örnek 6: Kutu Sınıfından Nesne Başlatıcılarını Kullanarak Nesne Yaratma (devam...) 30

Örnek 6: Kutu Sınıfından Nesne Başlatıcılarını Kullanarak Nesne Yaratma (devam...) 31

Yıkıcı Metotlar 32

Yıkıcı Metotlar Yıkıcı metot, o sınıftan yaratılmış bir nesne yok edildiğinde yapılacak olan eylemleri içeren metotlara denir. Genellikle sınıftan yaratılmış olan nesne kapsam dışında kaldığında yok edilmektedir. Kurucu metotlarda olduğu gibi, sınıf için bir yıkıcı metot tanımlanmadığında C# sizin için otomatik olarak bir yıkıcı metot sağlamaktadır. 33

Yıkıcı Metotlar (devam...) Yıkıcı metot tanımlamak için, ~ (Tilda) işareti ile sınıfın adı olarak tanımlanır. ~ [sınıfınadı] () { } Yıkıcı metotlara herhangi bir parametre geçirilemez. Yıkıcı metotlar aşırı yüklenemezler(overload). Geri dönüş değerine sahip olmazlar. 34

Örnek 7: Isci Sınıfında Yıkıcı Metotların Kullanımı KimlikNo property sine sahip olan Isci sınıfını yıkıcı metodunu oluşturunuz. Oluşturduğunuz Isci sınıfından farklı kimlik numaralarına sahip iki adet nesne oluşturup çalıştırınız. +KimlikNo: int Isci <<Constructor>>+Isci(int kimlikno) 35

Örnek 7: Isci Sınıfında Yıkıcı Metotların Kullanımı (devam...) 36

Yıkıcı Metotlar (devam...) Yıkıcı metotlar çağırılmaya gerek kalmadan otomatik olarak uygulanırlar. En son yaratılan nesne ilk olarak yok edilir. Sınıftan yaratılmış bir nesne, kodda onunla yapılacak bir işi olmadığında yok edilmeye uygun hale gelir. Yıkıcı metotlar program kapatılırken yapmak istediklerimizi (bağlantı kapatma, geçici dosya silme vb.) yapmamızı sağlarlar. 37

Yararlanılan Kaynaklar Sefer Algan, HER YÖNÜYLE C#, Pusula Yayıncılık, İstanbul, 2003 Milli Eğitim Bakanlığı, «Nesne Tabanlı Programlama», 2012 Joyce Farrel, An Introduction to Object- Oriented Programming, Cengage Learning, 2011 http://www.algoritmaveprogramlama.com 38

İYİ ÇALIŞMALAR Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr 39