30 Nisan 2012 Pazartesi

TSQL Nedir ?

TSql nedirmi ?? Bildiğiniz Sql'in üzerine birtakım eklentiler yapılmış bir biçimidir.En kaba ve basit tabir budur arkadaşkar.TSql'i MSSQL kullanmaktadır başka kullanan varmı yokmu pek bir bilgim yok bu konuda.MSSQL üzerinden gidiceğim önceki cümlemden anlaşılıyor gibi herneyse.Sizlere TSQL başlıkları altında kod ile nasıl tablo yaratılır düzenlenir silinir.Tablo içindeki verileri nasıl düzenleriz sileriz yada tablolara veri ekleriz.MSSQL deki tarih saat  ve string fonksyonlar nelerdir nasıl kullanırız bunların üzerinde durucam.Şimdi birkaç genel tanımla başlayalım.


  • Herhangi bir operasyondan sonra meydana gelen değerlere VERİ denir.
  • Veri tabanı - Bu verilerin belli bir Disiplinde saklanmasıdır.
  • Veri tabanında verilerin saklandığı yerler Tablolardır.
  • Tablolar Veri tiplerine göre dizayn edilmelidir.
Birkaç önemli kavram vardı bunlarıda böyle özetliyorum arkadaşlar.Bir sonraki makalemde Constraintler konusuna değinicem.Sql ile ilgili temel kavramlardan sonra asıl güzelliklere doğru yelken açıcaz.

C#'da OOP - 4 İnterface

Selamlar yazılımcı arkadaşlar.Bu makalemde interface nedir ne iş yapar bu kavramlar üstünde durucam.C#'da OOP - 3 Inheritance (Miras Kalıtım Alma) yazımda bahsettimmi hatırlamıyorum ama şimdi bahsedeyim.Şöyle bir durumumuz var C# yarattığımız objeler sadece bir başka objeden miras alabiliyorlar.İnterfacede aslında miras kavramına benzer ama farklıdır.Şöyledirki arkadaşlar OOP gerçek hayatı programlamak demiştik hatırlarsanız.Tüm kuşar uçar demiştik ama penguende bir kuştur ama uçamaz malesef.İşte burda interface dediğimiz yapı devreye girmektedir.O zaman Uçmayı bir interface olarak tanımlarız ve Sadece Uçabilen Kuşlara implemente ederiz ve sorun ortadan kalkar en basit şekilde böyle açıklanabilir gibi geliyor arkadaşlar.Tabi sadece sağladıklarıda bu değildir daha farklı özellikleride vardır.Bunlara tek tek değinicem.Kodlama kısmına geçelim arkadaşlar.Örneğimde Kuş sınıfım olucak buna bağlı olarakta bir penguenim ve bir martım olucak ve birte interface'im olucak IUcmak adında.


    public class Penguen :Kus
    {
        public bool YuzmeDurumu;
    }

Evet arkadaşlar ilk objem penguenim.Bilirsiniz penguenler yüzebilirler.Kuşlardan kalıtım almışım ve penguenimi yaratmışım.İkinci Örneğim Interfaceimin yazılmış hali olucak.

    public interface IUcmak
    {
        void uc();
    }

Interface'imde hazır arkadaşlar şimdi martımı oluşturucam ve Kus sınıfından miras alıp IUcmak interfaceinide implemente edicem.İmplemente işleminde karşıma şöyle bir ekran gelicek IUcmak'ın altı çizilicek ve içinde bir olay var bunuda ekleyelimmi diycek.



Resimde görüldüğü gibi arkadaşlar aşağıdada eklendikten sonraki kodları görüceksiniz.


    public class Martı:Kus,IUcmak
    {
        public void uc()
        {
            throw new NotImplementedException();
        }
    }

Şimdi gelelim sadece arkadaşlar.Interfacein bize sağladıklarından bir tanesi çok biçimlilik oldu burda.Bazı Kuşlar Uçabilir bazılarıysa uçamazlar.Ancak bir intercafe'i eklediğiniz zaman içindeki methotlarıda kullanmak zorundayız arkadaşlar.Bir açıdanda bir sözleşme.Beni kullanırsan benim methot yada methotlarımıda kullanmak zorundasın.Der şöyle düşünün winamp a bir eklenti yazıcaksınız diyelim winamp sizin yazdıklarınızı nerden bilicek nasıl algılıycak.Winamp'ın verdiği interfaceleri kullanırsınız ve bunlar sizi bazı methotları kullanmaya mecbur bırakır ve sizde mecburen kullanırsınız.Şimdi bu kısa notu da geçeyim ve uçan başka bir hayvanı ele alayım yarasa kuş değildir bildiğiniz gibi ama uçabilir.O zaman yarasa diye bir objem olsa bunada UIcmak interfaceini eklemem gerekicek.Yarasamda uçabilicek.
Anlatmak istediklerimi sizlere aktarabildiysem birşeyler aktarabilmişim demektir dostlar :)Okuduğunuz için teşekkürler.

