using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Security;
/*Задание для лабораторной работы № 1
В соответствии с вариантом задания самостоятельно разработать класс и программу,
иллюстрирующую его возможности. Требования к классу:
- обязательно наличие закрытой (private) и общедоступной (public) частей;
- класс должен иметь по крайней мере два конструктора, определенных программистом:
конструктор по умолчанию и конструктор c параметрами;
- необходимо задать набор свойств для получения значений и модификации полей данных,
находящихся в закрытой части класса;
- для разработанного класса должна быть перегружена одна операция: арифметическая,
сравнения, присваивания. Выбор перегружаемых операций определяется семантикой предметной области.
# организация
*/
/*Задание для лабораторной работы № 2
Построить иерархию классов в соответствии с вариантом задания.
В качестве базового абстрактного класса взять класс разработанный Вами в лабораторной работе № 1.
В базовый класс добавить абстрактный метод и реализовать его в производных классах.
Другие методы базового класса сделать виртуальными и переопределить их в классах-наследниках.
Производные классы должны иметь собственные поля данных, отличные от полей базового класса.
Для разработанной Вами иерархии классов в методе Main:
1) описать массив объектов базового класса;
2) занести в этот массив из файла(!) объекты дочерних классов;
3) продемонстрировать работу методов класса у всех элементов этого массива.
#5 Организация, страховая компания, нефтегазовая компания, завод
*/
/*Задание для лабораторной работы № 3
1. В код лабораторной работы № 2 добавить обработку исключений
«файл не найден», «нет прав доступа к файлу»;
2. Создать пользовательское исключение согласно Вашей предметной области.
Написать метод, генерирующий пользовательское исключение и обработать его.
*/
namespace Sem1Lab3
{
abstract class organisation
{
public string OrgName; //название
private int NumOfPeople; //количество людей, работающих там
private int YearsOld; // сколько лет организация существует
private string CompanyType; //тип компании
public abstract void DoWork(); //слыш работать
public virtual string Info() //для вывода информации
{
string s = "Organisation info:\n\n" + "Name:" + OrgName + "\nNumber of People:" + NumOfPeople + "\nOrganisation age:" + YearsOld + "\n";
return s;
}
public virtual int InsuranceOrders1
{
get;
set;
}
public virtual string MainMiningLocations1
{
get;
set;
}
public virtual string FactoryLocation1
{
get;
set;
}
public int YearsOld1
{
get { return YearsOld; }
set { YearsOld = value; }
}
public int NumOfPeople1
{
get { return NumOfPeople; }
set
{
if (value <= 0)
{
throw new NumberOfPeopleException();
}
else { NumOfPeople = value; }
}
}
public string CompanyType1
{
get { return CompanyType; }
set { CompanyType = value; }
}
public organisation()
{
OrgName = "Placeholder";
NumOfPeople = 1;
YearsOld = 1;
}
public organisation(string OrgName, int NumOfPeople, int YearsOld)
{
this.OrgName = OrgName;
this.NumOfPeople = NumOfPeople;
this.YearsOld = YearsOld;
}
public static bool operator >(organisation n1, organisation n2) //оператор сравнивает количество рабочих
{
if (n1.NumOfPeople > n2.NumOfPeople)
return true;
else
return false;
}
public static bool operator <(organisation n1, organisation n2)
{
if (n1.NumOfPeople < n2.NumOfPeople)
return true;
else
return false;
}
}
public class NumberOfPeopleException : Exception
{
public NumberOfPeopleException()
{
}
public NumberOfPeopleException(string message)
: base(message)
{
}
public NumberOfPeopleException(string message, Exception inner)
: base(message, inner)
{
}
}
class InsuranceCompany : organisation
{ //Класс страховая компания
private int InsuranceOrders; //количество заказов на стаховку (я понятия не имею, как работают страховые компании)
public override string Info()
{
return base.Info() + "Number of Insurance Orders:" + InsuranceOrders + "\n";
}
public override int InsuranceOrders1
{
get { return InsuranceOrders; }
set { InsuranceOrders = value; }
}
public InsuranceCompany()
{
InsuranceOrders = 1;
}
public override void DoWork()
{
Console.WriteLine("People may leave their orders so Insurance Company can view them and do something I guess, dunno");
}
public InsuranceCompany(int InsuranceOrders, string OrgName, int NumOfPeople, int YearsOld)
: base(OrgName, NumOfPeople, YearsOld)
{
this.InsuranceOrders = InsuranceOrders;
}
}
class OilGasCompany : organisation
{ //нефтегаз
private string MainMiningLocations; //основные место добычи
public override string Info()
{
return base.Info() + "Main locations for Mining:" + MainMiningLocations + "\n";
}
public override string MainMiningLocations1
{
get { return MainMiningLocations; }
set { MainMiningLocations = value; }
}
public OilGasCompany()
{
MainMiningLocations = "Iraq";
}
public override void DoWork()
{
Console.WriteLine("These are the main locations this company uses to mine Oil and Gas"); //если честно, не знаю, подходит ли слово
} //"mine" для описания добычи газа и нефти
public OilGasCompany(string MainMiningLocations, string OrgName, int NumOfPeople, int YearsOld)
: base(OrgName, NumOfPeople, YearsOld)
{
this.MainMiningLocations = MainMiningLocations;
}
}
class Factory : OilGasCompany
{
private string FactoryLocation; //местоположение завода
public override string Info()
{
return base.Info() + "Factory Location:" + FactoryLocation + "\n";
}
public Factory(string FactoryLocation, string MainMiningLocations, string OrgName, int NumOfPeople, int YearsOld)
: base(MainMiningLocations, OrgName, NumOfPeople, YearsOld)
{
this.FactoryLocation = FactoryLocation;
}
public override string MainMiningLocations1
{
get
{
return base.MainMiningLocations1;
}
set
{
base.MainMiningLocations1 = value + ", " + FactoryLocation1;
}
}
public override string FactoryLocation1
{
get { return FactoryLocation; }
set { FactoryLocation = value; }
}
public Factory()
{
FactoryLocation = "Syria";
}
public override void DoWork()
{
Console.WriteLine("Location of our main and biggest Oil and Gas distilling Factory");
}
}
class Program
{
static void Main()
{
string inputFile;
Console.WriteLine("File name:");
inputFile = Console.ReadLine();
try
{
StreamReader sr = new StreamReader(inputFile);
string inLine;
string[] arguments;
int N;
N = Int32.Parse(sr.ReadLine());
organisation[] kol = new organisation[N];
for (int i = 0; i < N; i++)
{
inLine = sr.ReadLine();
arguments = inLine.Split();
if (arguments[0][0] == 'I')
{
kol[i] = new InsuranceCompany();
kol[i].InsuranceOrders1 = Int32.Parse(arguments[4]);
}
if (arguments[0][0] == 'O')
{
kol[i] = new OilGasCompany();
kol[i].MainMiningLocations1 = arguments[4];
}
if (arguments[0][0] == 'F')
{
kol[i] = new Factory();
kol[i].MainMiningLocations1 = arguments[4];
kol[i].FactoryLocation1 = arguments[4];
}
kol[i].OrgName = arguments[1];
kol[i].NumOfPeople1 = Int32.Parse(arguments[2]);
kol[i].YearsOld1 = Int32.Parse(arguments[3]);
}
foreach (organisation elem in kol)
{
Console.WriteLine(elem.Info());
elem.DoWork();
Console.WriteLine();
}
}
catch (FileNotFoundException)
{
Console.WriteLine("File Not Found");
}
catch (SecurityException)
{
Console.WriteLine("You have no Permission to open this file");
}
catch (NumberOfPeopleException)
{
Console.WriteLine("Company must have people working in it!");
}
}
}
}