Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Інститут Комп’ютерних Технологій, Автоматики та Метрології
Кафедра КСА
/
Лабораторна робота №2
з дисципліни:
«Операційні системи»
Варіант: 4
Мета роботи
Розроблення класу С# та перевантаження операцій.
Завдання
Створити клас «Яблуко» який містить в собі: сорт, колір, середню вагу, коефіцієнт сочності, середній термін достигання, кількість зернят, термін зберігання у сирому вигляді. Обчислити термін зберігання у консервованому вигляді, середня кількість яблук на дереві. З обмеженнями: значення коефіцієнта сочності у межах від 0,2 до 0,95; назва сорту не довше 15 символів; термін зберігання у сирому вигляді у межах від 15 до 120 днів. І перевантажити операції +, *, ==.
Код програми
class Apple:IDisposable
{
private static int Number_of_objects = 0;
private System.IO.StreamWriter file;
private readonly string variety;
private string colour = "";
private double average_weight = 0;
private double coefficient_of_juicy = 0;
private int average_term_of_maturation = 0;
private int number_of_grains = 0;
private int shelf_life_of_raw = 0;
public string Variety
{
get { return variety; }
}
public string Colour
{
get { return colour; }
set
{
if (colour == "") file.WriteLine("Його колiр " + value); else file.WriteLine("Колiр змiнено на " + value);
colour = value;
}
}
public double Average_weight
{
get { return average_weight; }
set
{
if (average_weight == 0) file.WriteLine("Його середня вага {0} (г)", value); else file.WriteLine("Середня вага змiнена на {0} (г)", value);
average_weight = value;
}
}
public double Coefficient_of_juicy
{
get { return coefficient_of_juicy; }
set
{
bool fl = false;
if (coefficient_of_juicy == 0) fl = true;
if (value > 0.2 && value < 0.95) coefficient_of_juicy = value; else coefficient_of_juicy = 0.2;
if (fl == true) file.WriteLine("Його коефiцiєнт сочностi {0}", coefficient_of_juicy); else file.WriteLine("Коефiцiєнт сочностi змiнено на {0}", coefficient_of_juicy);
}
}
public int Average_term_of_maturation
{
get { return average_term_of_maturation; }
set
{
if (average_term_of_maturation == 0) file.WriteLine("Його середнiй термiн достигання {0} (д)", value); else file.WriteLine("Cереднiй термiн достигання змiнено на {0} (д)", value);
average_term_of_maturation = value;
}
}
public int Number_of_grains
{
get { return number_of_grains; }
set
{
if (number_of_grains == 0) file.WriteLine("Його кiлькiсть зерняток " + value); else file.WriteLine("Кiлькiсть зерняток змiнена на " + value);
number_of_grains = value;
shelf_life_of_canned = number_of_grains * shelf_life_of_raw;
average_number_on_tree = 100 * number_of_grains;
}
}
public int Shelf_life_of_raw
{
get { return shelf_life_of_raw; }
set
{
bool fl = false;
if (shelf_life_of_raw == 0) fl = true;
if (value > 15 && value < 120) shelf_life_of_raw = value; else shelf_life_of_raw = 15;
if (fl == true) file.WriteLine("Його термiн зберiгання у сирому виглядi {0} (д)", shelf_life_of_raw); else file.WriteLine("Nермiн зберiгання у сирому виглядi змiнено на {0} (д)", shelf_life_of_raw);
shelf_life_of_canned = number_of_grains * shelf_life_of_raw;
}
}
private int shelf_life_of_canned;
private int average_number_on_tree;
public int Shelf_life_of_Canned
{
get { return shelf_life_of_canned; }
}
public int Average_number_on_tree
{
get { return average_number_on_tree; }
}
public Apple ()
{
Number_of_objects++;
variety = "Apple number " + Number_of_objects.ToString();
file = new System.IO.StreamWriter(Variety + ".txt");
file.WriteLine("Ствонення нового сорту пiд назвою " + Variety);
}
public Apple (string Name)
{
Number_of_objects++;
if (Name.Length < 16) variety = Name; else variety = "Apple number " + Number_of_objects.ToString();
variety = Name;
file = new System.IO.StreamWriter(Variety + ".txt");
file.WriteLine("Ствонення нового сорту пiд назвою " + Variety);
}
public Apple(string Name0, string Name1, double D0, double D1, int I0, int I1, int I2)
{
Number_of_objects++;
if (Name0.Length < 16) variety = Name0; else variety = "Apple number " + Number_of_objects.ToString();
variety = Name0;
file = new System.IO.StreamWriter(Variety + ".txt");
file.WriteLine("Ствонення нового сорту пiд назвою " + Variety);
Colour = Name1;
file.WriteLine("Його колiр " + Colour);
Average_weight = D0;
file.WriteLine("Його середня вага " + Average_weight.ToString() + " (г)");
Coefficient_of_juicy = D1;
file.WriteLine("Його коефiцiєнт сочностi " + Coefficient_of_juicy.ToString());
Average_term_of_maturation = I0;
file.WriteLine("Його середнiй термiн достигання " + Average_term_of_maturation.ToString() + " (д)");
Number_of_grains = I1;
file.WriteLine("Його кiлькiсть зернят " + Number_of_grains.ToString());
Shelf_life_of_raw = I2;
file.WriteLine("Його термiн зберiгання у сирому виглядi " + Shelf_life_of_raw.ToString() + " (д)");
}
public static bool operator > (Apple A, Apple B)
{
if (A.Average_weight > B.Average_weight) return true; else return false;
}
public static bool operator <(Apple A, Apple B)
{
if (A.Average_weight < B.Average_weight) return true; else return false;
}
public static bool operator ==(Apple A, Apple B)
{
if (A.Average_weight*A.Coefficient_of_juicy == B.Average_weight*B.Coefficient_of_juicy) return true; else return false;
}
public static bool operator !=(Apple A, Apple B)
{
return !(A==B);
}
public static Apple operator +(Apple A, Apple B)
{
Apple C = new Apple(A.Variety[0].ToString() + B.Variety[0].ToString());
C.Colour = A.Colour;
if (A.Coefficient_of_juicy > B.Coefficient_of_juicy) C.Coefficient_of_juicy = A.Coefficient_of_juicy; else C.Coefficient_of_juicy = B.Coefficient_of_juicy;
if (A.Average_weight > B.Average_weight) C.Average_weight = A.Average_weight; else C.Average_weight = B.Average_weight;
if (A.Number_of_grains > B.Number_of_grains) C.Number_of_grains = A.Number_of_grains; else C.Number_of_grains = B.Number_of_grains;
if (A.Average_term_of_maturation < B.Average_term_of_maturation) C.Average_term_of_maturation = A.Average_term_of_maturation; else C.Average_term_of_maturation = B.Average_term_of_maturation;
if (A.Shelf_life_of_raw > B.Shelf_life_of_raw) C.Shelf_life_of_raw = A.Shelf_life_of_raw; else C.Shelf_life_of_raw = B.Shelf_life_of_raw;
return C;
}
public void Write()
{
Console.WriteLine("Даннi про сорт " + Variety);
Console.WriteLine("Його колiр " + Colour);
Console.WriteLine("Його середня вага " + Average_weight.ToString() + " (г)");
Console.WriteLine("Його коефiцiєнт сочностi " + Coefficient_of_juicy.ToString());
Console.WriteLine("Його середнiй термiн достигання " + Average_term_of_maturation.ToString() + " (д)");
Console.WriteLine("Його кiлькiсть зернят " + Number_of_grains.ToString());
Console.WriteLine("Його термiн зберiгання у сирому виглядi " + Shelf_life_of_raw.ToString() + " (д)");
Console.WriteLine("Його середня кількість яблук на дереві " + Average_number_on_tree.ToString());
Console.WriteLine("Його термiн зберiгання у консервованому виглядi " + Shelf_life_of_Canned.ToString() + " (д)");
}
public void Dispose()
{
file.WriteLine("Сорт знищено.");
file.Close();
file.Dispose();
}
}
class Program
{
static void Main(string[] args)
{
using (Apple A = new Apple("бiлий"), B = new Apple("земля"))
{
A.Colour = "бiлий";
B.Colour = "зелений";
A.Average_weight = 250.5;
B.Average_weight = 500;
A.Coefficient_of_juicy = 0.5;
B.Coefficient_of_juicy = 0.92;
A.Average_term_of_maturation = 30;
B.Average_term_of_maturation = 10;
A.Number_of_grains = 20;
B.Number_of_grains = 1;
A.Shelf_life_of_raw = 30;
B.Shelf_life_of_raw = 90;
A.Number_of_grains = 10;
if (A > B) { Console.WriteLine("A>B"); A.Write(); } else { Console.WriteLine("A<B"); B.Write(); }
Apple C = A + B;
if (C == B) Console.WriteLine("C=B"); else Console.WriteLine("C!=B");
C.Dispose();
}
Console.ReadKey();
}
Скріншоти програми
/
/
/
/
Висновок
Отже, на цій лабораторній роботі я навчився створювати класи С# та перевантажувати операції.