C#'da FileSystemWatcher

Selam dostlar bu yazımdada size FileSystemWatcher nesnesinden bahsedicem. Bu nesne izler arkadaşlar neyi izler ?? Siz bir path verirsiniz ve o pathteki mesela ben c:\izleniyo diye bir path diyeyim size burayı izler.Burada dosya yaratıldımı ,değiştirildimi , silindimi ve yeniden adlandırıldımı bir dosya bana bunları izlememi sağlar.4 tane eventı vardır.Bunlarıda bir önceki cümlede söylemiştim .


Resimde eventlarını görüyoruz ben içlerine basit kodlar yazarak bir uygulama yaptım.


Şimdide Kodlara geçelim arkadaşlar.


        private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)
        {
            listBox1.Items.Add("yaratıldı");
        }

        private void fileSystemWatcher1_Deleted(object sender, System.IO.FileSystemEventArgs e)
        {
            listBox1.Items.Add("silindi");
        }

        private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
        {
            listBox1.Items.Add("değiştirildi");
        }

        private void fileSystemWatcher1_Renamed(object sender, System.IO.RenamedEventArgs e)
        {
            listBox1.Items.Add("yeniden adlandırıldı");
        }

Kodlarımızda bu şekilde .Belirttiğim path de bir dosya işlemi yapıldığında FileSystemWatcher bana hemen birşey yapıldı diye ispiyonluyor.Burda önemli bir Husus da vardır.Örnek veriyorum büyük bir dosya kopyalıyorsunuz.FileSystemWatcher da bu dosyanın kopyalandığı pathi izliyor diyelim.Dosyanın kopyalamasının bitmesini beklemiyor direk yaratıldı diyor sizde tam olarak bu dosyanın kopyalaması ne zaman tamamlanmış şeklinde bir sonuç alamıyorsunuz.Okduğunuz için teşekkürler.Sağlıcakla kalın.

C# Örnekleri - Otobüs Koltukları

Selam millet bu makalemde sizlerle bir windows kontrolü yaratma , özelliklerini belirleme ve forma yerleştirme işlemleri üzerinde durucam.Bunun için bir otobüs'ün koltuk dizilimini örnek olarak kullanıcam.


Evet arkadaşlar Kodlarımız çalıştığında Ekran görüntüsü bu şekilde olucaktır kodlara geçicek olursak.


