Тема 12. Шаблонни типове в C#

Размер: px
Започни от страница:

Download "Тема 12. Шаблонни типове в C#"

Препис

1 Тема 12 Шаблонни типове в C# 1. Същност и деклариране на шаблонен тип в С# Много често възниква проблемът програмистът да създава класове, които са сходни по функционалност, а се различават само по типа на обектите, с които работят. Например, необходимо е да се изгради списък като елементите на списъка са цели числа. В този случай полетата в класа ще са от целочислен тип. Методите, който биха били включени в подобен клас като добавяне, изтриване и търсене на елемент в списъка, биха работили с променливи от целочислен тип. Ако същата задача бъде поставена за изграждане на списък от дробно-десетични стойности или на низове, структурата и функционалността на следващите два класа ще бъдат идентични с тези на първия клас като единствената разлика ще бъде в типовете на данните. Могат да бъдат дадени още много други такива примери за класове, които биха се различавали единствено по типовете на полетата. Например, ако трябва да се описват класове съответстващи на група недвижими имоти, които могат да са къща, етаж от къща или апартамент и да се определя дали обектът се продава, купува или отдава под наем, функционалността ще е идентична и ще се различава единствено по типа на обектите. В подобни случаи възможностите на език С# е предлагат създаването на шаблонни типове (generics). Чрез шаблонните типове функционалността на един клас може да бъде приложена към множество обекти от различни типове. Шаблонните типове са класове, структури, интерфейси и методи, на които се предават като параметри типове. В последствие, при инстанцирането (създаването на програмни обекти) на класове и структури, ще бъдат използвани конкретните типове, които се предават като параметри. Декларацията на типизиран (шаблонен) клас в С# има следния общ вид: class ИмеТипизиранКлас <Type> Type се явява идентификатор, който съответства на параметър на тип. Този тип е неизвестен по време на декларацията на класа. На практика, типизирането на клас т.е. създаването на шаблонен клас е чрез добавянето на параметър към декларацията, съответстващ на неизвестен тип. Едва при инстанцирането на класа този параметър ще бъде заменен с конкретен тип. public class Generic<T> public T Field;

2 Параметърът тип задължително се поставя между символите < > както в декларацията, така и при инстанцирането на класа. За да бъде инстанциран типизиран клас се използва следния синтаксис: ИмеТипизиранКлас <тип> имеобект= new ИмеТипизиранКлас <тип>(); В този случай тип е конкретен тип, който замества парамертизирания. Generic<string> g = new Generic<string>(); g.field = "A string"; //... Console.WriteLine("Generic.Field = \"0\"", g.field); Console.WriteLine("Generic.Field.GetType() = 0", g.field.gettype().fullname); Generic<int> i = new Generic<int>(); i.field = 10; Console.WriteLine("Generic.Field = \"0\"", i.field); Console.WriteLine("Generic.Field.GetType() = 0", i.field.gettype().fullname); public class Point<T> private T x, y; public T X get return x; set x=value; public T Y get return y; set y = value; public void Info() Console.WriteLine("Generic Type: 0", this.x.gettype()); Console.WriteLine("x=0, y=1", x, y); Point<int> p1 = new Point<int>(); p1.x = 100; p1.y = 100; p1.info(); Point<double> p2 = new Point<double>(); p2.x = 10.01; p2.y = ; p2.info();

3 public class MyGenericArray<T> private T[] array; public MyGenericArray(int size) array = new T[size + 1]; public T getitem(int index) return array[index]; public void setitem(int index, T value) array[index] = value; class Tester static void Main(string[] args) //declaring an int array MyGenericArray<int> intarray = new MyGenericArray<int>(5); //setting values for (int c = 0; c < 5; c++) intarray.setitem(c, c*5); //retrieving the values for (int c = 0; c < 5; c++) Console.Write(intArray.getItem(c) + " "); Console.WriteLine(); //declaring a character array MyGenericArray<char> chararray = new MyGenericArray<char>(5); //setting values for (int c = 0; c < 5; c++) chararray.setitem(c, (char)(c+97)); //retrieving the values for (int c = 0; c< 5; c++) Console.Write(charArray.getItem(c) + " "); Console.WriteLine(); Console.ReadKey(); 2. Използване на неизвестни типове в дефиниции на полета и методи Неизвестните типове в тялото на класа се използват при дефинициите на полета и методи

