ProgBasics_lec04_systems_complexity
.pdfОбъектно-ориентированное программирование
Объектно-ориентированное программирование – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
•Базовый элемент – объекты
•Каждый объект – экземпляр класса (instance)
•Классы организованы в иерархии (отношение “is a”)
Объект
Поведение |
Данные |
изменение |
характеризуют |
состояния |
состояние |
Абстрагирование и инкапсуляция
Абстрагирование – создание модели, обладающей лишь существенными особенностями.
Таким образом, объект – некая абстракция.
Детали реализации объекта скрыты, он используется через его интерфейс — «внешний облик».
Сокрытие деталей реализации – инкапсуляция.
Итак, объект — это инкапсулированная абстракция с четко определенным интерфейсом.
Класс
Класс – некое множество объектов, имеющих общую структуру и общее поведение.
Класс – контракт между абстракцией и её «клиентами» - объектами.
public class BankAccount
{
private decimal _value = decimal.Zero; private Person _person = null;
public BankAccount(Person person)
{
_person = person;
}
public Person Person { get { return _person; } } public decimal Value { get { return _value; } }
public void Transfer(BankAccount targetAccount, decimal sum)
{
//...
}
public void Fill(decimal sum)
{
if (sum < decimal.Zero)
throw new ArgumentException("sum is less than zero."); _value += sum;
}
}
Наследование
Фигура
Круг |
Прямоугольник |
Треугольник |
|
|
|
|
|
|
|
|
|
|
|
|
|
Правильный Равнобедренный
Наследование
•Обеспечивает многократное использование кода
•наследники корректируют или дополняют поведение
•Исключение дублирования кода
•Упрощает
–модификацию программ
–создание новых программ на основе существующих
•Позволяет создавать иерархии
public class VipBankAccount : BankAccount
{
public void SendWeeklyPresent()
{
base.Fill(1000);
}
}
Пример иерархии
Классы .NET
•Все классы .NET имеют общего предка — класс object, и организованы в единую иерархическую структуру.
•Классы логически сгруппированы в пространства имен, которые служат для упорядочивания имен классов и предотвращения конфликтов имен: в разных пространствах имена могут совпадать. Пространства имен могут быть вложенными.