Файл: мирэа российский технологический университет.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.12.2023

Просмотров: 28

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.










Министерство науки и высшего образования Российской Федерации





Федеральное государственное бюджетное образовательное учреждение

высшего образования

«МИРЭА – Российский технологический университет»

РТУ МИРЭА


Институт

ИКБ













Специальность (направление):

09.03.02 Информационные системы и технологии













Кафедра:

КБ-9«Предметно-ориентированные информационные системы»













Дисциплина:

«Технологии программирования»






Практическая работа

на тему:

Виртуальные методы и свойства






Студент:







30.03.2023




Сагдиева В.Б




подпись




дата




инициалы и фамилия




Группа:

БСБО-10-22




Шифр:

22Б0743



Преподаватель:







30.03.2023




к.т.н., доц. ИльиченковаЗ.В.




подпись




дата




инициалы и фамилия



Москва 2023 г.

Задания

Классы

Продолжить работу с ранее созданными классами

1. Переопределить одно из свойств базового класса в классе-наследнике.

2. Изучить теоретический материал по теме «Библиотека классов» (https://metanit.com/sharp/tutorial/3.46.php). Создать библиотеку классов по теме своей курсовой работы, содержащую хотя бы один класс.

3. Изучить теоретический материал по теме «Библиотека классов» (https://metanit.com/sharp/tutorial/3.46.php). Создать библиотеку классов по теме своей курсовой работы. Перенести в библиотеку классов все необходимые классы для выполнения курсовой работы.
Основные понятия, связанные с темой
Переопределение свойств

Также как и методы, можно переопределять свойства:

class Person

{

int age = 1;

public virtual int Age

{

get => age;

set{ if(value > 0 && value < 110) age = value; }

}

public string Name { get; set; }

public Person(string name)

{

Name = name;

}

public virtual void Print() => Console.WriteLine(Name);

}

class Employee : Person

{

public override int Age

{

get => base.Age;

set { if (value > 17 && value < 110) base.Age = value; }

}

public string Company { get; set; }

public Employee(string name, string company)

: base(name)

{

Company = company;

base.Age = 18; // возраст для работников по умолчанию

}

}

В данном случае в классе Person определено виртуальное свойство Age, которое устанавливает значение, если оно больше 0 и меньше 110. В классе Employee это свойство переопределено - возраст работника должен быть не меньше 18.

Person bob = new Person("Bob");

Console.WriteLine(bob.Age); // 1

Employee tom = new Employee("Tom", "Microsoft");

Console.WriteLine(tom.Age); // 18

tom.Age = 22;

Console.WriteLine(tom.Age); // 22

tom.Age = 12;

Console.WriteLine(tom.Age); // 22.
Создание библиотеки классов в

Visual Studio
Нередко различные классы и структуры оформляются в виде отдельных библиотек, которые компилируются в файлы dll и затем могут подключаться в другие проекты. Благодаря этому мы можем определить один и тот же функционал в виде библиотеки классов и подключать в различные проекты или передавать на использование другим разработчикам.
Создадим и подключим библиотеку классов.
Возьмем имеющийся проект консольного приложения C#, например, созданный в прошлых темах. В структуре проекта нажмем правой кнопкой на название решения и далее в появившемся контекстном меню выберем Add -> New Project... (Добавить новый проект):



Далее в списке шаблонов проекта найдем пункт Class Library:



Затем дадим новому проекту какое-нибудь название, например, MyLib:

После создания этого проекта в решение будет добавлен новый проект, в моем случае с названием MyLib:


По умолчанию новый проект имеет один пустой класс Class1 в файле Class1.cs. Мы можем этот файл удалить или переименовать, как нам больше нравится.
Например, переименуем файл Class1.cs в Person.cs, а класс Class1 в Person. Определим в классе Person простейший код:

namespace MyLib

{

public class Person

{

string name;

public Person(string name)

{

this.name = name;

}

public void Print() => Console.WriteLine($"Name: {name}");

}

}



Теперь скомпилируем библиотеку классов. Для этого нажмем правой кнопкой на проект библиотеки классов и в контекстном меню выберем пункт Rebuild:



После компиляции библиотеки классов в папке проекта в каталоге bin/Debug/net6.0 мы сможем найти скомпилированный файл dll (MyLib.dll). Подключим его в основной проект. Для этого в основном проекте нажмем правой кнопкой на узел Dependencies и в контекстном меню выберем пункт
Add Project Reference...:



Далее нам откроется окно для добавления библиотек. В этом окне выберем пункт Solution,который позволяет увидеть все библиотеки классов из проектов текущего решения, поставим отметку рядом с нашей библиотекой и нажмем на кнопку OK:

Если наша библиотека вдруг представляет файл dll, который не связан ни с каким проектом в нашем решении, то с помощью кнопки Browse мы можем найти местоположение файла dll и также его подключить.
После успешного подключения библиотеки в главном проекте изменим файл Program.cs, чтобы он использовал класс Person из библиотеки классов:
using MyLib; // подключение пространства имен из библиотеки классов

Person tom = new("Tom");

tom.Print(); // Name: Tom

Код программы и скриншот ее работы

Библиотека:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;
namespace ClassLibrary1

{

public class money

{

private int dox;

private int rasx;

public virtual int Dox

{

get

{

return dox;

}

set

{

if (value < 0) dox = 0;

dox = value;

}

}

public int Rasx

{

get

{

return rasx;

}

set

{

if (value < 0) rasx = 0;

rasx = value;

}

}

public money() { Dox = 40000; Rasx = 48250; }

public money(int d) { Dox = d; Rasx = 58100; }

public money(int dox, int rasx)

{

Dox = dox;

Rasx = rasx;

}

public virtual string print()

{

return ($"{dox} сумма дохода, {rasx} сумма расходов");

}

public void print1()

{

Console.WriteLine("Вы залезли в долги, Данной суммы не хватило на месяц: ");

}

public void print2()

{

Console.WriteLine("Оставшаяся сумма после всех трат за месяц: ");

}

public int remains(int dox, int rasx)

{

if (dox < rasx)

{

print1();

return dox;

}

else

{

print2();

return (dox - rasx);

}

}

public double remains(double dox, double rasx)

{

if (dox < rasx)

{

print1();

return dox;

}

else

{

print2();

return (dox - rasx);

}

}

public static money operator +(money a, money b)

{

return new money(a.Dox + b.Dox, a.Rasx + b.Rasx);

}

public static bool operator ==(money a, money b)

{

return (a.Dox == b.Dox && a.Rasx == b.Rasx);

}

public static bool operator !=(money a, money b)

{

return (a.Dox != b.Dox && a.Rasx != b.Rasx);

}

}

public class money2 : money

{

public int Reg { get; set; }
public override int Dox

{

get

{

return base.Dox;

}

set

{

if (value < 0) base.Dox = 0;


base.Dox = value;

}

}

public money2(int dox, int rasx, int r) : base(dox, rasx)

{

Reg = r;

}

}

public class dostatoc : money

{

public int Pem { get; set; }

public dostatoc(int dox, int rasx, int p) : base(dox, rasx)

{

Pem = p;

}

public override string print()

{

string result = base.print() + $"{Pem} премия в этом месяце";

return result;

}

}

public abstract class Property

{

private string Name { get; set; }

public void Prorerty(string name)

{

Name = name;

}

public abstract void Move();
}

public class Apartment : Property

{

public Apartment(string name) : base() { }

public override void Move()

{

Console.WriteLine("Квартира находится в собственности, необходимо оплачивать каждый месяц только комунальные услуги");

}

}

}
Подключение библиотеки:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using ClassLibrary1;
namespace ConsoleApp1

{

public class programm

{

static void Main(string[] args)

{

money a = new money();

money a1 = new money(60000);

money a2 = new money(40000, 37590);

a.print();

Console.WriteLine($"{a.remains(40000, 48250)}");

a1.print();

Console.WriteLine($"{a1.remains(60000, 58100)}");

a2.print();

Console.WriteLine($"{a2.remains(40000.50, 37590.60)}");

money2 b = new money2(60000, 50000, 1500);

b.print();

dostatoc c = new dostatoc(40000, 38950, 2000);

c.print();
Property apartment = new Apartment("квартира");

apartment.Move();

Console.ReadKey();

}

}

}



Вывод

В ходе практической работы я изучила, что такое переопределение свойств, как создать библиотеку классов в Visual Studio, а также научилась применять все на практике.