SlideShare a Scribd company logo
Интерфейсы КиньзибаевРашид
Интерфейсы просто именованный набор абстрактных членов
Интерфейсы interface имя{  	возвращаемый тип имя_метода1 (список_параметров) ;  	возвращаемый тип имя_метода2(список_параметров) ;  	// ...  	возвращаемый тип имя_методаN(список_параметров) ;  }
Интерфейсы Реализация: classимя_класса : имя_интерфейса {  II тело класса  }
Интерфейсы Интерфейсные ссылки: interface INumber     {         void SetStart(int x); intGetNext();         void ResetNumber();     }     class First : INumber     { int start; intval;         public First()         {             start = 0; val = 0;         }         public void SetStart(int x)         {             start=x; val=x;         }         public intGetNext()         { val++;             return val;         }         public void ResetNumber()         { val = 0;         }     }     class Second : INumber     { int start; intval;         public Second()         {             start = 0; val = 0;         }         public void SetStart(int x)         {             start = x; val = x;         }         public intGetNext()         { val += 2;             return val;         }         public void ResetNumber()         { val = 0;         }     }     class Program     {         static void Main(string[] args)         {             First first = new First();             Second second = new Second(); INumber number;             for (int i = 0; i < 5; i++)             {                 number = first; Console.WriteLine("First "+number.GetNext());                 number = second; Console.WriteLine("Second "+number.GetNext());             } Console.ReadLine();         }     } … classимя_класса : имя_интерфейса {  II тело класса  }  … Имя_интерфейса идентификатор; …
Интерфейсы Интерфейсные свойства:   interface User     {         string Login { get; set; }         string Password { get; set; }     }     class mySiteUser:User     {         string login;         string password;         public mySiteUser(string s,stringss)         {             login = s;             password = ss;         }         public string Login         {             get             {                 return login;             }             set             {                 if (value.Length > 3) login = value; else Console.WriteLine("Invalid string");             }         }         public string Password         {             get             {                 return password;             }             set             {                 if (value.Length > 5) password = value; else Console.WriteLine("Invalid string");             }         }     }     class facebookUser:User     {         string login;         string password;         public facebookUser(string s,stringss)         {             login = s;             password = ss;         }         public string Login         {             get             {                 return login;             }             set             {                 if (value.Length > 5) login = value; else Console.WriteLine("Invalid string");             }         }         public string Password         {             get             {                 return password;             }             set             {                 if (value.Length > 7) password = value; else Console.WriteLine("Invalid string");             }         }     }     class Program     {         static void Main(string[] args)         { mySiteUser my = new mySiteUser("dragonzzz","hahaha"); Console.WriteLine(my.Login+" "+my.Password); my.Login = "asd"; Console.WriteLine(my.Login + " " + my.Password); my.Login = "dragonzzzzzzzzzzzzzzzzzzz"; Console.WriteLine(my.Login + " " + my.Password); Console.WriteLine(); facebookUser his = new facebookUser("markus","zuckerberg"); Console.WriteLine(his.Login + " " + his.Password); his.Password = "zucker"; Console.WriteLine(his.Login + " " + his.Password); his.Password = "markuzzzz"; Console.WriteLine(his.Login + " " + his.Password); Console.ReadLine();         }     } тип имя{  get;  set;  }
Интерфейсы Интерфейсные индексаторы  // Интерфейсный индексатор  тип_элементаthis[intиндекс]{  get;  set;  }
Интерфейсы Наследование интерфейсов  !!!Для реализации интерфейса-наследника необходимо релизовать все его интерфейсы-предки  interface A     {         void Meth1();     }     interface B : A     {         void Meth2();     }     interface C : B     {         void Meth3();     }     class MyClass : C     {         public void Meth1()         { Console.WriteLine("Meth1");         }         public void Meth2()         { Console.WriteLine("Meth2");         }         public void Meth3()         { Console.WriteLine("Meth3");         }     }     class Program     {         static void Main(string[] args)         { MyClass my = new MyClass();             my.Meth1();             my.Meth2();             my.Meth3(); Console.ReadLine();         }     }
Интерфейсы Сокрытие имен при наследовании class MyClass : IMylF {  intIMylF.MyMeth(int x) {  return x / 3;  }  }
Интерфейсы Обобщенные интерфейсы: publicinterfaceISeries<T> {  T GetNext(); voidReset();  voidSetStart (T v);  }
Интерфейсы Спасибо за внимание!

More Related Content

What's hot

апкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжапкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжIrina Hahanova
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli typesmcroitor
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Fwdays
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++mcroitor
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#Olga Maksimenkova
 
parboiled2 – A Macro-Based PEG Parser Generator for Scala 2.10.3+
parboiled2 – A Macro-Based PEG Parser Generator for Scala 2.10.3+parboiled2 – A Macro-Based PEG Parser Generator for Scala 2.10.3+
parboiled2 – A Macro-Based PEG Parser Generator for Scala 2.10.3+Alexander Myltsev
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовТранслируем.бел
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...corehard_by
 
Ciklum .NET Saturday - Introduction to TypeScript
Ciklum .NET Saturday - Introduction to TypeScriptCiklum .NET Saturday - Introduction to TypeScript
Ciklum .NET Saturday - Introduction to TypeScriptDmytro Mindra
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
NetworkUA - 2012 - Introduction TypeScript
NetworkUA - 2012 - Introduction TypeScript NetworkUA - 2012 - Introduction TypeScript
NetworkUA - 2012 - Introduction TypeScript Dmytro Mindra
 
functional patterns - dotnetconf'11
functional patterns - dotnetconf'11functional patterns - dotnetconf'11
functional patterns - dotnetconf'110xffAA
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмовAndrey Dolinin
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2Technopark
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программированияAlex.Kolonitsky
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о BoostSergey Platonov
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castRoman Orlov
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
 

What's hot (20)

апкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолжапкс 2011 04_verilog_продолж
апкс 2011 04_verilog_продолж
 
3. Массивы в C#
3. Массивы в C#3. Массивы в C#
3. Массивы в C#
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#
 
parboiled2 – A Macro-Based PEG Parser Generator for Scala 2.10.3+
parboiled2 – A Macro-Based PEG Parser Generator for Scala 2.10.3+parboiled2 – A Macro-Based PEG Parser Generator for Scala 2.10.3+
parboiled2 – A Macro-Based PEG Parser Generator for Scala 2.10.3+
 
Использование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетовИспользование GNU OCTAVE для инженерных и математических расчетов
Использование GNU OCTAVE для инженерных и математических расчетов
 
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...
 
Ciklum .NET Saturday - Introduction to TypeScript
Ciklum .NET Saturday - Introduction to TypeScriptCiklum .NET Saturday - Introduction to TypeScript
Ciklum .NET Saturday - Introduction to TypeScript
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
NetworkUA - 2012 - Introduction TypeScript
NetworkUA - 2012 - Introduction TypeScript NetworkUA - 2012 - Introduction TypeScript
NetworkUA - 2012 - Introduction TypeScript
 
functional patterns - dotnetconf'11
functional patterns - dotnetconf'11functional patterns - dotnetconf'11
functional patterns - dotnetconf'11
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмов
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программирования
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о Boost
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_cast
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
Урок 1. Что такое функциональное программирование
Урок 1. Что такое функциональное программированиеУрок 1. Что такое функциональное программирование
Урок 1. Что такое функциональное программирование
 

Similar to Интерфейсы

Groovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всёмGroovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всёмRuslan Balkin
 
CPU Performance in Java.
CPU Performance in Java.CPU Performance in Java.
CPU Performance in Java.Dzmitry Hil
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Yandex
 
Как программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногуКак программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногуAndreyGeonya
 
PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокAndrey Karpov
 
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSКурсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSГлеб Тарасов
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)Evgeny Kaziak
 
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev FedorProgramming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev FedorFedor Lavrentyev
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...Alexey Paznikov
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Vladimir Kochetkov
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклыSergey Nemchinsky
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Sergey Platonov
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...HappyDev
 
