Главная страница
Навигация по странице:

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

  • Цель

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

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


    Скачать 1.38 Mb.
    Названиеразработка программного обеспечения на языке высокого уровня c#
    АнкорКурсовая по программированию
    Дата28.06.2022
    Размер1.38 Mb.
    Формат файлаdocx
    Имя файлаКурсовая по программированию.docx
    ТипПояснительная записка
    #618156
    страница6 из 6
    1   2   3   4   5   6

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


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

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

    Наследование (inheritance) является одним из ключевых моментов ООП. Благодаря наследованию один класс может унаследовать функциональность другого класса.

    Пусть у нас есть следующий класс Person, который описывает отдельного человека:

    class Person

    {

    private string _name;

    public string Name

    {

    get { return _name; }

    set { _name = value; }

    }

    public void Display()

    {

    Console.WriteLine(Name);

    }

    }

    Но вдруг нам потребовался класс, описывающий сотрудника предприятия - класс Employee. Поскольку этот класс будет реализовывать тот же функционал, что и класс Person, так как сотрудник - это также и человек, то было бы рационально сделать класс Employee производным (или наследником, или подклассом) от класса Person, который, в свою очередь, называется базовым классом или родителем (или суперклассом):

    class Employee : Person

    {

    }

    После двоеточия мы указываем базовый класс для данного класса. Для класса Employee базовым является Person, и поэтому класс Employee наследует все те же свойства, методы, поля, которые есть в классе Person. Единственное, что не передается при наследовании, это конструкторы базового класса.

    Таким образом, наследование реализует отношение is-a (является), объект класса Employee также является объектом класса Person:

    static void Main(string[] args)

    {

    Person p = new Person { Name = "Tom"};

    p.Display();

    p = new Employee { Name = "Sam" };

    p.Display();

    Console.Read();

    }

    И поскольку объект Employee является также и объектом Person, то мы можем так определить переменную: Person p = new Employee().

    По умолчанию все классы наследуются от базового класса Object, даже если мы явным образом не устанавливаем наследование. Поэтому выше определенные классы Person и Employee кроме своих собственных методов, также будут иметь и методы класса Object: ToString(), Equals(), GetHashCode() и GetType().

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

    Не поддерживается множественное наследование, класс может наследоваться только от одного класса.

    При создании производного класса надо учитывать тип доступа к базовому классу - тип доступа к производному классу должен быть таким же, как и у базового класса, или более строгим. То есть, если базовый класс у нас имеет тип доступа internal, то производный класс может иметь тип доступа internal или private, но не public.

    Однако следует также учитывать, что если базовый и производный класс находятся в разных сборках (проектах), то в этом случае производый класс может наследовать только от класса, который имеет модификатор public.

    Если класс объявлен с модификатором sealed, то от этого класса нельзя наследовать и создавать производные классы. Например, следующий класс не допускает создание наследников:

    sealed class Admin

    {

    }

    Нельзя унаследовать класс от статического класса..

    Задание

    Разработать класс, являющийся наследником указанного класса. Добавить в него указанные поля, необходимые свойства и конструкторы.

    Написать программу с демонстрацией создания объектов этого класса с использованием разных конструкторов.

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

    datePayed (дата оплаты),

    who (кто оплатил).

    Решение

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

    namespace Laborat7

    {

    public class Count

    {

    private uint сountNumber;

    private DateTime date;

    private double value;

    private uint count;
    public Count()

    {

    сountNumber = 0;

    date = DateTime.ParseExact("01.01.1900", "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);

    value = 0.00;

    count = 0;

    }

    public Count(uint сountNumber, DateTime date, double value, uint count)

    {

    this.сountNumber = сountNumber;

    this.date = date;

    this.value = value;

    this.count = count;

    }

    public Count(Count obj)

    : this(obj.сountNumber, obj.date, obj.value, obj.count)

    {

    }

    public override string ToString()

    {

    return String.Format("Номер счет-фактуры: {0}" + Environment.NewLine +

    "Дата выписки счет-фактуры: {1: dd.MM.yyyy}" + Environment.NewLine +

    "Cумма к уплате: {2} " + Environment.NewLine +

    "Количество товара: {3} " + Environment.NewLine +

    "Cредняя стоимость товара в счёте: {4:0.00}",

    сountNumber, date, value, count, GetAverage());

    }

    public double GetAverage()

    {

    if (count == 0)

    return 0;

    else

    return (value / count);

    }

    public static bool operator >(Count a, Count b)

    {

    return a.date < b.date;

    }

    public static bool operator <(Count a, Count b)

    {

    return a.date > b.date;

    }

    }

    public class PayedCount : Count

    {

    private DateTime DatePayed { get; set; }

    private string Who { get; set; }
    public PayedCount(DateTime datePayed, string who, uint сountNumber, DateTime date, double value, uint count)

    : base(сountNumber, date, value, count)

    {

    DatePayed = datePayed;

    Who = who;

    }

    public override string ToString()

    {

    return base.ToString() +

    String.Format(

    Environment.NewLine + "Дата оплаты счета-фактуры: {0: dd.MM.yyyy}" +

    Environment.NewLine + "Плательщик: {1}",

    DatePayed, Who);

    }

    }

    class Program

    {

    static void Main(string[] args)

    {

    Count[] Counts = new Count[2];

    for (int i = 0; i < Counts.Length; i++)

    {

    uint result;

    DateTime date_result;

    double value_result;
    Console.Write("Введите номер счет-фактуры: ");

    while (!uint.TryParse(Console.ReadLine(), out result))

    {

    Console.WriteLine("Неверный номер счет-фактуры... ");

    Console.Write("\nВведите номер счет-фактуры: ");

    }

    uint сountNumber = result;
    Console.Write("Введите дата выписки счет-фактуры: ");

    while (!DateTime.TryParse(Console.ReadLine(), out date_result))

    {

    Console.WriteLine("Неверная дата выписки счет-фактуры... ");

    Console.Write("\nВведите дату выписки счет-фактуры: ");

    }

    DateTime date = date_result;
    Console.Write("Введите сумму к уплате: ");

    while (!double.TryParse(Console.ReadLine(), out value_result))

    {

    Console.WriteLine("Неверная сумма к уплате... ");

    Console.Write("\nВведите сумму к уплате: ");

    }

    double value = value_result;
    Console.Write("Введите количество товара: ");

    while (!uint.TryParse(Console.ReadLine(), out result))

    {

    Console.WriteLine("Неверное количество товара... ");

    Console.Write("\nВведите количество товара: ");

    }

    uint count = result;
    Counts[i] = new Count(сountNumber, date, value, count);

    }
    Console.WriteLine();

    PrintCounts(Counts);

    Console.WriteLine();

    PayedCount[] PayedCounts = new PayedCount[2];

    for (int i = 0; i < PayedCounts.Length; i++)

    {

    uint result;

    DateTime date_result;

    double value_result;
    Console.Write("Введите номер счет-фактуры: ");

    while (!uint.TryParse(Console.ReadLine(), out result))

    {

    Console.WriteLine("Неверный номер счет-фактуры... ");

    Console.Write("\nВведите номер счет-фактуры: ");

    }

    uint сountNumber = result;
    Console.Write("Введите дата выписки счет-фактуры: ");

    while (!DateTime.TryParse(Console.ReadLine(), out date_result))

    {

    Console.WriteLine("Неверная дата выписки счет-фактуры... ");

    Console.Write("\nВведите дату выписки счет-фактуры: ");

    }

    DateTime date = date_result;
    Console.Write("Введите сумму к уплате: ");

    while (!double.TryParse(Console.ReadLine(), out value_result))

    {

    Console.WriteLine("Неверная сумма к уплате... ");

    Console.Write("\nВведите сумму к уплате: ");

    }

    double value = value_result;
    Console.Write("Введите количество товара: ");

    while (!uint.TryParse(Console.ReadLine(), out result))

    {

    Console.WriteLine("Неверное количество товара... ");

    Console.Write("\nВведите количество товара: ");

    }

    uint count = result;
    Console.Write("Введите дата оплаты счет-фактуры: ");

    while (!DateTime.TryParse(Console.ReadLine(), out date_result))

    {

    Console.WriteLine("Неверная дата оплаты счет-фактуры... ");

    Console.Write("\nВведите дату оплаты счет-фактуры: ");

    }

    DateTime datePayed = date_result;
    Console.Write("Введите фамилию плательщика: ");

    var who = Console.ReadLine();
    PayedCounts[i] = new PayedCount(datePayed, who, сountNumber, date, value, count);

    }
    Console.WriteLine();

    PrintPayedCount(PayedCounts);

    }

    private static void PrintCounts(Count[] Counts)

    {

    Console.WriteLine("Список счетов-фактур:");

    foreach (Count с in Counts)

    {

    Console.WriteLine("------------------------------------------");

    Console.WriteLine("{0}", с);

    }
    }
    private static void PrintPayedCount(PayedCount[] PayedCount)

    {

    Console.WriteLine("Список оплаченных счетов-фактур:");

    foreach (PayedCount pc in PayedCount)

    {

    Console.WriteLine("------------------------------------------");

    Console.WriteLine("{0}", pc);

    }

    Console.ReadKey();

    }
    }
    }

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

    Результат работы программы приведен на рис. 18.



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

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


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

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

    Windows Forms — интерфейс программирования приложений (API), отвечающий за графический интерфейс пользователя и являющийся частью Microsoft .NET Framework. Данный интерфейс упрощает доступ к элементам интерфейса Microsoft Windows за счет создания обёртки для существующего Win32 API в управляемом коде. Причём управляемый код — классы, реализующие API для Windows Forms, не зависят от языка разработки. То есть программист одинаково может использовать Windows Forms как при написании ПО на C#, С++, так и на VB.Net, J# и др.

    С одной стороны, Windows Forms рассматривается как замена более старой и сложной библиотеке MFC, изначально написанной на языке C++. С другой стороны, WF не предлагает парадигму, сравнимую с MVC. Для исправления этой ситуации и реализации данной функциональности в WF существуют сторонние библиотеки. Одной из наиболее используемых подобных библиотек является User Interface Process Application Block, выпущенная специальной группой Microsoft, занимающейся примерами и рекомендациями, для бесплатного скачивания. Эта библиотека также содержит исходный код и обучающие примеры для ускорения обучения.

    Внутри .NET Framework, Windows Forms реализуется в рамках пространства имён System.Windows.Forms.

    Задание

    Вычислить и вывести на экран значения функции из задания 2 «Разветвляющиеся алгоритмы» в интервале от xнач да xкон с шагом dx. Для задания всех необходимых параметров использовать элементы TextBox, для вывода значений функции — элемент DataGridView. Пример формы, содержащей данные элементы, приведён на рис. 19.


    Рисунок 19 — Пример формы для вывода значений функции.

    Решение

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

    namespace Lab8

    {

    public partial class Form1 : Form

    {

    public Form1()

    {

    InitializeComponent();

    }

    private void textBoxA_Click(object sender, EventArgs e)

    {

    (sender as TextBox).Clear();

    }

    private void buttonCalc_Click(object sender, EventArgs e)

    {

    double a = 0, b = 0 , c = 0, x1 = -1, x2 = 1, dx = 0.1, F = 0;

    try

    { x1 = Convert.ToDouble(textBoxStart.Text); }

    catch

    {

    MessageBox.Show("Неверное вещественное значение Xнач", "Ошибка ввода начальных данных", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    return;

    }

    try

    { x2 = Convert.ToDouble(textBoxEnd.Text); }

    catch

    {

    MessageBox.Show("Неверное вещественное значение Xкон", "Ошибка ввода начальных данных", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    return;

    }

    try

    { dx = Convert.ToDouble(textBoxStep.Text); }

    catch

    {

    MessageBox.Show("Неверное вещественное значение dx", "Ошибка ввода начальных данных", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    return;

    }

    try

    { a = Convert.ToDouble(textBoxA.Text); }

    catch

    {

    MessageBox.Show("Неверное вещественное значение A", "Ошибка ввода начальных данных", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    return;

    }

    try

    { b = Convert.ToDouble(textBoxB.Text); }

    catch

    {

    MessageBox.Show("Неверное вещественное значение B", "Ошибка ввода начальных данных", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    return;

    }

    try

    { c = Convert.ToDouble(textBoxC.Text); }

    catch

    {

    MessageBox.Show("Неверное вещественное значение C", "Ошибка ввода начальных данных", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

    return;

    }

    dataGridView1.Rows.Clear();

    for (double x = x1; x <= x2; x += dx)

    {

    F = 0;

    if ((x < 1) && ((b - c) != 0))

    F = a * x * x + b;

    else if ((x > 1) && ((b + x) == 0))

    F = (x - a) / x;

    else if (c != 0)

    F = x / c;

    dataGridView1.Rows.Add(x.ToString(), F.ToString());

    }

    }

    }

    }}

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

    Результат работы программы приведен на рис. 20.



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

    Заключение


    В данной курсовой работе был разработан набор программ с использованием MS Visual Studio 2010.

    Выполнение курсовой работы было разделено на два этапа:

    - теоретический анализ поставленных задач, включающий в себя постановку задачи, выделение основных классов, выделение основных действия и алгоритмов их реализации, определение математического аппарата, необходимого при решении задачи;

    - программная реализация задач средствами Visual C#, включающая в себя реализацию основных классов, реализацию основных действий, реализацию классов диалоговых форм.

    Итогом курсовой работы можно считать закрепление знаний в области создания алгоритмов, навыков программирования на языке C# и создании приложений для операционных системы компании Microsoft.

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


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

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

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

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


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