Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТооП / ТООП(отчёт3)

.docx
Скачиваний:
12
Добавлен:
31.05.2018
Размер:
159.68 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

НАБЕРЕЖНОЧЕЛНИНСКИЙ ИНСТИТУТ (ФИЛИАЛ)

КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ

ЛАБОРАТОРНАЯ РАБОТА №3

«Наследование, скрытие полей класса и виртуальные методы»

По дисциплине

«Объектно-ориентированное программирование»

Выполнил:

Студент группы 2161121

Золотых С.В.

Проверил:

Илюхин А.Н.

Набережные Челны

2017

  1. Цель работы

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

  1. Постановка задачи

Создать класс-наследник от класса <имя класса> (класс и его поля задаются в соответствии с выбранным вариантом в лабораторной работе 1). В классе-наследнике перекрыть некоторые поля класса-родителя и добавить дополнительное поле, связанное со свойствами предмета задания по варианту. При перекрывании полей использовать виртуальные методы. Создать объекты обоих полученных класса и занести в них данные. Организовать обращения родительских методов к замещающим их методам наследника.

№ варианта

Имя класса

Поле 1

Поле 2

Поле 3

3

Процессор

Фирма производитель

Количество ядер

Тактовая частота

  1. Текст программы

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();//закрытие формы

}

}

  1. Результат выполнения программы

  1. Блок-схема

  2. Вывод

Решением поставленной задачи являлся класс «Процессор». На основе этого был создан класс-родитель Processor и наследуемый от него класс Processor_2. В классе-родителе были объявлены строковое поле Firm и вещественное поле k, отвечающие соответственно за название Фирмы и количество ядер. Также был объявлен перегруженный конструктор и виртуальный метод Get, который показывает количество используемых полей в классе. В классе-наследнике было перекрыто поле Firm и добавлено вещественное поле t, отвечающее за тактовую частоту. Был объявлен перегруженный конструктор уже с тремя полями. Виртуальный метод Get был переопределён, но также показывал количество используемых полей в классе. Чтобы переменная Firm являлась доступной для использования, был вызван сеттер.

Эта лабораторная работа позволила на практике применить знания о классах, их наследовании и виртуальных методах.

Соседние файлы в папке ТооП