var sayac = 0;
            for (int j = 1; j < 14; j++)
            {
                for (int i = 1; i < 6; i++)
                {
                    if ((i == 3 && j != 13) || (j == 7 & i > 2))
                        continue;

                    Button btn = new Button();//Yeni Bir Buton
                    btn.Text = (++sayac).ToString();
                    btn.Size = new Size(40, 40); //Butonun Boyutunu Ayarlar.
                    btn.Location = new Point(40 * i, 40 * j); //Butonun Yerini ayarlar.
                    btn.BackColor = Color.White;
                    this.Controls.Add(btn); //Oluşan btn Nesnesini Form’a ekler.


                }

Kodlarda gayet açık arkadaşlar.İç içe 2 tane döngümüz var.İf içerisinde de koltuk eklenmemesi gereken durumlar mevcut eğer şart sağlanıyorsa  continue diyip  Button yaratmıyor.Okuduğunuz için teşekkürler.

29 Nisan 2012 Pazar

C#'da String Fonksyonlar

Merhaba yazılım dostları.Bu makalemde sizlere String Fonksyonları örnekliycem.Nedir ne işimize yarar bu fonksyonlar dediğimizde ise işimizi aşırı kolaylaştıran methotlar diyorum bunlara.Örnek üstünde anlatarak gidicem.


Örnek olarak böyle bir form tasarladım arkadaşlar ve bu form üzerinden işlemlerime devam edicem. Formda 1 adet textboxım var ve bir listboxım var.Textboxım üzerinde uygulanan fonksyonlardan çıkan sonuç listboxımda görülüyor.Şimdi kod kısmına geçersek daha detaylıca sizlere kodları göstericem.


string kelime = txtYazi.Text.ToLower();
listBox1.Items.Add(kelime);
//kelime değişkenine txtyazı textboxındaki değerleri küçülterek aktarır.

string kelime = txtYazi.Text.ToUpper();
listBox1.Items.Add(kelime);
//kelime değişkenine txtyazı textboxındaki değerleri büyülterek aktarır.

string kelime = txtYazi.Text.TrimStart('b');
listBox1.Items.Add(kelime);
//3 farklı trim vardır arkadaşlar TrimStart,Trim,TrimStop olarak isimlerindende belli olduğu gibi biri baştan biri sonran biride orta kısımdan belirtilen char yada charlar diyrorum yani char dizisindeki karakterleri kaldırır.

string kelime = txtYazi.Text.Substring(4, 5);
listBox1.Items.Add(kelime);
//2 overloadı vardır.
//1.sinde Verilen indexden sona kadar Kopyalar.
//2.sinde Kaçıncı İndexten Kaç Tane Kopyalayacağını Belirleriz.

string kelime = txtYazi.Text.Remove(2, 3 );
listBox1.Items.Add(kelime);
//Substring'in Tersidir.Belli bir kısmı almak yerine siler.

string kelime = txtYazi.Text.Replace("bilge Adam", "Adam Bilge");
listBox1.Items.Add(kelime);
//Yer değiştirme işlemi yapar.1 Parametresinde olan string veriyi 2.Parametresi ile yer değiştirir.

string[] kelimeler = txtYazi.Text.Split(' ');
listBox1.Items.AddRange(kelimeler);
//String içindeki belli karakterlere göre bölmek için kullanılır.Mesela her a harfinde böl.string dizi haline dönüştürür.Bizim örneğimizde boşluktan sonra bölüyor.

Örnek : Baş Harfleri Büyütme
string[] kelimeler = txtYazi.Text.Split(' ');
string cikis = "";
foreach (var item in kelimeler)
{
   cikis = cikis + item.Substring(0, 1).ToUpper() + item.Substring(1) + " ";
}
listBox1.Items.Add(cikis.TrimEnd());

Örnek : Harf Piramidi
for (int i = txtYazi.TextLength; i > 0; i--)
{
   listBox1.Items.Add(txtYazi.Text.Substring(0, i));
}

Örnek : Comboboxta Ayları listeletmek istiyorum ama 1,2,3,4.. yerine 01,02 şeklinde olsun istiyorum.
for (int i = 1; i <= 12; i++)
{
   comboBox1.Items.Add(i.ToString().PadLeft(2,'0'));
}
//Burada yaptığımız işlem ise şöyle arkadaşlar.String değerimin 2 karakter olmasını istiyorum.Eğer 2 karakter değilse soluna 0 ekle demek oluyor.

Önemli bir hususu atlamadan geçmek istemiyorum arkadaşlar. Makaledeki en önemli kısımlardan biri burası olucak çünkü string fonksyonlar direk örneklerdeki kelime değişkeni üzerinde işlem yapmaz . Onun üzerinden bir kopya alır üstünde işlem yapar sonrada yeni veriyi aktarır yada artık siz ne yapmak istiyorsanız onu yapar. Birazda olsa yardımcı olabildiğime inanıyorum dostlar okuduğunuz için teşekkürler.




24 Nisan 2012 Salı

C#'da OOP - 3 Inheritance (Miras Kalıtım Alma)

OOP ile ilgili yazılarıma devam ediyorum arkadaşlar.Bu yazımda miras alma konusundan bahsedicem.Örnek olarak Kangal köpeklerini ele alalım.Kangal bir köpektir.Köpek bir hayvandır.hayvanlarda canlıdır.Arada omurgalı hayvanlar omurgasız hayvanlar diyede ayrılabilir ama o kadar detaya girmiycem.Her canlının bir ismi vardır.her hayvan hareket eder.her köpek 4 ayak üstünde yürür.Buraya kadar geldiğimizde hepsini köpek üstünde birleştirebiliriz.Sonrada Kangal köpeğinin Koruma özelliğini ekleyebiliriz. Eğer böyle yapmazsak boş vere fazladan kod yazmış oluruz.Şöyle düşünün hayvandan sonra kedilerin geldiğini ve kedilerden sonrada Van kedisinin geldiğini.Neden tekrar tekrar özellikleri yazayımki.Daha alt bir katmandan miras alırım ve özellikleri üstüne inşa ederim.Yine gerçek hayatı kodlarımıza dökelim ve temel bir katmandan başlayalım.

İlk Olarak Hayvan katmanını temel aldım.


    public class Hayvan
    {      
        public bool _Cinsiyet;
    }

Bir hayvan Class'ım var ve Hayvan tipinde bir Obje yarattım.Her hayvanın bir cinsiyeti vardır ve bool tipinde tutucam bu cinsiyeti.



public class Kopek : Hayvan//Burada miras alma işlemi iki nokta ve miras alınıcak class olarak gerçekleşiyor
    {
        public string _ad;

        private void NefesAl()
        {
            MessageBox.Show("Nefes Aldım");
        }

        private void NefesVer()
        {
            MessageBox.Show("Nefes Verdim");
        }

        public void Havla()
        {
            NefesAl();
            MessageBox.Show("Hav Hav");
            NefesVer();
        }
    }

Kopek objemizide yarattık ve Hayvan'dan miras aldık şimdi resime bakalım


Kopek classımızda _ad isminde bir field tanımlamamıştık ama kopek objesi hayvandan miras aldığı için artık köpek nesnesindede cinsiyet fieldı görülebilmekte.Burda yaptığım tekrar yazmamak oldu.Burda 3 tanede methot tanımladım arkadaşlar bunlar NefesAl , NefesVer ve Havla methotları C#'da OOP - 2 Encapsulation konusunda fieldları kapsüllemiştik burdada erişim belirleyici olarak NefesAl ve NefesVer methotlarını private tanımladım.Yani burda yaptığım işlem Methot Encapsulation işlemi oldu.Dışarıdan Havla methodunu çalıştırdığımda önce nefes alıcak sonra havlıycak ardından da nefes vericek.Şimdi bir adım daha üst katmana geçelim.Kangal köpeğinin en bilindik özelliklerinden biri korumacı yapısıdır.Çobanların yoldaşıdır Kangallar.Kodlara dönersek bu sefer hayvan sınıfından değilde kopek sınıfından miras alıcak Kangal.


    class Kangal: Kopek
    {
        public void SuruyuKoru()
        {
            MessageBox.Show("Koruyorum");
        }
    }


Kangalın SuruyuKoru methotunuda yazdıktan sonra arkadaşlar miras alma işlemim tamamlanıyor.


            Kangal kng = new Kangal();
            kng._ad = "Karabaş";
            kng._Cinsiyet = true; // erkek olursa true dişi olursa false die düşündüm.
            kng.Havla();
            kng.SuruyuKoru();


Yukardaki örnekte bir Kangal yarattık ve miras aldığı özelliklerle beraber kangalı biçimlendirdik.Miras alma ile ilgili anlatabileceğim bu kadar arkadaşlar okuduğunuz için teşekkürler.


C#'da OOP - 2 Encapsulation

Merhaba arkadaşlar .Bu yazımda OOP'de Encapsulation işlemlerine değişnicem.Başlamadan önce birkaç durumdan bahsetmek istiyorum.Önceki yazımda  C#'da OOP - 1. Field diye birşeyden bahsetmiştim. Bu yazımdada Fieldlari kapsüllemekten bahsedicem. Kapsülleme işlemini yapan kısma Property denir.Bunu şöyle düşünebilirsiniz.Bir anne var birde çocuğu.Anne çocuğuna zarar gelmesini tabiki istemez.Senaryoyu şöyle canlandıralım gözümüzde .Bir bebek var ortada bir anne işte anne çocuğuna mama yediricek. Anne bu mamayı çocuğuna yedirmeden önce mamanın özelliklerini araştırır . Uygunsa çocuğuna mamayı yedirir.Kapsüllemede aynen böyle bir durumdur arkadaşlar.Fielda değer atamadan önce gelen değeri kontrol edip vericeğimiz koşula göre değer aktarma işlemini güvenli olarak yapmamızı sağlar. Burda sadece değerleri kontrol etmeyiz üstünde işlemler de yapabiliriz.  C#'da OOP - 1 yazımdaki örneği kullanarak devam edelim arkadaşlar.



    public class Insan
    {
        private string ad;
        private  string soyad;
        private  DateTime dogumtarihi;


        public string Ad { get; set; }
        public string Soyad { get; set; }
        public DateTime DogumTarihi { get; set; }
    }

Örneğimizde field alanlarını private yaptık.Burdaki amacımız dışarıdan yani Insan Class'ı dışından erişimi fieldlarımıza kesmektir yani erişimi engelliyoruz.Propertylerin get ve set methotları vardır.set methotu veriyi almamıza ve get methotuda veriyi göndermemize yarar bu methotlar içerisinde kotrollerimizi uygulayabiliriz. Mesela dışarıdan gelen doğum değerini kontrol edelim.



         public DateTime DogumTarihi 
         {
            get
            {
                return  dogumtarihi ;
            }
            set
            {
                if (value < DateTime.Now)
                {
                     dogumtarihi  = value;
                }
            }
         }


Örneğimizde arkadaşlar girilen yaş değeri üzerinde encapsulation uyguladık.Burdaki amaç örnek olarka 01.01.2010 yılındaysanız ve girilen doğum tarihi 01.02.2010 ise bunu yakalamak yani hatalı girişi engellemek.

Bir örnek daha yapalım ve bu sefer dışarıdan Ad değerinin tamamını string bir fonksyon kullanarak büyük harflere çevirelim.


        public string Ad
        {
            get
            {  
                return ad.ToUpper();
            }
            set
            {
                ad = value;
            }

        }



Örneklerdende anlaşılacağı üzere get ve set methotlarının kullanımı böyledir arkadaşlar. Property yapısı böyle işlemektir.Umarım yardımcı olabilmişimdir.





17 Nisan 2012 Salı

C#'da OOP - 1

OOP Gerçek Hayatı Programlamak demiştik arkadaşlar.Herşeyin bir Nesne olduğunuda söylemiştik.Gerkçek hayatta her nesnenin bir özelliği,değerleri ve işlevleri vardır.Yani bir sistem vardır arkadaşlar bizde bunu bir nesneye uygularız.Örnek olarak OOP'yi bir insan üzerinde uygulayalım arkadaşlar.İnsanların bir adı ve soyadı vardır.Bir doğum tarihleri vardır.Kod olarak dökersek.


    public class Insan
    {
        public string Ad;
        public string Soyad;
        public DateTime DogumTarihi;
    }


Bu örnekte insan nesnesi bir classtır ve Ad,Soyad,DogumTarihi de özellikleridir.Bunlar bildiğiniz değişkenlerdir arkadaşlar ama OOP yapısında bunlara Field denmektedir.Bir diğer örnekle Insana ulaşalım arkadaşlar.


    Insan insan = new Insan();
    insan.Ad = "Recep";
    insan.Soyad = "Gür";
    insan.DogumTarihi = Convert.ToDateTime("02.02.1988");

Evet arkadaşlar insan adında bir Insan yarattık ve Fieldlarına değerlerimizi yükledik.Bir Nesne yarattık ve değer atadık OOP dünyasına ilk adımımızı attık arkadaşlar.Umarım yardımcı olabilmişimdir.




C#'da OOP ve Getirileri

Merhaba yazılım dostları önceki makalemde OOP'ye birazcık giriş yapmıştık ne olduğunu kavramaya çalışmıştık.Kavradığınızı umarak yazıma devam ediyorum.OOP tamam süper gerçek hayatı programlıyoruz ama bize nasıl getirileri var neden kullanıyoruz yada işimizi nasıl kolaylaştırıyor.Bu makalemde de bunların üstünde durucam.

OOP'nin faydalarını 3 başlıkta inceleyebiliriz.

1 - Tekrar Kullanılabilirlik ( Reusability ) : Arkadaşlar program yazarken bazı durumlar vardır.Bazı işlemleri  tekrar yapmanız gerekebilir.Bu gibi durumlarda ilk akla gelen önceki kodları kopyalayıp başka bir yere yapıştırmak ve sonuç elde etmek olucak.Bu şekildede çözüm üretebilirsiniz ama kod ameleliği yapmaya gerek yoktur.Daha az kod yazarak karışıklığıda azaltırsınız kodları azaltmak programınızın başka bir programcı tarafından daha anlaşılabilir olmasınıda sağlıycaktır.Bu gibi durumlarda bu tip tekrarlanan işlemleri OOP yapısı kullanarak oluşturup istendiği yerde istendiği kadar kullanabiliriz.Projelerinizi çok daha iyi hale getiriceğinden emin olabilirsiniz.

2 - Genişletilebilirlik (extensibility ) : Düşününki arkadaşlar OOP kullanmadınız kodları tekrar tekrar yazdınız sonradan da aklınıza bir değişiklik geldi.Çok can sıkıcı bir durum her kopyala yapıştır yazdığınız kod bloğunu tekrardan düzenlemeniz gerekli.OOP kullandığınızda ise arkadaşlar bu durum tamamiyle farklıdır.Tek bir yerde kodları düzenleyin tüm kullandığınız yerlerde geçerli olsun.

3 - Sürdürülebilirlik ( Maintainability ) : Şöyle düşünün arkadaşlar.Yazılım geliştiren bir şirkete girdiniz ve önünüze bir program geldi programı sizden önce sarı çizmeli mehmet ağa geliştirmiş.Kimin geliştirdiğininde bir önemi yok açıkçası sizden sürüm güncellemesi yapılması isteniyor.OOP de programı parçalarak yazarsınız arkadaşlar.Programı sınıflara bölersiniz (Sınıf (Class) kavramına daha sonra giricem).Eğer tek düze bir yazım ile yazılmışsa üst sürüm çıkartmak çok zor olur.OOP kullanıldıysa arkadaşlar gerekli yerlere gerekli kodlar eklenerek bu eklenen kodların tüm projede ve tekrarlanan bölümlerde geçerli olmasını sağlarız.Tam terside olabilir siz sarı çizmeli mehmet ağa olursunuz ve sizden sonra bir yazılımcıda gelebilir. 

OOP'nin getirilerindende bahsettikten sonra OOP'ye tam bir geçiş yapalım arkadaşlar.


C#'da Object Oriented Programming (OOP) Giriş

Merhaba arkadaşlar.Sizlere OOP'den(Türkçe açılımı Nesne Yönelimli Programlama) bahsetmeden önce biraz geçmişten bahsetmek istiyorum.OOP'den önceki dönemlerde bilgisayarlar daha çok hesaplama yapmak için kullanılıyordu. Finansal ve Mali işlemler gibi. Bugünkü kullanım şekli çok farklı 1960 larla günümüzü yan yana koyduğumuz zaman bugün inanılmaz farklı bir yerdeyiz.Tabletler akıllı Telefonlar bugün olmazsa olmazlarımızdan.Gelişimlerini düşününce ve ne amaçla kullandığımızı düşününce elbetteki çok büyük farklar var. Eski günlerde hesaplama gibi işlemler için kullanırken bugün hayatımızı dijital ortama uyarlamamızı sağlıyorlar.
Bugün internette dolaşırken birçok farklı yapı birçok farklı site görebiliriz.Birçoğu günlük hayatımızın içerisinden kesit alınıp programlanmıştır.Bunlarla ilgili birkaç örnek vermek istiyorum dostlar.

Facebook'u ele alalım bolca özelliği var aklıma ilk gelenlerden biri fotoğraf albümleri.Eskiden birisinin düğünü olurdu giderdik oynardık eğlenirdik sevdiklerimizin mutlu gününde bolca Fotoğraf çekilirdik. Sonrada fotoğrafçıdan resimleri alır ve bir albüm yapar saklardık ara ara bakar geçerdik. Şimdiyse dijital fotoğraf makineleri ile resimleri alıp facebookta albüm oluşturup ordan bakıyoruz.

E-Ticaret sitelerini ele alalım bu seferde eskiden dışarıya çıkardık alışveriş yapmaya.Çarşı pazar ne ihtiyacımız varsa ona yönelik olarak dolaşırdık ve alışverişimizi yapardık.Bugün bunların yerini web siteleri aldı. Ürünleri kategorilere göre listeliyorlar ve sepete ekleyip ödememizi yapıyoruz üründe bize geliyor.

Albümler oluşturuyoruz alışveriş yapabiliyoruz ve dahasıda var tabiki bunlar sadece örnekti.Gerçekten tek farkı bu örneklerde ortamın dijital olması.Herşeyin dijital ortama taşınması.

Örnekleri düşününce ben OOP'i gerçek hayatı programlamak olarak görüyorum.Bunun için iyi bir gözlem yapmak gerekli tabikide.

Eskiden posta atardık şimdi ePosta atıyoruz arkadaşlar böyle bir örneğimiz daha var elimizde yine gerçekte olan birşey dijital ortama geçmiş durumda.

1-Mektubu kim yazar ?

2-Mektubu yazdıktan sonra gider posta kutusuna atar.


3-Postacı gelip alır ve adrese götürür.

4-Posta atılan kişide mektubu okur.

İnsan mektubu yazar bir nesne oluşturur.

Posta Kutusuna atar posta kutusuda başka bir nesnedir.

Postacı gelir mektup nesnesinin üzerindeki bir değeri okur bu değer adres bilgisidir ve adrese götürür.

Son olarakta diğer kişi mektubu alır ve okur.Nesne ile iletişime geçer arkadaşlar.

Gerçek dünya nesneler bu nesnelerin birbirleri ile iletişimi ile geçiyor.Yani gerçek hayat nesnelerden oluşuyor ve nesnelerin değerleri (Biz cihazın seri numarası) ve davranışlarından (işlev ve fonksyonları) ibarettir.Şöyle diyelim o zaman karşınıza bir nesne alın ve özelliklerini düşünün birde bu nesnenin bir işlevi vardır bir işe yarar bunuda fonksyon olarak düşünün işte bu nesneyi dijital ortama geçirmeye biz OOP diyoruz.

OOP programlamada nesneler dizayn ederek ve bu nesnelere işlemler yükleyerek programlama yapmamızı sağlayan bir tekniktir.

Okuduğunuz için teşekkür ederim arkadaşlar.

11 Nisan 2012 Çarşamba

C#'da Resmi Siyah Beyaz Yapma

Merhaba arkadaşlar başlıktanda anlaşılacağı gibi bir resmi siyah beyaz nasıl yaparız bunu görücez.Burda yapıcağımız işlemi pek profesyonel olarak adlandıramam Photoshop vb. tarzda hızlıda olmuycak ama en iyi şekilde bize sonuç döndürücek diyebilirim.İşlem nasıl olucak derseniz yüklüyeceğimiz resmi pixel pixel alıp üstünde işlem yapıp sonra yeni bir resim eklemek şeklinde izah edebilirim.Bilgisayarda renk sistemi  RGB 'dir arkadaşlar ve bu sistem üzerinden renklerle oynuycaz.Nedir bu RGB derseniz arkadaşlar R - kırmızı G - yeşik ve B de mavi renkleri temsil eder.Bilgisayarda ekranımıza gelen her pixel de bu renklerin karşımından oluşmuş yeni bir rengi görürüz.Her pixel içinde RGB değeri vardır ve başta da söylediğim gibi tek tek bu pixeller üzerinde oynama yapıcaz.Gri tonlama içinsede RGB değerlerinin toplamının ortalamasını alıcaz ve yeni RGB değeri olarak aktarırız.Kodlar içinde programın can alıcı kısımlarını sizlere anlatıcam arkadaşlar böylece daha anlaşılır olucağını düşünüyorum arkadaşlar.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BitmapSınıfı
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string DosyaYolu = "";
        Bitmap bmp = null;
        private void button1_Click(object sender, EventArgs e)
        {
            if (opf.ShowDialog() == DialogResult.OK)
            {
                DosyaYolu = opf.FileName;
                bmp = new Bitmap(DosyaYolu);
                pcb.Image = bmp;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (!backgroundWorker1.IsBusy)
            {
                backgroundWorker1.RunWorkerAsync("SB");
            }
            toolStripProgressBar1.Visible = true;
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            switch (e.Argument.ToString())
            {
                case "SB": SiyahBeyazYap(); break;
                case "KK": KirmiziYap(); break;
                default:
                    break;
            }
        }

        private void SiyahBeyazYap()
        {
            //Buradaki İç içe 2 For döngümüz resim üzerinde pixel pixel gezmemizi sağlar
            for (int y = 0; y < bmp.Height; y++)
            {
                for (int x = 0; x < bmp.Width; x++)
                {
                    Color eski = bmp.GetPixel(x, y);//X ve Y Koordinatlarındaki Pixel'i Alır.Bu değeri Color tipinde bir değişkene atar.
                    int ortalama = (eski.R + eski.G + eski.B) / 3; //Color tipindeki değerin RGB'si ve bunların değerleri vardır bunların ortalaması alınır.
                    Color yeni = Color.FromArgb(ortalama, ortalama, ortalama);//Aldığımız ortalama değeri yeni bir renk oluşturmak için Color tipinde bir değişkene aktarırız.
                    bmp.SetPixel(x, y, yeni);//son olarakda önceden değerini aldığımız X ve Y koordinatlarındaki Pixeli Geri yükleriz.
                }
            }
            pcb.Image = bmp;//tüm işlemler bittikten sonrada PictureBox nesmize yeni resmimizi aktarırız.
        }

        private void KirmiziYap()
        {

            for (int y = 0; y < bmp.Height; y++)
            {
                for (int x = 0; x < bmp.Width; x++)
                {
                    Color eski = bmp.GetPixel(x, y);//renk değerlerinin ortalamasını alırsan gri tonu oluşur.
                    int ortalama = (eski.R + eski.G + eski.B) / 3;
                    Color yeni = Color.FromArgb(eski.A, 255, ortalama, ortalama);
                    bmp.SetPixel(x, y, yeni);
                }
            }
            pcb.Image = bmp;
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            toolStripProgressBar1.Visible = false;
        }

        private void Kırmızımsı_Click(object sender, EventArgs e)
        {
            if (!backgroundWorker1.IsBusy)
            {
                backgroundWorker1.RunWorkerAsync("KK");
            }
            toolStripProgressBar1.Visible = true;
        }
    }
}


