Bu Blogda Ara

24 Aralık 2010 Cuma

Yeni Başlayanlar İçin..

Temel Ata Sınıf .NET ile çalışmak ileri seviye nesne tabanlı programlama bilgisini zorunlu kılar..NET kapsamında kullanılan herşeyin ata sınıfı System.Object sınıfıdır. Klasik programlama dillerinde kullanılan temel tiplerde dahil olmak üzere tipler,değerler,değişkenler,diziler,sabitler, vb.
System.Object sınıfını ata sınıf olarak kabul eder. Bu kapsamda örnek verecek olursam eğer ;
string yazi=12.ToString();
int i = "Deneme".Lenght;
double [] dizi = new double [3]{1.1,1.2,1.3};
int diziBoyutu=dizi.Lenght;
 Değersizlik,daha önce işaretçi tip işlemlerinde sık kullanılan null,nothing veya nil olarak ifade edilen kavramdır. Değersizlik,değişken içeriğinin boş olduğunu ,değişken n herhangi bir değer ieçermediğini belirtmektedir. Diziler Diziler,tipleri birebir aynı olan ve içeriklerine göre sayısal bir index aracılığıyla ulaşılabilen değişkenler listesi olarak tanımlanabilir.Diziler tek boyutlu veya çok boyutlu olabilirler.
int[] dizi1=new int[5];
int[] dizi2={1,2,3,4,5};
int[,] dizi3=new int[2,2];
int[,] dizi4={ {1,2},{3,4} };
int[,,] dizi5 = new int[5,3,5];
Örnek Uygulama yaparsak ;
using System;
using System.Collections.Generic;
using System.Text;
namespace dizi
{
class Program
{
static void Main(string[] args)
{
int[] dizi1=new int[5];
for (int i = 0; i < dizi1.Length; i++)
dizi1[i] = i * i;
for (int i = 0; i < dizi1.Length; i++)
Console.WriteLine("dizi1[{0}]={1}", i, dizi1[i]);
Console.ReadLine();
}
}
}
Bu kodları çalıştırdığımızda ekran görüntüsü şu şekilde olacaktır;
dizi1[0]=0
dizi1[1]=1
dizi1[2]=4
dizi1[3]=9
dizi1[4]=16

Derleme İşlemi Nedir ?

Derlemeyi ( Compile ),kullanıcı okunabilir kodunun (kaynak kodunun) makina okunabilir koda çevrimi olarakta tanımlayabiliriz.Kavramın 
dönüştürme (Conversion) olarak ifade edilmemesindeki temel sebep,işlem sırasında dönüştürme dışında bazı adımlarında gerçekleşiyor olmasından
kaynaklanmaktadır.

Derleme işlemi aşağıdaki adımlardan oluşmaktadır.

1-Sözcüksel analiz :
Kaynak kod içerisindeki en küçük parçaların (sayısal değerler,metin değerler,vb.) analizinin yapılmasıdır.
2-Sözcük dizim analizi:
Belirlenen sözcüklerin söz dizim kuralları kapsamında kontrol edilmesi
3-Anlam analizi:
Sözcük dizim hataları dışındaki hataların kontrol edilmesi
4-Ara kod oluşturma:
Geçici kod üretme
5-Optimizasyon:
Üretilen kodun optimize edilmesi
6-Çalıştırılabilir kod oluşturma:
Optimize edilmiş geçici koddan çalıştırılabilir kodun üretilmesi

Yukarıda listelenen adımlar tüm derleyiciler için geçerlidir ve kod üretimi bütün adımların başarıyla tamamlanması sonucu yapılmaktadır. ( Kod yazmak ne kadar zor bir
işmiş değil mi:)) )

Derleme işleminde yapılan ilk 3 adım tüm derleyiceler için aynı niteliktedir.Bu adımların temel işlevi kaynak kod içerisinde gerek diziliş gerek mantıksal hataları
yakalamak ve sonraki adımlarda işlenen kaynak kodun hatasız olduğunu garanti altına almaktadır.

