Skip to content

Repository files navigation

KPO_ZOOproject

Проект для управления зоопарком на C# (.NET) Комиссарова Юлия БПИ249

Конструирование программного обеспечения Домашнее задание №1. Закрепление принципов SOLID, внедрения зависимостей средствами DI-контейнера.

Описание:

Этот проект реализует консольное приложение для управления московским зоопарком. В проекте предусмотрено добавление и управление животными и предметами инвентаря, учет расхода корма, фильтрация животных для контактного зоопарка по уровню доброты и медосмотр животных через ветеринарную клинику.

Структура проекта:

  • Zoo_Lib - библиотека классов и интерфейсов. Хранит в себе модели животных, инвентаря и сервисы для управления данными.

  • Project1_Zoo_Console - проект консольного приложения с меню для работы с данными зоопарка. Содержит точку входа, UI, реализацию DI контейнера. Использует бизнес-логику библиотеки и DI-контейнер Microsoft.Extensions.DependencyInjection.

  • Zoo_Tests - проект с Unit тестами. Проверяет логику библиотеки используя xUnit, FluentAssertions и NSubstitute. (Не зависит от консольного приложения (UI), так как UI не покрывается юнит-тестами.)

Соблюдение SOLID:

  • Single Responsibility Principle: Каждый класс выполняет только одну функцию. Для этого сервисы разделены на 3: ZooService - выполняет логику требующуюся для зоопарка, VeterinaryClinic - проверяет здоровье животных, InventoryService - содержит логику работы с инвентарем. Также вся бизнес-логика вывенесна в отдельную библиотеку.
  • Open/Closed Principle: У каждого обьекта есть интерфейсы, и в зависимостях предаются именно Интерфейсы а не сами обьекты, что позволяет расширять проект, не меняя существующий код.
  • Liskov Substitution Principle: Подтипы (Rabbit, Monkey, Computer, Table) могут использоваться вместо базовых типов (Animal, IThing) без нарушения логики.
  • Interface Segregation Principle: Интерфейсы разделены и содержат только необходимый функционал для конкретных обьектов.
  • Dependency Inversion Principle: используется DI контейнер.

Сборка проекта Требования:

  • Установлен .NET 8.0
  • Среда разработки: JetBrains Rider (рекомендуется) или Visual Studio.
  • Загруженные NuGet пакеты: xUnit(удалить пакеты nUint, если есть конфликты), FluentAssertions, NSubstitute, Moq, Microsoft.Extensions.DependencyInjection, Microsoft.NET.Test.Sdk

Запуск выполнить из корня консольного проекта (Project1_Zoo_Console): Откроется текстовое меню с выбором операций.

Использование

  • Меню управляется стрелками вверх/вниз.

  • Для добавления животного нужно выбрать его вид, ввести имя и, если травоядное, указать уровень доброты (1-10).

  • Программа автоматически проводит искусственный медосмотр(т.к. нет критериев здоровья животного) с вероятностью одобрения 80%.

  • Список животных фильтруется по доброте >5 для попадания в контактный зоопарк.

  • Инвентарь ведется с уникальными номерами для каждой вещи(животные также учитываются в инвентаре).

Запуск тестов происходит из проекта Zoo_tests. Запускать можно как отдельные тесты в каждом классе, так и все тесты класса сразу.

Примечание: папку src с проектами с кодом я создала в rider, но на github она не отображается:( img_1.png

About

HW1 KPO

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages