
- •Навчальної практики
- •Задача 2
- •Перевизначення методу Len() з урахуванням способу завдання вектора,
- •Код програми
- •Задача 7
- •Код програми
- •Результат роботи програми:
- •Задача 8
- •Код програми
- •Результат роботи програми:
- •Задача 10
- •Код програми
- •Результат роботи програми:
- •Задача 14
- •Код програми
- •Результат роботи програми:
- •Задача 15
- •Код програми
- •Результат роботи програми:
- •Задача 17
- •Код програми
- •Результат роботи програми:
Вищій навчальний заклад "Університет економіки та права "КРОК"
Коледж економіки, права та інформаційних технологій
Циклова комісія з комп’ютерних наук
ЗВІТ
з І-го модулю
Навчальної практики
«Об’єктно-орієнтований аналіз та програмування»
Студента 3 курсу
групи РПЗ11-к
Коваля Руслана Вікторовича
Київ-2014
Задача 2
Мовою C# розробити приклад побудови ієрархії класів. У нього повинні входити:
Базовий клас «Вектор». Містить тільки такі елементи:
два дійсних числа A1 і A2,
абстрактну функцію Len(), що повертає довжину вектора як дійсне число.
Похідний клас «Двовимірний вектор у Декартових координатах». У ньому поля A1 і A2 зберігають значення координат X і Y, у метрах. На додаток до базового класу, «Вектор» містить тільки такі елементи:
власний конструктор із двома дійсними аргументами – Декартовими координатами вектора ( у метрах).
перевизначення методу Len() з урахуванням способу завдання вектора,
оператор неявного перетворення вектора з Декартових координат у полярні.
Похідний клас «Двовимірний вектор у полярних координатах». У ньому поля A1 і A2 зберігають значення довжини вектора в метрах і його нахил до осі X у радіанах. На додаток до базового класу, «Вектор» містить тільки такі елементи:
Перевизначення методу Len() з урахуванням способу завдання вектора,
власний конструктор із двома дійсними аргументами – довжиною вектора в метрах і кутом у радіанах.
Скласти програму, що перевіряє виконання вказаних функцій шляхом створення векторів декількох різних типів, їхнього взаємного присвоювання, обчислення сумарної довжини.
Код програми
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 Форма введення даних