Автор работы: Пользователь скрыл имя, 12 Декабря 2014 в 15:28, доклад
В языке С# все программы и данные представляют собой объекты, а все обрабатывающие их алгоритмы являются методами. Оба этих понятия имеют самое непосредственное отношение к ООП.
Владение методикой ООП абсолютно необходимо для успешного программирования на языке С#. Фактически, не разобравшись в этом, вы не сможете создавать на С# хоть сколько-нибудь сложные программы и системы.
width = w;
height = h;
}
}
Поля класса xPos и yPos хранят координаты левого нижнего угла прямоугольника (в прямоугольной системе координат), а поля width и height — соответственно ширину и высоту прямоугольника. Таким образом, содержимое полей класса Rectangle однозначно определяет расположение прямоугольника на плоскости и его размеры.
Конструктор класса Rectangle записывает в поля класса нулевые значения, в
результате чего все новые прямоугольники создаются в центре системы координат с размерами, равными нулю. В классе Rectangle мы также определили методы SetPosition и SetSize, позволяющие установить соответственно расположение прямоугольника на плоскости и его размеры.
Работать с этим классом очень просто — нужно сначала создать прямоугольник, а затем установить его расположение и размеры:
Rectangle r;
г = new ColorRectangle();
г.SetPosition(0, 10);
r.SetSize(20, 30);
Производный класс
Итак, мы создали базовый класс, описывающий прямоугольники. А теперь представьте себе, что вам понадобились не простые прямоугольники, а раскрашенные в разные цвета. Вы, конечно, можете изменить класс Rectangle, добавив в него поля и методы для работы с цветом. Однако более красивое решение заключается в создании на базе класса Rectangle нового класса ColorRectangle, дополненного средствами представления цвета:
class ColorRectangle : Rectangle
{
byte colorR;
byte colorG;
byte colorB;
public void SetColor(byte r, byte g, byte b)
{
colorR = r;
colorG = g;
colorB = b;
} }
Обратите внимание, что при объявлении класса ColorRectangle после двоеточия мы указали имя базового класса Rectangle. В результате класс ColorRectangle наследует все поля и методы своего базового класса, а также
добавляет к ним еще 3 поля: colorR, colorG, colorB — и один метод — SetColor.
Новые поля предназначены для хранения трех основных компонентов цвета (красный, голубой и зеленый), а метод SetColor позволяет установить значения этих полей, раскрасив наш прямоугольник. Таким образом, мы очень легко добавили новую функциональность — теперь наши прямоугольники стали цветными. При добавлении новой сущности (цвета) нам были несущественны детали реализации базового класса Rectangle, такие, как способ размещения прямоугольника на плоскости и способ установки его размеров. Более того, создавая свой собственный класс на базе готового класса, программист может даже и не подозревать о существовании в этом классе каких-то еще полей и методов. Например, в базовом классе Rectangle могло существовать поле для хранения запаха прямоугольника, а также метод для установки этого запаха. Пока мы имеем дело с простыми классами и простыми программами, эффект от использования наследования может показаться небольшим. Однако в реальности наследование открывает перед программистом возможность создания своих классов на базе огромной библиотеки классов С#. Взяв за основу один из десятков тысяч классов библиотеки, вы можете создать на его базе собственный класс, наделив его необходимыми вам свойствами. При этом вам не потребуется реализовывать полную функциональность, так как она уже реализована в базовом классе. Достаточно только добавить свои поля и методы (а также, возможно, переопределить существующие поля и методы базового класса, но об этом
мы поговорим позже).
Класс ColorRectangle, созданный на базе класса Rectangle, называется про-
производным или дочерним (derived, child). В свою очередь, класс Rectangle играет роль базового (base), или родительского (parent), класса.
Информация о работе Объектно-ориентированное программирование