Aylık Arşiv: Mart 2015

C#’ta Dictionary Kullanımı

Merhabalar.

Bu yazıda temel manada C#’ta dictionary kullanımından bahsetmeye çalışacağım.

Fırsat bulursam ileride daha detaylı ele almayı düşünüyorum.

Nedir?

Adından anlaşılacağı üzere sözlüğe benzetilen, key-value ikilisini içeren “generic” bir yapı.

Tanımı şu şekilde yapılır:


Dictionary<TKey, TValue> d = new Dictionary<TKey, TValue>();

Buradaki hem key hem de value kısmı herhangi bir obje(primitive tipler, nesne, delege/metod vb.) alabilir.

Aşağıda basit bir örnek var:


using System;

using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<int, string> d = new Dictionary<int, string>(){
            {1,"Ahmet"},
            {2, "Mehmet"},
            {3,"Muhammed"}};

        Console.WriteLine(d[1]);
    }
}

Çıktı: Ahmet

Üstte söylediğim gibi key ve value kısımlarına farklı objeler set edilebilir.

Örneğin oluşturduğumuz bir “Musteri” sınıfının nesnesini set edelim:


using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
         Musteri must1 = new Musteri(1, "Muhammed", "Hilmi");
         Musteri must2 = new Musteri(7, "Ahmet", "Koca");
         Musteri must3 = new Musteri(12, "Mehmet", "Kara");
         Musteri must4 = new Musteri(15, "Mustafa", "Kılıç");

         Dictionary<int, Musteri> musteri = new Dictionary<int, Musteri>();

         musteri.Add(must1.Id, must1);
         musteri.Add(must2.Id, must2);
         musteri.Add(must3.Id, must3);
         musteri.Add(must4.Id, must4);

         Console.WriteLine("Id : " + 1 + ", Ad : " + musteri[1].Ad + ", Soyad : " + musteri[1].Soyad);
}

public class Musteri
{
    public Musteri(int id,string ad,string soyad)
    {
        Id = id;
        Ad = ad;
        Soyad = soyad;
    }
    public int Id { get; set; }
    public string Ad { get; set; }
    public string Soyad { get; set; }
}

Çıktı: Id : 1,Ad : Muhammed, Soyad : Hilmi

 

 Bu sayfa 2604 kez görüntülendi

It's only fair to share...Share on LinkedInShare on FacebookShare on Google+Tweet about this on TwitterShare on Tumblr

PL/SQL 7: Paketler(Packages)

Merhabalar.

Bu yazıda paket(package) mevzusunu anlatmaya çalışacağım.

Paket, içerisinde birden fazla fonksiyon ve SP barındırabilen bir şema nesnesidir. Oracle’ın ifadesiyle:

  • Modülerliği sağlar.
  • Kullanım kolaylığını sağlar.
  • Uygulama dizaynını kolaylaştırır.
  • Performansı artırır. 

Paket 2 kısımdan oluşur.

  • Spec(specification) : Paketteki fonksiyon ve SPlerin bildirimlerinin yapıldığı arayüz kısmıdır.
  • Gövde(body) : Fonksiyon ve prosedürlerinin tanımlamalarının yapıldığı kısımdır.

Şablon:

Spec kısmı:

CREATE [OR REPLACE] PACKAGE paket_adı IS|AS

public tipler ve değişkenler
altprogram spesifikasyonları
END [package_name];

Body kısmı:

CREATE [OR REPLACE] PACKAGE BODY package_name IS|AS
private tipler ve değişkenler
altprogram gövdesi
[BEGIN initialization statements]
END [package_name];

Örnek: Matematik Paketi

Şimdi örnek olarak “matematik” isminde bir paket oluşturuyorum.

İçerisine de 2 fonksiyon 1 tane de prosedür/SP koyuyorum.

Paketin “spec” tanımını yaparken yukarıda belirttiğim üzere fonksiyon ve prosedürlerin sadece bildirimlerini yazıyorum. Yani aldığı parametreleri ve -varsa- dönüş değerini.

Evet, şekil A:


CREATE OR REPLACE PACKAGE matematik
IS

FUNCTION toplama
 (p_sayi1 IN NUMBER, p_sayi2 IN NUMBER)
RETURN NUMBER;

FUNCTION carpma
 (p_sayi1 IN NUMBER, p_sayi2 IN NUMBER)
RETURN NUMBER;

PROCEDURE topla_ve_ekrana_yazdir
 (p_sayi1 IN NUMBER, p_sayi2 IN NUMBER);

END;

Scripti koşturunca aşağıdaki şekilde paket objem oluşuyor:

package1

Şimdi de paketin gövdesini(body) oluşturuyorum:


CREATE OR REPLACE PACKAGE BODY matematik
IS
 PROCEDURE sonucu_ekrana_yazdir (p_sonuc IN NUMBER);

 FUNCTION toplama (p_sayi1 IN NUMBER, p_sayi2 IN NUMBER)
 RETURN NUMBER
 IS
 v_sonuc NUMBER;
 BEGIN
 v_sonuc := p_sayi1 + p_sayi2;

 RETURN v_sonuc;
 END;

FUNCTION carpma (p_sayi1 IN NUMBER, p_sayi2 IN NUMBER)
 RETURN NUMBER
 IS
 v_sonuc NUMBER;
 BEGIN
 v_sonuc := p_sayi1 * p_sayi2;
 RETURN v_sonuc;
 END;

PROCEDURE topla_ve_ekrana_yazdir (p_sayi1 IN NUMBER, p_sayi2 IN NUMBER)
 IS
 v_sonuc NUMBER;
 BEGIN
 v_sonuc := toplama (p_sayi1, p_sayi2);
 sonucu_ekrana_yazdir(v_sonuc);
 END;

 PROCEDURE sonucu_ekrana_yazdir (p_sonuc IN NUMBER)
 IS
 BEGIN
 DBMS_OUTPUT.put_line ('Sonuc : ' || p_sonuc);
 END;
END;

Buradaki sonucu_ekrana_yazdir prosedürü dikkatinizi çekmiş olmalı. Çünkü Paketin spec kısmında tanımlamadık. Sadece “body”de en üstte tanımladık ve burada kullandık.

Tahmin edeceğiniz üzere bu prosedürü “spec”te tanımlamadığımız için private bir prosedür oldu. Dolayısıyla yalnızca bu paketin içinde kullanabileceğiz.

Oluşturduğumuz paketin “body”si de altta.

package2

Paketin herhangi bir elemanını ise aşağıdaki gibi kullabiliriz:


BEGIN
matematik.topla_ve_ekrana_yazdir(3,5);
END;

Sonuç:

package3

Temel manada paket konusu bu şekilde.

Kendinize çook iyi davranın.

 Bu sayfa 4878 kez görüntülendi

It's only fair to share...Share on LinkedInShare on FacebookShare on Google+Tweet about this on TwitterShare on Tumblr