C# VE OOP KILAVUZU EK B

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "C# VE OOP KILAVUZU EK B"

Transkript

1 EK B C# VE OOP KILAVUZU Bu kısım, T-SQL'i bir programlama dili olarak bilenler için C# diline hızlı bir başlangıç maksatlı eklenmiştir. Ünitenin sonlarına doğru nesneye dayalı programlamanın genel bir özetini ve takip eden sayfalarda da 3N katman mimarisi için örnek bir uygulama bulabilirsiniz. C# İLE PROGRAMLAMAYA GİRİŞ KILAVUZU C# ile Merhaba Dünya Bu bölüm, daha önceden herhangi bir dilde (ki buraya kadar okudunuzsa en azından T- SQL diye bir dili kullanmayı biliyor olmalısınız) kodlar yazmış ama C# ile henüz tanışmamış programcılar için hızlı bir başlangıç kılavuzu olarak hazırlanmıştır. Bu bölüm C# dili gibi geniş bir kavramın sadece kitap içeriğindeki program parçacıklarını kodlayabilecek kadarını kapsamaktadır. Kitap içeriği C#'ı sadece yönetilmiş olarak (.NET Framework dahilinde) ele almaktadır. C# ile dört farklı çalışabilir program yazılabilir: Komut satırı uygulaması, ASP.NET uygulaması Windows Formları Uygulaması. ve WPF uygulamaları Bunun dışında, C# ile.net platformu için kendiliğinden çalışamayacak ama bir başka program tarafından yüklenebilecek programlar (dll uzantılı assembly'ler) kodlamak mümkündür. SQL Server içerisindeki CLR bileşeni bu türden kodları çalıştırabilen ortamlardan biridir. CLR ortamı, C# dili ile de programlanabilen bir yönetilmiş (managed) ortamdır. Managed ortam, sistem kaynaklarını programcı yerine kontrol eden ortam demektir..net CLR ortamını kullanarak çalışacak en basit komut satırı C# programı aşağıdaki şekilde kodlanabilir: using System; public class MerhabaCSharp public static void Main() Console.WriteLine("Merhaba C#"); İlk örneği yazıp derleyip çalıştırabilmek, bir dili öğrenmenin yarısıdır denir. İlk C# örneğinizi test etmek için, Visual Studio.NET ile bir komut satırı uygulaması başlatabileceğiniz gibi,.net Framework SDK kurulumuyla birlikte gelen csc.exe C# derleyicisini kullanabilirsiniz.

2 Şekil B.1: MerhabaCsharp projesinin başlatılması Şekil B.2: İlk C# programının çalıştırılması. Sınıflar Yazmak Bir dili güçlü kılan noktalardan biri de kendisi ile birlikte gelen hazır kütüphanenin genişliğidir. Çünkü bu kütüphane sayesinde programcı daha az kod yazarak daha fazla iş çıkartabilir. Bu şekilde bir dil ile gelen hazır kütüphaneye temel kütüphane (base library) denir. C#,.NET Framework ile gelen C# kütüphanesini temel kütüphane olarak kullanır. Bir dil ile programlar geliştirirken, dil içerisinde yer alan sınıfların hiyerarşik olarak düzenlenmesi gerekebilir. Bu tür durumlar için C# isim uzayı (namespace) deyimini destekler. Mesela System.Data isim uzayı içerisinde veri yönetimi ile ilgili sınıflar yer alır. Bir sistem kütüphanesini, sadece kod yazarken kendi programımızın parçasıymış gibi kullanabilmek için, using deyimi ile ihtiyaç duyduğumuz kütüphaneyi içeren isim uzayına atıfta bulunmak yeterlidir. C# nesneye dayalı bir dildir. Bu nedenle, C# içerisinde yazılan bütün programların bir tür içerisinde bulunması zorunluluktur. Bizim örneğimizde bu nedenle MerhabaCSharp sınıfı yer almakta. Bir sınıfın dışarıdan bakıldığında iki temel türden elemanı olabilir: alan ve metot. Alan, bir değer atanabilen ve değeri okunabilen sınıf bileşenidir. Sınıf içerisinde fonksiyonellikleri yerine getirecek bileşene de metot denir. Nesneye dayalı programlamada metot, bir sınıf içerisinde yazılmış stored procedure'ler gibi düşünülebilir. Özellikler için örnek vermek gerekirse, bir nesnenin Boy, En, Renk gibi parametrik değerler alacak bileşenleridir. Metodlar bir işlevi yerine getirirler. Yazdır, Topla, Çarp, Çıkart, Birlestir gibi C#'da bir programın çalıştırılabilir olması için bir sınıfının Main() adlı metodu olması gerekir. Yukarıdaki örnekte bu türden bir metot yer almaktadır. Örnek 1: En basit olarak marka bilgilerini saklayacak bir Class şu şekilde tanımlanabilir:

3 //Marka.cs public class Marka public int markakod; public string markaad; public MarkaBilgileriniYaz() Console.WriteLine("MarkaKodu:0 \t MarkaAdı:1", markakod, markaad); Örneğimizde, markakod ve markaad birer özellik iken MarkaBilgileriniYaz() bir metoddur. Yazmış olduğunuz sınıflar Int gibi yeni bir türdür. Bu türlerde değişkenler tanımlayabilirsiniz. Herhangi bir sınıf türünden tanımlanan değişkene nesne denir. İpucu: C#'da açıklama tek satır eklemek için // ve çok satır açıklama eklemek çin /*..*/ işaretlerini kullanabilirsiniz. Bloklar tanımlamak için şeklinde açılır kapanır kıvırcıklar kullanılır. Şekil B.3: Marka sınıfının kullanılması Örnek 2: Çalıştırabildiğimiz ilk nesne içeren örneğimizi şu şekilde değiştirelim: using System; public class MerhabaCSharp public static void Main() Marka yenimarka = new Marka(); yenimarka.markakod=500; yenimarka.markaad="verivizyon"; yenimarka.markabilgileriniyaz(); public class Marka public int markakod; public string markaad; public void MarkaBilgileriniYaz() Console.WriteLine("MarkaKodu:0 \t MarkaAdı:1", markakod, markaad); Örneğimizde, Marka sınıfının özelliklerinin ve metodunun kullanılmasını görebilirsiniz. Değişkenler Değerler ve Veri Tipleri Sınıflarda özellik tanımlarken ve kod yazarken, değişkenler kullanılır. Değişkenlerin ne amaçla kullanıdlığını T-SQL ile Programlamak adlı bölümde öğrenmiştik; kendilerine aktarılan değeri tutup kendi adı ile bu değere erişim tanımlamak. Değişkenin adı değişmez ama değerine her zaman atama yapılabilir. T-SQL'de olduğu gibi, C# için de değişkenlerin tipi vardır. C#'ta veri tipleri iki farklı grupta ele alınır: Değer tipler ve Referans tipler.

4 Değer tiplerin değerleri de kendileri ile birlikte Stack denilen bölgede tutulur. Bu bölge hızlı erişim sağlar ancak, bu bölgede saklanacak bir tipin ne kadar alan gerektirdiğini tam olarak bilmek gerekir. Tablo B.1: C#'da yer alan değer tipleri Değişken Türü sbyte short int long byte ushort uint ulong float double char decimal bool Açıklama 8-bit işaretli tam sayı 16-bit işaretli tam sayı 32-bit işaretli tam sayı 64-bit işaretli tam sayı 8-bit işaretsiz tam sayı 16-bit işaretsiz tam sayı 32- bit işaretsiz tam sayı 64-bit işaretsiz tam sayı Tek duyarlıklı kayan noktalı sayı (yaklaşık değer ondalık) Çift duyarlıklı kayan noktalı sayı (daha büyük yaklaşık değer ondalık) 2-bytelık Unicode temelli tek harf saklayabilen değişken 28 basamak duyarlıklı kesin değer kaydedebilen ondalık sayı. true veya false değeri alabilir. Değer tipli bir değişkene doğrudan değer ataması yapılabilir. Örnek 3: a değişkenine a=0 değeri atanabilir. int a; a=0; Dikkat: C#'da bir değişken, ilk olarak değer atanmadan, başka bir işlemde kullanılamaz, sadece tanımlanabilir. Şekil B.4: CLR ortamında bir değer tip değişken stack bölgesinde tutulurken, referans tip değişkenin sadece kendisi stack bölgesinde tutulur. Değeri Heap bölgesinde tutulur ve değişken buraya bir refarans içerir. Referans tipler, sınıf gibi boyutu her atamada farklı değerler alabilecek tipler için idealdir. Referans tiplere doğrudan atama yapılamaz. Çünkü referans tipler, değerlerini Heap denilen özel bir bölgede tutarak o bölgedeki değere referans içerirler. new operatörü, heap bölgesinden yeni bir adres tahsis ederek bu bölgenin adresini, atıfta bulunulan değişkenin değeri ile eşleştirir. Örnek 4:

