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

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

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

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

Добавлен: 06.12.2023

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

Скачиваний: 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); // 1Employee tom = new Employee("Tom", "Microsoft");Console.WriteLine(tom.Age); // 18tom.Age = 22;Console.WriteLine(tom.Age); // 22tom.Age = 12;Console.WriteLine(tom.Age); // 22.Создание библиотеки классов в

VisualStudioНередко различные классы и структуры оформляются в виде отдельных библиотек, которые компилируются в файлы 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, а также научилась применять все на практике.