c#2_oop
.pdf∙Хотя бы один параметр, передаваемый в операцию, должен иметь тип класса, для которого она определяется. Операция может возвращать величину любого типа.
∙Чаще всего в классе определяют операции сравнения на равенство и неравенство для того, чтобы обеспечить сравнение объектов, а не их ссылок.
∙Операции == и !=, > и <, >= и <= определяются только парами и обычно возвращают логическое значение.
Разобрать примеры переопределения бинарных операций [1-3].
Операции преобразования типа
Наиболее актуальны операции явного и неявного преобразования пользовательских типов
данных: |
implicit operator тип ( параметр ) |
// неявное преобразование |
|
explicit operator тип ( параметр ) |
// явное преобразование |
Выполняют преобразование из типа параметра в тип, указанный в заголовке операции. Одним из этих типов должен быть класс, для которого определяется операция.
Особенности переопределения операций преобразования пользовательских типов данных:
∙Неявное преобразование выполняется автоматически:
1)при присваивании объекта переменной целевого типа; 2) при использовании объекта в выражении, содержащем переменные целевого типа; 3) при передаче объекта в метод на место параметра целевого типа; 4) при явном приведении типа.
∙Явное преобразование выполняется при явном указании операции приведения.
public static implicit operator int( Dog d )
{ |
return d.ves; } |
|
public static explicit operator Dog( int v ) |
||
{ |
return new Dog( ves, rost); |
} |
|
Dog pit = new Dog ( 20, 15); |
|
|
int v = pit.ves; |
// неявное преобразование |
|
int r = (Dog) pit.rost; |
// явное преобразование |
Разобрать примеры переопределения операций преобразования типов [1-3].
Технология разработки объектно-ориентированных программ
∙В предметной области выделяются сущности, которые можно использовать как классы.
∙Определяются действия над классами, которые впоследствии станут методами класса. Методы можно разбить на группы:
-связанные с конструированием объектов (экземпляров классов);
-реализующие связи между классами, которые существуют в предметной области;
-реализующие взаимодействие с пользователем.
∙Определяются методы, которые будут абстрактными, виртуальными, статическими.
∙Определяются взаимозависимости между классами. Строится иерархия классов. Процесс создания иерархии - итерационный. Например, можно в двух классах выделить общую часть в базовый класс и сделать их производными.
Проработать теоретический материал [1-3]. Выделить наиболее важные этапы разработки объектно-ориентированных программ.
Достоинства ООП
∙использование при программировании понятий, близких к предметной области;
∙возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы;
∙возможность многократного использования кода благодаря наследованию;
∙упрощение модификации программ;
∙возможность создания и использования библиотек объектов.
Недостатки ООП
∙идеи ООП не просты для понимания и практического использования
∙для эффективного использования существующих объектно-ориентированных систем и библиотек требуется большой объем первоначальных знаний
∙неграмотное применение ООП может привести к значительному ухудшению характеристик разрабатываемой программы
∙снижение быстродействия программы, связанное с использованием виртуальных методов
Повторить изученный материал [1-3]. Выделить наиболее важные понятия. Какие теоретические положения были наиболее трудными для изучения? Какие практические приемы и методы оказались наиболее трудными?
Перечень рекомендуемых источников
Литература
Основная
1.Павловская Т. А. C#. Программирование на языке высокого уровня. СПб.: Питер, 2013. - 432 с.
2.Подбельский В.В., Язык С#. Базовый курс. – М.: Финансы и статистика. 2011. - 384 с.
3.Фленов М., Библия C#. – СПб.: БХВ-Петербург. 2011. - 560 с
Дополнительная
4. Уотсон К., Visual C# 2010. Полный курс. — М.: Вильямс, 2011.— 956 с
5.Троелсен Э., Язык программирования C# 2010 и платформа .NET 4.0. — М.: Вильямс, 2011.— 1392 с
6. Шилдт Г., C# 4.0. Полное руководство. — М.: Вильямс, 2011.— 1056 с.