
- •3. Ооп. Методы, перегрузка, переопределение.
- •4. Ооп. Полиморфизм.
- •5. Методы класса. Конструкторы. Виды конструкторов. Статические методы и поля.
- •6. Понятие сложности алгоритма. Типовые виды алгоритмической сложности.
- •7. Исключения (try, catch, finally).
- •8. Интерфейсы, применение предназначения.
- •9. Generic типы.
- •10. Ограничения Generic типов.
- •11. Структуры данных. Динамический массив.
- •12. Структуры данных. Список.
- •13. Структуры данных. Двунаправленный список.
- •14. Структуры данных. Хеш-таблица.
- •15. Структуры данных. Стек.
- •16. Структуры данных. Очередь.
- •17. Коллекции в c#, описать какие структуры данных реализуют.
- •18. Матрицы преобразований.
- •19. Основы теории графов, что это такое, применение.
- •20. Граф. Способы задания графа.
Концепции ООП. Преимущества и недостатки ООП. Объявления классов.
Ключевой принцип ООП: всё является объектом
Объект – это набор логически связанных переменных, обладающих некоторым поведением.
Класс – способ описания объектов, имеющих одинаковые поля и методы, но различные значения.
Объявление классов:
[атрибуты]
[спецификаторы] classимя_класса [: предки]
{
[атрибуты]
[спецификаторы] тип имя_поля [= значение];
[атрибуты]
[спецификаторы] тип имя_метода(параметры)
{ тело метода }
[атрибуты] [спецификаторы] тип имя свойства
{
[спецификаторы] get{ тело }
[спецификаторы] set{ тело }
}
}
Пример:
public class Circle
{
public double x; public double y; private double r; public double R
{
get { return r; }
set { if(value >= 0) r = value;
}
public double GetLength()
{
return 2 * Math.PI * r;
}
}
ООП – набор концепций и идей, позволяющих осмысливать задачу и найти путь к решению более эффективным и понятным способом.
Принципы ООП
Преимущества:
Инкапсуляция – возможность скрыть внутреннюю составляющую объекта от пользователей.
Наследование – возможность указывать на происхождение класс, свойства и функции заимствуются новым классом.
Полиморфизм – возможность, позволяющая старому коду вызывать новый.
«Один интерфейс – множество реализаций».
Недостатки:
Документирование классов. Поскольку метод может быть переопределён, в документации должно быть указано, что он делает и в каком он месте вызывается.
Инкапсуляцией не следует злоупотреблять. Чем больше логики и данных открыто, тем сложнее его расширять.
Инкапсуляция. Поля и свойства. Спецификаторы доступа.
Инкапсуляция.
Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий зтими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова: public. Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов: private, protected, internal.
Поле – переменная, она хранит значение .Как правило, поля используются только для переменных, имеющих доступность private или protected
Свойство – пара методов (accessor, mutator), предназначенных для правильной инкапсуляции поля. accessor (get) не должен выполнять длительных вычислений, mutator (set) должен проверять значения, передавать уведомления. Значение в set передается через служебное слово value
Роль: сохранить класс в корректном состоянии
public int R{get;set;}
=
private int r;
public int R
{
get {return r;}
set { if(value>0)
{
r=value;
}
}
}
Поле – переменная, хранит значение.
public int s{get;set;}
Свойство – пара методов: get и set.
Позволяет проверить (set) и получить (get).
Спецификаторы доступа
Класс
– internal (по умолчанию)
– public
– private (внутри другого класса)
– static
– sealed (наследование) – abstract (полиморфизм)
Методы и поля
– private (по умолчанию)
– public
– internal
– static
– protected (наследование)
– abstract (только для методов, полиморфизм)
– new (только для методов, наследование)
– override (только для методов, полиморфизм)
3. Ооп. Методы, перегрузка, переопределение.
ООП – набор концепций и идей, позволяющих осмысливать задачу и найти путь к решению более эффективным и понятным способом.
Принципы ООП
Преимущества:
Инкапсуляция – возможность скрыть внутреннюю составляющую объекта от пользователей.
Наследование – возможность указывать на происхождение класс, свойства и функции заимствуются новым классом.
Полиморфизм – возможность, позволяющая старому коду вызывать новый.
«Один интерфейс – множество реализаций».
Недостатки:
Документирование классов. Поскольку метод может быть переопределён, в документации должно быть указано, что он делает и в каком он месте вызывается.
Инкапсуляцией не следует злоупотреблять. Чем больше логики и данных открыто, тем сложнее его расширять.
Метод – это функциональный элемент класса, который реализует вычисления, или другие действия, выполняемые классом, или его экземпляром (объектом). Метод представляет собой
законченный фрагмент кода, к которому можно обратиться по имени. Он описывается один
раз, а вызываться может многократно.
Перегрузка методов – совместное использование одного имени двумя и более методами одного класса при условии, что их параметры объявляются по-разному.
(тип или число параметров должны быть разными)
public void Write()
{
}
public void Write(string Name)
{
}
public void Write(string Name, string Family)
{
}
Переопределение.
Виртуальные методы/свойства : virtual
Новые реализации методов/свойств : override
class Round class Circle
{ {
public virtual string Name public virtual string Name
{ {
get {return “круг”;} get {return “окружность”;}
} }
} }
class Ring: Round class Ring: Circle
{ {
public override string Name public override string Name
{ {
get {return “кольцо”;} get {return “круг”;}
} }
} }
Перегрузка
Если два метода имеют одинаковое название, то они считаются перегруженными
Виды перегрузки
–Перегрузка в разных классах
–Перегрузка в одном классе
Переопределение методов
Переопределением называют такую перегрузку методов, когда в классах, связанных отношением наследования, существуют методы с одинаковыми именами, количеством и типом параметров