5 yenimarka adında bir değişkenin stack bölgesinde tanımlanması ve heap bölgesinden yeni bir adres alınması. int x, y; int z=0; Marka yenimarka ; // marka türünde bir değişkeni stack bölgesine at yenimarka = new Marka(); // heap bölgesinden bir adresi bu değişkene tahsis et. Şekil B.5: Stack ve Heap bölgelerindeki değişken ve değerlerin davranışları Stack bölgesindeki değikenlere doğrudan null değeri atanabilir veya saha dışına çıkıldığında bu değişkenler silinebilir. Bu tür durumlarda, Heap bölgesindeki ayrılmış alan öksüz kalacaktır. Heap bölgesindeki öksüz alanlar, hafıza limitleri zorlanmaya başlandığında Garbage Collector adı verilen özel.net Framework bileşeni tarafından otomatik olarak temizlenirler. Temizlenme esnasında nesnelerin Finalize() metodları çalıştırılır. İpucu: String tipi, C#'ta referans tipli olmasına rağmen, değer tipli gibi davranır. Bunun arka planda yansıması olarak sık değişen string tipteki veriler fazla hafıza tüketirler. Bu nedenle, fazla değişen string değişkenler yerine System.Text sınıfı içerisinde yer alan StringBuilder sınıfını kullanabilirsiniz. String tiplerin başlangıç ve bitişleri "" ile belirtilir. Ancak string ifadenin kendi içerisinde de bir " geçerse, bu derleyicinin sentaksı anlamasını imkansız kılar. Bu nedenle bazı durumları uç durumlar olarak ele almak gerekir. Bu türden karakterler ve işlevlerini aşağıdaki tabloda bulabilirsiniz. Tablo B.2: Uç (escape) karakter ve karşılıkları. Uç Karakter Karşılığı \' Tek tırnak \" Çift Tırnak \\ Ters bölü \0 Null \a Alert (bip sesi) \b Backspace \f form besleme \n Alt satır r Satır başı t Yatay tab (3 karkater boşluk) v Düşey tab (3 satır alta geçme)

6 Uç karakterleri doğrudan bir string ifade içerisinde vermek istiyorsanız string ifadenin işareti koymak gerekir. Örnek 5: string uckarakterler ' ve \t gibi karakterler her zaman bir metin içinde geçmeyebilir" Tür Dönüşümleri C# açısından tür dönüşümlerini iki ana başlık altında ele alabiliriz: Bilinçsiz Tür Dönüşümü ve Bilinçli Tür Dönüşümleri. Bilinçsiz tür dönüşümü, doğrudan bir atama işlemi ile dönüşümün yapılabilmesidir. Örnek 6: Bilinçsiz dönüşüm, sadece uygun tiplerden büyük olan küçük olana atandığında yapılabilir. int i =0; sbyte j=1; i=j; // j sbyte değeri bir int türden değişkene atandığı için kendiliğinden dönüştü. Bu türden dönüşümü büyük türün küçük türe atanması halinde problem çıkartacaktır. Uyumlu tipleri birbirine doğrudan tür belirterek de dönüştürmek mümkündür: Örnek 7: int i =5000; sbyte j=1; j=(sbyte)i; // i önce sbyte türüne dönüştürüldü. Arkasından j sbyte tipli değişkene aktarıldı. Ancak bu türden dönüşümler yaparken, veri kaybına özellikle dikkat etmek gerekir. C#'da uyumsuz türleri birbirine dönüştürmek için Convert sınıfını kullanabilirsiniz. Convert sınıfının hemen her türü bir diğer türe dönüştürecek uygun metodları vardır. Örnek 8: String türden, sayı içeren bir değeri Int türüne dönüştürebiliriz. string syas="23"; int iyas; iyas = Convert.ToInt32(sYas); // veya Int32.Parse(sYas) da eşdeğer bir yöntemdir. Değer ve Referans Tipler Arası Dönüşüm: Boxing ve Unboxing Bazen, adres temelli bir değişkeni değer tipli gibi veya tam tersi değer tipli bir değişkeni adres temelli gibi kullanmak gerekebilir. Mesela bir metot, dışarıdan nesne bekliyordur ama elimizdeki değer int (Stack değişken)dir veya bir nesne int bekliyordur ama elimizdeki int değeri bir nesnede tutuluyordur. Değer tipli bir değişkenin adres tipe (Object) çevrilmesine Boxing denir. Örnek 9: int x=3; object o = x; // artık 3 değeri heap'te tutulmuyor Adres temelli değer taşıyan bir değişkeni, değer türüne döndürmeye de Unboxing denir.

7 Örnek 10: int y= (int) o; Döngüler ve Karar Yapıları T-SQL'de gördüğümüz döngü ve karar yapılarının çok daha gelişmişleri C# dilinde de vardır. Kitap içerisindeki örnekleri anlayabilmeniz için, sadece if-else, for ve while yapılarının kullanımını bilmeniz yeterli olacaktır. if-else Karar Yapısı Belli şartlarda çalışacak program parçacıkları oluşturmak için şu şekilde kullanabilirsiniz. int x=20 if (x == 20) Console.WriteLine("x == 20 imiş"); else Console.WriteLine("x!= 20 imiş"); for Döngü Yapısı Bazı ifadelerin n kere çalışması gerekiyorsa for yapısı kullanılır. Örnek 11: Ekrana 1-20 arasındaki sayıları yazdıracak şekilde bir C# programı şu şekilde yazılabilir: for (int i = 0; i < 20; i++) System.Console.WriteLine (i); while Yapısı Bazen, belli şartların hâsıl olması için kaç döngü atılacağı belli olmayan ifadeler olabilir. Bu tür ifadeleri while yapısı ile şartlar oluşuncaya kadar tekrarlatabiliriz. int x = 99; while (x > 36) System.Console.WriteLine( "Henüz x değeri 36dan büyük.. "); x--; İpucu: Döngüleri bir defaya mahsus yarıda kesmek için continue ve geri kalan tüm döngüleri bırakıp döngüyü kesmek için break ifadelerini kullanabilirsiniz. Nesnelerle Çalışmak Yazmış olduğunuz sınıflar Int gibi yeni bir türdür. Bu türlerde değişkenler tanımlayabilirsiniz. Herhangi bir sınıf türünden tanımlanan değişkene nesne denir. Programlamada Nesnel Yaklaşım, günlük hayatta etrafımızdaki araçları kullanmaya bakış açımızı yansıtmak üzere geliştirilmiştir.

8 Günlük hayatta, belli amaç için kullandığımız her şey nesnedir. Program geliştirirken, aslında gerçek dünyadan problemleri modelleriz. Nesne, "kapalı bir kutudur". Belli bir işlevi yerine getirmek için tasarlanmıştır. Nesneyi kullanabilmek için girdiler veririz. Nesne işleyişi, bizim değil tasarlayanların bilgisi dahilindedir. Biz iç işeyişini bilmeden ne verdiğimizde ne alacağımızı bilerek kullanırız. Yani nesne, bilmediğimiz işlemler yapar ve bize bir çıktı verir. Sınıflarda Erişim Seviyelerini Anlamak Nesneler sınıflar halinde programlanırlar. Yani nesnelerin tanımları, sınıflarda saklıdır. Ya da tersten bakacak olursak, bir sınıftan nüsha çıkartıldığında bunun adı nesne olur. Bir "kapalı kutunun" iç işleyişini problemsiz olarak yerine getirebilmesi, dış dünyadan soyutlanmış olmasına bağlıdır. Mesela bir cep telefonunu düşünün. Kablolarına erişip kısa devreler yaptırarak da pekâlâ bir şeyler yaptırabilirsiniz. Ama üretici firması, bu 'kapalı kutu' yani telefon'un işlevini istikrarlı olarak yerine getirebilmesi için, bir çok iç işleyişini bir kılıfın arkasında saklamış ve bize sadece tutarlı, amaca uygun kullanım girdilerinde bulunabileceğimiz tuşlar tasarlayıp bu tuşlara erişmemize olanak sağlamıştır. İşte programlama dünyasındaki nesneler de kullanılmadan önce tanımlanırlar. Yani sınıf halinde kodlanırlar. Sınıf halinde kodlama aşamasında, hangi metotların, hangi özelliklerin dışarıdan erişilebilir olacağı, hangi elemanların sadece iç işleyişle ilgili olduğundan dış dünyadan erişilemez ve bilinemez olması gerektiğine karar veririz. Bu türden karar verme işlemini belirleyebileceğimiz anahtar kelimeleri ve işlevlerini aşağıdaki tabloda bulabilirsiniz. Tablo B.3: nesnelerin elemanlarına erişimi belirleyen kelimelerden sık kullanılanları. Erişim Belirleyici Kullanım Yeri İşlevi public Sınıf, özellik, metot Dışarıdan erişilebilir bir eleman belirlemede kullanılır private Sınıf, özellik, metot Elemanın sadece nesnenin iç işleyişi için gereksinim duyulduğunu, dışarıdan erişilmemsi gerektiğini anlatır Örnek 12: Daha önceki örneklerde şu şekilde kodladığımız marka sınıfında, markakod ve markaad alanlarına doğrudan erişimi kapatalım: public class Marka private int markakod; private string markaad; private void MarkaBilgileriniYaz() Console.WriteLine("MarkaKodu:0 \t MarkaAdı:1", markakod, markaad); Artık şu ifade düzgün olarak çalışamayacaktır: using System; public class MerhabaCSharp public static void Main() Marka yenimarka = new Marka(); yenimarka.markakod=500;

