18 Haziran 2013 Salı

C# Kapsülleme (Encapsulation)

Kapsülleme (Encapsulation): Verilerin ve kodların dış etkenlerden korumaktır.
Özellikleri:
* Bir nesnenin dış dünyadan soyutlanıp iç dünyasında işlem yapması
* Başka kod ve sınıflar tarafından kulanılmaması için koruyucu bariyer görevi görür.
*Kodları erişilmez hale getirir.
*Nesne tabanlı programlamanın temel ilkelerinden birisidir.
Not : Class içinde bir değişkene ulaşılmaması için private olarak tanımlamalsınız.

Encapsulation programcıya nesneleri koruma gücünü verir.



 Örneğin emlak işlemleri yapan bir programımız olduğunu varsayalım. Emlak programında olması gereken bir ev nesnemiz bulunmaktadır. Bu ev nesnemizin kaç metrekare olduğu, kaç odasının olduğu, hangi semtte olduğu gibi bir sürü özelliği bulunmaktadır. Visual Studio yu açarak ConsoleApplication projesi açıyoruz. EmlakciApp ismini veriyoruz. Kodlarımız aşağıda ki gibi. Açıklama satırlarında açıklamaları yaptım.

EmlakciApp: Console Application
EmlakciLib: Class Libary










using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EmlakciLib;

namespace EmlakciApp
{
    class Program
    {

        static void Main(string[] args)
        {
            Ev evim = new Ev(); // ev class ından yeni evim isminde türetiyoruz.
            //Ev classının elemanlarına değer atıyoruz.
            evim.Alan = 85; // burada -85 şeklinde negatif bir değer girseydik kapsülleme özelliği sayesinde
            //bize mutlak değerini alıp o şekilde değerini getirecekti.
            evim.Semt = "Isparta-Cunur";
            evim.Katno = 5;
            evim.Odasayisi = 3;

           Console.WriteLine( evim.EvBilgileriniGetir()); // EvBilgileriniGetir metodu string döndürdüğü için Console.WriteLine metodu ile kullanılması gerekir.
           Console.ReadKey();


        }

    }
}

Programımız main bloğundan itibaren çalışmaya başlayacak. Namaspace kısmında

using EmlakciLib; bu satır bulunmaktadır. Aslında ev class ını EmlakciApp projesinin içersinde de yazabilirdik fakat ayrı bir ClassLibary projesi açarak ev class ını oluşturduk ve özelliklerini kapsülledik. Class Libary projesi oluşturmak için Solution üzerinde sağ tıklayıp Add > New Project adımlarını takip ederek Windows C# menüsü altında Windows un altında Class Libary seçiyoruz ve  Name ine EmlakciLib adını veriyoruz.


