├── 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 |
--------------------------------------------------------------------------------