görsel programlama – İktisat Online (Ekonomi Online)
Geriye Değer Döndüren Metotlar
•Geriye değer döndüren metotlar, yapılan işlemlerin ardından mutlaka geriye
değer veren metotlardır. Metodun geri dönüş tipiyle aynı bir değişkene
atanabilirler. Bu metotların mutlaka bir geri dönüş tipi vardır ve bu istenilen
tipte olabilir (string, double, float vb.).
•METOT ÇAĞRILARI
•Metot çağırma kavramı daha önceki örneklerde de gösterildiği üzere
metodun, işlevini yerine getirmesinin istendiği yerde yazılmasıdır. Metotlar
sadece lokal (yerel) alanda çağrılabilirler. Global alanda çağrılamazlar.
Metotlar çalışmaları için çağrılmaları gerekir ve dolayısıyla çağrılmadıkları
sürece çalışmaya başlamazlar. Global alanda kod bloğu olarak dururlar.
•Değer ve Referans Veri Tipleri
•C# dilinde veri tipleri, değer tipi (value type) ve referans tipi (reference
type) olmak üzere ikiye ayrılır. Bilindiği üzere değişkenler, bellekte tutulan
verilerdir. Bir değişkeni kullanırken aslında o değişkenin, bellekte tutulduğu
adresindeki veriye ulaşırız. Değer tipleri değişkenin değerini direkt olarak
bellek bölgesinden alırken, referans tipleri ise başka bir nesneye referans
olarak kullanılırlar.
•Değer (Pass by Value) ve Referans (Pass By Reference) İle Çağırma
•Değer türünde gönderilen parametreler için metoda parametrenin bir
kopyası gönderilir. Bu yüzden metoda parametre olarak aktarılan değişkenin
metot içinde değiştirilmesi, esas değişkeni etkilemez. Ancak referans
türündeki bir değişken metoda gönderilirken değişkenin referansı
gönderildiği için, metot içerisindeki parametre olarak geçilen değişken
üzerindeki değişiklikler orijinal değişkende gerçekleşmektedir.
•Ref - Out Anahtar Sözcükleri
•Bu anahtar sözcükler metot oluşturulurken parametre ile kullanıldığında
artık argüman olarak verilen değişkenin referans adresine gidecek ve orijinal
değer değişecektir. Ayrıca bu sözcüklerin diğer önemli kullanım amacı ise
metodun birden fazla değer döndürmesini sağlamaktır..
•Params Anahtar Sözcüğü
•Params anahtar sözcüğü, aynı tipte olmak şartıyla metot içerisinde
kullanılacak parametre sayısının bilinmediği bu gibi durumlarda
kullanılmaktadır. Ayrıca dizi ile kullanılmasına rağmen diziyi bilinen dizi
yapısından farklı bir şekilde tutar.
PadLeft()
•String bir ifadenin soluna, belirlenen uzunluk kadar karakter ekler.
•PadRight()
•String bir ifadenin sağına, belirlenen uzunluk kadar karakter ekler.
•Trim()
•Verilen string ifadenin başında ve sonunda boşluk var ise bu boşlukları
silmek için kullanılır.
•Remove()
•Verilen string ifadedeki karakterleri silmeyi sağlar.
•Arama Metotları
•IndexOf()
•String bir ifade içinde herhangi bir karakter ya da başka bir string ifadeyi
arar.
•StartsWith()
•Bir string ifadenin verilen parametre değeri ile başlayıp başlamadığını
kontrol eden metottur. Eğer verilen parametre ile başlanıyorsa geriye true
yoksa false değeri döner.
•EndsWith()
•Bir string ifadenin verilen parametre değeri ile bitip bitmediğini kontrol eden
metottur. Eğer verilen parametre ile bitiyorsa geriye true yoksa false değeri
döner.
•Contains()
•Verilen string ifade içinde gönderilen parametreyi arar. Eğer gönderilen
parametre ifade içinde geçiyorsa true değeri döner.
•Boyut Bilgisi ile İlgili Metotlar
•Length
•String bir ifadedeki karakter sayısını verir.
•Count()
•Length metodu ile aynı işlevi yapar.
•IsNullOrEmpty()
•Verilen string ifadenin içeriğini kontrol eden bir metottur. İçerik boşsa ya da
null değer var ise true değeri yoksa false değeri döner.
Log10(x) Metodu
•Verilen parametrenin 10 tabanına göre logaritmasını hesaplamak için
kullanılır.
•Log(x,y) Metodu
•Bu metot iki parametre alır. İlk parametre sayıyı, ikinci parametre ise tabanı
temsil etmektedir.
•BigMul() Metodu
•Bu metot parametre olarak 2 adet int türünde tam sayı değeri alıp bunların
çarpımını long türünde geri döndürür.
•DivRem() Metodu
•Bölme işleminde bölümü bulmak için kullanılır. 3 parametre alır. İlk
parametre bölünen, ikinci parametre bölen, üçüncü parametre kalan
değerlerini temsil etmektedir. Kalan değeri out anahtar kelimesi ile birlikte
kullanılmalıdır.
•Truncate() Metodu
•Girilen sayının virgülden sonraki kısmını atar, işleme almaz.
•Exp() Metodu
•Tek bir parametre alır. e sayısının, girilen parametre kadar kuvveti
hesaplanır.
•ZAMAN FONKSİYONLARI
•DateTime
•DateTime yapısı ile tarih ve zaman işlemeleri yapılabilmektedir. DateTime
System isim uzayı altında yer almaktadır.
•TimeSpan
•İki tarih arasındaki farkı bulma gibi işlemler için TimeSpan yapısı
kullanılmaktadır.
İlk ünitede metotların ne olduğu ve nasıl kullanıldığı açıklanmıştı. Daha
sonraki ünitelerde string ve matematiksek metotlardan bahsedilmişti. Bu
ünitede ise metotların aşırı yüklenmesi (overloading) ve çeşitli bazı metotlar
örneklerle anlatılacaktır.
•Metot aşırı yükleme (overloading), aynı iş mantığına sahip metotları bir
arada tutarak bu metotlara kolay erişim ve kullanım sağlamaktır.
•Yani başka bir deyişle, metot aşırı yükleme (overloading) aynı isimde ama
birbirinden farklı özelliklere sahip birden fazla benzer metodun yazılmasıdır.
Bu da yazılım geliştiricilere, metodu çağırdığı zaman kullanacağı özelliğe göre
seçim yapma esnekliği kazandırır.
•C# için geliştirilen .NET Framework içerisinde bir çok metot overloading
yüklenmiştir. Örneğin MessageBox sınıfına ait Show metodunun yirmi adet
farklı yüklenmiş versiyonu bulunmaktadır. Bu yirmi versiyonun faklı isimlerde
tanımlanan metotlar olduğu düşünülürse, geliştiricinin bu metotların hepsini
ezberinde tutması gerekecektir ki bu da gerçekten oldukça zordur. Metot
overloading iste tam bu noktada geliştiriciye büyük fayda sağlamaktadır. Bu
tanımlamaları yaparken ise aynı metotları birbirinden ayırmak
gerekmektedir.
•Metot parametrelerinin tipleri ve sayıları, aynı isimli metotları birbirinden
ayırmaya yarayan özelliklerdir. Metotları benzersiz yapan bu özelliklere
metot imzası denilmektedir.
•Bu bilgi ışığında başka bir tanımla, metot imzaları farklı ve isimleri aynı
birden fazla metodun yazılmasına metot aşırı yükleme (overloading)
denilmektedir (Alkan, 2021).
•Metot Aşırı Yükleme Yöntemleri
•Metot aşırı yükleme; parametre sayısını, parametre veri tipini ve parametre
sırasını değiştirerek gerçekleştirilebilir (Programiz, 2022).
•1. Parametre Sayısını Değiştirme
•Metotlardaki parametre sayıları farklı olduğu için aynı isimde birden fazla
metodun olması mümkündür.
•2. Parametre Veri Tiplerini Değiştirerek
•Aynı metot isminde parametre sayısı farklı olan metotların aşırı yüklendiği
gösterildi. Aynı sayıda parametre sayısına sahip ancak parametrelerinin veri
türünün farklı olduğu metotların da aşırı yüklenmesi mümkündür.
•3. Parametrelerin Sırasını Değiştirerek
•Aynı sayıda parametre sayısına sahip ve parametrelerinin veri türünün aynı
olduğu ancak parametre sırasının farklı olduğu metotların da aşırı
yüklenmesi mümkündür.
•ÖZYİNELEMELİ (RECURSIVE) METOTLAR
•Bilgisayar biliminde özyineleme, bir metodun görevini yapmak için kendini
tekrar çağırmasıdır. Başka bir deyişle özyineleme, belirli bir koşul sağlanana
kadar kendisini bir veya daha fazla kez çağırmak için bir işlev veya algoritma
kullanan bir programlama tekniğidir. Aslında yinelemeli yöntemin döngü
oluşturmanın başka bir yolu olduğu da söylenebilir. Bir bilgisayarda
çözülecek problem birden fazla parçaya bölünebiliyorsa ve her parça aynı
özelliklere sahipse, bu problemlerle ilgili algoritmalar yinelemeli olarak
tasarlanmalı ve kodlanmalıdır. Özyinelemeli yöntemler, yinelemeli
yöntemlerle yazılan programlardan daha yavaş çalışsa da, daha okunaklı,
daha kısa kodlar yazarak çözüm üretebildikleri için programcılar tarafından
oldukça tercih edilirler
VERİ TABANI
Veri tabanı, verilerin elektronik olarak depolandığı; üzerlerinde sorgulama,
ekleme, güncelleme ve silme gibi işlemlerin yapılabildiği sistemlere verilen
genel isimdir.
Verilerin nasıl saklanıp ve kullanılacağına bağlı olarak birçok veri tabanı
yapısından söz etmek mümkündür. Bunlar; İlişkisel Veri Tabanları, Nesne
Odaklı Veri Tabanları, Dağıtılmış Veri Tabanları, Veri Ambarları, NoSQL Veri
Tabanları, Grafik Veri Tabanları, OLTP Veri Tabanları, Bulut Veri Tabanları,
Çoklu Model Veri Tabanı, Belge/JSON Veri Tabanı ve Kendi Kendini Yöneten
Veri Tabanları olarak sıralanabilir.
Bir programlama dili ile veri tabanı sistemleri üzerinde işlem yapabilmek için
tercih edilebilecek birçok veri erişim teknolojisi bulunmaktadır. Bunlar;
ODBC, DAO, RDO, OLE DB, ADO, ADO.NET, LINQ TO SQL ve Entity
Framework'dir.
•ADO.NET (ACTİVEX DATA OBJECT)
ADO, ActiveX Data Object'in kısaltmasıdır ve Microsoft tarafından SQL
Server, Access, XML vb. gibi birçok veri kaynağı üzerinde işlem yapabilmek
için üretilmiş bir teknolojidir. ADO.NET ise .NET platformunun çıkmasıyla
birlikte ADO özelliklerinin geliştirilerek .NET platformuna dahil edilmiş
halidir. ADO.NET Bileşenleri; Connection, Command, DataReader, DataSet ve
DataAdapter'dir.
•Connection
Connection bir veri kaynağı ile yazılım arasındaki bağlantının kurulmasını
sağlayan nesnedir. Uygulama ile veri kaynağı arasında bağlantı kurulduğunda
Connection nesnesi aracılığı ile SQL komutları çalıştırılır.
Uygulamanın kaynak veri tabanı ile bağlantı kurabilmesi için bir takım
bilgilere ihtiyaç vardır. Bu bilgileri içeren bağlantı dizesine “Connection
String” adı verilir. SqlConnection nesnesinin hangi veri kaynağına
bağlanacağını belirlemek için bir bağlantı dizesi tanımlanıp bunun da ilgili
bağlantı nesnesinin “ConnectionString” özelliğine atanması gerekmektedir.
•Command
Command, Connection nesnesinde belirtilen veri kaynağı üzerinde SQL
komutlarının çalıştırılmasını sağlar. “CommandType” özelliği ile çalıştırılacak
komut tipi belirlenebilir. “CommandType” özelliği üç (3) adet değer
alabilmektedir. Bu değerler; Text, Stored Procedure ve TableDirect'dir.
Command nesnesine ait dört adet metot bulunmaktadır. SQL komutlarını
çalıştırabilmek için kullanılan metotlar; ExecuteScalar, ExecuteNonQuery,
ExecuteReader ve ExecuteXmlReader. Çalışmakta olan bir SQL komutunu
iptal etmek için Cancel metodu kullanılır.
•DataReader
DataReader bir veri kaynağından veri okumak (readonly) için kullanılır. Veri
tabanından alınan veriler çalışma zamanında Read() metodu ile satır satır
okunarak işlenir.
•DataSet
DataSet içerisinde ilişkisel verileri tablo yapısında barındıran bir DataTable
koleksiyonudur. Veri tabanından alınan veriler DataSet içerisindeki
DataTable’larda saklanır. System.Data isim uzayında yer alır.
•DataAdapter
DataAdapter veri kaynağı ile DataSet nesnesi arasında bir köprü olarak
tanımlanabilir. Diğer bir tanıma göre ise DataAdapter veri kaynağı ile DataSet
arasındaki çift taraflı veri akışını kolay, verimli ve performanslı bir şekilde
sağlar.
KAYIT EKLEME
T-SQL dilinde veri tabanındaki bir tabloya kayıt eklemek için “Insert Into” deyimi
kullanılmaktadır. “Insert Into” için üç (3) adet syntax (sözdizimi) yapısından söz
edilebilir.
1.Tablonun sadece belirli sütunlarına kayıt eklemek için;
INSERT INTO (sütun1, sütun2, sütun3, ...)
VALUES (deger1, deger2, deger3, ...);
2.Tablonun tüm sütunlarına kayıt eklemek için;
INSERT INTO VALUES (deger1, deger2, deger3, ...);
3.Bir tablodan başka bir tabloya kayıt eklemek için;
INSERT INTO SELECT FROM

sözdizimi yapıları kullanılır.
ADO.NET ile veri tabanı üzerinde bulunan bir tabloya kayıt eklemek için
SqlCommand nesnesinin “CommandText” özelliğine ilgili “Insert Into” deyimi
tanımlandıktan sonra ExecuteNonQuery() metodu çağırılır.
Veri tabanına parametre olarak gönderilen değerlerin (‘”+ +”’) ifadeleri arasında
yazılması “SQL Injection” güvenlik açığına sebep olması nedeniyle pek tercih
edilen bir yöntem değildir. Bunun yerine SQL Parametreleri kullanılmalıdır.
SQL Parametreleri verileri birçok yönden (tip, uzunluk, değer vb. gibi) kontrol
edebilmeyi sağlar. Bu sebeple veri tabanı bağlantısı bulunduran uygulamalarda
işlemlerin SQL Parametreleri kullanılarak gerçekleştirilmesi oldukça önem arz
etmektedir.
•KAYIT LİSTELEME
T-SQL dilinde veri tabanındaki bir tablodan veri çekmek için “Select” deyimi
kullanılmaktadır. “Select” ifadesi; SELECT sütun1, sütun2, ... FROM
(Opsiyonel) Where şeklinde kullanılmaktadır.
ADO.NET ile veri tabanında bulunan bir tablodan kayıt okumak için
SqlDataReader veya SqlDataAdapter yöntemleri tercih edilebilir. Kayıtlar bir
DataGridView içerisinde listeleneceğinden dolayı SqlDataAdapter kullanımı daha
uygun bir yöntem olacaktır.
•KAYIT BULMA
T-SQL dilinde veri tabanında bulunan bir tablodan sadece belirlenen koşullara
uyan kayıtları filtrelemek için “Select” ifadesi “Where” deyimi ile birlikte
kullanılmaktadır. DataGridView üzerinde gösterilen veriler üzerinde arama
yapabilmek için TextBox kontrolünün TextChanged olayından faydalanılabilir.
TextChanged; bir TextBox’ın metin içeriğinde değişiklik meydana geldiğinde
tetiklenen olaydır.
TextBox içerisine aranacak bir ifade girildiğinde TextChanged olayı tetiklenir ve
veri tabanı üzerinde çalıştırılan sorgu sonucunda girilen ifade ile eşleşen kayıtlar
DataGridView üzerinde listelenebilir.
•KAYIT GÜNCELLEME
T-SQL dilinde veri tabanındaki bir tablo üzerinde güncelleme yapabilmek için
“Update” deyimi kullanılmaktadır. “Update” için kullanım şekline göre iki (2) adet
syntax (sözdizimi) yapısından söz edilebilir.
1. Tablonun sadece belirli sütunlarına kayıt eklemek için;
UPDATE SET sütun1 = deger1, sütun2 = deger2, ... WHERE şart;
2. Tablonun tüm sütunlarına kayıt eklemek için;
UPDATE SET .sütun1 = deger1, .sütun2 = deger2, ...
FROM as WHERE şart;
sözdizimi yapıları kullanılabilir.
•KAYIT SİLME
T-SQL dilinde veri tabanındaki bir tablodan kayıt silmek için “Delete” deyimi
kullanılmaktadır. “Delete” için kullanılan temel syntax (sözdizimi) yapısı şu
şekildedir;
DELETE FROM WHERE şart;
ADO.NET ile veri tabanı üzerinde bulunan bir tablodan kayıt silmek için
SqlCommand nesnesinin “CommandText” özelliğine ilgili “Delete” deyimi
tanımlandıktan sonra ExecuteNonQuery() metodu çağırılır.
DATA SOURCE (VERİ KAYNAĞI)
"Data Source" veri akışı sağlayan yapılardır. Component (bileşen) olarak
“Data Source” ise bir veri kaynağının modellenmiş hali olarak tanımlanabilir.
“Data Source”, uygulamanın veri kaynağı üzerinde CRUD (Create, Read,
Update ve Delete) işlemlerini gerçekleştirmesini sağlayan bileşendir.
•Veri Kaynağı (Data Source) Oluşturma ve Yapılandırma
Visual Studio ortamında açık olan bir projeye veri kaynağı eklemek için
sırasıyla aşağıda belirtilen adımlar takip edilir.
1. “Project” menüsünden “Add New Data Source” seçeneği seçilerek Veri
Kaynağı Yapılandırma Sihirbazı (Data Source Configuration Wizard) açılır.
2. Bağlantı kurulmak istenen veri kaynağı türü seçilir ve “Next” butonuna
basılır.
3. “Database (Veri Tabanı)” veri kaynağı türü için kullanılmak istenen model
türü seçilerek “Next” butonuna basılır.
4. Veri kaynağı türü ve model yapısı seçildikten sonra modellenecek veri
tabanı için “Connection String (Bağlantı Dizesi)” tanımları yapılır.
5. DataSet içerisinde temsil edilmesi istenen nesneler (Tablo, View, Stored
Procedure ve Functions) seçilir ve oluşturulacak olan “DataSet” nesnesine bir
isim verilerek “Finish” butonuna basılır.
•TableAdapter
TableAdapter, bir veri tabanına bağlanıp SQL sorguları, fonksiyon veya saklı
yordamları (stored procedure) çalıştırabilen ve uygulama ile veri tabanı
arasında çift yönlü veri akışı sağlayabilen bir bileşendir. TableAdapter
Connection tanımları ile SQL sorgularını çalıştırabilmek için gerekli Insert,
Select, Update, Delete komutları ve bu komutlara ait parametre tanımlarını
içerisinde bulunur. Tüm tanımlamalar “Designer” tarafından otomatik
oluşturulur. Birer nesneye dönüştürülen ve veri tabanı üzerinde işlem
gerçekleştirebilmek için kullanılacak bileşenler (component) de yine
otomatik olarak oluşturularak “Toolbox (Araç Kutusu)” içerisine
eklenmektedir. Eklenen bileşenlerden “DataSet” veri tabanını temsil
ederken, veri tabanı tabloları “TableAdapter” bileşenleri tarafından temsil
edilmektedir.
TableAdapter ile kayıt listelemek için Fill ve GetData metotlarından
faydalanılır. Fill metodu kendisine parametre olarak verilen mevcutta var
olan bir DataTable nesnesini doldururken, GetData metodu doğrudan
doldurulmuş bir DataTable nesnesi geriye döndürür.