9 yenimarka.markaad="verivizyon"; yenimarka.markabilgileriniyaz(); Şekil B.6: Erişim seviyeleri, sınıf dışarısından, sınıf elemanlarına erişimleri belirler. Şekil B.7: Marka Sınıfı Çünkü markakod ve markaad sütunlarına doğrudan erişim kapatılmıştır. Bu sınıfın ilgili alanlarına kontrollü bir erişim sağlamak için, property adı verilen yarı metod-yarı değişken yapılar kullanabiliriz. Örnek 13: Nesne değişkenlerine erişimlerini düzenlemek üzere property'leri kullanabilirsiniz. public class Marka private int markakod; private string markaad; public int MarkaKod get return markakod; set if (value > 0) markakod = value; public string MarkaAd get return markaad; set markaad = value; public void MarkaBilgileriniYaz() Console.WriteLine("MarkaKodu:0 \t MarkaAdı:1", MarkaKod,MarkaAd); Dikkat edilirse, artık markakod ve markaad sütunlarına atanan değerler belli bir kontrole tabi tutulabilecek durumdadır. (mesela markakod değerinin sıfırdan küçük olmaması gerektiği kontrol edilmekte) Bu tür bir sınıf şu şekilde nesneleştirip kullanılabilir: using System; public class MerhabaCSharp

10 public static void Main() Marka verivizyon = new Marka(); verivizyon.markakod = 500; verivizyon.markaad = "Verivizyon"; verivizyon.markabilgileriniyaz(); Marka seckin = new Marka(); // kurala uymayan bir atamayı, // nesne kabul etmeyecektir seckin.markakod = -1; seckin.markaad = "Seçkin Yayın A.Ş."; seckin.markabilgileriniyaz(); Şekil B.8: Programın çıktısı Şekil B.9: Sınıflardan nesne türetilmesi Yapıcı (Constructor) Kavramını Anlamak Bir sınıftan nesne nüshalandırılması aşamasında, sınıfa ait bir metodun devreye girmesi gerekir. Bu metod, Sınıf ile aynı adı taşır. Dönen değer almaz. Genel olarak public'tir. En genel manada, bir nesnenin hazırlanması (initialisation) maksadıyla kullanılır Örnek 14: Yeni bir marka oluşturulurken, bu markaya ait başlangıç verilerinin otomatik olarak atanabilir olmasını istersek, public class Marka private int markakod; private string markaad; public Marka(int markakod, string markaad) MarkaKod = markakod; MarkaAd = markaad; public int MarkaKod get return markakod; set if (value > 0) markakod = value;

11 Şekil B.10: Programın çalışması public string MarkaAd get return markaad; set markaad = value; public void MarkaBilgileriniYaz() Console.WriteLine("MarkaKodu:0 \t MarkaAdı:1", MarkaKod, MarkaAd); Bu türden bir sınıfı kolayca şu şekilde kullanabiliriz: using System; public class MerhabaCSharp public static void Main() Marka verivizyon = new Marka(500,"Verivizyon"); verivizyon.markabilgileriniyaz(); Marka seckin = new Marka(501,"Seçkin Yayın A.Ş"); seckin.markabilgileriniyaz(); Herhangi bir anda, sınıftaki elemanların 'o' anda üstünde çalışılırkenki hali ile nesne için nüshalanmış kopyalarını kastetmek üzere this anahtar sözcüğünü kullanabilirsiniz. Örnek 15: Marka sınıfının, MarkaBilgileriniAl adında aşağıdaki gibi bir metodu olsun: public void MarkaBilgileriniAl(int MarkaKod, int MarkaAd) this.markakod=markakod; this.markaad=markaad; Metodları Aşırı Yüklemek T-SQL ile Stored Procedure'ler gibi prosedürel rutinler kodlarken, isteğe bağlı parametreler için default değerler verebiliyorduk. C# bu türden bir seçenek sunmaz. Bunun yerine aynı adda farklı sayıda veya tipte parametreler alan metodlar tanımlayabiliriz. Bu işleme Metot Aşırı Yükleme (Method Overloading) denir. Aynı adda ama farklı imzada iki method aşırı yüklenmiştir denir. Bir durum için method adı çağrıldığında, parametre olarak verilen değer ve değişkenlerin tip ve sayısına göre uygun olan method otomatik olarak devreye girer. Constructor metotlar da neticede bir metot olduğundan aşırı yüklenebilirler.

12 Örnek 16: Daha önceden, marka sınıfının oluşturulabilmesi için boş bir yapıcı metot derleyici tarafından otomatik olarak ekleniyordu. Ancak artık biz kendimiz bir yapıcı metot ekledik. Halen Marka sınıfının hiçbir özelliği verilmeden de nesne türetiminde kullanılması isteniyorsa, ikinci bir constructor metodu boş olarak bile olsa tanımlanabilir. Aksi halde derleyici tarafından böyle bir metod otomatik olarak oluşturulamaz. public class Marka private int markakod; private string markaad; public Marka() // boş yapıcı metot public Marka(int markakod, string markaad) MarkaKod=markaKod; MarkaAd=markaAd; public int MarkaKod getreturn markakod; set if (value > 0) markakod = value; public string MarkaAd get return markaad; set markaad = value; public void MarkaBilgileriniYaz() Console.WriteLine("MarkaKodu:0 \t MarkaAdı:1", MarkaKod, MarkaAd); Static Kavramını Anlamak Mademki nesneleri, sınıflardan çoğaltarak kullanıyoruz, bu durumda her nesne için sınıfın içerisindeki her şeyi kopyalatmaya gerek var mıdır? Gereksiz şeyleri hafızada gereksiz yere çoğaltmasak da olur mu? Gibi soruları kendinize sormuş olabilirsiniz. Nesneye dayalı programlama, her şeyin illa da bir nesne üstünden erişilebilir olmasını zorunlu kılmaz. Bazı elemanlara sınıf üstünden erişilebilir. Mesela, markaların marka kodlarının belli bir değerin altında kalmaması gerekiyor diyelim. Bu türden bir parametrenin her bir sınıf ile çoğaltılması yerine sadece sınıfın bir parçası olarak kalması daha akıllıca olacaktır. Örnek 17: Marka sınıfına, minimum marka kodunu işaretlemek üzere static bir alan ekleyelim. public class Marka public static int minimummarkakod = 0; private int markakod; private string markaad; public Marka() // boş yapıcı metot

13 public Marka(int markakod, string markaad) MarkaKod=markaKod; MarkaAd=markaAd; public int MarkaKod getreturn markakod; set if (value > 0) markakod = value; public string MarkaAd get return markaad; set markaad = value; public void MarkaBilgileriniYaz() Console.WriteLine("MarkaKodu:0 \t MarkaAdı:1", MarkaKod, MarkaAd); Örneğimizde sadece bir değişkeni static olarak tanımlandık. Bir metodu, bir özelliği de static olarak tanımlamak mümkündür. Ancak unutulmaması gereken nokta, statik tanımlanan elemanlara nesne üstünden ulaşılamaz, doğrudan sınıf üstünden ulaşılabilir. using System; public class MerhabaCSharp public static void Main() Marka verivizyon = new Marka(); verivizyon.markakod=500; verivizyon.markaad="verivizyon"; verivizyon.markabilgileriniyaz(); Marka seckin = new Marka(); // kurala uymayan bir atamayı, // nesne kabul etmeyecektir seckin.markakod = 501; seckin.markaad = "Seçkin Yayın A.Ş."; Console.WriteLine("bir marka kodu 0 değerinden büyük olmalıdır", Marka.minimumMarkaKod); Şekil B.11: Static bir alana sınıf üstünden erişilmesi.

