Aralık
11th 2007
Assembly, ILDASM.exe ve GACUTIL.exe Hakkında

Posted under C# (csharp)

Bu makalede kavram olarak en çok karıştırılan ve anlaşılması diğer konulara göre zor olan Assembly kavramını ve Visual Studio ile birlikte gelen GACUTIL ve ILDASM gibi önemli araçları inceleyecegiz.

Asembly Nedir?

Hemen ilk başta belirtelim ki bu makalede bahsedeceğimiz Assembly’nin alt seviye bir programlama dili olan Assembly ile yakından uzaktan hiçbir alakası yoktur. Sadece bir isim benzerliği vardır. .NET platformunda yazdığımız kodlar sonucunda oluşturduğumuz bütün .exe uzantılı dosyalara ve .dll uzantılı dosyalara genel olarak Assembly denilmektedir. Projemize ait derlenmiş kodlar ve metadata dediğimiz bir takım özniteleyici kodlar Assembly’ler içerisinde bulunur. Assembly’lerin kabaca özellikleri aşağıdaki gibi sıralanabilir.
Continue Reading »

No Comments »

Aralık
11th 2007
C#’da İfadeler, Tipler ve Değişkenler

Posted under C# (csharp)

 Bu derste C# dilindeki ifadeler,tipler ve değişkenler anlatılacaktır.

Dersimizin hedefleri : 

  • Değişken kavramının anlaşılması. 
  • C# dilinde bulunan basit tiplerin öğrenilmesi.
  • C# dilindeki ifadelerin temel olarak anlaşılması. 
  • String veri tipinin öğrenilmesi.

Değişkenleri en sabit şekilde verilerin depolandğı yerler olarak tanımlayabiliriz. Değişkenlerin içine verilerimizi koyabilirirz veya değişkenlerimizin içindeki verileri C# programındaki işlemlerimiz için kullanabilliriz. Değişkelerin tipini belirleyen faktör, onların içerdikleri verilerin çeşitleridir. 

C# dilinde kullanacağımız her değişkenin bir tipi olmak zorundadır ( Vbscript ve JavaScript gibi dillerde değişken tanımlarken onun tipini de ayrıca belirtmeye gerek yoktur.) Bir değişken üzerinde yapılan tüm işlemler de onun hangi tipte bir değişken olduğu göz önüne alınarak yapılır. Böylece programda bütünlük ve güvenlik korunmuş olur.
Continue Reading »

No Comments »

Aralık
11th 2007
Türetme, Genelleme ve Arayüz Kavramları

Posted under C# (csharp)

 Bir önceki makalemizde sınıfların gösterimini ve sınıflararası ilişkiyi görmüştük, bu makalemizde ise sınıflar arasındaki türetmeyi, genellemeyi ve arayüz kavramlarını göreceğiz.

TÜRETME(INHERITANCE)

Eğer eşyalar arasında genellemeler yapabiliyorsak genellemeyi yaptığımız eşyalarda ortak özelliklerin olduğunu biliriz. Mesela, “Hayvan” diye bir sınıfımız olsun.Memeliler, Sürüngenler, Kuşlar da diğer sınıflarımız olsun.Memeliler, Sürüngenler ve Kuşlar sınıfının farklı özellikleri olduğu gibi hepsinin Hayvan olmasından dolayı birtakım ortak özellikleri vardır. Bu yüzden Memeliler, Sürüngenler ve Kuşlar birer hayvandır deriz. Yani kısacası Memeliler, Sürüngenler ve Kuşlar, Hayvan sınıfından türemiş ve herbirinin kendine özgü özellikleri vardır deriz. Nesne yönelimli programlamada buna türetme (Inheritance) denir. UML ‘de türetme aşağıdaki şekilde olduğu gibi gösterilir.