//Class Libary projemizin kodları.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace EmlakciLib
{
    public class Ev // Class Libary projesi. Çıktısı dll dosyasıdır. İstenilen projede add reference diyerek kullanılabilir.
    {
        // hiyerarşi namespace, sınıf, metod
        //field ları kapsüllemek için field e (örneğin semt in üzerine) sağ tıklayıp refactor sonra encapsuolate field seçeneği ile otomatik oluşturabilir.
        //Yada klavyeden control + r + e tuş kombinasyonları

        private string semt;

        public string Semt // Control + r + e kısayolu kullanarak semt alanını kapsülledik
        {
            get { return semt; }
            set { semt = value; }
        }
        private int katno;

        public int Katno // Control + r + e kısayolu kullanarak Katno alanını kapsülledik
        {
            get { return katno; }
            set { katno = value; }
        }
        private int odasayisi;

        public int Odasayisi // Control + r + e kısayolu kullanarak Odasayisi alanını kapsülledik
        {
            get { return odasayisi; }
            set { odasayisi = value; }
        }
       private double alan; // Control + r + e kısayolu kullanarak alan alanını kapsülledik

       public double Alan // privare double alan field nın properties i
       {
           get
           {
               return alan;
           }

           set  // Burada sadece değerleri kontrol etmedik. Şart deyimleri ile loglama işlemlerinide yaptık
           {
               if (value < 0)
               {
                   // FileMode.Append eğer gösterilen dizinde dosya yoksa hata verir. Dosyayı açar üzerine yazar
                   //OpenOrCreate olursa her seferinde aynı dosyayı yolu gösterilen dizine üretir.
                   FileInfo fi = new FileInfo("c:/loglar.txt");
                   FileStream fs;
                   
                   if (fi.Exists) // Eğer dosya daha önce oluşmuşsa append ile aç
                   {
                       fs = new FileStream("c:/loglar.txt", FileMode.Append);
                   }
                   else // eğer açılmamışsa dosya yazılan dizine verilen isim ve türde dosya oluştur.
                   {
                       fs = new FileStream("c:/loglar.txt", FileMode.Create);

                   }
                  
                   StreamWriter sw = new StreamWriter(fs);
                   sw.WriteLine("Alan bilgisi " + DateTime.Now + " tarihinde hatalı girildi. Girilen değer: " + value);
                   sw.Flush();
                   fs.Close();                  
               }
               alan = Math.Abs(value);  // mutlak değer fonksiyonu ile değerler pozitif yapılıyor
           }
       }


        public string EvBilgileriniGetir() // Dışarıya yani çağrıldığı yere biçimlenmiş string olarak ev bilgilerini gönderen metod
        {
            return string.Format("Kat No : {0} \n Oda Sayisi: {0} \n Semt: {2} \n Alan: {3}", katno, odasayisi, semt, alan);
        }


    }
}





25 Mayıs 2013 Cumartesi

".. Seni beklediğim kadar!.."