Ara kod olarak ifade edilen ve kaynak kod ile hedeflenen çalıştırılabilir kod arasında bulunan yapı Ara Dil Kodu -IL Kod olarak tanımlanmaktadır.Kod üretiminde kullanı-
lan dil,farklı derleyiciler için mantıksal düzeyde aynı olmasına rağmen,şekilsel olarak farklı üretilmektedir.

Bir derleyicinin zeka ve değerini belirleyen en önemli unsur üretilen ara kodun optimizasyon düzeyidir.Optimizasyon işlemi,nihai çalıştırılabilen kodun kalitesini
de birebir belirleyen ödemli adımlardandır.Bu adımda rol oynayan en büyük etken,çalıştırılabilen kodun hedeflediği platform ve işletim sistemi özellik ve
nitelikleridir.

Dolayısıyla optimizasyon işlemine başlamadan önce platform bilgisinin belirlenmiş olması en kritik değerlerden birisidir.

Demek ki neymiş?:) 
Porgram yazıcaksan,kodlama yapacaksan kullandığın işletim sistemini çok iyi bilecekmişsin dimi ...:)

Tamamlanan optimizasyon adımı ardından derleyicinin son görevi optimize edilmiş IL kodun çalıştırılabilir koda çevrimidir.Böylece,kullanıcı okunabilir kaynak
kodun makina okunabilir koda derlenmesi tamamlanmış olmakta ve üretilen kod hedeflenen platform üzerinde çalışabilmektedir...

19 Ekim 2010 Salı

Değişkenler,İşleçler ve Deyimler

İfadeler:


İfade(staement),eylem geliştiren komutur.C#'ta ifadeler sözdizimi kurallarına uygun olmak zorundadır.Bu kurallardan en önemlisi ve olmazsa olması her ifadenin bir noktalı virgülle bitmek zorunda olmasıdır.Yoksa derleyici bunu anlayamaz.Mesala sonunda noktalı virgül olmasaydı aşağıdaki ifadeyi derleyici derleyemezdi;

Console.WriteLine("Merhaba");

Püf nokta şudur:Önce sözdizimi ve anlambilimini iyi öğrenmek ve daha sonra dili doğal ve deyimsel bir şekilde kullanmaktır.


Tanımlayıcılar:

Tanımlayıcılar(identifiers),program yazarken ad alanları,değişkenler ve yöntemler öğeleri tanımlamak için kullanılmaktadir.Yine bu bağlamda sözdizimi kurallarına uymk zorundasınız;

1-Yalnızca harf(büyük ve küçük),rakam ve alt çizgi karakterlerini kullanabilirsiniz
2-Tanımlayıcı,bir harf ile başlamak zorundadır.

Not:C# büyükküç harfe duyarlıdır.Örneğin kitapKaydet ile KitapKaydet yada kitapkaydet aynı şeyler değildir.

Anahtar Sözcükler

C#,77 adet tanımlayıcıyı kendisi kullanmak için ayırmıtır ve bunları kendi amaçlarınız için yeniden kullanmanıza izin vermez.

abstractdoinprotectedtrue
asdoubleintpublictry
baseelseinterfacereadonlytypeof
boolenuminternalrefuint


vs....


Değişkenler

Değişken(variable),program yazarken vermiş olduğunuz değeri saklayan,tutan bir depolama birimidir.Bilgisayarınızın içinde veriş olduğunuz değeri geçici olarak tutan bir oda gibi düşünün.Her tanımladığınız değişken için benzersiz bir ad kullanmak zorundasınızdır.Değişkenleri tuttkları değere göre adlandırmaısınız ve böylelikle okunabilirlik ve anlama daha kolay olacaktır.Çünkü o kadar çok değişken tanımlayacaksınız ki hangi değişken ne işe yarıyor hemen anlayabilmeniz gerekmektedir.Örneğin bir işletmenin maliyet değerini tutan bir değişkenin adı Maliyet olmalıdır.

