Сообщения с тегом ‘param’
Наследование и универсальность
Написано admin в 20 Июнь 2008 – 21:48 -Наследование и универсальность
Необходимость в универсализации возникает с первых шагов программирования. Одна из первых процедур, появляющихся при обучении программированию — это процедура свопинга:обмен значениями двух переменных одного типа. Выглядит она примерно так:
public void Swap(ref T x1, ref T x2)
{
T temp;
temp = x1; x1 = x2; x2 = temp;
}
Если тип T — это вполне определенный тип, например int, string или Person, то никаких проблем не существует, все совершенно прозрачно. Но как быть, если возникает необходимость обмена данными разного типа? Неужели нужно писать копии этой процедуры для каждого типа? Проблема легко решается в языках, где нет контроля типов — там достаточно иметь единственный экземпляр такой процедуры, прекрасно работающий, но лишь до тех пор, пока передаются аргументы одного типа. Когда же процедуре будут переданы фактические аргументы разного типа, то немедленно возникнет ошибка периода выполнения, и это слишком дорогая плата за универсальность.
В типизированных языках, не обладающих механизмом универсализации, выхода практически нет — приходится писать многочисленные копии Swap. Read more »
Tags: Class, Console, GenStack, item, LIFO, name, param, Person, PrintPerson, summary, WriteLine
Находится в Учебник | No Comments »
Интерфейсы
Написано admin в 20 Июнь 2008 – 21:33 -Интерфейсы
Слово «интерфейс» многозначное и в разных контекстах оно имеет различный смысл. В данной лекции речь идет о понятии интерфейса, стоящем за ключевым словом interface. В таком понимании интерфейс — это частный случай класса. Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. От абстрактного класса интерфейс отличается некоторыми деталями в синтаксисе и поведении. Синтаксическое отличие состоит в том, что методы интерфейса объявляются без указания модификатора доступа. Отличие в поведении заключается в более жестких требованиях к потомкам. Класс, наследующий интерфейс, обязан полностью реализовать все методы интерфейса. В этом — отличие от класса, наследующего абстрактный класс, где потомок может реализовать лишь некоторые методы родительского абстрактного класса, оставаясь абстрактным классом. Но, конечно, не ради этих отличий были введены интерфейсы в язык C#. У них значительно более важная роль. Read more »
Tags: ClainP, ClainT, ClainTwo, FromInterface, interface, IPropsOne, MyProp, name, param, summary, TestClainIProps, TestCliTwoInterfaces, val, void, WriteLine
Находится в Учебник | No Comments »
Проектирование класса Rational
Написано admin в 20 Июнь 2008 – 21:28 -Проектирование класса Rational
В заключение этой лекции займемся проектированием класса Rational, описывающего известный в математике тип данных — рациональные числа. По ходу проектирования будут вводиться новые детали, связанные с описанием класса. Начнем проектирование, как обычно, с задания тега <summary>, описывающего назначение класса, его свойства и поведение. Вот этот текст: Read more »
Tags: Abs, Console, Minus, Mult, operator, param, Plus, PrintRational, return, string, summary, TestCreateRational, Testing, TestOperRational, TestPlusRational
Находится в Учебник | No Comments »