14 Şekil B.12: Static sınıf elemanları, nesnelerle birlikte çoğaltılmaz, sınıf üstünden erişilebilir. Dikkat: Static üyeler, nesneye erişemezler. Nesneler, statik üyelere erişebilirler. Elbette ne nesneye dayalı programlama, ne de C# bu kadarlık bir bilgi ile tam olarak kullanılamaz ancak burada verilenler, size sadece kitap içeriğini anlayabilecek seviyeye getirme amaçlıdır. Özetle Nesneye Dayalı Programlama Nesne yönelimli programlamanın temelini Class'lar oluşturur. Bir class, günlük anlamda bildiğimiz nesne'nin kodlanarak tanımlamasıdır. Nesnelerle çalışma teorisinin temelinde, içeriğinin nasıl çalıştığını bilmeden onu kullanabilme mantığı yatar. Araba, DVD Player gibi... nasıl yaptıklarını bilmeyiz ama ne yaptıklarını biliriz. 1. Bir class genel olarak şu yapıdan ibarettir (örnek için bölümün ilerleyen kısmında yer alan sınıflara bakabilirsiniz. ) Method'lar, property'ler veya değişkenler (field) içerebilir (bunların her birine member denir) Method, prosedürel programlamada bildiğimiz fonksiyon'un işlevini class'larda yerine getirir. Property prosedürel programlamada bildiğimiz değişken'in işlevini class'larda yerine getirir. Bu işlev için, değişken de kullanılabilir. Property'ler yazılabilir ve okunabilir olabilir. Sadece okunabilir veya sadece yazılabilir tanılanması mümkündür. Ancak değişkenleri okunabilir yapmak için, Method'lar yerine, property (özellik) adı verilen yarı method yarı değişken yapı kullanılabilir. Method'lar ve değişkenler, sadece sınıf içerisinden erişilebilir veya bütün sınıflardan yahutta bütün assemly'lerden erişilebilir olabilir veya erişilemez olarak kodlanabilir. Bunlar için, Public, Private, Internal, External... gibi deyimler (Erişim Tanımlayıcıları) kullanılır. Methodlar, ayı adda ama farklı girdi veya çıktı parametrede üst üste tanımlanabililir. (method overloading) Bu durumda, class'ın kullanımı aşamasında, çağrılış şekline en uygun method otomatik olarak algılanır ve devreye girer. 2. Class'lar yazıldıktan sonra, kütüphanelerde saklanırlar. MFC,.NET gibi belli bir geliştirme ortamı ile birlikte gelen kütüphanelere, temel kütüphane (base librarybase class) denir. Bu ve kullanıcı tarafından geliştirilmiş kütüphaneler, isim uzayı (namespace) denilen nokta notasyonlu yapılarla düzenlenir. Namespace kavramı, fiziksel değil mantıksal bir kavramdır. Yani, farklı dokümanlarda birbiri ile aynı seviyede class'lar olabilir. Düzenlenmiş Class'lara erişim, isim uzayından sonra sınıf adı gelecek şekilde bir notasyon ile sağlanır. (System.Data gibi) C# gibi dillerde, kütüphane sınıflarını, uygulamanın içerisindeymiş gibi doğrudan nesne adıyla çağırmak mümkündür. Ancak bunun için uygulamanın en başında, isim uzayları ve alt isim uzayları nokta notasyonu ile sınıf adına kadar veya belli bir

15 seviyeye kadar belirtilebilir. Geri kalanlar, (sınıf adı veya isim uzayının tamamı belirtilmedi ise, belirtilmeyen kısmı) kod içerisinde belirtilerek, sınıflara erişilebilir. (using System.Data gibi) 3. Class'lar yeni class'lar türetilirken şu şekilde kullanılarak kolaylıklar sağlarlar: Yeni bir class'ın çekirdeğini oluşturabilirler. (Implementation Inheritance) ve Bazı class'lar miras almaya karşı korumaya alınabilir (Sealed Class) Bazı class'lar miras alınmadan kullanılamaz tanımlanabilir (Abstract Class) Bazı class'lar, miras alındıktan sonra, methodlarını geçersiz kılacak aynı adda yeni bir metod tanımlanabilir (method overriding) Kendisinden türeyecek class'ların yapıları hakkında söz sahibi olabilirler (Interface Inheritance) 4. Class'lar Bir Uygulama geliştirirken, şu şekilde kolaylıklar sağlarlar: Bazı class elemanları, static deyimi ile tanımlanmamışlardır ve nüshalandırma (instantiating) ile yeni class nüshası çıkartılarak, kullanılırlar. ASP biliyorsanız veya yukarıdaki ASP'li örneğe bakarsanız, ADODB.Connection'ı düşünün. Hep nüshalandırarak kullanılır. Bazı methodlar ve propertiy'ler, değişkenler çoğaltılamaz olabilir (static) Bu tür method'lar kullanılırken, class'lar nüshalandırmaksızın, orijinal namespace ve sınıfın adı ile kullanılırlar. Yukarıdaki örnekte, Response.Write'i hatırlayın... hep aynı isim ile kullandık. Aşağıdaki örnekte, güvenlik işlemleri için geliştireceğimiz, MD5 ile özet alan Class da bu türdendir. Class'lar, ebebeynleri ile aynı türdenmiş gibi davranabilirler. Böylece, temelde aynı class'tan türetildikleri halde farklı türlerde olup aynı türmüş gibi davranan class'lar elde edilebilir. (Polimorfizm) 3n Katmanlı Mimari ve Sınıfların Rolü Üç-n Katman Mimarisi, özellikle nesneye dayalı programlama ile birlikte güç bulmuş, veritabanı programlamanın esas dinamiklerini oluşturan bir programlama eğilimi hatta trendidir. Bu nedenle, tam manasıyla bilinmesinde yarar vardır. Burada, Nesneye dayalı programlamada kullanılan teriminolojinin anlaşılır bir özetini yapmaya çalıştım. Geniş bilgi için, bu konuda bir kitap okumanızda yarar olabilir. Üç Katmanı Tasarlamak Üç katman mimarisinin en alt katmanını, buraya kadar öğrendiğimiz tekniklerle geliştirdiğimiz, Veri katmanı oluşturur. Veri katmanı ile temasta bulunan, uygulamanın en alt katmanına iş katmanı denir ve prensip olarak class'lardan oluşur. Class'lar, meseleye çok iyi vakıf kişiler tarafından tasarlanabilirler. Class'ları tasarlamak için geliştirilmiş standart yollar var. Bunlardan en genel olanı UML (Unified Modeling Language)'dir. Bu konuda yeni iseniz, nesneye dayalı bir dil ile kodlama işinin temellerini kavradıktan sonra UML ile de haşir neşir olmanız, yararlı olacaktır. Arkasından, genel olarak karşılaşılan sorunlara yaklaşım tarzları hakkında bilgi edinmek için Tasarım Desenleri (Design Pattern) öğrenmeniz, bu yoldaki son nokta olacaktır. Tasarım Deseni, sadece nesneye dayalı programlamaya uygulanmasa da, nesneye dayalı programlama için, bir çok tasarım desenini bir çok nesneye dayalı dilde bulmak mümkündür (C++, Java, C#). Bütün bu detayları, size bırakıp projemizin genel olarak, üç katmana dağılımını inceleyelim:

