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

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA II

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

Ders 8: Metotlar. barisgokce.com

Sunum İçeriği. Programlamaya Giriş

HSancak Nesne Tabanlı Programlama I Ders Notları

ALGORİTMA VE PROGRAMLAMA I

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

HSancak Nesne Tabanlı Programlama I Ders Notları

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

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

ALGORİTMA VE PROGRAMLAMA II

YZM 2105 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

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

BTEP243 Ders 3. class Yazım Kuralı:

HSancak Nesne Tabanlı Programlama I Ders Notları

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA II

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

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

Genel Programlama II

BİL-142 Bilgisayar Programlama II

public static int Toplam int x, int y

C#(Sharp) Programlama Dili

ALGORİTMA VE PROGRAMLAMA I

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Nesneye Yönelik Programlama (OOP) 7.Hafta

YZM 2105 Nesneye Yönelik Programlama

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

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

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

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

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

ALGORİTMA VE PROGRAMLAMA I

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

Hafta 13 Fonksiyonlar

ALGORİTMA VE PROGRAMLAMA I

C++ Dersi: Nesne Tabanlı Programlama 2. Baskı

BİL-141 Bilgisayar Programlama I (Java)

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

ALGORİTMA VE PROGRAMLAMA II

C++ Dersi: Nesne Tabanlı Programlama

YZM 2116 Veri Yapıları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Nesne Tabanlı Programlama

BİLG Dr. Mustafa T. Babagil 1

PROGRAMLAMAYA GİRİŞ DERS 2

Özyineleme (Recursion)

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

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;

Göstericiler (Pointers)

Nesne Tabanlı Programlama

NESNEYE YÖNELİK PROGRAMLAMA

ELN1001 BİLGİSAYAR PROGRAMLAMA I

C++ Dersi: Nesne Tabanlı Programlama

Lambda İfadeleri (Lambda Expressions)

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

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

C# Metotlar ve Metot Tanımlama

Length: metin uzunluğunu yada diğer bir deyişle dizi elaman sayısını döndürür.

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

YZM 2116 Veri Yapıları

C++ Dersi: Nesne Tabanlı Programlama

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

Pointer Kavramı. Veri Yapıları

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.*/

