Программирование на языке C# Основы ООП www.epam.com EPAM Systems План занятия • • • • • Принципы ООП Абстрагирование Инкапсуляция Наследование Полиморфизм www.epam.com EPAM Systems Принципы ООП Шесть принципов Алана Кея: 1. Всё является объектом. www.epam.com EPAM Systems Принципы ООП Шесть принципов Алана Кея: 2. Каждый объект является представителем (экземпляром) класса, который выражает общие свойства объектов. www.epam.com EPAM Systems Принципы ООП Шесть принципов Алана Кея: 3. В классе задаётся поведение (функциональность) объекта. Тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия. www.epam.com EPAM Systems Принципы ООП Шесть принципов Алана Кея: 4. Классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования. Память и поведение, связанное с экземплярами определённого класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве. www.epam.com EPAM Systems Принципы ООП Шесть принципов Алана Кея: 5. Каждый объект имеет независимую память, которая состоит из других объектов. www.epam.com EPAM Systems Принципы ООП Шесть принципов Алана Кея: 6. Вычисления осуществляются путём взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. www.epam.com EPAM Systems Абстрагирование • Выделяете только те факторы, которые нужны для решения задачи • Отсекайте все лишнее www.epam.com EPAM Systems Инкапсуляция • Пользователь (прикладной программист) не должен менять внутреннее состояние объекта – он не знает, как это делается!!! • Поля и методы делятся на внутренние и интерфейсные. length r x, y а b c www.epam.com EPAM Systems Объявление класса [атрибуты] [спецификаторы] class имя_класса [: предки] { [атрибуты] [спецификаторы] тип имя_поля [= значение]; [атрибуты] [спецификаторы] тип имя_метода(параметры) { тело метода } [атрибуты] [спецификаторы] тип имя свойства { [спецификаторы] get { тело } [спецификаторы] set { тело } } } www.epam.com EPAM Systems Пример 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; } } www.epam.com EPAM Systems Спецификаторы доступа • Методы и поля – private (по умолчанию) – public – internal – static – protected (наследование) – protected internal (наследование) – abstract (только для методов, полиморфизм) – new (только для методов, наследование) – override (только для методов, полиморфизм) www.epam.com EPAM Systems Спецификаторы доступа • Класс – internal (по умолчанию) – public – static – sealed (наследование) – abstract (полиморфизм) www.epam.com EPAM Systems Контактная информация: Александр Кузнецов Инструктор EPAM Systems, Inc. Адрес: Саратов, Рахова, 181 Email: [email protected] http://www.epam.com www.epam.com EPAM Systems