16 Tablo B.4: En üst katmanı oluştururan sunum katmanının görevi, iş katmanı ile kullanıcıyı etki-leştirmektir. Su-num katmanı doğrudan veritabanına erişmez! Bu işlemler için, iş katmanında geliştirilmiş Class'ları nüshalandırarak kullanabilir. Katman İşlevi Projemizde Yer Alacak Dosya- Bileşen Adları Sunum İş Veri Kullanıcı ile etkileşim, iş katmanında kodlanmış nesneleri nüshalandırıp kullanmak. Sunum ve Veritabanı katmanları ile etkileşim. İş kurallarının sağlanması Tablolar, Trigger'lar, Stored Procedure'ler, Constraintler ve diğer veritabanı bileşenleri ile kurgulanmış veri mantığının sağlanması Login.aspx, Login.aspx.cs KullaniciVT.cs Guvenlik.cs tblkullanici, SP$yetkilendir Buraya kadar öğrendiklerimiz çerçevesinde bir üç katman mimari yaklaşımı ile, daha önce, ASP-ADO ile gerçeklediğimiz örneğimizi yeniden ele alalım: Veri katmanını biliyoruz. tblkullanici adında bir tablomuz var. Bu tabloya erişip verilerin doğruluğunu onaylayan, SP$yetkilendir adında stored procedure kodladık, bu nedenle. Üç katman ile çalışırken, bilmemiz gereken şey, SP$yetkilendir'dir. Öteki kısımlar artık veri katmanında kalmıştır. Neticede, veri katmanı ile ilgili işlemleri bitirdiğimizi varsayabiliriz. İş Katmanını Tasarlamak Bir sonraki katman olan iş katmanını tasarlamaya geçelim. Bu iş için, nesneye dayalı programlamaya tam destek sağlayan, Managed C# dilini kullanacağız. Managed ve Unmanaged kavramları kafanızı karıştırabilir. Aralarında ufak bir fark vardır: Managed ortamda, sistemden hafıza gibi kaynak alma ve sisteme bu kaynağı, işi bittiğinde iade etme işini, çalıştırma ortamı yerine getirir. JVM ve.net Framework bu türden ortamlardır. Ama ortam, her zaman böyle olmayabilir. Şayet işletim sistemi ile kaynak alış-verişini programcının kendisi yürütüyorsa, (ki bu durumda programcıya çok fazla iş düşer ve sistemde daha fazla hata ihtimali vardır!) bu türden çalıştırma ortamına da Unmanaged ortam denir. C# bir dil olarak her iki ortamı da destekler. Ancak.NET ortamı, C#'ın bütün meziyetlerini gösterebileceği bir ortam değildir. Buna rağmen, biz.net ortamında çalışacağız. Veritabanına erişip kullanıcı ile ilgili işlemleri yerine getirecek bir sınıfa ihtiyacımız var. Bu sınıfa KullaniciVT adını verelim. Class adlarının ilk harfi büyük harfle başlatılır. Bu bir zorunluluk değildir ama töre olmuş bir kodlama tarzıdır. Şimdi ilk sınıfımızı kodlayalım: Bu sınıfın amacı, Web'den gelen verileri her seferinde özetlemek (Digest)tir. Bir üyemiz ilk kaydolduğunda, seçtiği şifresi veritabanımızda saklanmaz. Bunun yerine, özeti saklanır. Daha sonra, yetkilendirmek için geldiğinde de şifresinin özeti alınır. Böylelikle, her seferinde gelen veririn daha önceki veri olup olmadığı bilinir, ama en önemli tarafı, ne olduğu asla bilinemez. Çünkü özet alma ile şifreleme yapan, SHA, MD5 gibi algoritamalar, tek yönlü veri dönüşümünü esas alan, ters yönde bir dönüşüme asla müsaade etmeyen algoritmalardır. ///Guvenlik.cs using System; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; namespace Verivizyon.Bilesenler

17 public class Guvenlik public static string OzetCek(string gercekduzmetin) Byte[] gercekbytemetin = new UnicodeEncoding().GetBytes(gercekDuzMetin); Byte[] ozetbytemetin = ((HashAlgorithm) CryptoConfig.CreateFromName("MD5")).ComputeHash(gercekByteMetin); return BitConverter.ToString(ozetByteMetin); İpucu: C#'ta fonksiyon yoktur. Bunun yerine, class'ların method'larını kullanacağız. Ancak bir methodu, gerçek manada sabit bir fonksiyon gibi her yerde nüshalandırmadan kullanmak istiyorsanız, static deyimi ile tanımlayabilirsiniz. Takip eden sınıfları, aşağıdaki gibi kodlayalım ///dosya:kullanicivt.cs using System; using System.Configuration; using System.Data; using System.Data.SqlClient; namespace Verivizyon //KullaniciVT, kullanicilarla veritabani // arasinda iliskiyi kuran, //is mantigi saglayicisidir. public class KullaniciDetay public string kullaniciad; /*Kullanicida bulunan ozellikler *.. * */ public class YetkilendirmeBilgi /* * Yetkilendirilen kisiye ait, kullanici kodu, isim, soyad * son giris tarihi gibi bilgileri encapsulate etmede kullanilir. * */ public string kullanicikod; public string isim; public string songiristarih; public class KullaniciVT public KullaniciDetay KullanicininBilgileri(int kullanicikod)

18 /* kullanici bilgilerini veritabanindan cek * kullanicidetay class'indan bir nusha al * vertabanindan gelen verileri bu nushaya yukle * neticeyi, methodu cagirana dondur * */ KullaniciDetay KullaniciBilgileri= new KullaniciDetay(); return KullaniciBilgileri; public YetkilendirmeBilgi KullaniciYetkilendir(string kullaniciad, string sifre) // Bir adet connection ve bir adet command nesnesi olusturalim SqlConnection Conn = new SqlConnection(ConfigurationSettings.AppSettings["DSN"]); // DSN parametresi, web.config dosyasinda, // sekildeki gibi tutulmaktadir. SqlCommand Cmd = new SqlCommand("SP$yetkilendir", Conn); Cmd.CommandType = System.Data.CommandType.StoredProcedure; Cmd.Connection = Conn; Cmd.CommandType = System.Data.CommandType.StoredProcedure; Cmd.Connection = Conn; // Parameter Cmd.Parameters.Add(new System.Data.SqlDbType.Int, 4)); = System.Data.ParameterDirection.ReturnValue; // Parameter Cmd.Parameters.Add(new System.Data.SqlDbType.VarChar, 50)); = System.Data.ParameterDirection.Input; = kullaniciad; // Parameter Cmd.Parameters.Add(new System.Data.SqlDbType.VarChar, 50)); = System.Data.ParameterDirection.Input; = sifre; // Parameter Cmd.Parameters.Add(new System.Data.SqlDbType.Int, 4)); = System.Data.ParameterDirection.Output; // Parameter Cmd.Parameters.Add(new

19 System.Data.SqlDbType.VarChar, 12)); = System.Data.ParameterDirection.Output; // Parameter Cmd.Parameters.Add(new System.Data.SqlDbType.VarChar, 30)); = System.Data.ParameterDirection.Output; Conn.Open(); Cmd.ExecuteNonQuery(); string KullaniciKod= if (KullaniciKod=="0") Conn.Close(); return null; else YetkilendirmeBilgi YetkiBilgileri= new YetkilendirmeBilgi(); YetkiBilgileri.kullaniciKod = YetkiBilgileri.sonGirisTarih = Conn.Close(); return YetkiBilgileri; public string KullaniciEkle(KullaniciDetay yenikullanici) /* Kullanici bilgilerini yenikullanici nüshasindan al * Command nesnesine aktar * ifadeyi calistir. * neticesini cagrildigi yere dondur. * */ return null; KullaniciDetay ve YetkilendirmeBilgi sınıfları, veri kılıflaması (encapsulation) için kullanılmaktadır. Amaç, verilerin belli bir formatta bütün olarak aktarılabilmesini sağlamaktır. Bu amaç için, C#'ta struct tipi değişkenler de kullanılabilirdi ancak, biz class'larla bu işi gerçekleştirdik. İpucu: struct, küçük veri yapılarının aktarılmasında daha başarılıdır. Class ise referans bazlı çalıştığından, büyük verileri aktarırken tercih edilebilir bir kılıflama (encapsulation) yöntemidir.

20 Şekil B.13: Veritabanı erişimi ile ilgili ifadelerin, XML formatında uygulamanın konfigürasyon bilgilerini tutan web.config dosyasına eklenmesi KullaniciVT sınıfının birçok metodu yeralmakta. Çünkü, ele aldığımız örnekte, bütün işlemler bu sınıfa düşmekte. Ancak sınıfın sadece örnekte gerekli olan kısımlarını gerçekledik, diğer taraflarını basitliği korumak için gerçeklemedik. Bu metodlardan, KullaniciYetkilendir, dışarıdan aldığı iki parametreyi kullanarak, SP$yetkilendir stored procedure'üne erişip veri katmanı ile bilgileri kontrol edebilmektedir. Sonuçta, yetkilendirme işlemi olursa, YetkilendirmeBilgi sınıfından bir nüsha alınmakta ve bu nüshaya doldurulan veriler (encapsulation) çağrıldığı yere, gönderilmektedir. Yetkilendirme olmazsa, null değeri gönderilmektedir. Peki bu sınıf veritabanına hangi bağlantı ifadesini kullanarak erişmektedir? web.config dosyasına DSN adı ile bir bağlantı ifadesi şu şekilde eklenebilir: web.config' de yer alan bu bilgiler, aşağıdaki şekilde erişilip kullanılmaktadır. SqlConnection Conn = new SqlConnection(ConfigurationSettings.AppSettings["DSN"]); Ancak, bu ifadeleri kullanabilmek için, ilgili isimuzaylarını (namespace) yüklemeniz gerekir. Bu işten sorumlu içerik, using System.Configuration; deyimi ile, ilgili temel sınıfların (base class) bulunduğu kütüphaneyi projemizin parçası haline getirdik. Büyük uygulamalarda, iş katmanı, içerisinde yer verilen bütün sınıflar ve methodlarla kendi başına bir proje olarak ele alınır ve bir dll haline getirilerek kullanılır. Bütün iş katmanını içine alan bu yapıya, Application Framework (Uygulama Omurgası) adı verilir. Sunum Katmanını Tasarlamak Bu sınıfları gerçekledikten sonra, iş katmanındaki işlemlerimizi bitirmiş olduk. Sıra geldi, sunum katmanına. Sunum katmanında, bu iki dosyada yer alan sınıfları türetip kullanacağız. Bu türetme işleminin, bir önceki ASP örneğinde Connection nesnesini kullanmaktan bir farkı bulunmamakta. Büyük uygulamalarda, iş katmanı, içerisinde yer verilen bütün sınıflar ve methodlarla, namespace yardımıyla da düzenlenerek, kendi başına bir proje olarak ele alınır ve bir dll haline getirilerek kullanılır. Bütün iş katmanını içine alan bu yapıya, Application Framework (Uygulama Omurgası) adı verilir. Ardından, kullanıcıdan verileri alabilecek ve verilerinin doğru olup olmadığını ona aktarabilecek bir aspx dosyasını aşağıdaki şekilde tasarlayalım.