4 Например, поле може да бъде дефинирано по следния начин: Модификатор Т имеполе; Като Т се явява неизвестния тип При дефиницията на метод неизвестният тип може да се използва като тип на върнат резултат или като параметър на метода. Модификатор Т ИмеМетод(параметри) Модификатор Т ИмеМетод(Т име параметър) 3. Разгъване на шаблонен клас Когато се компилира шаблонен клас (да се има предвид, че преводът е до код на междинен език IL-код) транслираният код съдържа информация, че се класът е типизиран т.е. че се работи с неопределени до момента типове. По време на изпълнение, когато се използва типизирания клас, се създава ново описание на класа като неопределения до момента тип вече се заменя с конкретен тип и се създава ново описание на класа. Новото описание е идентично с това на типизирания клас с тази разлика, че на всякъде типът Т е заменен с конкретния. Това ново описание на класа се използва за да се създаде обект от класа при инстанцирането на шаблонния клас. Затова инстанцирането на шаблонен клас се нарича още разгъване на шаблонен клас 4. Типизиране на методи Подобно на класовете методите също могат да бъдат типизирани. Типизирането на метод се налага когато не е известно от какъв тип ще са параметрите на метода и означава, че в него ще бъдат използвани неизвестни типове. Едва при извикването на метода се определя кои ще бъдат неизвестните типове като типовете параметри се заменят с конкретни. Синтаксисът на типизирането на метод е следният: Модификатор тип ИмеМетод <К> (списък параметри) В случая К е параметър на тип, който при дефиницията на метода е неизвестен.

5 public static void Swap<K>(ref K a, ref K b) K c; c = a; a = b; b = c; Извикването на типизиран метод е по следния начин: int x = 10, y = 20; Console.WriteLine("x=0 y=1",x,y); Swap <int>(ref x, ref y); Console.WriteLine("x=0 y=1", x, y); string s1 = "Hello"; string s2 = "World"; Console.WriteLine(s1 + " " + s2); Swap<string>(ref s1, ref s2); Console.WriteLine(s1 + " " + s2); Point<int> p3 = new Point<int>(); p3.x = 50; p3.y = 200; Swap(ref p1, ref p3); p1.info(); p3.info(); public void Swap <K> (ref K a, ref K b) K c; c=a; a=b; b=c; Пример за извикване на типизиран метод: int x=5; int y=4; Swap<int> (ref x, ref y); String s1 = Hello ; String s2= World ; Swap<string>(ref s1, ref s2); Относно въпроси по темата на адрес: ln_zh_st@yahoo.com

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision :

Подробно

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 9 март 2005 г. template< class

Подробно

ИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври

ИНТЕРНЕТ ПРОГРАМИРАНЕ - JAVA JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври JAVA ОБЕКТИ Ненко Табаков Пламен Танов Технологическо училище Електронни системи Технически университет София 9 октомври 2008 JAVA ОБЕКТИ Забележка: Тази лекция е адаптация на лекция от курса: 6.092 Java

Подробно

Lush Green

Lush Green Класове Какво са класовете? Основен инструмент на ООП Средство за дефиниране на абстрактни типове данни Синтактична конструкция, която позволява логическо групиране на данни и операциите над тях Дефиниция

Подробно

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1

Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 Класове в C++ (Rev: 742) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 20 октомври 2006 г. Съдържание Съдържание 1 Обектно-ориентирано програмиране 1 1.1 Модулност............................ 1 1.2 Обектно-ориентирана