Yanda gördüğünüz türetme ağacında Sürüngenler, Kuşlar ve Memeliler hayvandır.İnsan, Kedi ve Köpek ise memelidir anlamı çıkmaktadır. Sınıflar arasındaki türetme işlemi yandaki gibi ucu açık üçgen ve düz bir çizgiyle gösterilir. Bu durumda “HAYVAN” sınıfı ana sınıf(parent class), Memeliler, Kuşlar ve Sürüngenler ise yavru (sub class) sınıflardır.

Türetmeye sınıflar arası ilişki açısından baktığımızda türetmenin “is kind of” (bir çeşit) ilişkisinin olduğu görülür.Yani Kuş bir çeşit Hayvan’dır deriz. (Bird is kind of Animal)


Kısaca toplarlarsak, türetmenin ve genellemenin programcı açısından önemi büyüktür.Nesneler arasında ortak özellikler varsa bunu her sınıfta belirtmenin yerine ortak özellikleri bir sınıfta toplayıp diğer sınıfları ondan türetip yeni özellikler ekleyerek organizasyonu daha etkin hale getirebiliriz.Tabi istersek ortak özelliklerin toplandığı sınıf ile gerçek nesneler oluşturmayı engelleyebiliriz.Bu tür sınıflara “abstract class” denir.Bir sınıfın “Abstract” olması için Sınıf ismini italik yazmamız gerekir.


İÇERME (AGGREGATIONS)

Bazı sınıflar birden fazla parçadan oluşur.Bu tür özel ilişkiye “Aggregation” denir.Mesela ,bir TV ‘yi ele alalım.Bir televizyon çeşitli parçalardan oluşmuştur.Ekran,Uzaktan Kumanda,Devreler vs.. Bütün bu parçaları birer sınıf ile temsil edersek TV bir bütün olarak oluşturulduğunda parçalarını istediğimiz gibi ekleyebiliriz. Aggregation ilişkisini ‘bütün parça’ yukarıda olacak şekilde ve ‘bütün parça’nın ucuna içi boş elmas yerleştirecek şekilde gösteririz.Örnek bir şekil aşağıdaki gibidir.

Yandaki şekilden de görüldüğü üzere bir TV sistemi 1 EKRAN,1 KUMANDA, birden çok DEVRE ‘den oluşmaktadır. TV’ nin bir parçası olan KUMANDA ise 2 PİL, 1 TUŞ TAKIMI ve 1 IŞIK LAMBASI ‘ndan oluşmaktadır. İçi boş elma ile gösterilen ilşkilerde herbir parça ayrı bir sınıftır ve tek başlarına anlam ifade ederler. Parça bütün arasında çok sıkı bir ilişki yoktur. TV nesnesi yaratıldığında bir ekran veya bir kumanda nesnesi daha sonradan oluşturularak TV ye takılır. Ama bazı durumlarda bütün nesneyi yarattığımızda parçalarının da yaratılmasını isteriz. Mesela bir insan bedenini analizini yapalım.Bir insan vücudu baş, gövde, el ve ayaklardan oluşur. Bir insan vücudunu düşündüğümüzde tümüyle düşünürüz.
Sadece “Beden” nesnesini oluşturup sonradan bedene el, ayak, baş takmak çok mantıksız olurdu. Bu tür ilişkilerin gösterilmesine ise “COMPOSITE ASSOCATION” denir. Bu ilişki diğerine göre daha sıkıdır. Bu tür ilişkilerde bütün nesne yaratıldığında parçalar da anında yaratılır. Bazı durumlarda, takılacak parçalar duruma göre değişebilir.Belirli koşullarda Kumanda, bazı durumlarda da Ekran olmayacaksa bu tür durumlar koşul ifadeleri ile birlikte noktalı çizgilerle belirtilir.Bu konuyu daha sonraki makalelerimizde detaylı bir şekilde ele alacağız. Bu durumda takılacak parçalar “constraint(koşul)” ile belirtilir.


Bir “COMPOSITE” ilişkisi aşağıdaki şekilde gösterilir.

