Учебные материалы по математике | Перегрузка методов — лекция по ооп | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Перегрузка методов — лекция по ооп


Лекция ООП

18,05,2015

Перегрузка методов.

Позволяет использовать одно имя для разных функций.

Примеры:

int max ( int x, int y)

{ if (x>y) return x;

return y; }

float max (float x, float y)

{if (x>y) return x; return y; }

Языки, реализующие перегрузку методов (функции, используют в качестве методов (функций) расширенные имена, которые как правило содержат информацию о типах формальных параметров.

Пример:

int x = 8; int y = 6;

f float z= 3 , u = -3;

int i;

float p;

i = max (x, y);

p = max (z, u);

p = max (x, y);

Рекомендуется при перегрузке функций под одним именем описывать функции, выполняющие сходные действия. Функции, имеющие одно и то же имя, должны отличаться или типом параметров, или их числом, или и тем и другим вместе.

Перегрузка оператора.

В С#, как и во многих языках, имеется готовый набор операторов, используемых для выполнения базовых операций над встроенными типами. Действия этих операторов можно определить и для объектов пользовательских типов. Такая возможность называется перегрузкой операторов. На перегрузку операторов накладываются некоторые ограничения:

1.  Нельзя менять местность оператора.

2.  Операторы сравнения (== и!=, < и >, <= и >=) перегружаются парами. [] – не перегружаются, но позволяют создать индексаторы. () – не может быть перегружен.

+= и -+ — не могут перегружаться, но они получаются автоматически при перегрузке соответствующей бинарной операции.

В С# для перегрузке операторов используется специальное слово operator, описывается специальный общедоступный статический метод, в заголовке которого есть это слово.

Пример:

class Money

{ private int rub;

private int kop;

public Money () {rub=0; kop=0; }

public Money (int z, int k) {rub=k%100; kop=r+k/100; }

public override string ToString () // метод ToString является виртуальным

{return rub. ToString() + “руб” + kop. ToString() + “коп”;} методом класс object (базовый для

всех типов в с#)

public static Money operator+(Money m1, Money m2)

{Money m3 = new Money ();

m3.kop = (m1.kop + m2.kop)%100;

m3.rub = m1.rub + m2.rub + (m1.kop + m2.kop)/100;

return m3;}

Money m1 = new Money (8,90);

Money m2 = new Money (6,70);

Money m3 = m1+m2;

textBox1.Text = m3.ToString(); } // ответ: 15 руб 60 коп

Поскольку тип возвращаемого значения operator + совпадает с типом самого класса, то мы можем использовать и записи следующего вида:

m3 = m1 + m1+ m2 + m3

Еще одно ограничение на перегрузку операторов:

В методе, который перегружает оператор, хотя бы один из параметров должен иметь тот ти, что и класс, в котором этот метод описан. Данное ограничение не позволяет перегружать операторы для объектов классов, с которыми мы не работаем.

Рассмотрим пример перегрузки одноместного оператора ++:

Дополним класс Money методом, перегружающим оператор ++

(пишется в описании класса)

public static Money operator++ (Money m)

{ m. rub ++; return m; }

После перегрузки оператора ++ мы можем написать : m3 = m1 ++ + m2;

Сначала изменится поле рубли объекта m1 (увеличено на единицу), затем сложение объектов m1 и m2 и ответ записан в объект m3.

Создание метода, принимающего разное число параметров.

Для того чтобы создать такой метод, нужно использовать служебное слово params.

Пример создания такого метода:

Рассмотри метод, который суммирует входные параметры.

int sum (params int [] m)

{int s=0;

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

S+= m[i];

return s;

}

Только один параметр может иметь метку params. Этот параметр должен быть записан в самом конце описания параметров.

x = sum(7, 8, 9, 10, -1, 10);

y = sum(1, x, 10);

int [] mas = int [6];

x = sum (mas);

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020