Nesneye Dayalı Programlama

Benzer belgeler
Şablon Türler (Generics)

Nesneye Dayalı Programlama

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

Nesneye Dayalı Programlama

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

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

static void dizi_24() { Random rnd = new Random(); int [] tutulan=new int[10]; int dogru;

Lambda İfadeleri (Lambda Expressions)

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

Ders 8: Metotlar. barisgokce.com

11- FONKSİYONLAR (FUNCTIONS)

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

Nesneye Dayalı Programlama

public static int Toplam int x, int y

NESNEYE DAYALI PROGRAMLAMA 11. HAFTA UYGULAMA DERSİ

HSancak Nesne Tabanlı Programlama I Ders Notları

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

C# Metotlar ve Metot Tanımlama

Sunum İçeriği. Programlamaya Giriş

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

Akış Konrol Mekanizmaları

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 Dilleri 3

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

Programlama Dilleri 3

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

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

GENETİK ALGORİTMA GEZGİN SATICI ÖDEVİ

Programlama Dilleri 3

BİLG Dr. Mustafa T. Babagil 1

BMH-303 Nesneye Yönelik Programlama

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

NESNE TABANLI PROGRAMLAMA-2 DERS UYGULAMALARI-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;

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

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

Nesneye Dayalı Programlama

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

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

NESNEYE YÖNELİK PROGRAMLAMA

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

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

YZM 2116 Veri Yapıları

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

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

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

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

YZM 2116 Veri Yapıları

Dizi ( Array ) ve Dizgi ( String )

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:

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

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

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

BİL-142 Bilgisayar Programlama II

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

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

Görsel Programlama (Visual Programming)

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

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

Nesne Yönelimli Programlama ve Kalıtım

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

BTEP243 Ders 3. class Yazım Kuralı:

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

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

VERİ YAPILARI DERS NOTLARI BÖLÜM 4 STACK (YIĞIN, YIĞIT) Yard. Doç. Dr. Deniz KILINÇ

BİL-141 Bilgisayar Programlama I (Java)

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

«BM364» Veritabanı Uygulamaları

ALGORTMA ve PROGRAMLAMA - II (C# Sürümü) DERS NOTLARI

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

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

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

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

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

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

Programlama Dilleri III 1

Veri Yapıları ve Algoritmalar dönem

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

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

Java String İşlemleri

C# Dilinde Temel Veri Türleri

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

ArrayList ve List yapıları. Bilgisayar Programlama 2 Erciyes Üniversitesi Bahriye Akay

Merge Sort Bireşen Sıralama

HSancak Nesne Tabanlı Programlama I Ders Notları

Lecture 11: Generics

#ifndef COMPLEX_H #define COMPLEX_H

1 JAVASCRIPT NEDİR? 1

BÖLÜM 11: YAPISAL VERİ TİPLERİ

Göstericiler (Pointers)

C++ Dersi: Nesne Tabanlı Programlama

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

ATATÜRK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BIM 205 GÖRSEL PROGRAMLAMA GÜZ DÖNEMİ ÖDEV-1

Transkript:

SAKARYA ÜNİVERSİTESİ Nesneye Dayalı Programlama Hafta 12 Prof. Dr. Ümit KOCABIÇAK Öğr. Gör. Özgür ÇİFTÇİ Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim" tekniğine uygun olarak hazırlanan bu ders içeriğinin bütün hakları saklıdır. İlgili kuruluştan izin almadan ders içeriğinin tümü ya da bölümleri mekanik, elektronik, fotokopi, manyetik kayıt veya başka şekillerde çoğaltılamaz, basılamaz ve dağıtılamaz. Her hakkı saklıdır 2010 Sakarya Üniversitesi

12.1. Dizi ve ArrayList Diziler tanımlanırken elaman sayısı belirtilen aynı türden verileri içersinde barındırabilen yapılardır. ArrayList ise dizinin yaptığı tüm işleri yapar ama sınır getirilmediğinden istediğimiz kadar eleman ekleyebiliriz. Aldığı her elemanı boxing işlemi ile object olarak sakladığından her türlü değeri alabilir. Add, Remove, Sort gibi metodlar kullanışlı metodlardır. Örnekler; class DiziArrayList private int k = 0; private int[] dizi = new int[5]; private ArrayList al = new ArrayList(); public void DiziAta(int a) dizi[k] = a; k++; public void DiziAta(object a) al.add(a); public void DiziYazdir(int[] a) foreach (int elaman in a) Console.WriteLine(elaman); public void DiziYazdir() foreach (object elaman in al) Console.WriteLine(elaman); class Program int[] yenidizi=1,2,3,4,5; DiziArrayList d = new DiziArrayList(); for (int i = 0; i < 5; i++) 2

d.diziata(yenidizi[i]); d.diziyazdir(yenidizi); string s = "123"; int c = 123; d.diziata((object)s); d.diziata((object)c); d.diziyazdir(); Diziler aynı türden verileri tutarken, ArrayList ise object türünden verileri saklayabilmektedir. ArrayListler de object türüne dönüştürme işlemi performans kaybına yol açmaktadır. Yukarıdaki örneğimiz de ArrayList e atamalar yaparken object türüne dönüşüm yapılmaktada, benzeri şekilde bir elamanın listeden çekimi sırasında da tür dönüşümüne gerek vardır. string a = (string)al[0]; // unboxing işlemi int b = (int)al[1]; //unboxing işlemi Bu noktada çözüm ise içersinde güvenli tiplerin bulunduralabileceği Generic Yapılar dır. 12.1. Generic Yapılar İstisnalar haricinde C/C++ taki şablonların geliştirilmiş halidir. C# System.Collections.Generic isim uzayında yer almaktadır. Dolayısıyla Collections gurubuna ait yapılardır. <tür> şekilinde bildirimi yapılır. Yapının içersinde hangi tür verilerin tutulması isteniyorsa tür yerine veri tipi yazılır. List<string> gls = new List<string>(); List<int> gli = new List<int>(); Generic Tiplerin kullanım amacı: 1- Type Safe (Tip Güvenliği) 2- Performance (Performans) Generic Tiplerde şu işlemleri yapabiliyoruz: 1- Generic Class 2- Generic Interface 3- Generic Metod 4- Generic Delegate 5- Generic ve Array 3

Örnek 2: class GenericSinifOrnegi public List<string> gls = new List<string>(); public List<int> gli = new List<int>(); public void ElamanEkle(string a) gls.add(a); public void ElamanEkle(int a) gli.add(a); public void ElamanCikart(string a) gls.remove(a); public void ElamanCikart(int a) gli.remove(a); public void Yazdir(List<string> l) foreach (string s in l) Console.WriteLine(s); public void Yazdir(List<int> l) foreach (int s in l) Console.WriteLine(s); class Program GenericSinifOrnegi gs = new GenericSinifOrnegi(); gs.elamanekle("ali"); gs.elamanekle("veli"); gs.elamanekle("zeynep "); gs.elamanekle("a"); gs.yazdir(gs.gls); Console.WriteLine("\n***********************\n"); 4

gs.elamancikart("a"); gs.yazdir(gs.gls); for (int i=1;i<3;i++) Console.WriteLine("***********************"); gs.elamanekle(5); gs.elamanekle(6); gs.elamanekle(7); gs.yazdir(gs.gli); Console.WriteLine("\n***********************\n"); gs.elamancikart(7); gs.yazdir(gs.gli); Örnek 3: class Program Dictionary<int, string> yeniliste = new Dictionary<int, string>(); yeniliste.add(0, "a"); yeniliste.add(1, "b"); yeniliste.remove(0); Örnek 4: enum KullanimTuru Is, ozel, ; 5

enum Tip fax, telefon, modem, ; class Tel private KullanimTuru kt; private Tip t; private string UlkeKodu; private string telno; public Tel(KullanimTuru kt, Tip t, string UlkeKodu, string telno ) this.kt = kt; this.t = t; this.ulkekodu = UlkeKodu; this.telno = telno; class Ogrenci public string m_ad; public string m_soyadi; public DateTime m_dt; public string numara; public List<Tel> Telefon = new List<Tel>(); ///diğer Kodlar class Program Tel t1=new Tel(KullanimTuru.Is,Tip.fax,"0","11111111"); Tel t2 = new Tel(KullanimTuru.ozel, Tip.telefon, "0", "11111111"); Tel t3 = new Tel(KullanimTuru.ozel, Tip.modem, "0", "11111111"); Ogrenci o = new Ogrenci(); o.telefon.add(t1); o.telefon.add(t2); 6

o.telefon.add(t3); 12.2. Generic Sınıflar Generic sınıfların 1 bildiriminde sınıf isminden sonra < > işaretleri arasında tür parametresi belirtilir. Generic bir sınıf bildiriminin genel biçimi şöyledir : class Sınıf_İsmi <Tür_Parametresi> //... Tür parametresi; bildirim sırasında herhangi bir türün karşılığı olmayan ve çoğu zaman T, G, AD gibi bir yer tutucudur. Bu yer tutucu(lar) sınıfın kullanımı noktasında bir tür belirtilmesi ile anlam kazanır(lar). Örneğin; class Sample <T> //... //... public static void Main() Sample <int> obj = new Sample <int> (); Yukarıdaki örnekte bildirim sırasında tür parametresi olarak kullanılan <T>, sınıfın kullanımı noktasında <int> türünün belirtilmesi ile anlam kazanmıştır. NOT : Terminolojide Sample <int> gibi tanımlanan türler; constructed type biçiminde adlandırılmaktadır! Çok tipli generic sınıfların bildiriminde birden fazla tür parametresi kullanılabilir, örneğin : class Sample <AB, CD> //... 1 http://www.yazgelistir.com/makaleler/1000000369.ygpx 7

//... public static void Main() Sample <int, string> obj = new Sample <int, string> (); Bu örnekte ise; AB -> int, CD -> string türlerinin karşılığı olmuşlardır. Örnek : class Cocuk<T, K> T m_id; T m_agirligi; K m_adi; K m_soyadi; public T Id get return m_id; set m_id = value; public T Agirligi get return m_agirligi; set m_agirligi = value; public K Adi get return m_adi; set m_adi = value; public K Soyadi get return m_soyadi; set m_soyadi = value; public Cocuk() public Cocuk(T id, T agirligi, K adi, K soyadi) this.id = id; this.adi = adi; this.soyadi = soyadi; this.agirligi = agirligi; 8

class Program Cocuk<byte, string> adam = new Cocuk<byte, string>(1, 250, "mehmet", "gedik"); Cocuk<string, string> adam2 = new Cocuk<string, string>("100", "450", " nurhan", "özay"); 12.2. Generic Metotlar class Program Topla<int>(5, 3); Topla<byte>(1, 2); Topla<int, byte>(5, 9); int d = Topla<int>(5); int a = 21; int b = 45; Console.WriteLine(a + " " + b); static void Topla<T>(T a, T b) Console.WriteLine("Generic Metot Calisti"); static void Topla<T, K>(T a, K b) Console.WriteLine("Farkli tipteki generic Calisti"); static T Topla<T>(T a) Console.WriteLine("Geriye Deger Dondur"); return a; 9

12.4. Kısıtlamalar (Constraints) Kullanımlar Generic mimarisi gönderilen parametrelerin tipinin seçilmesini kullanıcıya bırakır. Dolayısı ile kullanıcı istediği tipten veri girişi yapabilir. Bu yüzden bazı durumlarda kasıtlamalar koymak gerekebilir. Koşul Değer tipi olma zorunluluğu Referans tipi olma zorunluluğu Constructor zorunluluğu Türeme zorunluluğu Interface zorunluluğu Syntax where Tip : struct where Tip : class where Tip : new() where Tip : <Temel Sınıf> where Tip : <Interface> class insan<t, K> where K : class where T : struct public T m_id; public K m_adi; public K m_soyadi; public insan() static void BuyukOlaniYaz<T>(T a, T b) where T : IComparable T buyukolan = a; if (a.compareto(b) < 0) buyukolan = b; Console.WriteLine("Buyuk Olan : 0", buyukolan); public class MyGeneric<Tip> where Tip : MyClass, MyInterface, new() // Bazı kodlar Son duruma göre Tip ile belirteceğimiz class tipi, MyClass class ından türemeli, MyInterface interface ini implemente etmeli ve mutlaka parametresiz bir constructor ı olmalı. 10