21 Şekil B.14: Yeni bir Form başlatıp adını, login.aspx olarak değiştirelim ve bir Label, iki Textbox ve bir adet de Button nesnesi ekleyelim. Page language="c#" Codebehind="login.aspx.cs" AutoEventWireup="false" Inherits="Verivizyon.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <!--dosya: login.aspx--> <HTML> <HEAD> <title>üye Giriş Sayfası</title> <meta name="generator" Content="Microsoft Visual Studio.NET 7.1"> <meta name="code_language" Content="C#"> <meta name="vs_defaultclientscript" content="javascript"> <meta name="vs_targetschema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body> <form id="form1" method="post" runat="server"> <asp:label id="lblsonuc" runat="server"> </asp:label><br> Kullanici Adiniz<asp:TextBox id="txtkullanici" runat="server"> </asp:textbox><br> Sifreniz <asp:textbox id="txtsifre" runat="server" TextMode="Password"></asp:TextBox> <asp:button id="btnsubmit" runat="server" Text="Giris"> </asp:button> </form> </body> </HTML> Codebehind dosyası, Visual Studio tarafından otomatik oluşturulmakta. Bizim tüm yapmamız gereken, butonu çift tıklamak ve içerisine şu kodları eklemek: // yetkilendirmeyi yapacak sinifi olusturalim Verivizyon.KullaniciVT kullanici = new KullaniciVT(); //yetkilendirme sonucunu encapsulate edecek sinifi //olusturalim Verivizyon.YetkilendirmeBilgi yetkilendirmebilgi= new YetkilendirmeBilgi(); //YetkilendirmeBilgi.KullaniciYetkilendir() metodunu // nasıl çağırdığımıza ve // Şifrenin nasıl özetinin çekildiğine dikkat edin... yetkilendirmebilgi = kullanici.kullaniciyetkilendir(txtkullanici.text, Verivizyon.Bilesenler.Guvenlik.OzetCek(TxtSifre.Text)); if(yetkilendirmebilgi!= null) LblSonuc.Text = "Merhaba <b>" + yetkilendirmebilgi.isim +

22 "</b> sitemize en son <b>" + yetkilendirmebilgi.songiristarih + "</b> tarihinde giris yaptiniz" ; Görüldüğü üzere, veritabanına doğrudan bir erişim yer almamaktadır. Sadece, bir alt katmanda oluşturulan sınıflar nüshalandırıldı (instantaiting) ve bu nesneler kullanıldı. Uygulama ilk başladığında, ilgili mesajı kullanıcılarımıza göstermek için, şu kodu da ekleyebiliriz: private void Page_Load(object sender, System.EventArgs e) if (!IsPostBack) LblSonuc.Text = "Lütfen Kullanici adi ve sifrenizi giriniz."; Şekil B.15: Projenin çalışan hali

«BM364» Veritabanı Uygulamaları

«BM364» Veritabanı Uygulamaları HAFTA 8 DB içerisinde CLR Bileşenleri" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli «BM364» Veritabanı Uygulamaları Konu Akışı SQL Server ve.net CLR SQL Server içerisinde

Detaylı

Karabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com WEB TEKNOLOJİLERİ

Karabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com WEB TEKNOLOJİLERİ WEB TEKNOLOJİLERİ VISUAL STUDIO DA YENİ BİR PROJE OLUŞTURMA Visual Studio (VS) programını çalıştırdığımızda karşımıza boş bir ekran gelir. Yeni bir proje oluştururken File>New>Project yolu kullanılarak

Detaylı

İNTERNET TABANLI PROGRAMLAMA

İNTERNET TABANLI PROGRAMLAMA İNTERNET TABANLI PROGRAMLAMA VISUAL STUDIO DA YENİ BİR PROJE OLUŞTURMA Visual Studio (VS) programını çalıştırdığımızda karşımıza boş bir ekran gelir. Yeni bir proje oluştururken File>New>Project yolu kullanılarak

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Tür Dönüşümü 1 Farklı türden değişkenlerin aynı ifade içinde işlem görmeleri için tür dönüşümü kullanılır. Tür dönüşümlerini aşağıdaki şekilde gruplara ayırmak mümkündür: Tür Dönüşümleri Bilinçli(explicit)

Detaylı

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1 Öğr. Gör. Serkan AKSU http://www.serkanaksu.net http://www.serkanaksu.net/ 1 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte

Detaylı

ASP.NET ile Bir Web Sitesi Oluşturma

ASP.NET ile Bir Web Sitesi Oluşturma 29,30 Eylül 2011 ASP.NET ile Bir Web Sitesi Oluşturma ASP.NET sitesi oluşturmak için File menüsündeki, New açılır listesindeki, Web Site komutuna tıklıyoruz Açılan pencereden C# içindeki ASP.NET Web Site

Detaylı

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.

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. 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. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

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

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance

Detaylı

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

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

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

Yazılım Kodlama ve İ simlendirme Standartları v1.0 Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.

Detaylı

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 ix 1 İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19 23 Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28 Kayan Nokta Tipleri 30 Sayısal Veri Tipi Dönüşümleri

Detaylı

public static int Toplam int x, int y

public static int Toplam int x, int y static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.

Detaylı

Ders 8: Metotlar. barisgokce.com

Ders 8: Metotlar. barisgokce.com Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı

Detaylı

MASTER PAGE SAYFASI KULLANIMI

MASTER PAGE SAYFASI KULLANIMI MASTER PAGE SAYFASI KULLANIMI Hazırladığımız Web sayfalarında sayfanın belli bölgelerinin sürekli sabit kalmasını istiyorsak ve bazı kısımlarının değişmesini istiyorsak Master Page Sayfası kullanırız.

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

İNTERNET TABANLI PROGRAMLAMA- 8.ders VERİTABANI İLE İLGİLİ BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME

İNTERNET TABANLI PROGRAMLAMA- 8.ders VERİTABANI İLE İLGİLİ BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME İNTERNET TABANLI PROGRAMLAMA- 8.ders VERİTABANI İLE İLGİLİ BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME Veritabanına kayıt işlemleri 4 farklı işlemden oluşur Bunlar Görüntüleme (SELECT), Kayıt

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME İŞLEMLERİNİN BİRLİKTE ANLATIMI

BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME İŞLEMLERİNİN BİRLİKTE ANLATIMI BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME İŞLEMLERİNİN BİRLİKTE ANLATIMI BİLGİLERİ KAYDETME YÖNTEMİ Kayıt işlemi yaparken 3 tane yöntem kullanılacaktır. Bu yöntemler Örnek içerisinde ayrı ayrı

Detaylı

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. ASP.NET DERS 1 Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. Gelen ekranda Visual C# seçildikten

Detaylı

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 KONU BAŞLIKLARI 1. Yazılım Mimarisi nedir? 2. Yazılımda Karmaşıklık 3. Üç Katmanlı Mimari nedir? 4. Üç Katmanlı Mimari

Detaylı

İNTERNET TABANLI PROGRAMLAMA- 11.ders FORM UYGULAMASI (DROPDOWN BİLGİ YÜKLEME, VALIDATION KONTROLLERI, PAREMETRELİ KAYIT YAPMA)

İNTERNET TABANLI PROGRAMLAMA- 11.ders FORM UYGULAMASI (DROPDOWN BİLGİ YÜKLEME, VALIDATION KONTROLLERI, PAREMETRELİ KAYIT YAPMA) İNTERNET TABANLI PROGRAMLAMA- 11.ders FORM UYGULAMASI (DROPDOWN BİLGİ YÜKLEME, VALIDATION KONTROLLERI, PAREMETRELİ KAYIT YAPMA)

Detaylı

PROGRAMLAMA DERSİ 1. İNTERNET

