ТооП / ТООП(отчёт3)
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
НАБЕРЕЖНОЧЕЛНИНСКИЙ ИНСТИТУТ (ФИЛИАЛ)
КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ
ЛАБОРАТОРНАЯ РАБОТА №3
«Наследование, скрытие полей класса и виртуальные методы»
По дисциплине
«Объектно-ориентированное программирование»
Выполнил:
Студент группы 2161121
Золотых С.В.
Проверил:
Илюхин А.Н.
Набережные Челны
2017
-
Цель работы
Получение навыков в разработке программ с использованием классов, образованных от других классов.
-
Постановка задачи
Создать класс-наследник от класса <имя класса> (класс и его поля задаются в соответствии с выбранным вариантом в лабораторной работе 1). В классе-наследнике перекрыть некоторые поля класса-родителя и добавить дополнительное поле, связанное со свойствами предмета задания по варианту. При перекрывании полей использовать виртуальные методы. Создать объекты обоих полученных класса и занести в них данные. Организовать обращения родительских методов к замещающим их методам наследника.
№ варианта |
Имя класса |
Поле 1 |
Поле 2 |
Поле 3 |
3 |
Процессор |
Фирма производитель |
Количество ядер |
Тактовая частота |
-
Текст программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ТООП_3_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string Firm = textBox1.Text;
double k = Convert.ToDouble(textBox2.Text);
double t = Convert.ToDouble(textBox3.Text);
Processor A = new Processor(Firm,k);
Processor_2 B = new Processor_2(Firm, k, t);
dataGridView2.Rows.Add(A.Firm, A.k);
dataGridView1.Rows.Add(B.Firm, B.k, B.t + " GHz");//добавление строки в таблицу
label4.Text = A.Get();
label5.Text = B.Get();
textBox1.Clear();//очищаем текстбокс
textBox2.Clear();
textBox3.Clear();
}
class Processor
{
public string Firm = "null";
public double k = 0;
public Processor(string Firm, double k) { this.Firm = Firm; this.k = k; } //перегруженный конструктор
public virtual string Get()
{
string d = "Класс использует два поля";
return d;
}
}
class Processor_2 : Processor
{
private new string Firm;
public double t = 0;//объявленние новой переменной
public Processor_2(string Firm, double k, double t): base(Firm, k)//перегруженный конструктор
{
this.Firm = Firm;
this.k = k;
this.t = t;
}
public string Set//придаём переменной String "открытое" значение
{
get {return Firm; }
set {}
}
public override string Get()
{
string d = "Класс использует три поля";
return d;
}
}
private void button2_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();//очищение таблицы
dataGridView2.Rows.Clear();
}
private void button3_Click(object sender, EventArgs e)
{
Application.Exit();//закрытие формы
}
}
-
Результат выполнения программы
-
Блок-схема
-
Вывод
Решением поставленной задачи являлся класс «Процессор». На основе этого был создан класс-родитель Processor и наследуемый от него класс Processor_2. В классе-родителе были объявлены строковое поле Firm и вещественное поле k, отвечающие соответственно за название Фирмы и количество ядер. Также был объявлен перегруженный конструктор и виртуальный метод Get, который показывает количество используемых полей в классе. В классе-наследнике было перекрыто поле Firm и добавлено вещественное поле t, отвечающее за тактовую частоту. Был объявлен перегруженный конструктор уже с тремя полями. Виртуальный метод Get был переопределён, но также показывал количество используемых полей в классе. Чтобы переменная Firm являлась доступной для использования, был вызван сеттер.
Эта лабораторная работа позволила на практике применить знания о классах, их наследовании и виртуальных методах.