Değişkenleri Adlandırmak

1-Tanımlayıcılarda altçizgi kullanmayın.
2-Yanlızca küçük-büyük harf farkına bağlı olarak değişken ouşturmayın.Örneğin Sayi ile sayi farklı değişkenlerdir evet,fakat karışıklığa sebebiyet vereilirler.
3-Adı küçük harfle başlatın.
4-Birden fazla kelimeden oluşan değişkenlerde,ilk kelimeden sonra gelen kelimenin baş harfini büyük yapın.Örneğin;
kdvTutarHesapla
5-Macar notasyonu kullanmayın.Bilmiyorsanızda dert etmeyin :))

17 Ekim 2010 Pazar

Yazılım Geliştirme Teknikleri




Bir sistemin analizi yada yeni bir yazılım yaratımı müşteriden gelen talep ile olur. Müşteri yazılımcıya ihtiyaçlarını ifade eder ve yazılımcı talebe tam olarak cevap verebilecek yazılımın algoritmasını oluşturur.



İhtiyaçların belirlemesinde sorulabilecek sorular:

Problemin kapsamı:
· Yazılım ne için?
· Yazılıma neden ihtiyaç duyulmuştur?
İhtiyaçlar:
· Düşünülen kullanıcı tipi kimlerdir?
· Sistem neler yapabilmelidir?
· Ara yüze konulacaklar?
Uygulama kontexti:
· Düşünülen donanım nedir?
· Düşünülen işletim sistemi nedir?
Kabullenişler:
· Hangi kabullenişler sistemin tasarlandığı şekilde çalışmasını sağlar?
· Performans
· Yanıt süresi,
· Hafıza ve disk yeri talebi,
· Cpu talebi nelerdir?




Prosedüre yönelik Analiz nedir?

Prosedüre yönelimli analiz sistemi etkileşimdeki prosürlerle datayı ayrı olarak düşünür. Örneğin C dilinde datalar Structure’lara function’larda prosedürlere denk gelir.
Burada data dictionary kayıtlı olan prosedürlerin kullandığı bilginin tanımlarını içerir. Bu yaklaşım programcıyı , sistem bileşenlerini , bileşenler arasındaki ilişkileri ve nasıl bileşenlerle sistemin tasarlanıp işleneceği konusundan uzaklaştırır. Bu analiz tipinde prosedürlerden gelen tüm bilgi tek bir mantıksal analiz dökumanı içerisinde saklanır.

Nesneye yönelimli analiz nedir?

Bu sorunun cevabını verebilmek için ilk önce nesnenin ne demek olduğuna bir göz atalım. Geleneksel olarak programcılıkta bilgi ve kod bir birinden ayrı tutulur fakat nesneye yönelimli programlamada data ve tek bir görünür nesne haline gelmiştir. Bu şekilde data ve kod paketleri halindeki nesneler birbirleriyle mesajlar aracılığıyla iletişim kurarlar. Bir nesnenin yapabileceği her şey bu mesaj ara yüzleriyle temsil edilir böylece bir nesneyi kullanmak için içinde neler olduğunu bilmek zorunda kalmayız bu bize daha sonra nesneler üzerinde yapabileceğimiz değişiklikler açısından esneklik sağlar. Bu şekilde nesnelere sadece mesajlar üzerinden erişim sağlayarak bir tür data gizliliği sağlanır buna kapsülleme (encapsulation) denir.

Tüm bu yapılanların amacı yazılımı en kolay şekilde nasıl tekrar yazabileceğimiz sorusana cevap vermektir. Unutmamak gerekir ki “yazılım yazılmaz yeniden yazılır(Software is not written , its rewritten)”. Nesneye yönelimli programlamada amaç programı küçük sınıflara ayırarak sistemin esnekliğini artırmak buna bağlı tekrar yazma gibi durumları ortadan kaldırarak yazılım geliştirme sürecine en aza indirmektir ve dolasıyla masrafları düşürmektir.

