Թարգմանիչ (նախագծման ձևանմուշ)

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search
Թարգմանիչ
Անգլերեն անվանում` Interpreter pattern
Տեսակ` Վարքագծային
Նշանակություն` լուծում է հաճախակի հանդիպող փոփոխման ենթակա խնդիրները
Նկարագրությունը ԳօՖի
"Design Patterns" գրքում`
Այո

Թարգմանիչ (անգլ.՝ Interpreter pattern), վարքագծային նախագծման ձևանմուշ, որը որոշում է թե նախադասությունները ինչ լեզվով պետք է ներկայացվեն։ Հիմնական նպատակն այն է, որ ունենալ դաս յուրաքանչյուր համակարգչային լեզվի համար։[1]

Նախագծային ձևանմուշը ստեղծում է թարգմանիչներ, որոնք լուծում են հաճախակի հանդիպող և փոփոխման ենթակա խնդիրները։

Կիրառույթուն[խմբագրել | խմբագրել կոդը]

  • Բնորոշում է տվյալների բազայի հերթը այնպիսի լեզուների համար, ինչպիսին օրինակ SQL լեզուն է։
  • Բնորոշում է համակարգչային լեզուները, որն հաճախ օգտագործվում են կոմունիկացիոն պրոտակոլների (անգլ.՝ communication protocols) նկարագրման համար։
  • Ծրագրավորման լեզուներից շատերի գլխավոր խնդիրն է ներառել մի քանի մասնագիտացված լեզուներ։

Առավելություններ[խմբագրել | խմբագրել կոդը]

Հեշտ է ընդլայնել և փոփոխել քերեկանությունը, դասերի իրականացումը։ Կարելի է հեշտությամբ փոփոխել արտահայտությունների հաշվարկման եղանակը։

Թերություններ[խմբագրել | խմբագրել կոդը]

Դժվար է իրականացնել այն քերականությունը, որն ունի բազմաթիվ քերեկանական կանոններ։

Օրինակներ[խմբագրել | խմբագրել կոդը]

C#[խմբագրել | խմբագրել կոդը]

//IVSR: Interpreter design pattern
namespace IVSR.DesignPaterns.Interpreter
{
// "Context" 
 class Context 
 {
 }

 // "AbstractExpression" 
 abstract class AbstractExpression 
 {
 public abstract void Interpret(Context context);
 }

 // "TerminalExpression" 
 class TerminalExpression : AbstractExpression
 {
 public override void Interpret(Context context) 
 {
 Console.WriteLine("Called Terminal.Interpret()");
 }
 }

 // "NonterminalExpression" 
 class NonterminalExpression : AbstractExpression
 {
 public override void Interpret(Context context) 
 {
 Console.WriteLine("Called Nonterminal.Interpret()");
 } 
 }
 class MainApp
 {
 static void Main()
 {
 Context context = new Context();

 // Usually a tree 
 ArrayList list = new ArrayList();

 // Populate 'abstract syntax tree' 
 list.Add(new TerminalExpression());
 list.Add(new NonterminalExpression());
 list.Add(new TerminalExpression());
 list.Add(new TerminalExpression());

 // Interpret 
 foreach (AbstractExpression exp in list)
 {
 exp.Interpret(context);
 }

 // Wait for user 
 Console.Read();
 }
 }
}

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

  1. Erich Gamma; Richard Helm; Johnson, Ralph; Vlissides, John (1994)։ Design Patterns: Elements of Reusable Object-Oriented Software։ Addison-Wesley։ ISBN 0-201-63361-2