Класс факультетов и кафедр факультета: с чего начать - C#
Формулировка задачи:
Класс факультетов и кафедр факультета, предусмотреть операции слияния/разделения кафедр и факультетов, перевода кафедр с одного факультета в другой.
небольшой вопрос
с чего начать лучше?
по курсу объектно-ориентированное программирование
думал начать с того что кафедра это подразделение факультета
Решение задачи: «Класс факультетов и кафедр факультета: с чего начать»
textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
namespace Facs
{
class University
{
public University(List<Faculty> facs)
{
Faculties = facs;
}
public University():this(new List<Faculty>())
{
}
public void AddFaculty(Faculty fac)
{
if (Faculties.Find ((x) => x.Name == fac.Name) == null)
{
Faculties.Add (fac);
}
}
public bool MoveChair(string ChairName, string DestFacName, string SrcFacName)
{
Faculty dest = Faculties.Find ((x) => x.Name == DestFacName);
Faculty src = Faculties.Find ((x) => x.Name == SrcFacName);
if (dest == null || src == null)
{
return false;
}
if (!dest.HasChair (ChairName))
{
return false;
}
Chair ch = dest.GetChair (ChairName);
if (!dest.RemoveChair (ch))
{
return false;
}
if (!src.AddChair (ch))
{
return false;
}
return true;
}
public List<Faculty> Faculties {get; private set;}
}
class Faculty
{
public Faculty(List<Chair> chairs, string name)
{
Chairs = chairs;
Name = name;
}
public bool AddChair(Chair chair)
{
if (GetChair (chair.Name) == null)
{
Chairs.Add (chair);
return true;
}
return false;
}
public bool RemoveChair(Chair chair)
{
return RemoveChair(chair.Name);
}
public bool RemoveChair(string name)
{
Chair chair = GetChair (name);
if (chair != null)
{
Chairs.Remove (chair);
return true;
}
return false;
}
public bool HasChair(Chair chair)
{
return HasChair (chair.Name);
}
public bool HasChair(string name)
{
return GetChair (name) != null;
}
public Chair GetChair(string name)
{
return Chairs.Find ((x) => x.Name == name);
}
public List<Chair> Chairs {get; private set;}
public string Name {get; private set;}
}
class Chair
{
public Chair(string name)
{
Name = name;
}
public string Name {get; private set;}
}
class Program
{
static void Main()
{
List<Faculty> facs = new List<Faculty>()
{
new Faculty(new List<Chair> {new Chair("a"), new Chair("b")}, "fac1"),
new Faculty(new List<Chair> {new Chair("c"), new Chair("d")}, "fac2")
};
University un = new University(facs);
Console.WriteLine (un.MoveChair ("a", "fac1", "fac2"));
Console.WriteLine (un.MoveChair ("a", "fac1", "fac2"));
Console.WriteLine (un.MoveChair ("c", "fac2", "fac1"));
}
}
}