Oca032010

.NET Web Application'da Class ve Namespace Yapısı

Yazar: Gökhan ÖZİÇ Yayınlanma Saati: 09:17
Kategori(ler): ASP.NET | C#

.NET’de çalışırken bir web uygulaması geliştirmek istiyorsunuz. Bunun için iki tane seçeneğiniz var. Ya “New Project” deyip yeni bir web application yaratacaksınız; ya da “New Website” deyip yeni bir websitesi yaratacaksınız. Eğer projenizde kendi yazacağınız class’lar da olacaksa işler biraz değişiyor. “New Website” seçeneğiyle proje oluşturduğunuzda; yazdığınız tüm classları istediğiniz yerden rahatlıkla çağırabiliyorsunuz. Fakat “Web Application” oluşturarak çalışmaya alışık biriyseniz bu biraz daha meşakatli. Bu yazımda sizlere “Web Application” seçerek proje oluşturmaya alışmış developerlar için yazılan class’ların proje içerisinde nasıl kullanıldığını anlatacağım.

File->New Project->ASP.NET Web Application yolunu takip ederek projemizi oluşturalım. Sorunun rahat anlaşılır olması için kolay bir örnekle gideceğim. Örneğin dört işlem yapan bir class oluşturmak istiyoruz. Solution Explorer’dan projemizde gerekli yere sağ tıklayıp Add->New Item->Class yolunu takip edip, class’ımıza “Basic Operations” ismini verelim ve oluşturalım. Şimdi class’ımızda kullananacağımız attribute’leri, accessor property’leri, constructor’leri ve method’ları yazalım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace BasicOperations.App_Code
{
    public class BasicOperations
    {
        private double a;
        private double b;

        public double A
        {
            get
            { 
                return a; 
            }
            set
            {
                a = value; 
            }
        }

        public double B
        {
            get
            {
                return b;
            }
            set
            {
                b = value;
            }
        }

        public BasicOperations()
        {
            A = 0;
            B = 0;
        }

        public double Addition()
        {
            return A + B;
        }

        public double Subtraction()
        {
            return A - B;
        }

        public double Multiplication()
        {
            return A * B;
        }

        public double Division()
        {
            return A / B;
        }
    }
}

 

Class’ımızı oluşturduk ve artık projemizde kullanabiliriz. Peki projemizde nasıl kullanalım? Onun için de default.aspx’e birkaç control ekleyelim. default.aspx sayfamız da şu şekilde olsun:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Deneme._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">

<html xmlns="" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <h4>Addition</h4><br />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    &nbsp; + &nbsp;
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    &nbsp; = &nbsp;
    <asp:Label ID="Label1" runat="server"></asp:Label>
    <asp:Button ID="Button1" runat="server" Text="Show Result" 
            onclick="Button1_Click" />
    <br />
    <br />
    <h4>Subtraction</h4><br />
    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
    &nbsp; + &nbsp;
    <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
    &nbsp; = &nbsp;
    <asp:Label ID="Label2" runat="server"></asp:Label>
    <asp:Button ID="Button2" runat="server" Text="Show Result" 
            onclick="Button2_Click" />
    <br /><br />
    <h4>Multiplication</h4><br />
    <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
    &nbsp; + &nbsp;
    <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
    &nbsp; = &nbsp;
    <asp:Label ID="Label3" runat="server"></asp:Label>
    <asp:Button ID="Button3" runat="server" Text="Show Result" 
            onclick="Button3_Click" />
    <br /><br />
    <h4>Division</h4><br />
    <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
    &nbsp; + &nbsp;
    <asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
    &nbsp; = &nbsp;
    <asp:Label ID="Label4" runat="server"></asp:Label>
        <asp:Button ID="Button4" runat="server" Text="Show Result" 
            onclick="Button4_Click" />
    <br /><br />
    
    </div>
    </form>
</body>
</html>