Gerçek bir BEDEN nesnesi oluştuğunda mutlaka ve mutlaka 1 KAFA, 1 GÖVDE ve 4 EL_AYAK nesnesi yaratılacaktır.Gördüğünüz gibi sıkı bir parça-bütün ilişkisi mevcuttur.

ARAYÜZ(INTERFACE)

Bazı durumlarda bir sınıf sadece belirli işlemleri yapmak için kullanılır. Herhangi bir sınıfla ilişkisi olmayan ve standart bazı işlemleri yerine getiren sınıfa benzer yapılara arayüz(interface) denir.Arayüzlerin özellikleri yoktur. Yalnızca bir takım işleri yerine getirmek için başka sınıflar tarafından kullanılırlar. Mesela, bir “TuşaBasma” arayüzü yaparak ister onu “KUMANDA” sınıfında istersek de aşağıdaki şekilde görüldüğü gibi “KLAVYE” sınıfında kullanabiliriz. Sınıf ile arayüz arasındaki ilişkiyi kesik çizgilerle ve çizginin ucunda boş üçgen olacak şekilde gösteririz. Sınıf ile arayüz arasındaki bu ilişkiye gerçekleme(realization) denir. Sınıfla, arayüz arasında UML gösterimi açısından fazla bir fark yoktur.Tek fark arayüzde özellik(attribute) yoktur.Diğer bir fark ise arayüz adlarını yazarken adın üstüne <interface> yazısını eklemektir.Aşağıda bir arayüz-sınıf ilişkisi mevcuttur.

KLAVYE sınıfı YAZICI arayüzündeki TusBasma() işlevini kullanır.Bu ilişkiye gerçekleme(realization) denildiğini unutmayın.

GÖRÜNÜRLÜK(VISIBILITY)

Görünürlük işlemi bir sınıfın işlevlerine ve özelliklerine ilişkin kullanım alanını belirler.Görünürlük belirtmek için işlevin ya da özelliğin başına görünürlük seviyesi ile ilgili simge yazılır. 3 çeşit görünürlük seviyesi vardır.

Public Seviyesi : Bütün sınıflara açık seviye. İşareti : +
Protected Seviyesi : Sadece ilgili sınıfa ve kendisinden türeyen sınıfların kullanımına açık seviye.İşareti : #

Private Seviyesi : Sadece ilgili sınıfın (orjinal sınıf) erişebileceği seviye. İşareti : -

Mesela bir bilgisayar dosyası ilgili sınıfın özellikleri ve işlevleri ile ilgili görünülürlük özelliği aşağıdaki gibi gösterilebilir.

   Class diyagramlarıyla ilgili söyleyeceklerimiz bunlar.Bir sonraki yazımızda UML ‘in diğer önemli yapısı olan “USE CASE” diyagramlarını ele alacağız.

No Comments »

Aralık
11th 2007
Dijital Saat Programı Kodları

Posted under Visual Basic

KRONOMETRE YAPMAK
‘Formumuzun arabirimi şu şekilde olacak.

Dijital kronometre yapabilmek için gerekli olan en önemli araçlar yukarıdaki kırmızı renklerde olan dijital sayı resimleridir.Kronometre yapmak için sayıları kendimizin bir kontrole bağlayıp denetlememiz gerekir.(Ben en azından böyle yaptım.Her yiğidin bir yoğurt yemesi vardır Değil mi??)Visual Basic’deki Timer nesnesiyle bu işi yapmamız biraz zor çünkü bu işlemle kronometre çok zor Timer nesnesiyle ancak bir dijital saat programı yapılabilir bence.Mesela yukarıdaki programda gereksiz olan nesneler var örneğin Pencere Taşı, Simgeye Al,Devam Et gibi.Bu öğelerin programın içeriğine zenginlik katmak gibi bir amaç taşıyor.Her programla uğraşan kişilerin biraz dizayn yeteneği olmalı veya geliştirmeli bence…..
Ben daha önceden böyle dijital sayılarla ilgili bir şeylerle uğraşmak istiyordum fakat elimde dijital sayı resimleri yoktu. Bunları’da internet’ten indirdikten sonra programı yapmaya koyuldum.

