C#

Interpreter Tasarım Deseni

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda tasarım desenlerinden biri olan interpreter tasarım desenini anlatacağım. Hadi başlayalım !

Aslında bu tasarım deseni diğer tüm tasarım desenlerinde de olduğu gibi C# diline özgü bir kavram değil, tüm nesne yönelimli programlama dillerinde daha temiz kod yazabilmek için oluşturulmuş ve yazılımcılar tarafından da kabul görmüş yazılı olmayan kurallardır ve nesne yönelimli programlama yapılabilen tüm dillerde uygulanabilmektedir.

Günümüz yazılım geliştirme süreçlerinde, sıklıkla kullanılan programlama dillerinden biri olan C#, genellikle yüksek seviyeli bir programlama dilidir. C# dilinde yazılmış programlar, büyük ölçüde işletim sistemleri ve diğer uygulamalar tarafından kullanılır.

Interpreter Tasarım Deseni Nedir?

Bu makalede, Interpreter tasarım deseninin C# programlama dilinde nasıl uygulanacağını örneklerle açıklayacağız. Interpreter tasarım deseni, bir dilden bir metnin yorumlanması gerektiği durumlarda kullanılır. Bu tasarım deseni, metnin anlamını yorumlamak için bir dil yapısını temsil eden bir nesne ağacı kullanır.

Örnek olarak, bir hesap makinesi uygulaması yazmak istediğinizi varsayalım. Bu hesap makinesi, kullanıcının matematiksel ifadeleri girmesini kabul edebilir ve bu ifadeleri yorumlayarak sonuçları hesaplayabilir. Bu senaryoda, Interpreter tasarım deseni kullanarak bu işlemleri gerçekleştirebilirsiniz.

C# İle Uygulanması

NumberExpression Sınıfının IExpression Arayüzünden Türetilmesi

Öncelikle, yorumlanacak matematiksel ifadeleri temsil edecek bir sınıf tanımlayacağız. Bu sınıf, Interpreter tasarım desenindeki TerminalExpression sınıfına karşılık gelir:

public class NumberExpression : IExpression
{
    private int _number;

    public NumberExpression(int number)
    {
        _number = number;
    }

    public int Interpret()
    {
        return _number;
    }
}

AdditionExpression Sınıfının IExpression Arayüzünden Türetilmesi

Bu sınıf, bir tam sayı değeri tutar ve bu değeri yorumlar. Şimdi, bir operatörü temsil edecek bir sınıf tanımlayacağız. Bu sınıf, Interpreter tasarım desenindeki NonterminalExpression sınıfına karşılık gelir:

public class AdditionExpression : IExpression
{
    private IExpression _leftExpression;
    private IExpression _rightExpression;

    public AdditionExpression(IExpression leftExpression, IExpression rightExpression)
    {
        _leftExpression = leftExpression;
        _rightExpression = rightExpression;
    }

    public int Interpret()
    {
        return _leftExpression.Interpret() + _rightExpression.Interpret();
    }
}

Calculator Sınıfının Oluşturulması

Bu sınıf, iki IExpression nesnesini alır ve bunları toplar. Şimdi, yukarıdaki iki sınıfı kullanarak bir matematiksel ifadeyi yorumlamak için bir sınıf tanımlayacağız. Bu sınıf, Interpreter tasarım desenindeki Context sınıfına karşılık gelir:

public class Calculator
{
    private IExpression _expression;

    public Calculator(string expression)
    {
        Stack<IExpression> stack = new Stack<IExpression>();

        foreach (string token in expression.Split(' '))
        {
            if (int.TryParse(token, out int number))
            {
                stack.Push(new NumberExpression(number));
            }
            else if (token == "+")
            {
                IExpression rightExpression = stack.Pop();
                IExpression leftExpression = stack.Pop();
                stack.Push(new AdditionExpression(leftExpression, rightExpression));
            }
        }
        _expression = stack.Pop();
    }
    public int Calculate()
    {
        return _expression.Interpret();
    }
}

Bu sınıf, yorumlanacak ifadeyi aldığı zaman, ifadeyi parçalara ayırır ve her parçayı uygun bir şekilde yorumlar. Sonuç olarak, hesaplamayı gerçekleştirmek için Interpreter tasarım desenini kullanarak bir hesap makinesi uygulaması yazdık.

Uygulamanın Kullanılması

Aşağıda, bu sınıfları kullanarak bir hesaplamayı nasıl gerçekleştirebileceğimizi gösteren bir örnek kod bulunmaktadır:

string expression = "2 + 3 + 4";
Calculator calculator = new Calculator(expression);
int result = calculator.Calculate();
Console.WriteLine(result); // Output: 9

Yukarıdaki örnek kodda, hesaplanacak ifadeyi “2 + 3 + 4” olarak belirledik. Bu ifadeyi yorumlamak için Calculator sınıfını kullandık ve sonucu hesapladık. Sonuç olarak, konsola “9” yazdırdık.

Sonuç

Bu makalede, C# programlama dilinde Interpreter tasarım deseninin nasıl kullanılabileceğini örneklerle açıkladık. Interpreter tasarım deseni, bir dilden bir metnin yorumlanması gerektiği durumlarda kullanılır ve bir dil yapısını temsil eden bir nesne ağacı kullanır. Yorumlanacak ifadeleri temsil eden TerminalExpression sınıfı, operatörleri temsil eden NonterminalExpression sınıfı ve yorumlamayı gerçekleştirmek için kullanılan Context sınıfı olmak üzere üç farklı sınıfı kullanarak Interpreter tasarım desenini uyguladık.

Evet interpreter tasarım deseni ve C# ile uygulanması bu şekilde olmakta. Tüm C# yazılarımıza buraya, diğer tasarım deseni yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu