Главная страница

Отчет Программирование на языке высокого уровня. разработка программного обеспечения на языке высокого уровня c#


Скачать 0.76 Mb.
Названиеразработка программного обеспечения на языке высокого уровня c#
Дата28.06.2022
Размер0.76 Mb.
Формат файлаdoc
Имя файлаОтчет Программирование на языке высокого уровня.doc
ТипПояснительная записка
#618163
страница7 из 7
1   2   3   4   5   6   7

Результат работы программы


Рисунок 12 – Результат работы программы

7 Наследование


Цель: Изучить методы наследования классов.

Теоретические сведения


Наследование позволяет создавать новый класс на базе другого. Класс, на базе которого создается новый класс, называется базовым, а базирующийся новый класс – наследником или производным классом. В класс-наследник из базового класса переходят поля, свойства, методы и другие члены класса.

Объявление нового класса, который будет наследовать другой класс, выглядит так:

class [имя_класса] : [имя_базового_класса]

{

// тело класса

}

Когда конструктор определен только в наследнике, то здесь всё просто – при создании объекта сначала вызывается конструктор по умолчанию базового класса, а затем конструктор наследника.

Когда конструкторы объявлены и в базовом классе, и в наследнике – нам необходимо вызывать их оба. Для вызова конструктора базового класса используется ключевое слово base. Объявление конструктора класса-наследника с вызовом базового конструктора имеет следующую структуру:

[имя_конструктора_класса-наследника] ([аргументы]) : base ([аргументы])

{

// тело конструктора

}

В базовый конструктор передаются все необходимые аргументы для создания базовой части объекта.

Задание


Разработать класс ZagranRoute, являющийся наследником класса Route, добавив следующие поля:

  • skills (необходимые навыки),

  • place (местность, по которой проходит маршрут).



Листинг (исходный код программы)


Листинг файла Route.cs

using System;
namespace ConsoleApp7

{

public class Route

{

private int routeID;

private string name;

private int period;

private int cost;

public Route()

{

routeID = 0;

period = 0;

name = "";

cost = 0;

}

public Route(Route p)

{

routeID = p.routeID;

name = p.name;

period = p.period;

cost = p.cost;

}

public Route(int routeID, string name, int period, int cost)

{

this.routeID = routeID;

this.name = name;

this.period = period;

this.cost = cost;

}
public int GetPrice()

{

return period * cost;

}

public static bool operator >(Route l, Route r)

{

return l.routeID > r.routeID;

}
public static bool operator <(Route l, Route r)

{
return l.routeID < r.routeID;

}
public static bool operator ==(Route l, Route r)

{

return ((l.routeID == r.routeID) && (l.name == r.name) && (l.period == r.period) && (l.cost == r.cost));

}
public static bool operator !=(Route l, Route r)

{

return !(l == r);

}

public override string ToString()

{

return string.Format($"{routeID} {name}, дней в пути: {period}, стоимость одного дня: {cost}");

}

}

}

Листинг файла HardRoute.cs

using System;
namespace ConsoleApp7

{

class HardRoute: Route

{

private bool skills;

private string place;
public HardRoute() : base()

{

skills = false;

place = "неизвестно";

}

public HardRoute(HardRoute hr) : base(hr)

{

skills = hr.Skills;

place = hr.Place;

}

public HardRoute(int routeID, string name, int period, int cost, bool skills, string place) : base(routeID, name, period, cost)

{

this.skills = skills;

this.place = place;

}
public bool Skills

{

get { return skills; }

}
public string Place

{

get { return place; }

}

public override string ToString()

{

return string.Format("{0}. Есть необходимые навыки: {1}. Местность, по которой проходит маршрут: {2}", base.ToString(), skills ? "Да" : "Нет", place);

}
}

}

Листинг файла Program.cs

using System;
namespace ConsoleApp7

{

class Program

{

static void Main(string[] args)

{

//заполнение маршрутов

HardRoute r1 = new HardRoute(111, "Первый маршрут", 5, 1500,false,"Лес");

HardRoute r2 = new HardRoute(222, "Второй маршрут", 2, 1000, true, "Горы");
Console.WriteLine(r1.ToString());

int result = r1.GetPrice();

Console.WriteLine($"Общая стоимость маршрута {result}.");

Console.WriteLine();
Console.WriteLine(r2.ToString());

result = r2.GetPrice();

Console.WriteLine($"Общая стоимость маршрута {result}.");

Console.WriteLine();
if (r1 > r2)

Console.WriteLine("Первый маршрут больше чем второй");

else

Console.WriteLine("Первый маршрут не больше второй");
if (r1 < r2)

Console.WriteLine("Первый маршрут меньше чем второй");

else

Console.WriteLine("Первый маршрут не меньше второй");

if (r1 == r2)

Console.WriteLine("Первый маршрут равен второму");

else

Console.WriteLine("Первый маршрут не равен второму");
if (r1 != r2)

Console.WriteLine("Первый маршрут не равен второму");

else

Console.WriteLine("Первый маршрут равен второму");
Console.ReadLine();

}

}

}

Результат работы программы




Рисунок 13 – Результат работы программы

8 Элементы библиотеки Windows Forms.


Цель: Изучить основные классы библиотеки Windows Forms, их свойства, методы и события.

Теоретические сведения


Чтобы создать GUI приложения в Microsoft .NET нужно использовать Windows Forms. Windows Forms - новый стиль построения приложения на базе классов .NET Framework class library. Они имеют собственную модель программирования, которая более совершеннее, чем модели, основанные на Win32 API или MFC, и они выполняются в управляемой среде .NET Common Language Runtime (CLR).

Приложения, основанные на Windows Forms, которые используют кнопки, списки и другие типы компонентов Windows, используют классы управления System.WinForms, значительно упрощающие программирование управления.

Другая важная грань модели программирования Windows Forms - механизм, который формы используют для ответа на ввод в меню, средств управления и других элементов GUI приложения. Традиционные Windows-приложения обрабатывают сообщения WM_COMMAND и WM_NOTIFY используя события процесса Windows Forms. В C# и на других языках, которые поддерживают .NET Common Language Runtime (CLR), события - члены типа первого класса наравне с методами, полями и свойствами. Фактически все управляющие классы (control classes) Windows Forms (а также и многие неуправляющие классы) создают события.

Задание


Вычислить и вывести на экран в виде таблицы значения функции из задания к лабораторной работе № 2 «Разветвляющиеся алгоритмы. Циклы» в интервале от xнач до xкон с шагом dx.

Все исходные данные для расчёта значений функции необходимо задавать на начальной форме, а результаты вычислений выводить на другой. После вычисления функции на исходной форме необходимо вывести количество посчитанных значений.

Если введённые значения xнач, xкон и dx не позволяют организовать цикл (например xкон < xнач при положительном значении dx, или dx=0 и т.д.), то необходимо вывести сообщение об ошибке и не проводить расчётов.

Листинг (исходный код программы)


Листинг файла Form1.cs

namespace WindowsFormsApp1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

if (textBox1.TextLength == 0 ||

textBox2.TextLength == 0 ||

textBox3.TextLength == 0 ||

textBox4.TextLength == 0 ||

textBox5.TextLength == 0)

{

MessageBox.Show("Не все поля заполнены!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}

double x, x_end, dx, a, c;

try

{

x = Convert.ToDouble(textBox1.Text.Replace('.', ','));

x_end = Convert.ToDouble(textBox2.Text.Replace('.', ','));

dx = Convert.ToDouble(textBox3.Text.Replace('.', ','));
a = Convert.ToDouble(textBox4.Text.Replace('.', ','));

c = Convert.ToDouble(textBox6.Text.Replace('.', ','));
if (x == x_end)

{

MessageBox.Show("Значение Xнач. не должно совпадать с Хкон.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}
if ((x > x_end && dx > 0) || (x < x_end && dx < 0))

{

MessageBox.Show("Некорректно заданы параметры диапазона", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}
if (dx == 0)

{

MessageBox.Show("Значение dx не должно быть равно нулю", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}
Form f = new Form2(x, x_end, dx, a, c);

f.ShowDialog(this);

}

catch (Exception)

{

MessageBox.Show("Что-то пошло не так. Возможно, Вы неправильно заполнили поля.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}
}

}

}

Листинг файла Form2.cs

using System;

using System.Windows.Forms;
namespace WindowsFormsApp1

{

public partial class Form2 : Form

{

private readonly double x_begin, x_end, dx, a, c;
private void Form2_Load_1(object sender, EventArgs e)

{

double f;

double x = x_begin;

while ((dx > 0 && x <= x_end) || (dx < 0 && x >= x_end))

{

if (c < 0 && a != 0)

{

f = -a * Math.Pow(x, 2);

}

else if (c > 0 && a == 0)

{

f = (a - x) / (c * x);

}

else

{

f = x / c;

}

dataGridViewValues.Rows.Add(string.Format("{0}", x), string.Format("{0}", f));

x += dx;

}

(Owner as Form1).labelResult.Text = $"Получено значений: {dataGridViewValues.Rows.Count}";

}
public Form2(double x_begin, double x_end, double dx, double a, double c)

{

InitializeComponent();

this.x_begin = x_begin;

this.x_end = x_end;

this.dx = dx;

this.a = a;

this.c = c;

}

}

}

Результат работы программы


На рисунках 14-15 представлен результат работы программы.



Рисунок 14 – Результат работы программы


Рисунок 15 – Результат работы программы

Заключение


В рамках выполнения курсовой работы был разработан набор приложений на различную тематику. При разработке были затронуты различные темы, связанные с аспектами программирования. Темы начинались от самых простых, азов, и заканчивались основами ООП. При разработке каждого из приложений было продемонстрировано умение овладевать новым материалом, а также самостоятельно решать поставленные задачи.

Все приложения были написаны на языке программирования C#, семь приложений имеют консольный интерфейс, одно – оконный.

Для разработки использовалась среда разработки Microsoft Visual Studio от Microsorf.

Список использованных источников


  1. Хейлсберг А. Язык программирования C#. — СПб: Питер, 2012.

  2. Троелсен, Эндрю Язык программирования C# 5.0 и платформа .NET 4.5 / Эндрю Троелсен. - М.: Вильямс, 2015.

  3. Бишоп, Дж. C# в кратком изложении / Дж. Бишоп, Н. Хорспул. - М.: Бином. Лаборатория знаний, 2013.

  4. Вагнер, Билл С# Эффективное программирование / Билл Вагнер. - М.: ЛОРИ, 2013.

  5. Технология программирования: Учебное пособие / Кафедра системного анализа и телекоммуникаций ТРТУ. - Таганрог: ТРТУ. - 78 с. http://window.edu.ru/resource/943/28943/files/tsure169.pdf – свободный доступ.

  6. Сайт Visual Studio — Режим доступа: https://www.visualstudio.c
1   2   3   4   5   6   7


написать администратору сайта