Рефакторинг. Виключення дублювання коду. Розробка бібліотек класів та знайомство з багатопроектними рішеннями

Міністерство освіти та науки України

Житомирський державний технологічний університет

Кафедра ПЗОТ

Група ПІ-40

Лабораторна робота №3

Рефакторинг. Виключення дублювання коду.

Розробка бібліотек класів та знайомство з багатопроектними рішеннями

Житомир-2011г.

ТЕХНІЧНЕ ЗАВДАННЯ

Розробити дві програми для розв’язання квадратних рівнянь (, де ) з різними інтерфейсами користувача (текстовим та графічним).

1. Виключити дублювання коду програм, шляхом оформлення алгоритму розв’язання квадратного рівняння у вигляді класу та винесення його в окрему бібліотеку.

2. Клас розв’язання квадратного рівняння спроектувати таким чином, щоб його можна було використовувати у програмах з будь-яким інтерфейсом користувача.

Опис розробленої програми

Виконавши дану лабораторну роботу, я уникнув дублювання коду програми, шляхом опису алгоритму розв’язання квадратного рівняння у класі Class1.cs та винесенням його у окрему бібліотеку mylab. Була створена можливість використовувати клас розв’язання квадратного рівняння у програмах з будь-яким інтерфейсом користувача, а саме: “консольний” та “форма”.

Квадратний рівняння текстовий графічний інтерфейс

Код програми

//Клас, винесений в окрему бібліотеку mylab;

Using System;

Using System. Collections. Generic;

Using System. Linq;

Using System. Text;

Namespace mylab

{

Public class SqrEquation

{

Private double a;

Private double b;

Private double c;

Private double D;

Public double x1;

Public double x2;

Public void MathDiscriminant()

{

D = b * b – 4 * a * c;

}

Public void MathX1()

{

X1 = (-b + Math. Sqrt(D)) / (2 * a);

}

Public void MathX2()

{

X2 = (-b – Math. Sqrt(D)) / (2 * a); ;

}

Public SqrEquation(double a, double b, double c)

{

This. a = a;

This. b = b;

This. c = c;

If (a == 0)

Throw new Exception(“Це не квадратне рівняння!”);

This. MathDiscriminant();

This. MathX1();

This. MathX2();

}

}

}

Інтерфейс форми

Using System;

Using System. Windows. Forms;

Using mylab;

Namespace lab3

{

Public partial class Form1 : Form

{

Public Form1()

{

InitializeComponent();

}

Private void Form1_Load(object sender, EventArgs e)

{

}

Private void button1_Click(object sender, EventArgs e)

{

SqrEquation equ = new SqrEquation(Convert. ToDouble(tbA. Text), Convert. ToDouble(tbB. Text),

Convert. ToDouble(tbC. Text));

TbX1.Text = Convert. ToString(equ. x1);

TbX2.Text = Convert. ToString(equ. x2);

}

Private void textBox5_TextChanged(object sender, EventArgs e)

{

}

}

}

Консольний інтерфейс користувача

Using System;

Using mylab;

Namespace lab2

{

Class Program

{

Static void Main()

{

SqrEquation equ = new SqrEquation

(Convert. Int32(System. Console. ReadLine()),

Convert. ToInt32(System. Console. ReadLine()),

Convert. ToInt32(System. Console. ReadLine()));

Console. WriteLine(“x1={0}; x2={1}”, equ. x1, equ. x2);

System. Console. Read();

}

}

}

Висновок

В ході лабораторної роботи мною було розроблено 2 програми для розв’язання квадратних рівнянь з текстовим та графічним інтерфейсами користувача без дублювання їх коду.


Рефакторинг. Виключення дублювання коду. Розробка бібліотек класів та знайомство з багатопроектними рішеннями