Nesneye yönelik programlamada anlamamız gereken bir başka konuda sınıflardır. Kısaca söylemek gerekirse nesneler sınıfların tekil birer örnekleridir. Bu ne demektir? Bir örnekle konuya açıklık getirelim mesela elimizde bir ev sınıfı olsun bizde ev sınıfından pencere diye bir nesne çağıralım. Pencere bir ev sınıfı nesnesi örneğidir, ev sınıfı bu nesnenin yapabileceği işleri ve kendisini tanımlar. Bir sınıf birden fazla nesne üretebilir ve ev sınıfı nesnelerinin anlayabileceği mesajlar üretir. Bu tip sınıflardan nesne örnekleri yaratma olayına nesneye yönelik programlamada”Factory” denir. Nesnelerin gönderdikleri mesajlar içindeki kodlara verilen addır ve bu mesajlarla genelde argumanlarda yollanır bunlar genelde nesnenin neyi,ne zaman ne kadar yapacağı gibi sorulardır. Örnek olarak bir temizle mesajı “hangi pencere” veya “ne zaman” sorularının cevaplarıyla gelebilir.

Nesneye yönelik programlamada yaratmamış olduğumuz sınıfları daha spesifik alt sınıflara ayırabiliriz. Bunlara alt sınıflar(sub classes) denir, alt sınıflar yaratılığı atasına (parent class) ait tüm var olan mesajları ve davranışları da alır bu olaya miras (İnheritance) denir. Yani daha üst sınıflara ait mesajlar yeniden(reuse) kullanılabilir ve kendi alt sınıfımıza ait spesifik yeni mesajlar yaratabiliriz. Mesela ev sınıfımızdan bir oda alt sınıfı yaratalım ev sınıfından kalma bir evde “renk” mesajı oda sınıfında kullanılabilir veya oda için “yatak” gibi bir yeni mesaj tanımlayabiliriz.

Piyasada nesne yönelimli bir çok programlama dili vardır özellikle bu sayı her gün artan yeni internet yazılım geliştirme ortamıyla büyük bir artış göstermiştir. Ancak eskiden beri gelmiş kabul gören ve çok kullanılan üç programla dili vardır.

· C++: C’nin Object oriented versiyonudur.


· Java: Sun microsystems’in geliştirmiş olduğu bu dilin İBM, Microsoft, Symantec gibi versiyonlarıda bulıunmaktadır. Bu dilin çok tutulmasının nedeni internet ve internet uygulamalarında ve web browserlarla son derce uyumlu ve güvenilir olarak çalışabilir olmasıdır.

· Smalltalk: Tam standardı oturmamıştır bu yüzden üç ayrı ticari sürümü vardır.
VisualWorks ParcPlace-Digitalk, Inc.
Smalltalk/V and Visual Smalltalk f ParcPlace-Digitalk Inc.
VisualAge IBM



Nesneye yönelimli analiz bir nesneye yönelimli sistem analiz tekniğidir. Birbiriyle iletişimde olan nesnelerin esas karakteristiğini ortaya koymada etkili bir tekniktir. Temel kavramları sistem bilgisinin biçimsel tanımı ve davranış biçimi modellemedir. Burada datalar arası ilişkiler mesajlarla , argümanlar aracılığıyla yapılan metotlarla olur.



Mesajların içerdiği metotlar gittiği yerdeki mesaj alıcı tarafından işlenir. Oo analizin temel kavramları sistem bilgisinin formal tanımına ve davranış biçimi modellemeye dayanır. NYA’de modellenen tüm bileşenler sistemin önemini kavratacak şekilde tasarlanır yani sistem nasıl uygulanacağı sorusu yerine gerçek ne olduğu sorusu üzerine inşa edilir

Nesneye yönelik analiz , prosedüre yönelik analizden farklı olarak sistemi “nasıl” sorusundan ziyade ne sorusu üzerine inşa eder böylece erken bir tasarım aşamasına geçişten programcıyı alı koyar.