Üniversiteli delikanlı Kolejli kıza bir voleybol maçında rastladı. Okul salonundaydı maç. Tribünsüz, minik bir salon.. Seyircilerle, oyuncular arasında, sahanın çizgisi vardı sadece.. O kadar yakındılar..
Delikanlı, bu tatlı, bu güzel, bu dünyalar şirini kızı ilk defa görüyordu takımda.. Hoşlandığını, fena halde hoşlandığını hissetti. Az sonra bir şeyi daha hissetti. Uzun zamandan beri maçı değil, o güzel kızı izlediğini.. Kız servis atarken hemen önünden geçti. Göz göze geldiler.. Kız gülümsedi.. Delikanlı, çok popülerdi o yıllarda..
Kız onu tanımış olmalıydı. Kim bilir, belki kız da ondan hoşlanmıştı.. Belki de delikanlı öyle olmasını istediği için ona öyle gelmişti.. Set değişip, takım karşıya gidince, delikanlıda yerini değiştirdi, o da karşıya gitti.. Üçüncü sette tekrar eski yerine döndü.. Kızda gidiş gelişleri fark etmişti galiba.. Bir defa daha gülümsedi. Manidar..
"Anladım" der gibi bir gülümseyişti bu.. Delikanlı o hafta boyu hep bu dünyalar şirini kızı düşündü.. Pazar günü, sabahın köründe kalktı, erkenden oynanacak maçı, ne maçı canım, o dünyalar şirini kızı görmek için.. Delikanlı artık kızın hiçbir maçını kaçırmıyordu..
Dahası..
Ankara Koleji'nin her dağılış saatinde, okul civarında oluyordu, onu bir kez daha görmek için.. Karşılaştıklarında, hafif çok hafif bir gülümseme, çok minik bir baş eğmesi ile selamlaşır olmuşlardı..
Bir defasında, yaptığına sonra kendisi de günlerce güldü.. O gün gene tesadüfmüş gibi, okul dağılımı kızın karşısına çıkmış, gülümseyerek selamlamış, sonra arka sokaklara dalıp, yıldırım gibi koşarak, bir blok ötede gene karşısına çıkmıştı.. Kız bu defa, iyice gülmüştü.. Karşısında, sözüm ona ağır ağır yürüyen, ama nefes nefese delikanlıyı görünce..
Delikanlı, voleybol takımının kaptanını iyi tanıyordu. Arkadaştılar. Sonunda bütün cesaretini topladı, kaptana açıldı.. O kızdan fena halde hoşlanıyordu. Galiba kız da ona karşı boş değildi. Bir yerde, bir şekilde tanışmaları gerekiyordu.. O zamanlar, bu işler böyle oluyordu çünkü.. Kaptan: "Tabii" dedi.. "Bu hafta sonu güzel bir konser var. Biz onunla gitmeye karar vermiştik zaten. Sen de gel. Hem konseri birlikte izleriz, hem de tanışırsınız.."
"Mutluluk işte bu olmalı" diye düşündü delikanlı.. "Mutluluk işte bu.." Ve konser gününe kadar geceleri hiç uyuyamadı.. Konser gününü de hiç ama hiç unutmadı..
O ne heyecandı öyle.. Konserin verildiği sinemanın kapısında tanıştılar.. El sıkıştılar.. O güzel ele dokunduğu anı da hiç unutmadı delikanlı.. Kaptan, salona girdiklerinde, ustaca bir manevra daha yaptı. Delikanlı ile dünyalar şirini kız yan yana düştüler. İnanamıyordu delikanlı.. Onunla nihayet yan yana oturduğuna, onun sıcaklığını hissettiğine, onun nefesini duyduğuna inanamıyordu.. Biraz önce tanışırken tuttuğu el, bir karış ötesinde öylesine duruyor, delikanlı, sahnede dünyanın en romantik şarkısı söylenirken ki, o an dünyanın bütün şarkıları dünyanın en romantik şarkısıydı ya, o eli tutmak için öylesine büyük bir arzu duyuyordu ki içinde.. Ama uzatamıyordu işte elini.. Her şey böyle iyi giderken, yanlış bir hareketle, onu ürkütebileceğinden, incitebileceğinden öylesine korkuyordu ki.. Sonunda dayanamadı, sanki kolu uyuşmuş gibi, uzandı.. Kolunu kızın koltuğunun arkasına koydu.. Kızın omzuna değil.. Koltuğun üzerine.. Sonra kız arkaya yaslandı.. Birkaç saç teli, delikanlının elinin üzerine dokundu.. Kalbi yerinden fırlayacak gibi atıyordu artık genç adamın.. Dünyalar şirini kızın saçları eline dokunuyordu çünkü..
Konserden çıkarken, kız, şakalaştı.. "Sizi her maçımızda görüyoruz. Alıştık nerdeyse.. Yarın Adana'da maçımız var.. Gözlerimiz sizi arayacak.."
Hayır, aramayacaktı..
Delikanlı o anda kararını vermişti çünkü.. Cebinde onu otobüsle Adana'ya götürüp getirecek, hatta öğle yemeğinde bir de Adana kebap yedirecek kadar para vardı.. Gece yarısı kalkan otobüse bindi..
Sabah erkenden Adana'ya indi. Maç saatine kadar başı boş dolaştı.
Salona erkenden girdi, en ön sıraya tam servis köşesine en yakın yere oturdu.. Takımlar sahaya çıkarken, salondaki en heyecanlı seyirci oydu. Maç falan değildi sebep tabii.. İlk sette kız farkında bile değildi onun.. Nerden olsundu ki.. İkinci sette öbür tarafa gittiler.. Döndüklerinde, üçüncü sette kız fark etti delikanlıyı..Yüzünde çok ama çok şaşkın bir ifade, biraz mutluluk, birazda gurur vardı sanki.. Ankara'nın hele Kolej'de çok popüler bu delikanlısının onun için ta oralara geldiğini bilmenin gururu..
Maç bitti. Kız soyunma odasına, delikanlı garajlara gitti. Tek kelime konuşmadan.. Konuşmaya gelmemişti ki..
Kız "Keşke orada olsaydın" demişti. O da olmuştu işte.. Hepsi o.. Ona o kadar çok şey söylemek istiyordu ki aslında..
Bir gün üniversite kantininde gazete okurken, iç sayfalarda bir şiire rastladı. Daha doğrusu bir şiirden alınmış bir dörtlüğe..
Söylemek istediği her şey bu dört satırda vardı sanki..
Bembeyaz bir karta yazdı o dört satırı.. Öğleden sonrayı zor etti, Kolejin önüne gitmek için.. Kızın karşıdan geldiğini gördü. Koşarak yanına gitti. "Bu sana" diye kartı eline tutuşturdu ve kayboldu ortadan, kız, dizeleri okurken..
"Ne hasta beklerdi sabahı
Ne taze ölüyü mezar
Ne de şeytan bir günahı
Seni beklediğim kadar!.."
Ertesi gün öğleden sonra, tarif edilemez heyecanlar içinde Kolej'in önündeydi gene.. Kız karşıdan geliyordu.. Bu defa yanında arkadaşları yoktu. Yalnızdı..Yaklaştığında işaret etti delikanlıya.. Gözlerine inanamadı genç adam.. Onu yanına mı çağırıyordu yoksa.. Evet, çağırıyordu işte.. Kalbinin duracağını sandı yaklaşırken.. "Sana bir şeyler söylemek istiyorum" dedi kız.. O da heyecanlıydı, belli..
"Bak iyi dinle.. Dünkü satırlar için çok teşekkürler.. Herhalde hissettin, ben de senden hoşlanıyorum. Ama senden evvel tanıdığım birisi daha var. Ondan da hoşlanıyorum ve henüz karar veremedim, hanginizden daha çok hoşlandığıma.. Ve de şu anda, onu terk etmem için bir sebep yok."
"O zaman karar verdiğinde ve de eğer seçtiğin ben olursam, hayatında başka kimse olmazsa, ara beni" dedi delikanlı ikiletmeden.. Ayrıldı kızın yanından.. Bir daha voleybol maçına gitmeden, bir daha okul yolunda önüne çıkmadan.. Bir daha onu hiç görmeden..
Yıllarca sonra Levent'in söyleyeceği şarkıdaki Sezen'in sözlerini o, o zaman biliyordu sanki. Aşk onurlu olmalıydı.. Günlerce, haftalarca, aylarca bekledi.. Tıpkı, kıza verdiği o dörtlükteki gibi bekledi.. Hastanın sabahı, seytanın günahı beklediği gibi bekledi.. Heyecanla bekledi. Hırsla, arzuyla bekledi. Umutla, umutsuzlukla bekledi. Bazen öfkeyle bekledi.. Ama bekledi.. Başka hiç kimseye bakmadan, başka hiç kimseyi bulmadan bekledi.
Bir gün bir şiir antolojisinde şiirin tamamını buldu.. İki dörtlüktü şiir aslında.. İlki kıza verdiği.. Bir ikinci dörtlük daha vardı o kadar.. O dörtlüğü de bir kartın arkasına dikkatle yazdı.. Cebine koydu..
Bekleyiş sürüyor, sürüyordu..
Okullar kapandı, açıldı.. Aylar, aylar geçti.. Bir gün delikanlı kızı aniden karşısında gördü.. "Günlerdir seni arıyorum" dedi kız. "Günlerdir seni arıyorum. İşte sana haber.. Artık hayatımda hiç kimse yok!.."
"Yaa" dedi delikanlı.. "Yaa" dedi sadece..
Kalbi heyecandan ölesiye çarparken, aylardır ölesiye beklediği an gelip çatmışken, ağzından sadece bu ses çıkmıştı..
"Yaaa!.."
Cebinde artık iyice eskimiş kartı uzattı kıza.. "Sana bir şiirin ilk dörtlüğünü vermiştim ya bir gün" dedi.. "Bu da ikinci ve son dörtlüğü onun.."
Sonra yürüdü gitti, arkasına bile bakmadan.. Kız dizelere bakarken..
"Geçti istemem gelmeni
Yokluğunda buldum seni.
Bırak vehmimde gölgeni
Gelme artık neye yarar!.."

