Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка - Основи Програмування C_.doc
Скачиваний:
46
Добавлен:
18.12.2018
Размер:
1.44 Mб
Скачать

3. Методи, що повертають об’єкти.

Методи класів мови С# можуть повертати результати практично довільних типів. Зокрема результатом методу може бути і екземпляр класу, і масив (вірніше, посилання на відповідні об’єкти), що неможливо для функцій багатьох інших мов програмування. Для наступного прикладу вдосконалимо клас Polar_Point з попереднього розділу, додавши у нього конструктор з двома параметрами для ініціалізації членів класу. Отже, створимо окремий файл проекту Polar_Point.cs, що містить визначення класу :

using System;

namespace Object_result

{

class Polar_Point // клас - полярна точка

{

//дані-члени класу - полярні радіус та кут

public double r, phi;

public Polar_Point(double r_, double phi_) // конструктор

{

r = r_;

phi = phi_;

}

public double xCoord() // абсциса полярної точки

{ return r * Math.Cos(phi); }

public double yCoord() // ордината полярної точки

{ return r * Math.Sin(phi); }

}

}

У файл Program.cs помістимо наступний код, в якому визначається метод Symetry. Він створює точку, симетричну відносно полярної осі для полярної точки p, заданої як його параметр. Цю точку метод Symetry повертає як свій результат. Далі у функції Main для точки з полярними координатами 10 та 2*PI/3 створюється симетрична точка p_new як результат методу Symetry.

using System;

namespace Object_result

{

class Program

{ // Цей метод має результатом клас - він повертає об'єкт

static Polar_Point Symetry(Polar_Point p)

{

Polar_Point temp = new Polar_Point(p.r, -p.phi);

return temp;

}

static void Main()

{

Polar_Point p = new Polar_Point(10, Math.PI*2/3);

Console.WriteLine("Координати старої точки: {0} {1} ",

p.xCoord(), p.yCoord());

// Об'єкт p_new створюється та повертається методом Symetry

Polar_Point p_new = Symetry(p);

Console.WriteLine("Координати нової точки: {0} {1} ",

p_new.xCoord(), p_new.yCoord());

}

}

}

На екрані побачимо наступний результат

Координати старої точки:

-5 8,66025403784439

Координати нової точки:

-5 -8,66025403784439

І на завершення розглянемо приклад методу, результатом якого є посилання на масив. Цей метод для довільного цілого параметра повертає масив його десяткових цифр.

using System;

namespace Array_result

{

class Program

{

static int[] ArrayDigits(long n)

{

long temp = n;

byte count = 0;

while (temp != 0) // Визначаємо кількість цифр у числі

{

temp /= 10;

count++;

}

// Створюємо масив для цифр числа

int[] digits = new int[count];

if (n < 0) n = -n;// Для відємного числа змінюємо знак

for (int i = 0; i < count; i++)

{ // Визначаємо масив цифр числа

digits[count - 1 - i] = (int) (n % 10);

n /= 10;

}

return digits; // Повертаємо масив цифр числа

}

static void Main()

{

Console.WriteLine("Введiть цiле число");

long n = long.Parse(Console.ReadLine());

// Масив dig створюється методом ArrayDigits

int[] dig = ArrayDigits(n);

Console.WriteLine("Цифри вашого числа:");

if (dig.Length == 0) Console.WriteLine(0);

else

for (int i = 0; i < dig.Length; i++)

Console.Write("{0} ", dig[i]);

Console.WriteLine();

}

}

}