Архитектура корпоративных систем
Архитектура корпоративных системАрхитектура корпоративных систем
Архитектура корпоративных системConstantin Kichinsky
 

Similar to Интерфейсы (20)

Groovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всёмGroovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всём
 
msumobi2. Лекция 2
msumobi2. Лекция 2msumobi2. Лекция 2
msumobi2. Лекция 2
 
CPU Performance in Java.
CPU Performance in Java.CPU Performance in Java.
CPU Performance in Java.
 
Tricky Java Generics
Tricky Java GenericsTricky Java Generics
Tricky Java Generics
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
 
Как программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногуКак программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногу
 
Thread
ThreadThread
Thread
 
PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибок
 
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOSКурсы по мобильной разработке. 1 лекция. Знакомство с iOS
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
 
C sharp deep dive
C sharp deep diveC sharp deep dive
C sharp deep dive
 
C# Deep Dive
C# Deep DiveC# Deep Dive
C# Deep Dive
 
[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
 
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev FedorProgramming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
 
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
2015-12-06 Максим Юнусов - Проектирование REST приложения, или нужно ли прогр...
 
Архитектура корпоративных систем
Архитектура корпоративных системАрхитектура корпоративных систем
Архитектура корпоративных систем
 

Интерфейсы

  • 2. Интерфейсы просто именованный набор абстрактных членов
  • 3. Интерфейсы interface имя{ возвращаемый тип имя_метода1 (список_параметров) ; возвращаемый тип имя_метода2(список_параметров) ; // ... возвращаемый тип имя_методаN(список_параметров) ; }
  • 4. Интерфейсы Реализация: classимя_класса : имя_интерфейса { II тело класса }
  • 5. Интерфейсы Интерфейсные ссылки: interface INumber { void SetStart(int x); intGetNext(); void ResetNumber(); } class First : INumber { int start; intval; public First() { start = 0; val = 0; } public void SetStart(int x) { start=x; val=x; } public intGetNext() { val++; return val; } public void ResetNumber() { val = 0; } } class Second : INumber { int start; intval; public Second() { start = 0; val = 0; } public void SetStart(int x) { start = x; val = x; } public intGetNext() { val += 2; return val; } public void ResetNumber() { val = 0; } } class Program { static void Main(string[] args) { First first = new First(); Second second = new Second(); INumber number; for (int i = 0; i < 5; i++) { number = first; Console.WriteLine("First "+number.GetNext()); number = second; Console.WriteLine("Second "+number.GetNext()); } Console.ReadLine(); } } … classимя_класса : имя_интерфейса { II тело класса } … Имя_интерфейса идентификатор; …
  • 6. Интерфейсы Интерфейсные свойства: interface User { string Login { get; set; } string Password { get; set; } } class mySiteUser:User { string login; string password; public mySiteUser(string s,stringss) { login = s; password = ss; } public string Login { get { return login; } set { if (value.Length > 3) login = value; else Console.WriteLine("Invalid string"); } } public string Password { get { return password; } set { if (value.Length > 5) password = value; else Console.WriteLine("Invalid string"); } } } class facebookUser:User { string login; string password; public facebookUser(string s,stringss) { login = s; password = ss; } public string Login { get { return login; } set { if (value.Length > 5) login = value; else Console.WriteLine("Invalid string"); } } public string Password { get { return password; } set { if (value.Length > 7) password = value; else Console.WriteLine("Invalid string"); } } } class Program { static void Main(string[] args) { mySiteUser my = new mySiteUser("dragonzzz","hahaha"); Console.WriteLine(my.Login+" "+my.Password); my.Login = "asd"; Console.WriteLine(my.Login + " " + my.Password); my.Login = "dragonzzzzzzzzzzzzzzzzzzz"; Console.WriteLine(my.Login + " " + my.Password); Console.WriteLine(); facebookUser his = new facebookUser("markus","zuckerberg"); Console.WriteLine(his.Login + " " + his.Password); his.Password = "zucker"; Console.WriteLine(his.Login + " " + his.Password); his.Password = "markuzzzz"; Console.WriteLine(his.Login + " " + his.Password); Console.ReadLine(); } } тип имя{ get; set; }
  • 7. Интерфейсы Интерфейсные индексаторы // Интерфейсный индексатор тип_элементаthis[intиндекс]{ get; set; }
  • 8. Интерфейсы Наследование интерфейсов !!!Для реализации интерфейса-наследника необходимо релизовать все его интерфейсы-предки interface A { void Meth1(); } interface B : A { void Meth2(); } interface C : B { void Meth3(); } class MyClass : C { public void Meth1() { Console.WriteLine("Meth1"); } public void Meth2() { Console.WriteLine("Meth2"); } public void Meth3() { Console.WriteLine("Meth3"); } } class Program { static void Main(string[] args) { MyClass my = new MyClass(); my.Meth1(); my.Meth2(); my.Meth3(); Console.ReadLine(); } }
  • 9. Интерфейсы Сокрытие имен при наследовании class MyClass : IMylF { intIMylF.MyMeth(int x) { return x / 3; } }
  • 10. Интерфейсы Обобщенные интерфейсы: publicinterfaceISeries<T> { T GetNext(); voidReset(); voidSetStart (T v); }