Bu kadar sohbetten sonra programımıza başlayalım artık.

PROGRAMIN GÖRÜNEN YÜZÜ

PROGRAMIN GÖRÜNMEYEN YÜZÜ

Burada
  label’lerini kontrol ettireceğiz
Bu labelleridende sayı artışını kendimiz sağlayacağız.Üçü’de ayrı birer label nesnesidir.
Sağdaki label’in ismi   LblSaat .  Ortadaki label’in ismi    LblDakika ..Sağdaki label’in ismi   LblSaniye   ‘dir.

Timer nesnelerinin isimleri standart. Yani  Timer1 ve Timer2.Bunlarla Nokta resimleri ve kronometre yapmak için sayıları kontrol edeceğiz.
Bu label nesnesinin ismi NOKTA bununla kronometrenin aralarındaki iki nokta ve tek nokta’yı kontrol ettireceğiz

Bunlar Dijital sayılarımız…Label’lere göre birbirlerinin görüntüsünü alacak olan image nesneleri.
İsimleri Sağdan itibaren Sıfır,Bir,iki,üç,Dört,Beş,Altı,Yedi,Sekiz,Dokuz
Aşağıdaki noktaların isimleri ise Sağdan itibaren
ikiNokta4,Bos2,TekNokta1,TekNoktaBos,ikiNokta2,Bos1

Continue Reading »

No Comments »

Aralık
11th 2007
Listview Objesinde Sayi Ve Tarih Siralamasi

Posted under Visual Basic

Hepimizin bildigi gibi listview nesnesinde kolon icerigi sayi yada tarih olsa bile listview bu icerigi string olarak kabul edip siralamaktadir.
Asagidaki fonksiyon ve örnek kodlar bu sorunun cozumu icin gelistirilmistir.

Asagidaki fonksiyonu bir module yada form objesinin kod kismina kopyalayiniz.

Fonksiyon


Option Explicit

Public Sub SortListView(ListViewObject As ListView, _
                        ByVal ColumnHeader As MSComctlLib.ColumnHeader)
‘**********************************************************************
‘Purpose      : Sort list view items
‘Input        : ListView object, Selected column
‘               ListViewObject : ListView object
‘               ColumnHeader   : Selected column
‘Output       : -
‘Return value : -
‘Date         : 23.09.2003
‘Author       : Algorithm : Iuri Applonio
‘               Code      : Murat Aras
‘Modification : -
‘**********************************************************************
    
    Dim strItem As String               ‘List item
    Dim intMaxItemLength As Integer     ‘Max. length of list items
    Dim intCounter As Integer           ‘Counter
    
    With ListViewObject
        ’Set sorted property of listview
        .Sorted = False
        ’Add temporary column to sort
        .ColumnHeaders.Add , , , 0
    
        ’Select first item from list view
        ’If first column
        If ColumnHeader.Index = 1 Then
            strItem = .ListItems(1)
            ’If another column
        Else
            strItem = .ListItems(1).SubItems(ColumnHeader.Index - 1)
        End If
    End With
    
    ’Date type?
    If IsDate(strItem) Then
        With ListViewObject
            ’If first column
            If ColumnHeader.Index = 1 Then
                For intCounter = 1 To .ListItems.Count
                    ’Get list item
                    strItem = Trim(.ListItems(intCounter))
                    ’Add list item to last column in new format to sort
                    .ListItems(intCounter).SubItems(.ColumnHeaders.Count - 1) = Format(strItem, “yyyymmddHHMMSS”)
                Next
Continue Reading »

No Comments »

Next »

eXTReMe Tracker
hosting ------------------------------ yeliiniz Silinmitir.Ltfen Sayfanzdan Kodu Kaldrnz.