Skip to content

Latest commit

 

History

History

Lab0

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Лабораторная 0. Isu

Цель

Ознакомиться с языком C#, базовыми механизмами ООП. В шаблонном репозитории описаны базовые сущности, требуется реализовать недостающие методы и написать тесты, которые бы проверили корректность работы.

Предметная область

В данной лабораторной используется только часть Информационной системы университета (ИСУ), отвечающая за хранение структурированной, актуальной информации о статусе студента, то есть за какой учебной группой, курсом, факультетом закреплен студент. Также добавим сюда функциональность переводов студентов между группами.

Функциональность

  • Хранение актуальной информации о студенте.
  • Хранение актуальной информации о группе и ее составе.
  • Реализация возможностей студента, учащегося в группе.

Техническое задание

Перед написанием любой программы, приложения, сервиса, системы необходимо составить техническое задание. Что это вообще такое? Грубо говоря, перевод полета фантазии заказчика на сухой язык фактов и ограничений в реализации.

Давайте начнем с уточняющих вопросов.

  • Что является актуальной информацией о студенте?
  • Что является актуальной информацией о группе?
  • Какие возможности имеет студент?
  • Каким типом данных будут табельные номера студентов и уникальные идентификаторы групп?
  • Мы делаем систему для всего университета или только для конкретного факультета?
  • Какой формат названия у групп?
  • Есть ли ограничение на количество студентов в группе?
  • Студент может быть одновременно в нескольких группах?
  • При переводе между группами как нужно решить вопрос единственности группы у студента?

Начинать выполнение лабораторной лучше после получения ответов на вопросы выше)

Также необходимо реализовать следующий интерфейс (находящийся в проекте Isu шаблонного репозитория), который описывает выполняемые студентами действия:

public interface IIsuService

{

        Group AddGroup(GroupName name);

        Student AddStudent(Group group, string name);



    Student GetStudent(int id);

        Student FindStudent(int id);

        List<Student> FindStudents(GroupName groupName);

        List<Student> FindStudents(CourseNumber courseNumber);



    Group FindGroup(GroupName groupName);

        List<Group> FindGroups(CourseNumber courseNumber);



    void ChangeStudentGroup(Student student, Group newGroup);

}

И протестировать написанный код:

[Test]
public void AddStudentToGroup_StudentHasGroupAndGroupContainsStudent()
{
}

[Test]
public void ReachMaxStudentPerGroup_ThrowException()
{
}

[Test]
public void CreateGroupWithInvalidName_ThrowException()
{
}

[Test]
public void TransferStudentToAnotherGroup_GroupChanged()
{
}

FAQ

  • Нужно использовать GroupName groupName или string groupName ?
    Можно использовать любой вариант. Первый предпочтительней.