Лабораторная работа по "Объектно-ориентированному программированию"
Автор: Сергей Докучаев • Ноябрь 6, 2025 • Лабораторная работа • 3,537 Слов (15 Страниц) • 42 Просмотры
ВОРОНЕЖСКИЙ ИНСТИТУТ ВЫСОКИХ ТЕХНОЛОГИЙ – АННО ВО
ЛАБОРАТОРНАЯ РАБОТА №1
по дисциплине «ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ»
Студента группы
_________
(подпись)
Проверил:
_________ (подпись)
Дата «__»_______2025г.
ВОРОНЕЖ 2025
Цель работы:
Изучить принципы написания программ с использованием наследования классов на языке C# с графическим интерфейсом Windows Forms.
Выполнение работы:
1. Создание проекта в Microsoft Visual Studio
- Запустим Visual Studio.
- Создадим новый проект:
- Выберем «Создать новый проект».
- Найдем шаблон «Приложение Windows Forms (.NET Framework) для C#».
- Назовем проект, "LabWork_ShipHierarchy" и нажмем «Создать».
[pic 1]
2. Создание иерархии классов
2.1. Создание базового класса и производных
Добавление нового класса:
- В обозревателе решений (Solution Explorer) щёлкнем правой кнопкой мыши по проекту.
- Выберем «Добавить» → «Новый элемент…».
- Выберем «Класс» и назовем её "Ship.cs".
Реализация базового класса "Ship":
using System;
namespace LabWork_ShipHierarchy
{
// Базовый класс "Корабль"
public class Ship
{
// Свойства для имени и года постройки
public string Name { get; set; }
public int YearBuilt { get; set; }
// Конструктор по умолчанию
public Ship()
{
Name = "Unknown";
YearBuilt = 0;
}
// Конструктор с параметрами
public Ship(string name, int yearBuilt)
{
Name = name;
YearBuilt = yearBuilt;
}
// Методы, описывающие поведение объекта
public virtual void Sail()
{
Console.WriteLine($"{Name} плывет.");
}
public virtual void DisplayInfo()
{
Console.WriteLine($"Корабль: {Name}, Год постройки: {YearBuilt}");
}
public virtual string GetShipType()
{
return "Корабль";
}
// Переопределение Equals: объекты считаются равными, если равны их поля
public override bool Equals(object obj)
{
if (obj == null || this.GetType() != obj.GetType())
return false;
Ship other = obj as Ship;
return this.Name == other.Name && this.YearBuilt == other.YearBuilt;
}
// Переопределение GetHashCode
public override int GetHashCode()
{
return (Name, YearBuilt).GetHashCode();
}
// Переопределение ToString для удобного вывода информации
public override string ToString()
{
return $"Тип: {GetShipType()}, Название: {Name}, Год: {YearBuilt}";
}
}
}
[pic 2]
2.2. Производные классы
Класс Steamboat (Пароход)
using System;
namespace LabWork_ShipHierarchy
{
// Производный класс "Пароход"
public class Steamboat : Ship
{
// Дополнительное свойство – мощность двигателя
public double EnginePower { get; set; }
// Конструктор по умолчанию
public Steamboat() : base()
{
EnginePower = 0.0;
}
// Конструктор с параметрами
public Steamboat(string name, int yearBuilt, double enginePower) : base(name, yearBuilt)
{
EnginePower = enginePower;
...