Şimdi de default.aspx.cs kod dosyasının içerisini dolduralım. Button eventleri için gerekli kodları yazalım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Deneme
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            BasicOperations myOp = new BasicOperations();
            myOp.A = Convert.ToDouble(TextBox1.Text);
            myOp.B = Convert.ToDouble(TextBox2.Text);
            Label1.Text = myOp.Addition().ToString();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            BasicOperations myOp = new BasicOperations();
            myOp.A = Convert.ToDouble(TextBox3.Text);
            myOp.B = Convert.ToDouble(TextBox4.Text);
            Label2.Text = myOp.Subtraction().ToString();
        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            BasicOperations myOp = new BasicOperations();
            myOp.A = Convert.ToDouble(TextBox5.Text);
            myOp.B = Convert.ToDouble(TextBox6.Text);
            Label3.Text = myOp.Multiplication().ToString();
        }

        protected void Button4_Click(object sender, EventArgs e)
        {
            BasicOperations myOp = new BasicOperations();
            myOp.A = Convert.ToDouble(TextBox7.Text);
            myOp.B = Convert.ToDouble(TextBox8.Text);
            Label4.Text = myOp.Division().ToString();
        }
    }
}

Sizinde gördüğünüz gibi yazdığımız class’a ulaşamıyoruz. Bu durum başka şekillerde de karşımıza çıkabilir. Örneğin, projenizde iki adet class’ınız var ve birinde diğerini çağırmak istiyorsunuz. Şu durumda bunu da yapamayacaksınız. Peki şimdi ne yapabiliriz? Oluşturduğumuz class’ı bir namespace içine koyup; bu namespace’i de projemizde “Add Reference” diyerek ekleyip kullanacağız. Şimdi yeni bir Visual Studio açıyoruz ve File->New Project->Class Library yolunu izliyoruz. Böylelikle yeni bir namespace oluşturabileceğiz. Şimdi, oluşturduğumuz class library’deki class dosyasını aşağıdaki şekilde değiştirelim.

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

namespace Operations
{
    public class BasicOperations
    {
        private double a;
        private double b;

        public double A
        {
            get
            {
                return a;
            }
            set
            {
                a = value;
            }
        }

        public double B
        {
            get
            {
                return b;
            }
            set
            {
                b = value;
            }
        }

        public BasicOperations()
        {
            A = 0;
            B = 0;
        }

        public double Addition()
        {
            return A + B;
        }

        public double Subtraction()
        {
            return A - B;
        }

        public double Multiplication()
        {
            return A * B;
        }

        public double Division()
        {
            return A / B;
        }
    }
}

Artık namespace’imiz oluşturulmaya hazır. Şimdi, oluşturduğumuz class library’i build edelim. Artık namespace’imizin dll dosyası oluştu ve kendi projemize dönebiliriz. Yapmamız gereken şey, solution explorer kısmındaki References seçeneğine sağ tıklayıp “Add Reference” demek. Daha sonra çıkan sekmelerden “Browse”u seçiyoruz ve önceden oluşturduğumuz class library projesinin içine girip sırasıyla Bin->Debug yolunu takip edip “Operations.dll” dosyasını ekliyoruz. Artık oluşturduğumuz class’ı, istediğimiz yerde using ekleyerek kullanabiliriz. Şimdi default.aspx.cs dosyasına dönelim ve using tagimizi ekleyelim. Kalan kod satırlarını yer kaplamaması için koymuyorum.

using Operations;
// Other statements

Şimdi projemizi run edip deneyelim.

Gördüğünüz gibi uygulamamız sorunsuz çalışıyor. Yeni bir yazıda daha görüşmek üzere.



Etiket(ler): , , , ,



[KickIt] [Dzone] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

E-mail | Permalink | Trackback | Yazı RSSRSS comment feed 0 Yorumlar

Yorum ekle




  Country flag
biuquote
  • Yorum
  • Canlı önizleme
Loading