Субота, 23.11.2024
Творча лабораторія
Меню сайту
Реклама
Категорії каталогу
MS Visual C++ 2005 Express Edition [3]
Середовища програмування [8]
Особливості встановлення та використання різних середовищ програмування
MS Visual Basic 6 [1]
Microsoft Visual Basic
C# [8]
Програмування мовою C#
C++ [3]
Паскаль [5]
ЛОГО [1]
Олімпіадне програмування [0]
Python [1]
Головна » Статті » Програмування » C#

Моделювання звичайних дробів у C#

Нові статті

[19.02.2020] [C#]
Задача про розрізання квадрата (ООП, C#)
[09.02.2020] [Python]
Задача про розрізання квадрата (ООП, Python)
[06.02.2020] [Паскаль]
Задача про розрізання квадрата (ООП, Free Pascal)

 

ПилипчукО.П., вчитель інформатики Гаврилівської ЗОШ І-ІІІ ступенів Теофіпольського району Хмельницької області

Моделювання звичайних дробів засобами об'єктноорієнтованого програмування (C#)

Перехід до об'єктноорієнтованого програмування для тих, хто вихований на процедурному стилі, виявляється досить непростим. Наведений нижче матеріал допоможе зробити перші кроки у ООП.

Задача

Створити клас для забезпечення виконання операцій зі звичайними дробами.

Теоретичні відомості

Для реалізації проекту потрібно розуміти основи об’єктноорієнтованого підходу до розробки програм.

В подібній ситуації програміст розробляє новий клас даних, після чого може користуватися об’єктами цього класу поряд з об’єктами стандартних типів, на зразок:

int A;
Drib B,C,D;


і далі в програмі:

D=B+D;

тощо.

Вдало спроектовані класи значно прискорюють і спрощують розробку великих програм. Щоб при побудові виразів повноцінно користуватися даними нового типу (тобто, об'єктами нового класу), слід також описати правила виконання операцій над ними. Якщо це якась з операцій, які вже використовуються для даних інших типів, то такий опис називають перевантажуванням операції. Термін "перевантажування" тут означає, що раніше використовувана операція набуває додаткового нового змісту.

У наведеній програмі для класу Drib здійснене перевантажування операції додавання. Лише в такому разі у програмі можна користуватися операцією додавання даних цього типу.

Хід розробки

1. Створимо новий консольний проект і перед словами class Programрозмістимо опис класу Drib. Обмежимось для початку мінімальною функціональністю класу Drib:

  • для створення об'єктів розробимо конструктор, який за отриманим в якості аргумента рядком виду "34/56" формуватиме об'єкт класу Drib;
  • розробимо метод ToString(), при виклику якого буде формуватися рядкове подання дробу;
  • перевантажимо операцію додавання для того, щоб можна було записувати вирази і отримувати результат додавання дробів.
class Drib
{
початок опису класу
    int chis;
    int znam;
два цілочисельні поля: чисельник та знаменник
    public Drib(string S)
    {
початок опису конструктора
       string [] a=new string[2];
          
       a=S.Split('/');
а - масив з двох рядків для зберігання підрядків, виділених з рядка при виклику методу Split('/').Аргумент '/' - символ-розділювач підрядків у рядку.
       chis=Convert.ToInt16(a[0]);
       znam=Convert.ToInt16(a[1]);
    }
поле chis отримує значення чисельника записаного в рядку дробу, а поле znam - знаменника.
Кінець опису конструктора
    public new string ToString()
    {
       return chis.ToString() +"/"+znam.ToString();
    }
Реалізація методу ToString():повертає рядок, що складається з рядкових представлень чисельника та знаменника, між якими вставлений символ '/'
    public static Drib operator+ (Drib d1,Drib d2)
    {
Початок опису операторного методу для перевантажування операції додавання. Формальні параметри d1 та d2 в межах методу відіграють роль доданків.
       Drib d=new Drib ("1/1"); допоміжний дріб для обчислення суми
      d.chis=d1.chis*d2.znam+d1.znam*d2.chis; знаходимо чисельник за відомими полями доданків
      d.znam=d1.znam*d2.znam; знаходимо знаменник
       return d;
    }
повертаємо отриманий дріб - суму аргументів
} кінець опису класу Drib


2. Готово! Можна розпочати випробування

class Program
{
    public static void Main(string[] args)
    {
       DribF=new Drib ("1/3"); // змінна F ініціалізується значенням 1/3
       DribG=new Drib ("1/2"); // змінна G ініціалізується значенням 1/2

       F=F+G; // додавання дробів

       Console.Write(F.ToString()); // виведення дробу на екран
       Console.ReadKey(true);
    }
}

Завдання

  1. Доповнити клас Drib ще одним конструктором, який матиме два аргументи - цілі значення чисельника та знаменника.
  2. Вдосконалити код класу так, щоб можна було оперувати мішаними дробами (з цілою і дробовою частинами).
  3. Виконати перевантажування інших арифметичних операцій.
  4. Вдосконалити код класу Drib так, щоб при виконанні всіх операцій (зокрема при виклику конструкторів) виконувалося скорочення дробу.
    Примітка. Для цього можна створити доступну тільки в межах класу функцію і в потрібний момент викликати її.

Интернет реклама
Категорія: C# | Додав: teachlab (25.10.2008)
Переглядів: 5156 | Рейтинг: 5.0/1
Всього коментарів: 0
Додавати коментарі можуть тільки зареєстровані користувачі.
[ Реєстрація | Вхід ]
Форма входу
Пошук
Друзі сайту

Підтримка


Статистика
Copyright Пилипчук О.П. © 2024
div id=