├── README.md ├── srcBad ├── .vs │ └── InterfacesPart2Bad │ │ └── v15 │ │ └── .suo ├── App.config ├── Engines │ ├── CryEngine.cs │ ├── HatersEngine.cs │ ├── PoliticsTalksEngine.cs │ ├── ShitEngine.cs │ └── YriyLozaEngine.cs ├── InterfacesPart2Bad.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── RocketHeader.cs └── Rockets │ ├── CryRocket.cs │ ├── HatersRocket.cs │ ├── LozaRocket.cs │ ├── PoliticRocket.cs │ └── ShitRocket.cs └── srcGood ├── .vs └── InterfacesPart2 │ └── v15 │ └── .suo ├── App.config ├── Engines ├── CryEngine.cs ├── HatersEngine.cs ├── PoliticsTalksEngine.cs ├── ShitEngine.cs └── YriyLozaEngine.cs ├── IEngine.cs ├── InterfacesPart2.csproj ├── Program.cs ├── Properties └── AssemblyInfo.cs ├── Rocket.cs └── RocketHeader.cs /README.md: -------------------------------------------------------------------------------- 1 | # Интерфейсы на практике 2 | 3 | srcGood => с использованием интерфейсов 4 | 5 | srcBad => без использования интерфейсов 6 | 7 | Обе сборки выполняют одно и тоже, просто различная реализация. 8 | -------------------------------------------------------------------------------- /srcBad/.vs/InterfacesPart2Bad/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nickolasKrayn/interfacesLesson/f645001234c880ce7171547deb393ff4ce407a8b/srcBad/.vs/InterfacesPart2Bad/v15/.suo -------------------------------------------------------------------------------- /srcBad/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /srcBad/Engines/CryEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2Bad 4 | { 5 | class CryEngine // Двигатель летающий на слезах фанатов сборной России по футболу 6 | { 7 | public int Weight { get; } 8 | public int Power { get; } 9 | 10 | public CryEngine() 11 | { 12 | Weight = 800; 13 | Power = 2000; 14 | } 15 | 16 | public void Start() 17 | { 18 | Console.WriteLine("То что этот двигатель не оправдывает ваши ожидания - ваши проблемы"); 19 | } 20 | 21 | public void Stop() 22 | { 23 | Console.WriteLine("Прохождение в плей-оф"); 24 | } 25 | 26 | public void BeginAdvertising() 27 | { 28 | Console.WriteLine("Кушайте Лейс - пи*дец как вкусно"); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /srcBad/Engines/HatersEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2Bad 4 | { 5 | class HatersEngine // двигатель летающий на тяге пердаков хуйтеров 6 | { 7 | public int Weight { get; } // масса двигателя 8 | public int Power { get; } // мощность двигателя 9 | public string GetCop { get; } // получаем копирайты 10 | 11 | public HatersEngine() 12 | { 13 | Weight = 322; 14 | Power = 228; 15 | GetCop = "ExtremeCodeTV EngineCreator"; 16 | } 17 | 18 | public void Start() 19 | { 20 | Console.WriteLine("Пуканы раскаляются, тяга на максимум"); 21 | } 22 | 23 | public void Stop() 24 | { 25 | Console.WriteLine("Вброс годного контента. Пуканы остывают"); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /srcBad/Engines/PoliticsTalksEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2Bad 4 | { 5 | class PoliticsTalksEngine // Двигатель летающий на пиздеже политиков 6 | { 7 | public int Weight { get; } 8 | 9 | public int Power { get; } 10 | 11 | public PoliticsTalksEngine() 12 | { 13 | Weight = 100; // так мало весит, потому что пи*деть - не мешик ворочать 14 | Power = 5000; 15 | } 16 | 17 | public void Start() 18 | { 19 | Console.WriteLine("Чё там с дорогами?"); 20 | } 21 | 22 | public void Stop() 23 | { 24 | Console.WriteLine("Приглашены ФСБшники из антикоррупционного отдела"); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /srcBad/Engines/ShitEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2Bad 4 | { 5 | class ShitEngine // двигатель летающий на искусстве российской эстрады 6 | { 7 | public int Weight { get; } 8 | 9 | public int Power { get; } 10 | 11 | public ShitEngine() 12 | { 13 | Weight = 2000; 14 | Power = 1000; 15 | } 16 | 17 | public void Start() 18 | { 19 | Console.WriteLine("Алла, спойте нам пожалуйста про розы!"); 20 | } 21 | 22 | public void Stop() 23 | { 24 | Console.WriteLine("Лучше нагрузите Витю АК"); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /srcBad/Engines/YriyLozaEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2Bad 4 | { 5 | class YriyLozaEngine // двигатель летающий на пафосе Юрия Лозы 6 | { 7 | public int Weight { get; } 8 | 9 | public int Power { get; } 10 | 11 | public YriyLozaEngine() 12 | { 13 | Weight = 500; 14 | Power = 2000; // мощный пи*дец 15 | } 16 | 17 | public void Start() 18 | { 19 | Console.WriteLine("Юрий, что вы думаете о группе Металлика?"); 20 | } 21 | 22 | public void Stop() 23 | { 24 | Console.WriteLine("Юрий, сыграйте на бис"); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /srcBad/InterfacesPart2Bad.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {E69464B6-E8C6-4C1B-8432-6FB2CBD7C499} 8 | Exe 9 | InterfacesPart2Bad 10 | InterfacesPart2Bad 11 | v4.5.2 12 | 512 13 | true 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /srcBad/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2Bad 4 | { 5 | /// 6 | /// Этот код написан без использования интерфейсов 7 | /// 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | // Так как общей абстракции нету, нам приходится к каждому движку писать по своей ракете 13 | CryRocket cRocket = new CryRocket(); 14 | cRocket.Header = new RocketHeader(); 15 | cRocket.Engine = new CryEngine(); 16 | Console.WriteLine("На слезах хейтеров: " + SpecialNasaMethod(cRocket.Engine.Power, cRocket.Weight)); 17 | 18 | HatersRocket hRocket = new HatersRocket(); 19 | hRocket.Header = new RocketHeader(); 20 | hRocket.Engine = new HatersEngine(); 21 | Console.WriteLine("Хейтерская тяга: " + SpecialNasaMethod(hRocket.Engine.Power, hRocket.Weight)); 22 | 23 | LozaRocket lRocket = new LozaRocket(); 24 | lRocket.Header = new RocketHeader(); 25 | lRocket.Engine = new YriyLozaEngine(); 26 | Console.WriteLine("На пафосе Юрия Лозы: " + SpecialNasaMethod(lRocket.Engine.Power, lRocket.Weight)); 27 | 28 | PoliticRocket pRocket = new PoliticRocket(); 29 | pRocket.Header = new RocketHeader(); 30 | pRocket.Engine = new PoliticsTalksEngine(); 31 | Console.WriteLine("На пи*деже политиков: " + SpecialNasaMethod(pRocket.Engine.Power, pRocket.Weight)); 32 | 33 | ShitRocket sRocket = new ShitRocket(); 34 | sRocket.Header = new RocketHeader(); 35 | sRocket.Engine = new ShitEngine(); 36 | Console.WriteLine("На песнях российской эстрады: " + SpecialNasaMethod(sRocket.Engine.Power, sRocket.Weight)); 37 | 38 | Console.ReadKey(); 39 | } 40 | 41 | public static int SpecialNasaMethod(int power, int mass) // метод для вычисления максимальной скорости 42 | { 43 | return (mass / power * 10) + 82; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /srcBad/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Общие сведения об этой сборке предоставляются следующим набором 6 | // набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, 7 | // связанные со сборкой. 8 | [assembly: AssemblyTitle("InterfacesPart2Bad")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("InterfacesPart2Bad")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми 18 | // для компонентов COM. Если необходимо обратиться к типу в этой сборке через 19 | // COM, задайте атрибуту ComVisible значение TRUE для этого типа. 20 | [assembly: ComVisible(false)] 21 | 22 | // Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM 23 | [assembly: Guid("e69464b6-e8c6-4c1b-8432-6fb2cbd7c499")] 24 | 25 | // Сведения о версии сборки состоят из следующих четырех значений: 26 | // 27 | // Основной номер версии 28 | // Дополнительный номер версии 29 | // Номер сборки 30 | // Редакция 31 | // 32 | // Можно задать все значения или принять номер сборки и номер редакции по умолчанию. 33 | // используя "*", как показано ниже: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /srcBad/RocketHeader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2Bad 4 | { 5 | class RocketHeader 6 | { 7 | public int Cosmonauts { get; private set; } // количество космонавтов 8 | public int MassShell { get; private set; } // масса корпуса 9 | 10 | public RocketHeader() 11 | { 12 | Cosmonauts = 3; 13 | MassShell = 5000; 14 | } 15 | 16 | public int GetWeight() // возвращает общую массу модуля с учётом веса космонавтов 17 | { 18 | return (Cosmonauts * 80) + MassShell; 19 | } 20 | 21 | public void SendMessage(string message) 22 | { 23 | Console.WriteLine("Сообщение: "); 24 | Console.WriteLine(message); 25 | Console.WriteLine("отправлено"); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /srcBad/Rockets/CryRocket.cs: -------------------------------------------------------------------------------- 1 | namespace InterfacesPart2Bad 2 | { 3 | class CryRocket // ракета для движка на слезах фанатов 4 | { 5 | public RocketHeader Header { get; set; } // головная часть 6 | public CryEngine Engine { get; set; } // двигатель 7 | 8 | public int Weight 9 | { 10 | get 11 | { 12 | return Header.GetWeight() + Engine.Weight; // масса головной части + масса движка + масса космонавтов 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /srcBad/Rockets/HatersRocket.cs: -------------------------------------------------------------------------------- 1 | namespace InterfacesPart2Bad 2 | { 3 | class HatersRocket // Ракета на тяге пердаков хуйтеров 4 | { 5 | public RocketHeader Header { get; set; } // головная часть 6 | public HatersEngine Engine { get; set; } // двигатель 7 | 8 | public int Weight 9 | { 10 | get 11 | { 12 | return Header.GetWeight() + Engine.Weight; // масса головной части + масса движка + масса космонавтов 13 | } 14 | } 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /srcBad/Rockets/LozaRocket.cs: -------------------------------------------------------------------------------- 1 | namespace InterfacesPart2Bad 2 | { 3 | class LozaRocket // ракета на пафосе Лозы 4 | { 5 | public RocketHeader Header { get; set; } // головная часть 6 | public YriyLozaEngine Engine { get; set; } // двигатель 7 | 8 | public int Weight 9 | { 10 | get 11 | { 12 | return Header.GetWeight() + Engine.Weight; // масса головной части + масса движка + масса космонавтов 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /srcBad/Rockets/PoliticRocket.cs: -------------------------------------------------------------------------------- 1 | namespace InterfacesPart2Bad 2 | { 3 | class PoliticRocket // Ракета на пи*деже политиков 4 | { 5 | public RocketHeader Header { get; set; } // головная часть 6 | public PoliticsTalksEngine Engine { get; set; } // двигатель 7 | 8 | public int Weight 9 | { 10 | get 11 | { 12 | return Header.GetWeight() + Engine.Weight; // масса головной части + масса движка + масса космонавтов 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /srcBad/Rockets/ShitRocket.cs: -------------------------------------------------------------------------------- 1 | namespace InterfacesPart2Bad 2 | { 3 | class ShitRocket // ракета на тяге эстрады 4 | { 5 | public RocketHeader Header { get; set; } // головная часть 6 | public ShitEngine Engine { get; set; } // двигатель 7 | 8 | public int Weight 9 | { 10 | get 11 | { 12 | return Header.GetWeight() + Engine.Weight; // масса головной части + масса движка + масса космонавтов 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /srcGood/.vs/InterfacesPart2/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nickolasKrayn/interfacesLesson/f645001234c880ce7171547deb393ff4ce407a8b/srcGood/.vs/InterfacesPart2/v15/.suo -------------------------------------------------------------------------------- /srcGood/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /srcGood/Engines/CryEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2 4 | { 5 | class CryEngine : IEngine // Двигатель летающий на слезах фанатов сборной России по футболу 6 | { 7 | public int Weight { get; } 8 | public int Power { get; } 9 | 10 | public CryEngine() 11 | { 12 | Weight = 800; 13 | Power = 2000; 14 | } 15 | 16 | public void Start() 17 | { 18 | Console.WriteLine("То что этот двигатель не оправдывает ваши ожидания - ваши проблемы"); 19 | } 20 | 21 | public void Stop() 22 | { 23 | Console.WriteLine("Прохождение в плей-оф"); 24 | } 25 | 26 | public void BeginAdvertising() 27 | { 28 | Console.WriteLine("Кушайте Лейс - пи*дец как вкусно"); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /srcGood/Engines/HatersEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2 4 | { 5 | class HatersEngine : IEngine // двигатель летающий на тяге пердаков хуйтеров 6 | { 7 | public int Weight { get; } // масса двигателя 8 | public int Power { get; } // мощность двигателя 9 | public string GetCop { get; } // получаем копирайты 10 | 11 | public HatersEngine() 12 | { 13 | Weight = 322; 14 | Power = 228; 15 | GetCop = "ExtremeCodeTV EngineCreator"; 16 | } 17 | 18 | public void Start() 19 | { 20 | Console.WriteLine("Пуканы раскаляются, тяга на максимум"); 21 | } 22 | 23 | public void Stop() 24 | { 25 | Console.WriteLine("Вброс годного контента. Пуканы остывают"); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /srcGood/Engines/PoliticsTalksEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2 4 | { 5 | class PoliticsTalksEngine : IEngine // Двигатель летающий на пиздеже политиков 6 | { 7 | public int Weight { get; } 8 | 9 | public int Power { get; } 10 | 11 | public PoliticsTalksEngine() 12 | { 13 | Weight = 100; // так мало весит, потому что пи*деть - не мешик ворочать 14 | Power = 5000; 15 | } 16 | 17 | public void Start() 18 | { 19 | Console.WriteLine("Чё там с дорогами?"); 20 | } 21 | 22 | public void Stop() 23 | { 24 | Console.WriteLine("Приглашены ФСБшники из антикоррупционного отдела"); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /srcGood/Engines/ShitEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2 4 | { 5 | class ShitEngine : IEngine // двигатель летающий на искусстве российской эстрады 6 | { 7 | public int Weight { get; } 8 | 9 | public int Power { get; } 10 | 11 | public ShitEngine() 12 | { 13 | Weight = 2000; 14 | Power = 1000; 15 | } 16 | 17 | public void Start() 18 | { 19 | Console.WriteLine("Алла, спойте нам пожалуйста про розы!"); 20 | } 21 | 22 | public void Stop() 23 | { 24 | Console.WriteLine("Лучше нагрузите Витю АК"); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /srcGood/Engines/YriyLozaEngine.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2 4 | { 5 | class YriyLozaEngine : IEngine // двигатель летающий на пафосе Юрия Лозы 6 | { 7 | public int Weight { get; } 8 | 9 | public int Power { get; } 10 | 11 | public YriyLozaEngine() 12 | { 13 | Weight = 500; 14 | Power = 2000; // мощный пи*дец 15 | } 16 | 17 | public void Start() 18 | { 19 | Console.WriteLine("Юрий, что вы думаете о группе Металлика?"); 20 | } 21 | 22 | public void Stop() 23 | { 24 | Console.WriteLine("Юрий, сыграйте на бис"); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /srcGood/IEngine.cs: -------------------------------------------------------------------------------- 1 | namespace InterfacesPart2 2 | { 3 | interface IEngine 4 | { 5 | void Start(); // метод для запуска 6 | void Stop(); // метод для остановки 7 | int Weight { get; } // масса двигателя 8 | int Power { get; } // мощность двигателя 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /srcGood/InterfacesPart2.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {A0AB6E35-5327-45CE-BC30-8415AA107961} 8 | Exe 9 | InterfacesPart2 10 | InterfacesPart2 11 | v4.5.2 12 | 512 13 | true 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /srcGood/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2 4 | { 5 | /// 6 | /// Этот код написан с использованием интерфейсов 7 | /// 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | Rocket rocket = new Rocket(); 13 | rocket.Header = new RocketHeader(); 14 | 15 | rocket.Engine = new HatersEngine(); 16 | Console.WriteLine("Хейтерская тяга: " + SpecialNasaMethod(rocket.Engine.Power, rocket.Weight)); 17 | 18 | rocket.Engine = new CryEngine(); 19 | Console.WriteLine("На слезах хейтеров: " + SpecialNasaMethod(rocket.Engine.Power, rocket.Weight)); 20 | 21 | rocket.Engine = new PoliticsTalksEngine(); 22 | Console.WriteLine("На пи*деже политиков: " + SpecialNasaMethod(rocket.Engine.Power, rocket.Weight)); 23 | 24 | rocket.Engine = new ShitEngine(); 25 | Console.WriteLine("На песнях российской эстрады: " + SpecialNasaMethod(rocket.Engine.Power, rocket.Weight)); 26 | 27 | rocket.Engine = new YriyLozaEngine(); 28 | Console.WriteLine("На пафосе Юрия Лозы: " + SpecialNasaMethod(rocket.Engine.Power, rocket.Weight)); 29 | 30 | Console.ReadKey(); 31 | 32 | } 33 | 34 | 35 | public static int SpecialNasaMethod(int power, int mass) // метод для вычисления максимальной скорости 36 | { 37 | return (mass / power * 10) + 82; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /srcGood/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Общие сведения об этой сборке предоставляются следующим набором 6 | // набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения, 7 | // связанные со сборкой. 8 | [assembly: AssemblyTitle("InterfacesPart2")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("InterfacesPart2")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми 18 | // для компонентов COM. Если необходимо обратиться к типу в этой сборке через 19 | // COM, задайте атрибуту ComVisible значение TRUE для этого типа. 20 | [assembly: ComVisible(false)] 21 | 22 | // Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM 23 | [assembly: Guid("a0ab6e35-5327-45ce-bc30-8415aa107961")] 24 | 25 | // Сведения о версии сборки состоят из следующих четырех значений: 26 | // 27 | // Основной номер версии 28 | // Дополнительный номер версии 29 | // Номер сборки 30 | // Редакция 31 | // 32 | // Можно задать все значения или принять номер сборки и номер редакции по умолчанию. 33 | // используя "*", как показано ниже: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /srcGood/Rocket.cs: -------------------------------------------------------------------------------- 1 | namespace InterfacesPart2 2 | { 3 | class Rocket 4 | { 5 | public RocketHeader Header { get; set; } // головная часть 6 | public IEngine Engine { get; set; } // двигатель 7 | 8 | public int Weight 9 | { 10 | get 11 | { 12 | return Header.GetWeight() + Engine.Weight; // масса головной части + масса движка + масса космонавтов 13 | } 14 | } 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /srcGood/RocketHeader.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace InterfacesPart2 4 | { 5 | class RocketHeader 6 | { 7 | public int Cosmonauts { get; private set; } // количество космонавтов 8 | public int MassShell { get; private set; } // масса корпуса 9 | 10 | public RocketHeader() 11 | { 12 | Cosmonauts = 3; 13 | MassShell = 5000; 14 | } 15 | 16 | public int GetWeight() // возвращает общую массу модуля с учётом веса космонавтов 17 | { 18 | return (Cosmonauts * 80) + MassShell; 19 | } 20 | 21 | public void SendMessage(string message) 22 | { 23 | Console.WriteLine("Сообщение: "); 24 | Console.WriteLine(message); 25 | Console.WriteLine("отправлено"); 26 | } 27 | } 28 | } 29 | --------------------------------------------------------------------------------