Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Інститут Комп’ютерних Технологій, Автоматики та Метрології
Кафедра КСА
/
Лабораторна робота №2
з дисципліни:
«Операційні системи»
Варіант: 18
Мета роботи
Розроблення класу С# та перевантаження операцій.
Завдання
Створити клас «Автомобіль» який містить в собі: кількість коліс, масу, серійний номер, рік випуску, виробника, назву моделі, кількість циліндрів у двигуні, об’єм двигуна, кількість передач, октанове число залитого бензину, середня швидкість, максимальна швидкість руху. Обчислити: прискорення і потужність. З обмеженнями: назва моделі має містити не більше 12 символів, кількість циліндрів від 1 до 18, рік випуску не раніше 1905 та не пізніше 2018. І перевантажити операції +, *, ==.
Код програми
class Car:IDisposable
{
private System.IO.StreamWriter File;
private static int Objects = 0;
private int wheel; //Кількість колес
public int Wheel
{
get { return wheel; }
set
{
wheel = value;
File.WriteLine("Кількість колес - " + wheel.ToString());
}
}
private double mass; // Маса
public double Mass
{
get { return mass; }
set
{
mass = value;
File.WriteLine("Маса - {0} (кг)", mass);
}
}
private string serial; //Серійний номер
public string Serial
{
get { return serial; }
set
{
serial = value;
File.WriteLine("Серійний номер - " + serial);
}
}
private int year; //Рік випуску
public int Year
{
get { return year; }
set
{
if (value >= 1905 && value <= 2018) year = value; else year = 2018;
File.WriteLine("Рік випуску - " + year.ToString());
}
}
private string producer; //Виробник
public string Producer
{
get { return producer; }
set
{
producer = value;
File.WriteLine("Виробник - " + producer);
}
}
private readonly string name; //Назва моделі
public string Name
{
get { return name; }
}
private int cylinders; //Кількість циліндрів у двигуні
public int Cylinders
{
get { return cylinders; }
set
{
if (value >= 1 && value <= 18) cylinders = value; else cylinders = 1;
acceleration = cylinders * octane * speed;
File.WriteLine("Кількість циліндрів у двигуні - " + cylinders.ToString());
}
}
private double volume; //Об'єм двигуна
public double Volume
{
get { return volume; }
set
{
volume = value;
File.WriteLine("Об'єм двигуна - {0} (см^3)", volume);
power = octane * volume;
}
}
private int transfer; //Кількість передач
public int Transfer
{
get { return transfer; }
set
{
transfer = value;
File.WriteLine("Кількість передач - " + transfer.ToString());
}
}
private double octane; //Октанове число залитого бензину
public double Octane
{
get { return octane; }
set
{
octane = value;
File.WriteLine("Октанове число залитого бензину - " + octane.ToString());
acceleration = cylinders * octane * speed;
power = octane * volume;
}
}
private double speed; //Середня швидкість
public double Speed
{
get { return speed; }
set
{
speed = value;
File.WriteLine("Середня швидкість - {0} (км/год)", speed);
acceleration = cylinders * octane * speed;
}
}
private double maxSpeed; //Максимальна швидкість руху
public double MaxSpeed
{
get { return maxSpeed; }
set
{
maxSpeed = value;
File.WriteLine("Максимальна швидкість руху - {0} (км/год)", maxSpeed);
}
}
private double acceleration; //Прискорення
public double Acceleration
{
get { return acceleration; }
}
private double power; //Потужність
public double Power
{
get { return power; }
}
public Car ()
{
Objects++;
File = new System.IO.StreamWriter(Name + ".txt");
File.WriteLine("Створили нову марку машин: " + Name);
name = "Машина " + Objects.ToString();
}
public Car (string Name)
{
Objects++;
if (Name.Length <= 12) name = Name; else name = "Машина " + Objects.ToString();
File = new System.IO.StreamWriter(this.Name + ".txt");
File.WriteLine("Створили нову марку машин: " + this.Name);
}
public static Car operator *(Car A, Car B)
{
if (A.Power*A.Acceleration > B.Power*B.Acceleration)
{
A.Volume += B.Volume / 3;
B.Volume -= B.Volume / 3;
return A;
} else
{
B.Volume += A.Volume / 3;
A.Volume -= A.Volume / 3;
return B;
}
}
public static Car operator +(Car A, Car B)
{
Car C = new Car(A.Name +"-"+ B.Name);
C.Wheel = A.Wheel + B.Wheel;
C.Mass = A.Mass + B.Mass;
C.Serial = B.Serial;
C.Year = B.Year;
C.Producer = A.Producer + "-" + B.Producer;
C.Cylinders = A.Cylinders + B.Cylinders;
C.Volume = A.Volume + B.Volume;
C.Transfer = A.Transfer + B.Transfer;
if (A.Octane > B.Octane) C.Octane = A.Octane; else C.Octane = B.Octane;
C.Speed = A.Speed + B.Speed;
C.MaxSpeed = A.MaxSpeed + B.MaxSpeed;
return C;
}
public static bool operator == (Car A, Car B)
{
if (A.MaxSpeed * A.Power * A.Acceleration == B.MaxSpeed * B.Power * B.Acceleration) return true; else return false;
}
public static bool operator != (Car A, Car B)
{
return !(A == B);
}
public void Dispose()
{
File.WriteLine("Утилізація марки машин");
File.Close();
File.Dispose();
}
}
class Program
{
static void Main(string[] args)
{
using (Car A = new Car("Adam"), B = new Car("CX-5"))
{
A.Wheel = 4;
B.Wheel = 4;
A.Mass = 1135;
B.Mass = 1450;
A.Serial = "Y123456";
B.Serial = "TY165884";
A.Year = 2012;
B.Year = 2018;
A.Producer = "Opel";
B.Producer = "Mazda";
A.Cylinders = 4;
B.Cylinders = 4;
A.Volume = 1398;
B.Volume = 1997;
A.Transfer = 5;
B.Transfer = 6;
A.Octane = 95;
B.Octane = 95;
A.Speed = 90;
B.Speed = 100;
A.MaxSpeed = 180;
B.MaxSpeed = 200;
Car C = B * A;
C = A + B;
C.Dispose();
if (A == B) Console.WriteLine("A=B"); else Console.WriteLine("A!=B");
}
Console.ReadKey();
}
}
Скріншоти програми
/
/
/
/
Висновок
Отже, на цій лабораторній роботі я навчилася створювати класи С# та перевантажувати операції.