PIbd-12 ZagidulinGA Lab05 Simple #6

Closed
Grigorii_Zagidulin wants to merge 2 commits from Lab05 into Lab04
4 changed files with 60 additions and 74 deletions
Showing only changes of commit f449db7f6a - Show all commits

View File

@ -41,7 +41,7 @@ public interface ICollectionGenericObjects<T>
/// </summary>
/// <param name="position">Позиция</param>
/// <returns>true - удачно, false - удаление не удалось</returns>
T Remove(int position);
T? Remove(int position);
/// <summary>
/// Получение объекта по позиции
@ -49,4 +49,4 @@ public interface ICollectionGenericObjects<T>
/// <param name="position">Позиция</param>
/// <returns>Объект</returns>
T? Get(int position);
}
}

View File

@ -14,16 +14,12 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
/// Список объектов, которые храним
/// </summary>
private readonly List<T?> _collection;
/// <summary>
/// Максимально допустимое число объектов в списке
/// </summary>
private int _maxCount;
public int Count => _collection.Count;
public int SetMaxCount { set { if (value > 0) { _maxCount = value; } } }
/// <summary>
/// Конструктор
/// </summary>
@ -31,14 +27,12 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
{
_collection = new();
}
public T? Get(int position)
{
if (position < 0 || position >= _collection.Count)
return null;
return _collection[position];
}
public int Insert(T obj)
{
if (_collection.Count + 1 <= _maxCount)
@ -48,21 +42,19 @@ public class ListGenericObjects<T> : ICollectionGenericObjects<T>
}
return -1;
}
public bool Insert(T obj, int position)
{
if (_collection.Count + 1 > _maxCount || position < 0 || position >= _collection.Count)
if (_collection.Count + 1 > _maxCount || position < 0 || position >= _collection.Count)
return false;
_collection.Insert(position, obj);
return true;
}
public T Remove(int position)
public T? Remove(int position)
{
if (position < 0 || position >= _collection.Count)
return null;
T temp = _collection[position];
T? temp = _collection[position];
_collection.RemoveAt(position);
return temp;
}
}
}

View File

@ -98,13 +98,13 @@ public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
return false;
}
public T Remove(int position)
public T? Remove(int position)
{
if (position < 0 || position >= _collection.Length || _collection[position]==null) // проверка позиции и наличия объекта
if (position < 0 || position >= _collection.Length || _collection[position] == null) // проверка позиции и наличия объекта
return null;
T temp = _collection[position];
T? temp = _collection[position];
_collection[position] = null;
return temp;
}
}
}

View File

@ -1,5 +1,4 @@
using Battleship.CollectionGenericObjects;
namespace ProjectSportCar.CollectionGenericObjects;
/// <summary>
@ -7,70 +6,65 @@ namespace ProjectSportCar.CollectionGenericObjects;
/// </summary>
/// <typeparam name="T"></typeparam>
public class StorageCollection<T>
where T : class
where T : class
{
/// <summary>
/// Словарь (хранилище) с коллекциями
/// </summary>
readonly Dictionary<string, ICollectionGenericObjects<T>> _storages;
/// <summary>
/// Возвращение списка названий коллекций
/// </summary>
public List<string> Keys => _storages.Keys.ToList();
/// <summary>
/// Конструктор
/// </summary>
public StorageCollection()
{
_storages = new Dictionary<string, ICollectionGenericObjects<T>>();
}
/// <summary>
/// Добавление коллекции в хранилище
/// </summary>
/// <param name="name">Название коллекции</param>
/// <param name="collectionType">тип коллекции</param>
public void AddCollection(string name, CollectionType collectionType)
{
if (string.IsNullOrEmpty(name) || _storages.ContainsKey(name))
return;
switch (collectionType)
{
case CollectionType.List:
/// <summary>
/// Словарь (хранилище) с коллекциями
/// </summary>
readonly Dictionary<string, ICollectionGenericObjects<T>> _storages;
/// <summary>
/// Возвращение списка названий коллекций
/// </summary>
public List<string> Keys => _storages.Keys.ToList();
/// <summary>
/// Конструктор
/// </summary>
public StorageCollection()
{
_storages = new Dictionary<string, ICollectionGenericObjects<T>>();
}
/// <summary>
/// Добавление коллекции в хранилище
/// </summary>
/// <param name="name">Название коллекции</param>
/// <param name="collectionType">тип коллекции</param>
public void AddCollection(string name, CollectionType collectionType)
{
if (string.IsNullOrEmpty(name) || _storages.ContainsKey(name))
return;
switch (collectionType)
{
case CollectionType.List:
_storages.Add(name, new ListGenericObjects<T>());
break;
break;
case CollectionType.Massive:
_storages.Add(name, new MassiveGenericObjects<T>());
break;
default:
break;
break;
default:
break;
}
}
/// <summary>
/// Удаление коллекции
/// </summary>
/// <param name="name">Название коллекции</param>
public void DelCollection(string name)
{
if (_storages.ContainsKey(name)) //??? спрросить, зачем проверка
_storages.Remove(name);
}
/// <summary>
/// Доступ к коллекции
/// </summary>
/// <param name="name">Название коллекции</param>
/// <returns></returns>
public ICollectionGenericObjects<T>? this[string name]
{
get
{
if (_storages.TryGetValue(name, out ICollectionGenericObjects<T>? value))
return value;
return null;
}
}
{
if (_storages.ContainsKey(name))
_storages.Remove(name);
}
/// <summary>
/// Доступ к коллекции
/// </summary>
/// <param name="name">Название коллекции</param>
/// <returns></returns>
public ICollectionGenericObjects<T>? this[string name]
{
get
{
if (_storages.TryGetValue(name, out ICollectionGenericObjects<T>? value))
return value;
return null;
}
}
}