Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pechat_33__33-4.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
381.05 Кб
Скачать

Вищій навчальний заклад "Університет економіки та права "КРОК"

Коледж економіки, права та інформаційних технологій

Циклова комісія з комп’ютерних наук

ЗВІТ

з І-го модулю

Навчальної практики

«Об’єктно-орієнтований аналіз та програмування»

Студента 3 курсу

групи РПЗ11-к

Коваля Руслана Вікторовича

Київ-2014

Задача 2

Мовою C# розробити приклад побудови ієрархії класів. У нього повинні входити:

    1. Базовий клас «Вектор». Містить тільки такі елементи:

      1. два дійсних числа A1 і A2,

      2. абстрактну функцію Len(), що повертає довжину вектора як дійсне число.

    2. Похідний клас «Двовимірний вектор у Декартових координатах». У ньому поля A1 і A2 зберігають значення координат X і Y, у метрах. На додаток до базового класу, «Вектор» містить тільки такі елементи:

      1. власний конструктор із двома дійсними аргументами – Декартовими координатами вектора ( у метрах).

      2. перевизначення методу Len() з урахуванням способу завдання вектора,

      3. оператор неявного перетворення вектора з Декартових координат у полярні.

    3. Похідний клас «Двовимірний вектор у полярних координатах». У ньому поля A1 і A2 зберігають значення довжини вектора в метрах і його нахил до осі X у радіанах. На додаток до базового класу, «Вектор» містить тільки такі елементи:

      1. Перевизначення методу Len() з урахуванням способу завдання вектора,

      2. власний конструктор із двома дійсними аргументами – довжиною вектора в метрах і кутом у радіанах.

Скласти програму, що перевіряє виконання вказаних функцій шляхом створення векторів декількох різних типів, їхнього взаємного присвоювання, обчислення сумарної довжини.

Код програми

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace _2

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

try

{

var x = double.Parse(textBox1.Text);

var y = double.Parse(textBox2.Text);

var v1 = new Vector2DimDec(x, y);

var v1Len = v1.Len();

label9.Text = String.Format("{0:0.00}", v1Len);

var v1AsPolar = (Vector2DimPolar)v1;

var v1AsPolarLen = v1AsPolar.Len();

textBox8.Text = String.Format("{0:0.0000}", v1AsPolar.A1);

textBox5.Text = String.Format("{0:0.0000}", v1AsPolar.A2);

label19.Text = String.Format("{0:0.00}", v1AsPolarLen);

var phi = double.Parse(textBox3.Text);

var r = double.Parse(textBox4.Text);

var v2 = new Vector2DimPolar(r, phi);

var v2Len = v2.Len();

label8.Text = String.Format("{0:0.00}", v2Len);

var v2AsDec = (Vector2DimDec)v2;

var v2AsDecLen = v2AsDec.Len();

textBox7.Text = String.Format("{0:0.0000}", v2AsDec.A1);

textBox6.Text = String.Format("{0:0.0000}", v2AsDec.A2);

label17.Text = String.Format("{0:0.00}", v2AsDecLen);

var sumX = v1.A1 + v2AsDec.A1;

var sumY = v1.A2 + v2AsDec.A2;

var sumV = new Vector2DimDec(sumX, sumY);

var sumVLen = sumV.Len();

label21.Text = String.Format("{0:0.00}", sumVLen);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

private void Form1_Load(object sender, EventArgs e)

{

}

}

public abstract class Vector

{

public double A1 { get; set; }

public double A2 { get; set; }

public abstract double Len();

}

public class Vector2DimDec : Vector

{

public Vector2DimDec(double x, double y)

{

A1 = x;

A2 = y;

}

public override double Len()

{

return Math.Sqrt(Math.Pow(A1, 2) + Math.Pow(A2, 2));

}

public static implicit operator Vector2DimPolar(Vector2DimDec vDec)

{

var r = Math.Sqrt(Math.Pow(vDec.A1, 2) + Math.Pow(vDec.A2, 2));

var tgPhi = vDec.A2 / vDec.A1;

var phi = 0.0;

if (vDec.A1 > 0 && vDec.A2 >= 0) phi = Math.Atan(tgPhi);

else if (vDec.A1 > 0 && vDec.A2 < 0) phi = Math.Atan(tgPhi) + 2 * Math.PI;

else if (vDec.A1 < 0) phi = Math.Atan(tgPhi) + Math.PI;

else if (Math.Abs(vDec.A1) < 0.00001 && vDec.A2 > 0) phi = Math.PI / 2;

else if (Math.Abs(vDec.A1) < 0.00001 && vDec.A2 < 0) phi = 3 * Math.PI / 2;

return new Vector2DimPolar(r, phi);

}

}

public class Vector2DimPolar : Vector

{

public Vector2DimPolar(double r, double phi)

{

A1 = r;

A2 = phi;

}

public override double Len()

{

var x = A1 * Math.Cos(A2);

var y = A1 * Math.Sin(A2);

return Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2));

}

public static implicit operator Vector2DimDec(Vector2DimPolar vPolar)

{

var x = vPolar.A1 * Math.Cos(vPolar.A2);

var y = vPolar.A1 * Math.Sin(vPolar.A2);

return new Vector2DimDec(x, y);

}

}

}

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

Рис.1 Форма вводу даних

Рис.2 Форма введення даних

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]