Подробно

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет 2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия

Подробно

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели! Калин Георгиев Увод в програмирането 21

Подробно

Структура на програма в C - Част 9 - низове от символи, C-string

Структура на програма в C - Част 9 - низове от символи, C-string Структура на програма в C Част 9 - низове от символи, C-string Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 15 май 2019 г. И. Георгиев,

Подробно

Black and White

Black and White Advanced C++ Memory Management Йордан Димитър Зайков Трендафилов Memory Management Effective C++ 2 nd ed: 3, 5, 7, 8, 9, 10 More Effective C++: 1, 3, 8 Exceptional C++: 35, 36 Какво всъщност прави new?

Подробно

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Трифон Трифонов (УП 16/17) Динамична памет 21 декември

Подробно

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:

Подробно

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението 3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението представя кратко въведение в синтактичния анализ.

Подробно

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 f «data; f» data; Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 2 / 23 Първо изискване:

Подробно

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор Структура на програма в C Част 7 - масиви, оператор за индексиране, sizeof оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София

Подробно

Виртуални функции

Виртуални функции Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,

Подробно

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 27 февруари 2005 г. 1 #include < cstdio

Подробно

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2

2. Наследяване в C++ Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 1 февруари 2007 г. 1 Наследяване 1 2 2. Съдържание Съдържание Наследяване (Rev: 1.2) Любомир Чорбаджиев 1 lchorbadjiev@elsys-bg.org 1 февруари 2007 г. 1 Наследяване 1 2 2 3 Полиморфизъм 9 1. Наследяване Наследяване UML UML unified modeling

Подробно

Програмиране на Паскал

Програмиране на Паскал Поради връзката на С++ с езика С в голяма част от литературата е прието записването С/С++. Това е найизползваният език за програмиране в света, поради което синтаксисът на някои от по-новите езици като

Подробно

Lush Green

Lush Green Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се

Подробно

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операции в езикът C и С++. Символ Предназначение Аритметични

Подробно

Eclipse TUES 1 Кирил TUES

Eclipse TUES 1 Кирил TUES Eclipse JFace @ TUES 1 Същност SWT предоставя много възможности за развитие на потребителския интерфейс. Неудобството се изразява в това, че при представяне на данните се използват прости типове като низове,

Подробно

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА У Ч Е Б Н А П Р О Г Р А М А ЗА ЗАДЪЛЖИТЕЛНА ПРОФЕСИОНАЛНА ПОДГОТОВКА ПО ПРОГРАМИРАНЕ И АЛГОРИТМИЧНИ ЕЗИЦИ ЗА ПРОФЕСИЯ: КОД 482010 ИКОНОМИСТ - ИНФОРМАТИК СПЕЦИАЛНОСТ:

Подробно

Slide 1

Slide 1 Списъци. Структура и синтаксис. Създаване и показване. Основни операции(добавяне, изваждане на елемент или цял подсписък; подреждане). Трансформации. проф. дмн С. Христова Списъци Списъците / list са основна

Подробно

Маисви

Маисви МАСИВИ 1. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double

Подробно

Структура на програма в C - Част 2 - типове, функции

Структура на програма в C - Част 2 - типове, функции Структура на програма в C Част 2 - типове, функции Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 10 март 2019 г. И. Георгиев, Х.

Подробно

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) или изменящи се (променливи). Тези данни най-често бива

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 29 ноември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15 29 ноември 2018 г. 1 / 16 Масиви Логическо

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1 Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15.11-6.12.2018 г. 1 / 17 Масиви

Подробно

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Литература Необходими програми Kernighan & Ritchie - The C Programming

Подробно

MSDOS1

MSDOS1 ПРИЛОЖЕНИЕ C ANSI ESCAPE последователности Забележка Информацията в това приложение зависи от инсталацията и може да не се прилага в машините на всички производители. ANSI ESCAPE последователността представлява

