Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
433 changes: 433 additions & 0 deletions .gitignore

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions App.Tests/App.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="coverlet.collector" Version="1.2.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\App\App.csproj" />
</ItemGroup>

</Project>
43 changes: 43 additions & 0 deletions App.Tests/Tests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
using System;
using Xunit;

namespace App.Tests
{
public class UnitTest1
{
[Fact]
public void Quack()
{
Duck donald = new Duck();
string str = donald.Quack();
Assert.Equal("Я переопределился, но против поправок, ведь я умный утенок.", str);
}

[Fact]
public void Display()
{
Duck donald = new Duck();
string str = donald.Display();
Assert.Equal("У уток очень хорошее зрение. Они видят лучше людей и собак.\nТакже они воспринимают окружающий мир в полномасштабной цветовой гамме.", str);
}

[Fact]
public void SpeedFly()
{
Duck donald = new Duck();
Assert.Equal(50, donald.SpeedFly);
}

[Fact]
public void NicknameAndAge()
{
Duck donald = new Duck();
Assert.Equal("Дональд", donald.nickname);
Assert.Equal(10, donald.age);
donald.nickname = "Duck";
donald.age = 15;
Assert.Equal("Duck", donald.nickname);
Assert.Equal(15, donald.age);
}
}
}
8 changes: 8 additions & 0 deletions App/App.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

</Project>
22 changes: 22 additions & 0 deletions App/Duck.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using System;

namespace App
{
public class Duck : abstractDuck
{
public string nickname;
public int age;
public Duck() { nickname = "Дональд"; age = 10; }

public override string Quack()
{
return "Я переопределился, но против поправок, ведь я умный утенок.";
}
public override string Display()
{
return "У уток очень хорошее зрение. Они видят лучше людей и собак.\nТакже они воспринимают окружающий мир в полномасштабной цветовой гамме.";
}


}
}
12 changes: 12 additions & 0 deletions App/Interfaces.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace App
{
interface IFly
{
public float SpeedFly { get; }
public float Distance { get; set; }
}
interface IQuack
{
string Quack();
}
}
22 changes: 22 additions & 0 deletions App/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using System;

namespace App
{
class Program
{
static void Main(string[] args)
{
Duck donald = new Duck();
donald.Distance = 40.0F;
float flightTime = donald.Distance / donald.SpeedFly;
Console.WriteLine("============================================================");
Console.WriteLine(donald.nickname);
Console.WriteLine(donald.age + " лет");
Console.WriteLine($"Время полета (в часах) = {flightTime}");
Console.WriteLine(donald.Quack());
Console.WriteLine("+++++++++++++++++");
Console.WriteLine(donald.Display());
Console.WriteLine("============================================================");
}
}
}
21 changes: 21 additions & 0 deletions App/abstractDuck.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;

namespace App
{
public abstract class abstractDuck : IFly, IQuack // от абстрактного класса нельзя сделать экземпляр
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Интерфейсы теряют смысл - а если я хочу в процессе создать утку - которая не летает? как это сделать?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jskonst в интерфейсе придется прописывать возможность

{
float speedFly = 50.0F;
public float SpeedFly => speedFly; // св-во доступно только для чтения
public float Distance { get; set; }
public virtual string Quack() // доступный для переопределения virtual метод
{
return "Кря Кря Кря Кря";
}
public static string Swim()
{
return "*Звуки плескания в воде*";
}

public abstract string Display(); // метод можно вызывать без экземпляра класса
}
}
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
# exam_147_2020
# Мороховцев Виктор 2/147

Создайте абстрактный класс утка с методом swim, абстрактным методом display, и интерфейсы fly и quack. Показать пример использования класса, наследующего абстрактный класс и реализующими интерфейсы.

Приветствую одногруппников (Псс. Только не списывай один в один).