PROGRAMLAMA DERSİ 1. İNTERNET PROGRAMLAMA DERSİ 1. İNTERNET İnternet sunucu-istemci modeline göre çalışır. Fiziksel olarak bu sistem genelde isteği yapan bir bilgisayar (kullanıcı-client) ve bu isteği karşılayan özel bir bilgisayar

Detaylı

Klavyeden Basit Giriş/Çıkış İşlemleri

Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden veri girilmesi, girilen verilere çeşitli işlemler uygulandıktan sonra ekrana yazdırılması ya da herhangi bir yazıcıdan çıktı alınması gibi işlemlerdir. Javada

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

2007-2008 Bahar. BM 211 Programlama Dilleri 3 1

2007-2008 Bahar. BM 211 Programlama Dilleri 3 1 Programlama Dilleri III 2007-2008 Bahar BM 211 Programlama Dilleri 3 1 Ders Hakkında Ders Sorumlusu Öğr.Gör. Bora UĞURLU Ders Slaytları İçin http://members.comu.edu.tr/boraugurlu/ Dersle İlgili İletişim

Detaylı

GridView ve DetailsView kullanarak kayıt düzenlemek

GridView ve DetailsView kullanarak kayıt düzenlemek GridView ve DetailsView kullanarak kayıt düzenlemek Bir önceki yazımda teorik olarak bu iki kontrole ait eventlerden söz etmiştim. Şimdi uygulama yapma zamanı. Bunun için daha önceki yazılarımıza devam

Detaylı

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6 ix Yazılım Nedir? 2 Yazılımın Tarihçesi 3 Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5 Yazılımın Önemi 6 Yazılımcı (Programcı) Kimdir? 8 Yazılımcı Olmak 9 Adım Adım Yazılımcılık 9 Uzman

Detaylı

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

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama İçerik Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili kavramlar Bu hafta:

Detaylı

Ders 8 Konu Özeti ve Problemler

Ders 8 Konu Özeti ve Problemler Ders 8 Konu Özeti ve Problemler C# ve Nesne Yönelimli Programlamanın 3 Prensibi Kapsülleme (Encapsulation) Nesne yönelimli programlamanın ilk prensibi kapsülleme (encapsulation) olarak adlandırılır. Bu

Detaylı

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

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts

Detaylı

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Temel Kavramlar BBS-515 Nesneye Yönelik Programlama Ders #2 (2 Kasım 2009) İçerikç Geçen hafta: Nesneye yönelik programlama Ne demektir, nasıl ortaya çıkmıştır? Nesneye yönelik dil olarak JAVA ve ilişkili

Detaylı

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Algoritma ve Programlama: Karar Yapıları ve Döngüler Algoritma ve Programlama: Karar Yapıları ve Döngüler Bir algoritma, herhangi bir programlama dili (C, C++, Pascal, Visual Basic, Java gibi) ile kodlandığında program haline gelir. Algoritmada yer alan

Detaylı

İNTERNET TABANLI PROGRAMLAMA- 9.ders BİLGİLERİN GRIDVIEW İÇERİSİNDE EKLENMESİ, DÜZENLENMESİ VE SİLİNMESİ

İNTERNET TABANLI PROGRAMLAMA- 9.ders BİLGİLERİN GRIDVIEW İÇERİSİNDE EKLENMESİ, DÜZENLENMESİ VE SİLİNMESİ İNTERNET TABANLI PROGRAMLAMA- 9.ders BİLGİLERİN GRIDVIEW İÇERİSİNDE EKLENMESİ, DÜZENLENMESİ VE SİLİNMESİ ÖRNEK 1 default.aspx

Detaylı

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

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

JAVASCRIPT JAVASCRIPT DİLİ

JAVASCRIPT JAVASCRIPT DİLİ JAVASCRIPT JAVASCRIPT DİLİ Netscape Navigator 2.0 ile birlikte geliştirilen JavaScript dili istemci taraflı (client-side) script dilidir. Web sayfalarında dinamik içerik sağlamak ya da kullanıcıyla iletişim

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı Öğr. Gör. Cansu AYVAZ GÜVEN NESNE TABANLI PROGRAMLAMA Java Değişkenler ve Veri Tipleri Operatörler JAVA Java Java SUN bilgisayar şirketince

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

Temel Giriş/Çıkış Fonksiyonları

Temel Giriş/Çıkış Fonksiyonları Temel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden

Detaylı

Bilgisayarda Programlama. Temel Kavramlar

Bilgisayarda Programlama. Temel Kavramlar Bilgisayarda Programlama Temel Kavramlar KAVRAMLAR Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarın anlayabileceği bir biçime dönüştürülmesi / ifade edilmesidir. Bunu

Detaylı

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

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 1 Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2 Eclipse Mimarisi 4 Java Teknolojisine Genel Bir Bakış 6 Taşınabilirlik 6 Java Derleyicisi ve Bytecode 6 Java Sanal Makinası (Java Virtual Machine - JVM)

Detaylı

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi Nedir? olmadan Login.aspx Bilgilerinizi giriniz Durum Yönetimi İle Login.aspx Bilgilerinizi giriniz Adınız Adınız Pınar Pınar Soyadınız Soyadınız Onay Durdu Onay Durdu Gönder Gönder ASP.NET - 1 sayfa.aspx

Detaylı

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders02/ 1 Değişkenler, Sabitler ve Operatörler Değişkenler (variables) bellekte bilginin saklandığı gözlere verilen simgesel isimlerdir. Sabitler (constants)

Detaylı

GÖRSEL PROGRAMLAMA - I 2013-2014

GÖRSEL PROGRAMLAMA - I 2013-2014 GÖRSEL PROGRAMLAMA - I 2013-2014 Ders Hakkında Ders Sorumlusu Öğr.Gör. Ekrem Eşref KILINÇ Dersle İlgili İletişim İçin ekremesrefkilinc@gmail.com Neler Öğreneceğiz? Nesneye yönelik programla nedir? (Metot

Detaylı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

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

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1 Görsel Programlama DERS 02 Görsel Programlama - Ders02/ 1 Kodun Tekrar Kullanımı ve Kalıtım(Inheritance) Nesneye yönelik programlamanın diğer programlama paradigmalarına karşı bir avantajı kodun yeniden

Detaylı

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

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();

Detaylı

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ Asp.NET mimarisinin temelini oluşturan CLASS yapısını kullanarak veri tabanı işlemlerini nasıl daha az kodla ve daha stabil yapabiliriz bunu göreceğiz. Mevzu

Detaylı

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1 BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1 Kaynaklar: Sefer Algan, Her Yönüyle C#, 6. Baskı, Pusula Yayıncılık. www.sharpnedir.com 1. DÜZEYLERİNE GÖRE BİLGİSAYAR DİLLERİ Script Dilleri Yüksek Düzeyli Diller

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

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

enum bolumler{elektronik, insaat, bilgisayar, makine, gida}; BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı

Detaylı

YZM 2105 Nesneye Yönelik Programlama

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

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

SINIF İÇİ UYGULAMA KODLARI

SINIF İÇİ UYGULAMA KODLARI SINIF İÇİ UYGULAMA KODLARI ARABA HAREKET ETTİRME using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

Detaylı

İNTERNET TABANLI PROGRAMLAMA- 10.ders GRIDVIEW İÇERİSİNDE YENİ KAYIT EKLEME, FOTOGRAF LİSTELEME, SIRALAMA YAPMA VE DROPDOWN EKLEME

İNTERNET TABANLI PROGRAMLAMA- 10.ders GRIDVIEW İÇERİSİNDE YENİ KAYIT EKLEME, FOTOGRAF LİSTELEME, SIRALAMA YAPMA VE DROPDOWN EKLEME İNTERNET TABANLI PROGRAMLAMA- 10.ders GRIDVIEW İÇERİSİNDE YENİ KAYIT EKLEME, FOTOGRAF LİSTELEME, SIRALAMA YAPMA VE DROPDOWN EKLEME Default.aspx

Detaylı

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri 49 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Çalıştırılabilir C ifadeleri ya bir işlem gerçekleştirir ( girilen verilerin toplanması

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

«BM364» Veritabanı Uygulamaları

«BM364» Veritabanı Uygulamaları HAFTA 6 T-SQL ile Programlar Yazmak" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli «BM364» Veritabanı Uygulamaları Konu Akışı Programlama dili olarak T-SQL Fonksiyonlar Programlamak

Detaylı

İÇİNDEKİLER İÇİNDEKİLER KODLAB

İÇİNDEKİLER İÇİNDEKİLER KODLAB İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx

Durum Yönetimi. Olan sayfalar ekleyelim. BasitSayac.aspx Durum Yönetimi Bu gün dersimizde durum yönetimine (state management) değineceğiz. Önce adı DurumYonetimi isimli yeni bir site oluşturalım. Burada programın otomatik olarak oluşturacağı Default.aspx dosyasını

Detaylı

Program AkıĢ Kontrol Yapıları

Program AkıĢ Kontrol Yapıları C PROGRAMLAMA Program AkıĢ Kontrol Yapıları Normal Ģartlarda C dilinde bir programın çalıģması, komutların yukarıdan aģağıya doğru ve sırasıyla iģletilmesiyle gerçekleģtirilir. Ancak bazen problemin çözümü,

Detaylı

REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası:

REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası: REQUEST QUERY STRING Kullanıcıdan gelen düzenlenmiş verileri sunucuya iletir. Diğer bir ifade ile internet tarayıcısından sunucuya veri aktarır. Aynı işlemi farklı yollarla yapabiliriz. İlk olarak Redirect

Detaylı

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

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void

Detaylı

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

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM 2014) //Class (Sınıf) // Sınıf (class) soyut veri tipidir. // Nesne (object) sınıfın somutlaşan bir cismidir. // static : nesnesi oluşturulmaz.

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları Veri yapısı, bilginin anlamlı sırada bellekte veya disk, çubuk bellek gibi saklama birimlerinde tutulması veya saklanması şeklini gösterir. Bilgisayar

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

// hataları işaret eden referans

// hataları işaret eden referans System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin

Detaylı

C PROGRAMLAMA DİLİNE GİRİŞ

C PROGRAMLAMA DİLİNE GİRİŞ C PROGRAMLAMA DİLİNE GİRİŞ C Dilinin Tarihçesi 1972 de Dennis Ritchie tarafından AT&T Bell Laboratuarlarında B dilinden geliştirildi. C dili konusundaki ilk kitap 1978 de Dennis Ritchie ve Brain Kernighan

Detaylı

Dinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon

Dinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon Dinamik Kodlama Ürün Grubu Kategori Versiyon Önkoşulu [X] Fusion@6 [X] Yeni Fonksiyon @6 Uygulama @6 Serisi ürünlerde, kullanıcı arabirimlerinin her yerine eklenen dinamik kodlama özelliği ile, programın

Detaylı

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com

C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com C# Eğitimi-1 (Giriş) Melih Hilmi Uludağ www.melihhilmiuludag.com Nesne Yönelimli Programlama Nesne Yönelimli Programlama, 1990 lı yıllarda başlayan ve günümüzde de yoğun olarak kullanılan bir programlama

Detaylı

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ hakanyilmaz@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 İçindekiler QUERYSTRING KOLEKSIYONU... 3 FORM

Detaylı

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

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Ders İçeriği An introduction to Object-oriented programming with Java Third Edition Update Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Nesneye Yönelik Öğr.

Detaylı

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon

Detaylı

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

Ders 4: Diziler (Arrays( Arrays) barisgokce.com Ders 4: Diziler (Arrays( Arrays) Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Diziler Aynı tipteki bir veri gurubunun bir değişken içinde saklanmasıdır. Veriler Hafızada

Detaylı

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute  IActionFilter MVC Kullanıcı Doğrulama ve Yetkilendirme MVC projesinde kullanıcıların oturum açmasının sağlanması ve sadece yetkili oldukları action metotlara erişebilmelerini anlatan bir örnek uygulama gerçekleştirilecektir.

Detaylı

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir: Programın Akışının Denetimi Bir program komutların yazıldığı sırada akar. Ama çoğunlukla, bu akışı yönlendirmek gerekir. Bu iş için denetim yapılarını kullanırız. Bunlar iki gruba ayrılabilir: Yönlendiriciler

Detaylı

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 Bölüm 11 Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli

Detaylı

C#.NET ile PROGRAMLAMAYA GİRİŞ

C#.NET ile PROGRAMLAMAYA GİRİŞ C#.NET ile Neden C#.NET programlama dili? C, Java ailesinden bir programlama dilidir Platformdan (işletim sistemi-makine) bağımsız yazılım geliştirme Nesne tabanlı (OOP Object Orianted Programming) Consol,

Detaylı

int faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); }

int faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); } FONKSİYONLAR Fonksiyon, programcı tarafından seçilen bir kod bloğuna isim vermek için kullanılan araçtır. Fonksiyon ismi program içerisinde çağrıldığında fonksiyonun temsil ettiği kod çalıştırılır. Örneğin

Detaylı

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu ASP.NET TEMELLERİ Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu İnternet Nasıl Çalışır? Sunucu istemci modeline göre çalışır. Fiziksel olarak bu sistem genelde isteği yapan

Detaylı

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No.

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No. Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013 Ad, Soyad Öğrenci No. : : Öğretim Üyesi: Doç. Dr. Zeki BAYRAM Süre: 100 dakika Talimatlar:

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama Servlet Üst Düzey Programlama-ders01/ 1 Servlet Nedir? Web sayfaları ilk başlarda durağan bir yapıya sahipti ve kullanıcıdan bilgi alarak işlemler yapmıyordu. Zamanın geçmesiyle kullanıcıya

Detaylı

PASCAL PROGRAMLAMA DİLİ YAPISI

PASCAL PROGRAMLAMA DİLİ YAPISI BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama

Detaylı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA 6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı

Detaylı

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. DAO İLE SQL KOMUTLARI Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. SQL-1 SELECT En basit SQL cümleciği oluşturmak için SELECT sözcüğü

Detaylı

«BM364» Veritabanı Uygulamaları

«BM364» Veritabanı Uygulamaları HAFTA 9 İstemci Tarafta DB Erişimi Kodlamak" Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli «BM364» Veritabanı Uygulamaları Konu Akışı ADO.NET Bileşenleri Entity FrameWork

Detaylı

C Konsol Giriş Çıkış Fonksiyonları

C Konsol Giriş Çıkış Fonksiyonları C Konsol Giriş Çıkış Fonksiyonları Öğr. Gör. M. Ozan AKI Rev 1.0 Stringlerde Özel Karakterler \n : Bir sonraki satırın ilk sütununa git \b : Backspace (önceki karakteri sil) \a : Bip sesi \\ : Ters bölü

Detaylı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

1-) Veritabanımıza bağlanmak için bir SqlConnection nesnesi, 2-) Veritabanındaki bilgileri kullanmak (seçme, kaydetme, silme, güncelleme) için

1-) Veritabanımıza bağlanmak için bir SqlConnection nesnesi, 2-) Veritabanındaki bilgileri kullanmak (seçme, kaydetme, silme, güncelleme) için Selçuk ÖZKAN 1-) Veritabanımıza bağlanmak için bir SqlConnection nesnesi, 2-) Veritabanındaki bilgileri kullanmak (seçme, kaydetme, silme, güncelleme) için SqlCommand 3-) SqlCommand ın yapacağı işlem için

Detaylı

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır: C VERİ TÜRLERİ BASİT VERİ TÜRLERİ Değişkenler, program içinde üzerinde işlem yapılan, veri saklanan ve durumlarına göre programın akışı sağlanan nesnelerdir. C de bir değişken kullanılmadan önce tanımlanmalıdır.

Detaylı

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. PROGRAMLAMAYA GİRİŞ Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. C de yazılan bir programın çalışması için çoğunlukla aşağıdaki

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

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

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1 İsimler ve Kapsam Tanım: Bir değişkenin kapsamı (scope) değişkenin görülebilir olduğu komutların alanıdır. Görülebilir olduğu alan, bir komut içinde belirlenen değerle kullanılabildiği alandır. Tanım:

Detaylı

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır. DOSYALAMALAR Programlama bilgilerin her zaman ekrana yazdırılması veya değişkenlerde tutulması yeterli olmayabilir. Programın çalışması sonucu girilen yada hesaplanan her bilgi manyetik ortama programda

Detaylı

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add

Masa üstünde vt34.mdb dosyası var, onu projemize eklemek için, App_Data ya sağ tıkla Add Existing Item vt34.mdb adlı dosyayı seç Add 29 Aralık 2011 / Perşembe Visual studio dan veri tabanından veri çekmek için önce bir aspx dosyası açıp,,accessde yeni veri tabanı dosyası açıyoruz. Dikkat : Dosyanın uzantısı.mdb olacak. Masa üstünde

Detaylı

RSA ANAHTAR DAĞITIMI VE RSA İLE DİJİTAL İMZA OLUŞTURMA

RSA ANAHTAR DAĞITIMI VE RSA İLE DİJİTAL İMZA OLUŞTURMA RSA ANAHTAR DAĞITIMI VE RSA İLE DİJİTAL İMZA OLUŞTURMA İlk defa 1977 yılında Ron Rivest, Adi Shamir ve Leonard Adleman tarafından oluşturulan RSA algoritması geliştiricilerinin soyisimlerinin ilk harfleriyle

Detaylı