/*int sayi1, sayi2,toplam=0;

NESNE TABANLI PROGRAMLAMA

Nesne Yönelimli Programlama

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

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

C Programlama Dilininin Basit Yapıları

C PROGRAMLAMA D İ L İ

BMH-303 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

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

PASCAL PROGRAMLAMA DİLİ YAPISI

ALGORİTMA VE PROGRAMLAMA II

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

ALGORİTMA VE PROGRAMLAMA II

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

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

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

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

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞ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 - 4 Nesneye Yönelik Programlamaya Giriş Bu bölümde; Sınıflardan Nesne Yaratma, Metotlara Nesne Aktarımı, Properties (Özellikler) Yaratma, Auto-Implemented Properties ile ilgili konular anlatılacaktır. 2

Sınıflardan Nesne Yaratma 3

Nesne Yaratma Bir sınıfı tanımlamak bir nesne yaratmak anlamına gelmemektedir. Sınıf sadece kendisinden yaratılacak bir nesnenin özelliklerini ve davranışlarını belirleyen soyut açıklamasıdır. Oluşturmak istediğiniz bir varlığın tüm özelliklerini önceden belirlediğinizde, nesne yaratmadan önce bir sınıfın, üyelerini ve metotlarını yaratmalısınız. 4

Nesne Yaratma (devam ) Sınıf tanımlamasını, yeni bir ev inşa etmek için evin ayrıntılı bir planı olarak ya da kek yapmak için gerekli olan kek tarifi olarak da düşünebilirsiniz. Sınıflar oluşturulacak olan herhangi bir nesnenin ayrıntılı bir planıdır. 5

Nesne Yaratma (devam ) Bir nesneyi yaratmak iki aşamadan oluşur. İlk olarak bir değişken tanımlar gibi bir tip ve bir tanımlayıcı atamalısınız. Sonrasında nesneyi yaratabilirsiniz. Örneğin; int veri tipinde x değişkenini int x; şeklinde tanımlayabildiğimiz gibi Personel nesnesini de, Personel per; şeklinde tanımlayabiliriz. 6

Nesne Yaratma (devam ) Personel sınıfından per adında bir nesne oluşturduğumuzda, derleyiciye per adını kullanacağımız bildirilir. Fakat henüz per nesnesinin barındırdığı değerler için bellekte bir yer tutulmamıştır. Gereken bellek yerini «rezerve/allocate» etmek nesneyi new operatörünü kullanarak yaratmamız gereklidir. 7

Nesne Yaratma (devam ) per adındaki Personel nesnesini iki aşamada yaratırız. Öncelikle nesne için bir referans tanımlamalı, sonrasında new operatörü ile derleyicinin per nesnesi için yeterli alanı tahsis etmesini sağlarız. Personel per; per = new Personel(); Aynı satırda iki işlemi de tanımlayabiliriz: Personel per = new Personel(); 8

Nesne Yaratma (devam ) Nesnelerin tanımlayıcıları, nesnelerin bellekteki adreslerinin yerlerini gösterirler. Herhangi bir sınıf referans tipi (ing.: reference type) olarak kullanılır. Diğer bir deyişle bellekteki özel bir adresi gösteren bir tip denebilir. int, double ve float gibi veri tipleri, değişkelerin değerlerini tutar; Bu veri tiplerinin aksine referans tipleri bellekteki adresleri tutarlar. 9

Nesne Yaratma (devam ) Personel per = new Personel(); ifadesindeki new operatöründen sonra gelen Personel() bölümü bir metot gibi gözükmektedir. Aslında bu Personel nesnesinin constructor ı başka bir deyişle kurucu metodudur. Sınıfınız için bir constructor oluşturmazsanız, C# sizin için adı sınıfın adı ile aynı olan bir tane kurucu metot yaratır. 10

Metotlara Parametre Olarak Nesne Aktarımı 11

Metotlara Parametre olarak Nesne Aktarımı Bir metoda nesne aktardığımızda aslında o metoda bir referans aktarmış oluruz (pass-by-reference). Böylece nesne parametresinde yapılan herhangi bir değişiklik, çağırıldığı metottaki nesneyi de etkiler. 12

Metotlara Parametre olarak Nesne Aktarımı Gösterim biçimi aşağıdaki gibidir: void BilgiGoster(Personel p); 13

Örnek1: Metoda Nesne Aktarımı Form üzerinde Personel sınıfından, per1 adında bir nesne oluşturunuz. Bu nesneyi form üzerindeki PersonelBilgiDegistir metoduna aktarınız. Metot içerisinde personel bilgilerini değiştirip (BÜYÜK harfe dönüştürüp), metot dışındaki nesneler üzerinde, personel bilgisinin değişip değişmediğini kontrol ediniz. 14

Örnek1: Metoda Nesne Aktarımı (devam ) +ad: string +soyad: string Personel 15

Örnek1: Metoda Nesne Aktarımı (devam ) 16

Properties (Özellikler) 17

Properties Yaratmak Property, sınıfın bir üyesine erişim sağlayan bir sınıf üyesidir. Propertyler, üyelerin nasıl ayarlanacağını ve erişimin nasıl olacağını tanımlar. Propertyler, private üyeler ile public metotlar arasındaki en iyi özellikleri bir arada barındırır. Public metotlar gibi private verileri dışarıdan müdahalelere karşı korur. Property yarattığınızda, kullandığınız sözdizimi daha kolay anlaşılabilir ve doğal olur. 18

Properties Yaratmak (devam ) C# programcıları property leri smart fields olarak adlandırırlar. Propertyler, sınıfın üyesine erişildiğinde işleme alınacak olan ifadeleri barındıran erişimcilere sahiptir. Özellikle propertyler nesnenin üyesinin değerini ayarlamaya yarayan set erişimcilerine ve saklanan verilerin değerlerine erişimini sağlayan get erişimcilerini içerirler. 19

Properties Yaratmak (devam ) Bir property, set erişimcisine sahipse yazılabilir, get erişimcisine sahipse okunabilir olmaktadır. Bir property sadece get erişimcisine sahipse bu property sadece okunabilir (readonly) olur. C# ta get ve set erişimcilerini genellikle getter ve setter olarak adlandırılırlar. 20

Örnek2: Isci Sınıfı kimlikno üye değişkenine erişimi sağlayan KimlikNo propertysini tanımlayınız. Tanımladığınız KimlikNo özelliğini kullanan KarsilamaMesaji() metodunu tanımlayınız. Isci -kimlikno: int +KimlikNo: int +KarsilamaMesaji(): string 21

Örnek2: Isci Sınıfı (devam ) 22

Properties Yaratmak (devam ) Property tanımlanmasında değişken tanımlanmasına benzer bir şekilde; Erişim belirleyici, veri tipi ve tanımlayıcı(ad) içermektedir. Ayrıca kıvırcık parantezler içerisinde tanımlanan ifadeleri barındıran bir metot içerir. Property ismi kullandığı üyenin isminin baş harfi büyük hali olarak tanımlanır. Örn.: kimlikno üye değişkeni için KimlikNo Property tanımlayıcısından sonra, küme parantezi içerisinde erişimciler (get ve set) tanımlanır. 23

Properties Yaratmak (devam ) Propertylerin yazımındaki büyük ve küçük harflere dikkat edilmelidir. KimlikNo property sinde get erişimcisinin içerisinde geriye döndürülen kimlikno olmalıdır. Eğer get erişimcisinin içerisinde property nin kendisini (yani KimlikNo) döndürürseniz property sonsuz kez kendisine erişmeye çalışacaktır. 24

Properties Yaratmak (devam ) Erişimciler (get ve set) metot gibi görünebilir fakat metotlardaki gibi tanımlayıcılarının yanında parantez () bulunmaz. set erişimcisi, parametre alan ve bunu değişkene atayan bir metot gibi davranır. Fakat set erişimcisi bir metot değildir ve beraberinde bir parantez ile kullanılmaz. get erişimcisi ise property ile ilişkilendirilmiş üyenin değerini geriye döndürür. 25

Properties Yaratmak (devam ) Bir propertynin set ve get erişimcilerinden faydalanırken set ve get anahtar kelimelerini ayrıca kullanmamıza gerek yoktur. İşlem yapacağımız propertye eşittir operatörü = ile değer atadığımızda set bloğu işleme alınmaktadır. Propertynin adını kullanarak eriştiğimizde ise get bloğu işleme alınır. 26

Properties Yaratmak (devam ) Örneğin; benimustam adındaki Isci sınıfından türetilmiş bir nesne tanımladığımızda, KimlikNo propertiesinin değerini aşağıdaki gibi atarız: Isci benimustam = new Isci(); benimustam.kimlikno = 113; İkinci ifadede, KimlikNo propertysinin değeri 113 olarak ayarlanmış olur. Eşitliğin sağındaki değer property nin set erişimcisine implicit parametre olarak gönderilmiştir. 27

Properties Yaratmak (devam ) DEBUG EDEREK GÖRELİM 28

Properties Yaratmak (devam ) 113 değeri set bloğuna aktarılmış ve set erişimcisinde value adını almıştır. Set erişimcisinin içerisinde de value değeri sınıf field ı olan kimlikno değişkenine atanmıştır. 29

Properties Yaratmak (devam ) Propertyler get erişimcisi sayesinde, basit bir değişken gibi kullanılabilmektedir. Örnek: Önceden tanımlanmış olan işçinin kimlik numarası aşağıdaki gibi yazdırılabilir: Fakat benimustam.kimlikno üye private erişim belirleyicisine sahip olduğu için erişilemez ve ekrana yazdırılamaz. 30

Properties Yaratmak (devam ) Önceki örneklerde get ve set erişimcileri, üyenin değerini döndürme veya değeri üyeye atama dışında bir işlem yapmamaktadır. Eğer kullanılan üye private yerine public olarak tanımlansaydı property kullanmamıza gerek kalmazdı. Fakat bu yöntem (Sınıfın üyelerini private, onlara erişmeyi sağlayan metotları public tanımlanması), nesneye yönelik programlamanın tutarlı olması için genel olarak kullanılmaktadır. 31

Properties Yaratmak (devam ) Veriyi saklı tutmak ve aynı zamanda verinin değerlerinin nasıl ayarlandığını ve kullanıldığını kontrol edebilmek, Nesneye Yönelik Programlamanın çok önemli bir özelliğidir. Erişimciler, sınıfın bazı üyelerinin değerlerinin nasıl döndürüleceğine veya üyelere nasıl erişileceğine dair kısıtlamalar koyarak düzenlenebilir. 32

Properties Yaratmak (devam ) Örnek: Kimlik numarasının değer aralığını belirleyen bir set erişimcisi aşağıdaki gibi yazılabilmektedir: set { } if (value < 100) else kimlikno = value; kimlikno = 100; Bu kod bloğunda set erişimcisi Isci sınıfının kimlikno üyesinin değerinin 100 den daha büyük olamayacağını kesinleştiren bir kısıtlama koyar. 33

Properties Yaratmak (devam ) Eğer kimlikno değişkeninde direkt olarak erişip, değer ataması yapılmasına izin verilseydi, atanan değerin kontrolü yapılamazdı. Tanımlanan sınıf için bir set erişimcisi kullandığınızda, izin verilen verilerin değerleri üzerinde tam kontrolü elde edilmiş olunur. 34

Auto-Implemented Properties 35

Auto-Implemented Propertylerin Kullanımı Bir property içerisinde farklı şekillerde get ve set erişimcileri yaratabileceği gibi, set erişimcisini sadece verilen değeri atamasını ve get işlemcisinin sadece geriye değer döndürmesini isteyebilirsiniz. Erişimcilerin sadece bu standart işlemleri gerçekleştirmeleri istendiğinde autoimplemented propertyler kullanılır. 36

Örnek3: Auto-Implemented Property Yaratma Atanan değeri kimlikno üyesine aktaran ve geriye kimlikno değerini dönen KimlikNo propertysi yaratınız. 37

Örnek3: Auto-Implemented Property Yaratma (Devam...) KimlikNo propertysini yandaki kod bloğunda olduğu gibi, 11 satırda tanımlanmıştır. Fakat bu kodun daha kısaltılmış hali alttaki gibi olabilir. 38

Örnek3: Auto-Implemented Property Yaratma (Devam...) Bazı yazılımcılar bu propertyi tek satırla da yazmaktadır. C#, KimlikNo propertysinin aşağıdaki gibi yazılmasına izin vermektedir: 39

Auto-Implemented Propertylerin Kullanımı (devam ) public int KimlikNo{get; set;} Üstteki formatta oluşturulmuş propertylere autoimplemented property denir. İçerisinde özelleştirme yapmak istediğiniz Propertyler, auto-implemented property olarak yaratılamaz. Ayrıca get ve set erişimcilerinden herhangi birisi kullanılmayacaksa auto-implemented property olarak yaratılamaz. 40

Auto-Implemented Propertylerin Kullanımı (devam ) Sınıfın içerisinde bulunan propertynin kullanacağı üyelere backing field denir. Auto-implemented property kullandığınızda backing field yaratmaya gerek yoktur. Propertynin kullanacağı üye derleyici tarafından yaratılır. Örnekteki KimlikNo propertysi için kimlikno üyesinin yaratılmasına gerek yoktur. Derleyici kimlikno üyesini otomatik olarak yaratır ve kullanır. 41

Örnek4: Isci Sınıfına Auto-Implemented Property Tanımlanması Isci +KimlikNo: int +Maas: decimal +Kimlik: KimlikBilgisi Isci KimlikBilgisi +TCKimlikNo: ulong +Ad: string +Soyad: string +DogumYeri: string +DogumTarihi: DateTime 1 1 KimlikBilgisi 42

Örnek4: Isci Sınıfına Auto-Implemented Property Tanımlanması (devam...) 43

Auto-Implemented Propertylerin Kullanımı (devam ) Eğer sadece okunabilir (read-only) auto implemented propertyler yaratmak istiyorsak, set erişimcisini private olarak tanımlamalıyız. Örnek: public int KimlikNo { get; private set; } Böylece KimlikNo property sine değer ataması yapılamaz. Fakat kendi sınıfındaki metotlar değer ataması yapabilirler. 44

Auto-Implemented Propertylerin Kullanımı (devam ) Daha az sıklıkla kullanılan bir durum da, dışarıdan değeri ayarlanabilen fakat değerine erişilemeyen bir property yaratmak istersek get erişimcisi private olarak tanımlarız Örnek: public int KimlikNo { private get; set; } 45

public ve private Erişim Belirleyicileri Hakkında Daha Fazla 46

public ve private Erişim Belirleyicileri Hakkında Daha Fazla Veriyi olabildiğince saklamak (information hiding), Nesneye Yönelik Programlamanın temel prensiplerindendir. Bu yöntemde sınıf üyeleri private olarak tanımlanır ve iyi bir şekilde tasarlanmış erişimciler üzerinden bu üyelere ulaşılır. Fakat bu yöntemin dışında erişim belirleyicilerini farklı amaçlar için de kullanmamız gerekebilir. 47

Örnek5: Hali Sınıfının Yaratılması Hali +Uzunluk: int +Genislik: int +Alan: int {Read-Only} -AlanHesapla() Hali sınıfında, Alan propertysi set erişimcisi içermemektedir (read-only). AlanHesapla() metodu private tanımlanmıştır. Soru: Nasıl Alan hesaplayacağız? 48

Örnek5: Hali Sınıfının Yaratılması (devam...) 1.ÇÖZÜM 49

Örnek5: Hali Sınıfının Yaratılması (devam...) 2.ÇÖZÜM 50

Örnek5: Hali Sınıfının Yaratılması (devam...) 51

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 52

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