Program ile iglili Video :


Umarım işinize yarar arkadaşlar.Okuduğunuz için teşekkürler.

10 Nisan 2012 Salı

C#'da Adam Asmaca Oyunu

Merhaba arkadaşlar hepimizin bildiği adam asmaca oyunun bir örneğini yaptım ve sizlerle paylaşıyorum umarım yardımcı olabilmişimdir.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace AdamAsmaca
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string[] Kelimeler = { "ARABA", "BUZDOLABI" };
        char[] Harfler = { 'A', 'B', 'C', 'Ç', 'D', 'E', 'F', 'G', 'Ğ', 'H', 'I', 'İ', 'J', 'K', 'L', 'M', 'N', 'O', 'Ö', 'P', 'R', 'S', 'Ş', 'T', 'U', 'Ü', 'V', 'Y', 'Z' };
        Random rnd = new Random();
        private void Form1_Load(object sender, EventArgs e)
        {



        }

        private void KelimeYarat()
        {


        silme:
            foreach (Control item in flowLayoutPanel1.Controls)
            {
                if (item is Button)
                {
                    if (Convert.ToInt32(item.Tag) == 0)
                    {
                        item.Dispose();
                        goto silme;
                    }
                }

            }

        git:
            foreach (Control item in this.Controls)
            {
                if (item is Label)
                {
                    if (Convert.ToInt32(item.Tag) == 0)
                    {
                        item.Dispose();
                        goto git;

                    }

                }
            }
            var kelimeNo = rnd.Next(0, Kelimeler.Length);
            this.Tag = kelimeNo;
            for (int i = 0; i < Kelimeler[kelimeNo].Length; i++)
            {
                Label lbl = new Label();
                lbl.Size = lblOrnek.Size;
                lbl.Top = 80;
                lbl.Left = 280 + (i * 34);
                lbl.Text = lblOrnek.Text;
                lbl.Font = lblOrnek.Font;
                this.Controls.Add(lbl);
            }



            for (int i = 0; i < Harfler.Length; i++)
            {
                Button btn = new Button();
                btn.Text = Harfler[i].ToString();
                btn.Size = btnOrnek.Size;
                btn.BackColor = Color.White;
                btn.Click += new EventHandler(btn_Click);
                btn.Tag = 0;
                flowLayoutPanel1.Controls.Add(btn);
            }

        }
        int yanlis = 0;
        int bulunan = 0;
        void btn_Click(object sender, EventArgs e)
        {
            bool deger = false;
            Button Tiklanan = sender as Button;
            Tiklanan.Enabled = false;
            var sayac = 0;


            char[] HarfHarf = Kelimeler[Convert.ToInt32(this.Tag)].ToCharArray();

            foreach (var item in HarfHarf)
            {
                if (item == Convert.ToChar(Tiklanan.Text))
                {
                    var lblHArf = new Label();
                    lblHArf.Top = 70;
                    lblHArf.Left = (sayac * 33) + 285;
                    lblHArf.Size = lblHarfOrnek.Size;
                    lblHArf.Font = lblHarfOrnek.Font;
                    lblHArf.Text = item.ToString();
                    this.Controls.Add(lblHArf);
                    lblHArf.BringToFront();
                    deger = true;
                    bulunan++;
                }

                sayac++;
            }

            if (deger == false)
            {
                switch (yanlis)
                {
                    case 0: pictureBox1.Visible = true; break;
                    case 1: pictureBox2.Visible = true; break;
                    case 2: pictureBox3.Visible = true; break;
                    case 3: pictureBox4.Visible = true; break;
                    case 4: pictureBox5.Visible = true; break;
                    case 5: pictureBox6.Visible = true;
                        MessageBox.Show("Tekrar Dene !!!");
                        KelimeYarat();
                        break;
                    default:
                        break;
                }
                yanlis++;
            }
            if (bulunan == HarfHarf.Length)
            {

                MessageBox.Show("Helal Sana !!!");
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {

            yanlis = 0;
            bulunan = 0;
            pictureBox1.Visible = false;
            pictureBox2.Visible = false;
            pictureBox3.Visible = false;
            pictureBox4.Visible = false;
            pictureBox5.Visible = false;
            pictureBox6.Visible = false;

            KelimeYarat();
        }
    }
}