Aradan yıllar, çok ama çok uzun yıllar geçti. Delikanlı bugün hâlâ düşünüyor..
O uzun, çok uzun bekleyiş aşkını öldürmüş müydü, acaba?.
Ya da beklerken, ölesiye beklerken hayalinde öylesine bir sevgili yaratmıştı ki, artık yaşayan hiç kimse bu hayali dolduramazdı.. O sevgilinin kendisi bile.. Hayalindekini yaşatmak için mi, yaşayanı silmişti yani?.. Yokluğunda bulmak bu mu demek oluyordu?..
Ya da.. Ya da..
Bir şiirin romantizmine mi kapılmış, bir delikanlılık jesti uğruna, mutluluğunun üzerinden öylece yürüyüp gitmişti, acaba?
Delikanlı bu soruların yanıtını bugün hâlâ bilmiyor..
Bilmediğini de en iyi ben biliyorum.. Çünkü, delikanlı..
..bendim!..(*)

***
Delikanlının kıza verdiği dizeler Necip Fazıl Kısakürek'indi.. Beklenen adlı bir şiir..
Gençliğimin kilometre taşlarından birinde buluşmuştuk şairle.. Dizeleri yön vermişti bana.. Hayatımı kimbilir nasıl değiştirmişti, sekiz satırıyla..
Büyük şair, yazar, romancı, hikâyeci, oyun yazarı Necip Fazıl'ı 22 yıl önce bugün, 25 Mayıs 1983'te kaybetmiştik. Yarın, 26 Mayıs da, onun doğumunun yüzüncü yılı.. Yurdun dört bir yanında törenler düzenleniyor üstada..
Ben de onu böyle anmak istedim.. Yıllar önce kaleme aldığım ve çok sevdiğim bir yazımı "Tam da yeridir" diye tekrarlayarak!.. 