Подробно

Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/

Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/ Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Синтаксис за дефиниране на функции 6 януари 2016

Подробно

ОСНОВИ НА ЕЗИКА С# Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за

ОСНОВИ НА ЕЗИКА С# Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за Интеграция на езиците за програмиране Една от най-добрите черти на.net Framework е възможността за интеграция на множество езици за програмиране. Тя позволява на програмиста да работи на предпочитания

Подробно

Microsoft Word - Glava24.doc

Microsoft Word - Glava24.doc 2.4. Въведение в езика OQL Обектно ориентираният език на заявките OQL е един опит да се стандартизират обектноориентираните езици на заявките във форма на език, обединяващ в себе си декларативното SQL

Подробно

îáÿâë-å îáîñ.÷àñò Êîøàðèöà

îáÿâë-å îáîñ.÷àñò Êîøàðèöà 1. САМОСТОЯТЕЛЕН ОБЕКТ В СГРАДА - АПАРТАМЕНТ 2 с идентификатор 39164.15.106.1.2, адрес на обекта: с.кошарица, HEAVEN HILLS, бл.а, ет.0, ап.2, площ : 60.00 кв.м., брой нива: 1, прилежащи части: 9.12 кв.м.

Подробно

Системи за управление на версии - Работа с git

Системи за управление на версии - Работа с git Системи за управление на версии Работа с git Иван Георгиев, Христо Иванов, Христо Стефанов Tехнологическо училище "Електронни системи", Технически университет, София 28 февруари 2019 г. И. Георгиев, Х.

Подробно

В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни систем

В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни систем В настоящата тема ще разгледаме представянето на числата в изчислителните устройства. Ще покажем представянето на числата в позиционните бройни системи, като се акцентира на десетична, двоична и шестнадесетична

Подробно

IATI Day 1/Junior Task 1. Trap (Bulgaria) X INTERNATIONAL AUTUMN TOURNAMENT IN INFORMATICS SHUMEN 2018 Задача 1. Капан Образуваме редица от точки, кои

IATI Day 1/Junior Task 1. Trap (Bulgaria) X INTERNATIONAL AUTUMN TOURNAMENT IN INFORMATICS SHUMEN 2018 Задача 1. Капан Образуваме редица от точки, кои Task 1. Trap (Bulgaria) Задача 1. Капан Образуваме редица от точки, които са върхове с целочислени координати в квадратна решетка. Всеки две последователни точки от редицата определят единична хоризонтална

Подробно

Инструкция за работа с Декларации 1 и 6 Инструкция за изготвяне на Декларация образец 1 и Декларация образец 6 в ПП Омекс 2000, съгласно изискванията

Инструкция за работа с Декларации 1 и 6 Инструкция за изготвяне на Декларация образец 1 и Декларация образец 6 в ПП Омекс 2000, съгласно изискванията Инструкция за работа с Декларации 1 и 6 Инструкция за изготвяне на Декларация образец 1 и Декларация образец 6 в ПП Омекс 2000, съгласно изискванията на НАП от 01.01.2014 г. за едновременно подаване на

Подробно

Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Харду

Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Харду Лекции по Програмиране първа част I. Въведение в компютрите и програмирането КОМПЮТЪР = АПАРАТУРА + ПРОГРАМНО ОСИГУРЯВАНЕ Апаратна част Hardware(Хардуер)Програмна част Software(Софтуер) Хардуерът включва:

Подробно

Януари 2007

Януари 2007 2018 БЪЛГАРСКИ ИНСТИТУТ ЗА СТАНДАРТИЗАЦИЯ НА БЪЛГАРСКИ СТАНДАРТ АВТОМОБИЛНИ ГОРИВА БЕНЗИН, НЕСЪДЪРЖАЩ ОЛОВО Изисквания и методи за изпитване Национално приложение (NA) прбдс EN 228:2012+A1:2017 /NA ICS

Подробно