(*)http://www.sabah.com.tr/Yazarlar/uluc/2005/05/25/_Seni_bekledigim_kadar

24 Mayıs 2013 Cuma

Flash Bellek ve hard disklerde oluşan kısayol virüsünden ( namı diğer lnk uzantılı klasörler) kurtulmak

Öncelikle tavsiyem güncel bir antivirüs programı ( Avg Lisanslı Kullanıyorum ) ile flash belleğinizi yada hard diskinizi taratmanız gerekir. nerdeyse tüm antivirüsler bu virüsü silecektir. Ama klasörleriniz hala .lnk uzantılı olarak kalacak, ve ana klasörden içeri giremeyeceksiniz. Antivirüs kurmanız için herhangi bir teknik destek ya da bilgiasyar konuısunda uzman birine ihtiyacınız yok. Google amcamıza sorun mesela avg antivirüs diye o çıkan ilk sonuç avg nin sitesi olacaktır ve programı indirip standart kurulum yani ileri ileri ileri adımlarını tıklatmanız.

antivirüs  Virüsü bulup silmişse, başlat a tıklayıp arama çubuğuna cmd yazıp aratın ve enterlayın, yahut





windows tuşu (yandaki küçük fotodaki pencere simgeli tuş) ile beraber aynı r harfine basın. küçük bir pencere açılacaktır. cmd yazın ve tamam butonuna tıklatın. 

attrib /d /s -h -r -s f:\*   
 Siyah bir pencere açılacaktır. İmlecin yanıp söndüğü yerde sağ tıklayın ve bir üstteki kod parçacığını yapıştırı seçin.
burada ki f harfini bilgisayarınız durumuna göre değiştirmeniz gerekecek;  Diyelim ki bilgisayarınız da 1 tane hard disk var ve ikiye bölünmüş C: ve D: olarak birde Cd Sürücünüz var E: dışardan takacağınız her bellek özelliği taşıyan cihaz artık F, G, H şeklinde harf ile simgelenecektir. 

Varsayalım ki C: de, D: de ve sonradan takdığınız flash belliğinize de bilgisayar H: harfini atadı. bu kodu sırasıyla şu şekilde değiştirip teker teker çalışıtırmanız gerekecek
C sürücüsü için;  attrib /d /s -h -r -s C:\*  
D sürücüsü için;  
attrib /d /s -h -r -s D:\*   

H: sürücüsü için ( flash bellek ) attrib /d /s -h -r -s H:\*   

işlemler bazen diskin boyutuna göre 5-10 dakika zaman alabilir. Onun için işlemin bitmesini beklemelisiniz. 

kesin işe yaradığını söyleyebilirim. 

Bende de vardı ekran görüntüsü böyleydi